ERC20代币与ERC23代币

链客,专为开发者而生,有问必答!

此文章来自链客区块链技术问答社区,未经允许拒绝转载。
在这里插入图片描述

每个人都初步定义自己与代币的交互协议,但这些很快显得陈腐,所以一些人初步集结起来,创建了ERC20代币接口标准。大约意思是说,我们定义这些接口,这样我们可以相互统一调用,比如转帐定义为transfer,第一个参数为要转去的帐户地址address _to,第二个参数为要发送的ether的uint _value数量。

有些人觉得ERC20协议过于杂乱了,所以他们提议了ERC197,略微简略一点。

因为在ERC20中存在的一个小问题,有人提议了一个新的ERC23。ERC23是向后兼容ERC20的。假设你现已创建了一个代币合约,可以测验来支撑ERC23。

看起来ERC223和ERC23是相同的概念;ERC的值是223,但是当引用时,作者和全部的其它人误写成了ERC23非常多次,它现在也仍是这样引用的。假设一句话说清楚的话,ERC223是标准号,代币说明时称为ERC23代币就好了。

协议代币与App币

协议代币为用来鼓舞对某个协议的运用。比如,REP,Augur的名誉代币,用来鼓舞对Augur去中心化猜想协议的运用。大多数的以太坊的ERC20/ERC23代币都是协议代币,比如Golem的GNT,ICONOMI,BAT等等。

App币则是用来鼓舞对某个特定DApp或客户端的运用,而不是因为其运用的协议供应的价值。其间一个比如是Status的SNT代币,可以用来在运用内取得价值(比如,进行消息推送,投票权,取得用户名等等)。

这种范式的改变是,我们可以初步出资协议代币而不是运用程序代币,因为我们可以树立在它们之上(任何人都可以在协议之上构建一个dapp,或为结束该协议的Dapp构建一个Dapp客户端)。

之前,这并不或许,因为加密代币,以及接下来的协议立异的年代,为了结束货币化,你自己可以在协议之上创建一个运用,并结束获利。因为你自己可以结束协议的货币化,我们可以在未来更好的协作。

你或许可以阅读一下,关于0xProject的下面这篇文章,关于这两者区别的详细说明。

与智能合约交互

你与智能合约的交互(也称做调用函数和读取情况)通过连接到某个以太坊节点,并实行操作码。其时有各式各样的以太坊客户端,可以便利进行开发。Geth和parity都供应了控制台或浏览器的办法来更好的与智能合约交互。

假设你想要一个程序的库用来与智能合约交互的接口,也有这样的客户端结束。关于JS言语,可以运用web3.js。以于go言语,可以运用在go-ethereum中的abigen的程序,供应了go包,用来与智能合约交互。

假设只是用来检验和开发,可以运用ethereumjs-testrpc来工作一个本地节点(译者注:这个节点压短区块时间等,可以便利打整的开发与检验)。

当你安置了一个智能合约,你实践进行的操作是向地址0x0发送了一个生意,运用其时合约内容作为参数,一个以太坊生意详解。

Truffle和Embark

一旦你初步写智能合约,你会重复做大量的操作,比如编译源码为字节码和abi,安置到网络,检验然后安置合约等等。你或许希望更重视于你想要结束的东西。

Truffle和Embark结构,标准化和自动化了这些琐碎的工作。它们供应了一个好的开发,安置,以及更为重要的,检验智能合约的领会。

你可以查看这个文章来开启运用Truffle的旅程。

这篇文章,供应了运用Truffle来安置以及与智能合约交互的办法。

Embark供应了类似的,协助开发者组织工程的稍有些不同的东西。

当你一初步触摸智能合约这块时,应该尽量不要运用结构。直到你理解了运用结构能带来的价值时,才应该初步运用,正如你不应该通过rails new来学习HTML言语相同。

ETHPM

共享是关怀,所以ETHPM是一个去中心化的智能合约包处理资源库。运用ETHPM,你可以相关或连接到某个闻名的合约或库,削减代码重复,尽或许抱负的为未来的开发供应好的根底。

这儿的这个标准,详细的说明了相关的信息以及布景。Truffle和Embark均可与之集成,并创造一个愉快的开发领会。

网络

Mainnet-以太坊主网,通常是全部客户端的默认网络。

Ropsten - 以太坊运用工作量证明的主检验网络。这个网络,因为低的核算量,简略遭到DDOS侵犯,分片,或许其它问题。垃圾邮件侵犯后被暂时放弃,最近才康复运用。

