以太坊智能合约代币开发(有需要可直接联系)

Connor 以太坊今日行情 2022-05-22 505 0

  什么是智能合约以太坊 代币

  传统意义上的合约,就是双方或者多方共同协议做或者不做某事来换取某些东西以太坊 代币。合同中的每一方必须信任彼此能够履行义务。而智能合约的特点是:同样是彼此之间同意做或者不做某事,但是无须再信任彼此。这是因为智能合约不但是由代码进行定义的,也是由代码强制执行的,完全自动且无法干预。智能合约一旦编写好就可以被用户信赖,合约条款不能被篡改,不需依赖第三方执行合约,消除了中间人,大大减少了花费在合约上的金钱和时间。

  ERC-20的目标是为以太坊上的代币合约(token contract)提供一组特征与接口的通用标准以太坊 代币。通用的标准有很多好处,比如允许钱包显示数以百计的不同代币的账户余额额;代币交易所,只需要知道代币合约的地址就可以将其列入交易列表中。事实上,ERC-20已经成为目前创建代币合约的标准。

  代币合约(token contract)是什么以太坊 代币

  代币合约就是一个包含了账户地址(address)到余额(balance)映射(mapping)的智能合约(smart contract).账户余额表示合约创建者定义的某种权益,可以是物理实体,也可以是另一种货币,甚至可以是持有人的信用以太坊 代币

  变更代币的总供给(totalSupply)有两种方式:

  铸造新的代币来增加

  销毁现有代币来减少以太坊 代币,销毁代币可以将代币发送到一个未创建私钥的地址(一般使用0地址)

  定义一个ERC-20代币合约

  一个ERC-20合约通过地址和总供给(totalSupply)来定义,通常还提供一些非必须(optional)的东西,为用户提供更多细节以太坊 代币。包括名字(name),标识(symbol),小数位(decimals)

  名字(name) 是代币合约的完整名称,例如"My Token"以太坊 代币。但是为了在一些钱包应用中能显示完全(可能会被截断显示),这个名字最好短一点。

  标识符(symbol) 是代币合约的标识符号,比如"MYT"以太坊 代币。通常3到4个字母。

  小数位(decimals) 的存在是因为以太坊不处理小数,为了在合约处理的最小单位和用户显示单位之间进行转化以太坊 代币。例如一个物理黄金所有权的代币合约,合约需要处理的最小单位为克,而用户表示的单位是千克,那么小数位(decimals)设置为3,即10^3克等于1千克。小数位的取值规则为:

  如果代币合约表示的是不可切分的物体以太坊 代币,则取值为0

  如果表示的是一个有特定小数位的物体以太坊 代币,那么取值就是那个小数位

  如果上述两者都不是以太坊 代币,设置为18

  总供给(totalSupply)是定义一个ERC-20合约需要的最后一个参数,也是唯一的强制参数以太坊 代币。总供给等于所有余额之和。

  一个ERC-20代币合约的功能

  balance() 函数提供查询给定地址持有代币的数量以太坊 代币。任何人都可以查询,正如所有数据在区块链上都是公开的。

  transfer() 函数将调用者地址的代币转移指定数量到指定地址以太坊 代币。系统不会对目的地址做验证(也无法验证),所以如果将代币发送到一个没有拥有者的地址上,那代币就遗失了。

  transfer() 的使用有局限性,它只能由函数调用者来指定代币的转移,不能由合约按预定算法进行代币转移以太坊 代币。而approve()和transforFrom()配合使用则可以完成这个目标。

  approve() 函数允许调用者给另一个地址(通常是一个智能合约)授信一定额度代币,称之为配额(allowence),在这个额度内,指定地址(智能合约)可以支出调用者的账户代币以太坊 代币

  transferFrom() 调用者在配额(allowence)范围内,从一个地址(_from)将代币转移到另外一个地址(_to)以太坊 代币

  allowance() 函数提供查询拥有者地址(_owner)配额给消费者地址(_spender)的金额以太坊 代币

  注意:任何人都可以查询到所有的配额情况,正如所有信息在区块链上都是公开的以太坊 代币

  另外,配额(allowance)是软性的,即单独或者累积的配额可以超过这个地址上的余额以太坊 代币。余额的验证需要在transferFrom函数或者其它根据配额进行支付的函数中进行。

  ERC-20代币合约中的事件

  ERC-20定义了在合约中的操作,两类事件是必须要被触发的以太坊 代币

  第一类事件是Transfer(),这个事件将放出从一个地址转移到另一个地址的代币转移细节以太坊 代币

  第二类事件是Approval(),这个事件将放出一个地址许可另外一个地址转移代币配额的细节以太坊 代币

  这些细节可以让外部应用(Dapp)跟踪地址余额和配额的变更,而无需查询区块链以太坊 代币

  铸造代币会发出一个源地址(_from)为0的Transfer()事件以太坊 代币

  销毁代币时,没有事件发出以太坊 代币。因此,ERC-20代币合约通常使用transfer()函数发出代币到0地址来销毁代币,

评论