草庐IT

Solidity之Mappings篇

全部标签

使用solidity与web3创作一个在线小游戏之二:(proxy合约,solidity中的数组与mapping,状态变量的存储模型)

在上一章(solidity教程)使用solidity与web3创作一个在线小游戏之一:proxy合约,call,delegatecall与callcode_lixiaodog的博客-CSDN博客中,我们了解了可更新合约的基本原理,与solidity的三种函数调用方法,在本章中我们将完成一个基本的proxy,并写一个与之相配的可更新合约。在编写的过程中,我们还会接解到solidity的数组与mapping。请看下面代码:pragmasolidity>0.4.24;contractProxy{addresspublicowner;eventUpgraded(addressindexedimplem

使用solidity与web3创作一个在线小游戏之二:(proxy合约,solidity中的数组与mapping,状态变量的存储模型)

在上一章(solidity教程)使用solidity与web3创作一个在线小游戏之一:proxy合约,call,delegatecall与callcode_lixiaodog的博客-CSDN博客中,我们了解了可更新合约的基本原理,与solidity的三种函数调用方法,在本章中我们将完成一个基本的proxy,并写一个与之相配的可更新合约。在编写的过程中,我们还会接解到solidity的数组与mapping。请看下面代码:pragmasolidity>0.4.24;contractProxy{addresspublicowner;eventUpgraded(addressindexedimplem

使用 Next、IPFS、The Graph、Solidity 和 Polygon 构建全栈 Web3 YouTube 克隆

每天都有越来越多的人过渡到Web3。对开发人员的需求正在增加,区块链开发技能是科技行业最需要的技能之一。提高Web3技能的最佳方法是使用它们来创建项目。在本文中,您将使用以下技术堆栈在Polygon区块链之上构建一个完整的YouTube克隆。前端框架:Next.js智能合约:Solidity以太坊网络客户端库:Ethers.js文件存储:IPFS查询数据:图表CSS框架:TailwindCSS以太坊开发环境:Hardhat第2层区块链:多边形先决条件在开始本教程之前,请确保您有Node.jsv14或更高版本,并在您的机器上安装了Metamask浏览器扩展。设置Next.js应用程序第一步是设置

【蚂蚁链学习1】初识蚂蚁链的智能合约(solidity)

文章目录1.版本指令和contract关键字合约版本指令实战2.状态变量和整数状态变量无符号整数uint实战3.数学运算实战4.结构体实战5.定义函数实战1.版本指令和contract关键字下面将学习什么是合约,并尝试如何创建合约。合约智能合约(SmartContract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约实质上是一套以数字形式定义的承诺(Promises),包括合约参与方可以在上面执行这些承诺的协议。Solidity的代码都包裹在合约里面,所有变量和函数都属于一个合约。contract关键字用于声明一个合约。这是一个名为HelloWorld的空合约:contra

自定义的搭建solidity开发环境(以太坊)

环境地址   github: GitHub-yinzhiqing/templete-sol:solidityplatform(hardhat)  gitlab: zqy/templete-sol·GitLab本项目利用openzapplinsolcweb3jshardhatnodejs在ubuntu下搭建solidity合约开发环境.大多数功能实现了自动化(脚本)执行.特点:  1.开发环境可充分使用  2.合约可升级  3.记录合约deployupgrade历史可查  4.可自定义执行脚本  5.  可利用本地节点 以太坊测试节点 自搭建节点测试  6.可查看当前合约发布情况  7.可在多个

04-Solidity8.0以太单位Gas和全局变量

Solidity8.004-Solidity8.0以太单位Gas和全局变量文章目录Solidity8.0前言Gas气体限制msg注解随机源注解错误处理(ErrorHandling)数学和加密功能(MathematicalandCryptographicFunctions)地址相关(AddressRelated)警告注解合约相关(ContractRelated)一、Solidity8.0以太单位Gas和全局变量1.以太单位Gas和全局变量总结前言以太和Wei交易ether.类似于1美元等于100美分,1ether等于10**18wei。Gasether您需要为交易支付多少费用?您支付gasspe

Solidity:重入攻击

漏洞概述在以太坊中,智能合约能够调用其他外部合约的代码,由于智能合约可以调用外部合约或者发送以太币,这些操作需要合约提交外部的调用,所以这些合约外部的调用就可以被攻击者利用造成攻击劫持,使得被攻击合约在任意位置重新执行,绕过原代码中的限制条件,从而发生重入攻击。重入攻击本质上与编程里的递归调用类似,所以当合约将以太币发送到未知地址时就可能会发生。简单的来说,发生重入攻击漏洞的条件有2个:调用了外部的合约且该合约是不安全的外部合约的函数调用早于状态变量的修改漏洞分析01转账方法由于重入攻击会发送在转账操作时,而Solidity中常用的转账方法为.transfer(),.send()和.gas()

Elasticsearch语法知多少之mappings详解

目录目标ES版本信息官方文档相关术语实战动态映射静态映射查看索引的映射查看某字段的映射约束字段的名称约束字段的数量约束字段名称的长度字段合并字段禁止被搜索对null值进行搜索搜索将字段添加到现有映射Boost调整字段评分权重目标了解mappings常用属性,通过设置mappings属性约束文档。本文介绍会一些常用的静态映射方法,包括:约束文档中字段的数量和名称,实现字段合并检索,字段禁止被搜索等。了解部分settings属性,这些属性和mappings属性关联较大,官网文档也将这些属性和mapping放在一起分析,所以本文也会做一些案例讲解。ES版本信息7.17.5官方文档Mappinghtt

剖析Solidity合约创建EVM bytecode

1.引言前序博客有:EthereumEVM简介揭秘EVMOpcodes在以太坊中,当合约创建时,initcode将作为交易的一部分发送,然后返回该合约的实际bytecode——runtimecode。详细可参看以太坊黄皮书第7章。当交易中的recipient地址为空(即0)时,该交易为创建合约交易:创建合约交易中可包含value值,即创建合约的同时也给新创建的合约转账(此时,Solidity合约的构造函数需标记payable关键字)。执行交易中的initcode,返回存储在新创建合约的bytecode(runtimecode)。【返回用到RETURNopcode,从虚拟机memory取outp

以太坊Solidity合约升级策略

1.引言前序博客有:以太坊proxy合约以太坊的proxycontractpattern合约升级示例代码可参看:https://github.com/celo-org/optics-monorepo/tree/main/solidity/optics-core/contracts/upgrade其中,主要由三部分组成:1)UpgradeBeacon.sol:存储了implementation合约的地址,支持controller对该implementation地址进行升级操作。2)UpgradeBeaconController.sol:设置为UpgradeBeacon合约的controller,