Kovan-parity客户端组成的检验网络,运用授权证明来提升对垃圾邮件侵犯的抗扰度,而且继续4秒的堵塞时间。

Rinkeby-geth客户端组成的检验网络,运用集团共同,虽然核算量低,但是对恶意行为者更有弹性。

你可以自己树立你自己的检验网络,或许运用kubernetes或许docker-compose,但或许你将很快就可以不需求花什么时间。

帐户与钱包

一个以太坊帐户就是一个私钥和公钥地址对。它们可以用来存储ether,创建时不需求花费gas。

钱包则是用来处理ether的智能合约(一些代码)。这儿是运用solidity写的一个钱包,工作于Mist浏览器。他们可以有许多的特性,比如多用户签名,纸?等等。

这样,我们就正确的定义了两个名词,前面看到其它人对这两个术语的困惑,并把全部能存ether的都叫作Wallet。

EVM以及智能合约创建的情况

在每个全节点网络上工作的智能合约代码在EVM内实行。这是您的标准虚拟机,实行一些字节码,除了这个vm与网络,文件系统,进程等隔离。没有人想要编写字节码,所以我们有一些更高级别的言语编译为EVM字节码。

Solidity

Solidity是榜第一批的描绘智能合约的言语。其时是最盛行的言语,因而也有最多的比如,文档,和教程。你应该学习这个,除非你有要学习其它的理由。

你可以运用根据浏览器的Remix IDE来进行快速验证。

下面是一个Solidity的合约:

pragma solidity ^0.4.11;

contract BasicToken {

mapping(address => uint256) balances;function transfer(address _to, uint256 _value) returns () {

balances[msg.sender] = balances[msg.sender] - _value;

balances[_to] = balances[_to] + _value;

}function balanceOf(address _owner) constant returns (uint256 balance) {

return balances[_owner];

}

}

LLL

LLL,是一门Lisp风格的底层编程言语,就像言语称谓看到的这样。虽然以太坊官方并没有将它作为首要需求支撑的言语,但它依旧继续进行着更新,且与solidity在同一个资源库。

这是一个运用LLL言语写的一个ERC20代币的合约

LLL示例如下:

