文章目录1介绍2主要功能3代码示例4部署测试猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍ERC-1155是一种以太坊代币标准,由Enjin首席技术官WitekRadomski等人开发,并于2018年6月17日将该标准的第一个版本放置到Ethereum的github库中。其主要可用于游戏行业中道具的生成和处理。该标准的提出对nft在游戏行业的应用起到了极大的提升。在一定程度上融合了ERC-20和ERC-721的功能。其主要用途包括了发行同质化代币和非同质化代币。同质化代币即能像ERC-20一样发布各样的代币类型,但目前为止各钱包和交易所暂未支持ERC-1155标准代币;与
ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括
ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括
案例分析角色分析:包括主持人、选民功能分析:仅主持人能授权给每个选民1票,即每个参与投票的选民拥有1票投票权。选民可以选择将票数委托给其它选民,当然,收委托的选民仍然可以将票数继续委托给其它选民,即存在a—>b–>c–>d,但是,一旦将票数委托给其它选民后,自己将不再有投票的权利选民和主持人可以选择任意的提案项目进行投票代码实例pragmasolidity^0.6.1;contractballot{//选民结构structVoter{uintweight;//可以投票的数量boolisVoted;//是否已投addressdelegate;//授权给他人uintindex;//选择的提案编号}
案例分析角色分析:包括主持人、选民功能分析:仅主持人能授权给每个选民1票,即每个参与投票的选民拥有1票投票权。选民可以选择将票数委托给其它选民,当然,收委托的选民仍然可以将票数继续委托给其它选民,即存在a—>b–>c–>d,但是,一旦将票数委托给其它选民后,自己将不再有投票的权利选民和主持人可以选择任意的提案项目进行投票代码实例pragmasolidity^0.6.1;contractballot{//选民结构structVoter{uintweight;//可以投票的数量boolisVoted;//是否已投addressdelegate;//授权给他人uintindex;//选择的提案编号}
pragmasolidity>=0.7.0Voter)publicvoters;//地址对投票节点的信息的映射Proposal[]publicproposals;//一维数组存储被投票节点信息//构造方法、构造函数//solidity和其他语言不一样,构造函数仅在部署合约时调用一次,后续调用合约不调用其构造函数//且一个合约只能有一个构造函数,不能进行构造函数重载constructor(bytes32[]proposalNames)public{chairperson=msg.sender;//将第一次调用该合约的节点设置为管理员voters[chairperson].weight=1;//将
pragmasolidity>=0.7.0Voter)publicvoters;//地址对投票节点的信息的映射Proposal[]publicproposals;//一维数组存储被投票节点信息//构造方法、构造函数//solidity和其他语言不一样,构造函数仅在部署合约时调用一次,后续调用合约不调用其构造函数//且一个合约只能有一个构造函数,不能进行构造函数重载constructor(bytes32[]proposalNames)public{chairperson=msg.sender;//将第一次调用该合约的节点设置为管理员voters[chairperson].weight=1;//将
在solidity语言中引用类型修饰符(引用类型为存储空间不固定的数值类型)memory、calldata与storage,它们只能修饰引用类型变量,比如字符串、数组、字节等...memory适用于方法传参、返参或在方法体内使用,使用完就会清除掉,释放内存calldata仅适用于方法传参,修饰该变量的值不能修改storage仅适用于方法体内,而且它的指针必须指向链上数据。使用完,链上数据将保存最新状态 常量修饰符constant编译前已经确定,编译后不能再修改常量的值constant它不是状态变量,所以它不储存在插槽(Slot)里面,获取该常量的方法修饰必须是Pure,而不是Viewimmut
在solidity语言中注释符为//注解符为/*内容*/ 或者是///内容 注解中含有这几个标签给予我们使用 @title一个应该描述合约/接口的标题contract,library,interface@author作者的名字contract,library,interface@notice向终端用户解释这个东西的作用contract,library,interface,function,publicstatevariable,event@dev向开发人员解释任何额外的细节contract,library,interface,function,statevariable,event@param
在solidity语言中引用类型修饰符(引用类型为存储空间不固定的数值类型)memory、calldata与storage,它们只能修饰引用类型变量,比如字符串、数组、字节等...memory适用于方法传参、返参或在方法体内使用,使用完就会清除掉,释放内存calldata仅适用于方法传参,修饰该变量的值不能修改storage仅适用于方法体内,而且它的指针必须指向链上数据。使用完,链上数据将保存最新状态 常量修饰符constant编译前已经确定,编译后不能再修改常量的值constant它不是状态变量,所以它不储存在插槽(Slot)里面,获取该常量的方法修饰必须是Pure,而不是Viewimmut