(seq (def 'node-bytes 0x00) (def 'owner 0x20) ; address (def 'set-node-owner 0x5b0fc9c3) ; setOwner(bytes32,address) (def 'get-owner (node) (sload (+ node owner)))

//只是用来示例,不能编译通过

假设你正在学习,或许不是那么的简略习惯LLL言语的写法。

Serpent

Serpent是一个类Python的高级言语,毕竟也会被编译为EVM字节码。它首要被Augur团队运用。

但最近Zeppelin Solution团队发现其编译器有一个严峻的bug,在这个问题被修正之前都不建议继续运用。

假设你对Augur怎样处理这些缝隙感兴趣,你可以阅读Zeppelin Solution的这篇文章。

Serpent的合约看起来如下:

def register(key, value):

# Key not yet claimed

if not self.storage[key]:

    self.storage[key] = value

    return(1)

else:

    return(0)  # Key already claimed

def ask(key):

return(self.storage[key])

在各种可用性和发展情况中还有一堆其他的高级言语,而且无疑将会被开发出来。 为了广泛采用,言语和编译器必须通过完全的查看和检验,这当然需求时间。

智能合约反编译/Disassembly

可以通过prosity来反编译以太坊智能合约的字节码,可以运用evmdis来Disassembly。

智能合约的安全

一旦一个智能合约安置到了以太坊的网络上,它将是永不可变的,且将永久存在。假设你写了一个bug,你将不能下架这个有问题的版别,你只能在后续的版别中修正。

因为许多工程师开发的Ethereum和其他智能合同途径来自于Web开发,所以这个概念实在是太新,而且是张狂的。

ConsenSys有一个非常棒的资源叫智能合约的最佳实践,你应该深化的了解一下。

一个Parity的钱包被黑的解说。

在你安置你的智能合约的时分,因为你处理的是真实的资金,你应该先开一个赏金方案,并尽量保证它无缺的检验过。

Whisper

Whisper是一个集成进以太坊的消息系统。它答应DApp发布小量的信息来进行非实时的消息通信。

它运用shh协议。

虽然它现已有段时间没有更新了,这是一个运用Whisper协议结束一个谈天客户端的比如。

去中心自动化组织(DAOs)

这是一个组织(就像,一群人),其间,运用代码来保证毕竟的强制实行,而不是运用传统的法令文件。这群人运用智能合约来做常见组织做的全部的工作,比如在某件事上进行投票,比如抉择是否对什么进行出资等等。

副作用是决议计划,处理,以及对什么进行出资的效果将会不可改变的存储在区块链上。

之前slock.it创建了标准的DAO结构来说明这个理念。在这儿有对DAO概念的总览,以及怎样运用结构来结束一个自己的DAO(译者注:这个项目因为bug被黑客侵犯了)。

Aragon

Aragon也正在应对应战,规划一个根据智能合约逻辑运作的公司,重点是创建一个可以承受出资,处理会计,付出雇员,分配股权,正如我们现在知道的结束每天的公司的事务。他们也结束了美丽的DApp客户端来让他们的协议运用起来更为简略。

查看这儿Aragon中心合约来更多的了解它是怎样做的。

IPFS&FileCoin

IPFS(星际文件系统)是一个协议,用来分发文件。你可以以为它是一个根据bittorrent和git这样概念的一个文件系统,文件可以定位,且是不可变的。IPFS以IPLD数据模型存储信息,它非常有趣,供应了一些特别的特性,你可以通过下面的说明了解一些。

这是一个新的协议,它有一个http的网关和文件系统适配器,这让你可以通过http,挂载整个互联网文件系统到你本地的盘/ipfs。IPFS还供应了一个寻址服务IPNS(星际命名空间),它答应可变的情况(需求留心的是在IPFS里的全部东西都是不可变的)。你甚至可以运用DNS TXT记录来定位到你的IPNS客户端,答应你生成用户友好的链接来指向到对应的数据。

FileCoin是Protocol Lab为创建一个去中心化的根据IPFS的存储商场的尽力效果,也就是向整个网络供应存储资源的鼓舞层。FileCoin的共同协议没有运用浪费资源的工作量证明,而是运用了Proff of Replication和Proof of SpaceTime来保证每片数据被仿制某个特定的仿制数量且存储某个特定的时间。

你应该读一下IPFS的白皮书,FileCoin的白皮书,以及IPLD的标准。

因为其时FileCoin还没有上线,你可以运用其时的IPFS存储网络来工作html/css/js,并把作为一个类似orbit-db的数据库。

Swarm

Swarm是一个去中心化的存储网络,集成于以太坊生态系统,作为第一阵营的项目,看看这儿关于IPFS与这个项目的比较和好坏。但本质上,基本上是相同的,除了它们有不同的哲学,并在底层运用略微不同的协议。

项目

Augur

Augur是一个去中心化的猜想商场,让我们关于某个实践世界的事情进行对赌。一方面,用户在某个详细可以发作的事情上投注,一旦效果成真,它们赢得的代币有真实的价值。为了结束这个,你需求结束一个去中心化的先知协议,来输入实践世界中的信息,它运用REP协议代币来进行经济鼓舞。

你可以看看Augur项目的合约代码,以及了解下Augur Master Plan。

Gnosis

Gnosis与Augur有类似的理念,也是一个去中心化的猜想商场。这是项目的白皮书,以及与Augur项目的对比。

Golem

Golem是一个分布式的算力商场,以与IPFS相同的办法构建了一整套的供应算力商场。

你可以看看FAQ来更好的了解。

0xProject

0xProject创建了一个交流代币的协议,以及一个DApp来结束这个协议。开发者可以创建一个根据它们自己的分布式运用创建生意所(技术上叫中继层),而用户也不必信赖这些app就可结束生意,结算在区块链上结束。0x协议旨在运用离线的第三方来播送生意和处理订单(可以创建/更新/删去订单,而不必直接向Ethereum发送缓慢/昂贵的生意),但毕竟会运用Ethereum进行结算。

它们结束了场外生意,一个DApp运用这个协议来在用户之间直接交流代币。你可以在github上查看他们的合约。

你还可以跳过这些酷炫的概念,直接阅读FAQ。

Swap

ConsenSys的Swap协议也是非常类似的,但更专心于p2p的直接生意(而不是根据订单表),这儿有一个白皮书,可以看看,这儿有一个关于Swap协议的介绍。

Bancor

代币的流动性是相对来说在加密币的生态中是一个非常大的问题。在用户间的生意需求满意买方和卖方两边的主意。

Bancor是一个协议,可以让你的代币1)可以根据订单自动给予价格2)可以通过持有其它的代币作为典当器来即时创造流动性。

查看这儿的白皮书。

Makerdao & Dai

以太坊区块链处理的代币价值往往会有巨大的动摇。这个特性在实践生活中则非常欠好,比如你的方针是用来保值。

Maker DAO是一个DAO来处理Dai稳定币。Dai现在还不存在,但他们现已发布了一个alpha的版别叫Sai来展现这门技术。

这儿是DAI的白皮书。

Oraclize

假设我们要向智能合约中输入一些信息,比如纽约今日的天气,我或许需求结束一个去中心化的先知协议问询一批人(花费高且慢),但假设写一个服务以中心化的办法来供应信息,又违背了去中心化运用的理念。

Oraclize测验用以下办法来处理问题1)从一个外部数据源向你的智能合约发送数据。2)供应一个证明,数据来自某个数据源,且没有被修改过。由此假设你信赖random.org,你可以运用Oraclize来供应一个随机数生成合约。

他们的集成非常健壮; 您可以获取URL,解析JSON和XPATH,查询Wolfram Alpha等。

BTCRelay

BTCRelay作为比特币区块链生意的先知机制,这意味着你可以在以太坊上编写智能合约来响应比特币区块链上的某个生意,进行触发后续的操作。比如,你可以让人通过BTC为你的服务付费,运用BTCRelay在以太坊上校验付款成功后,继而在以太坊上供应对应的服务。

Open Zeppelin & zeppelinOS

Zeppelin Solutions是一个科技公司,在这个领域内正结束一些巨大,而且专业的事。它们实在做了太多事,太难逐个说清了。

他们处理了Open Zeppelin,一系列通过查看的,最佳的智能合约实践,你可以承继并运用于你自己的DApp中。你可以查看他们的github资源来学习更多。你应该读一下里面的每一个合约。

他们坚持代码复用的理念,然后进一步创建了Zeppelin OS。你可以疏忽OS,它不是传统意义上的操作系统的概念。zeppelinOS特性,东西和服务的集结,旨在供应安定的开发人员领会,一起最大极限地进步智能合同安全性。

zeppelinOS中的其间一部分是“zeppelinOS Kernel”。其实他们不是传统意义上的中心,而且是一组库。它们是通过库模型结束的可晋级的智能合约,可以在呈现安全问题时独立的进行更新。因为你在合约内包括的代码更少,安置也将花费更少的gas,而开发者也削减了代码的重复。

zeppelinOS还有一些其他规整的规划,比如调度程序(智能合约的异步实行,因为默认合同一般不会自动触发某个行为),商场级的协议和链下开发者领会东西。

ENS - 以太坊的命名服务

ENS是一个去中心化的称谓注册服务。并有一个描绘性的项目称谓。

BAT

根底留心力代币 & Brave浏览器

BAT测验去中心化广告系统,通过监控我们的留心力,并在内容供应商,广告商和用户之间分发收益,切掉中间人。

Brave和BAT由JS创始人Brendan Eich创建,一起他也是Mozilla的联合创始人。

uPort

uPort在处理去中心化的身份辨认问题。

district0x

district0x是一个更高层级的去中心化的商场和社区。中心是通过一系列的智能合约来处理用户发布信息,搜索,过滤信息,在社区内保护诺言,处理付出等等。它可以用来建议如Ethlance和NameBazaar这样的商场。

他们有非常棒的视觉规划。

Steem

Steem是区块链上的reddit,它运用协议代币(STEEM)来鼓舞这个交际社区的参加度。

在这儿查看白皮书。

有一些关于Steemit块链怎样发动以及支撑组织怎样运作的反响。

参加者与领域内的玩家

ConsenSys

ConsenSys(有点像共同Consensus,但作为一个公司称谓;它很聪明,奇妙的把u改成了s,但我一般念为“con-SEn-SIS”,避免读错)是一个“风险出资和产品工作室”。他们是一个(其实非常大)伞形组织,它资助了一大堆项目和中心组件的开发。值得一提的是,它们资助了Truffle,Infura,MetaMask,Gnosis和uPort。

Zeppelin Solutions

Zeppelin Solutions在上面我们有提到过,他也查看智能合约代码,供应咨询服务。他们的博客质量适当高。

Protocol Labs

Protocol Labs是一群让人印象深化的人,致力于IPFS,FileCoin,lip2p以及IPLD等其它项目的开发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值