‘壹’ 以太坊代币标准简介
绝大多数的区块链创业团队都在以太坊(Ethereum)上开发自己的项目,并使用以太坊网络发行自己的代币(Token),代币发行的标准需要遵从以太坊代币标准(ERC-Token Standard),这篇文章就帮你梳理一下以太坊的各种代币标准。
什么是以太坊代币标准(ERC-Token Standard)?
建立在以太坊网络上的区块链项目代币,需要遵从以下几种代币标准:ERC-20,ERC-223,ERC-621,ERC-721,ERC-827。其中 ERC 是 Ethereum Request for Comments 的简称,直译过来是 以太坊注释请求,本身这是一个包含结构化信息的网络指令。ERC-Standard 是由以太坊社区定义出来,用户和以太坊网络进行交互的规则。但本身这个标准并不是一尘不变的,社区开发者可以提出自己定义的新标准,但是这个标准需要被整个以太坊社区接纳才能应用在以太坊网络上。
‘贰’ 一文读懂以太坊—ETH2.0,是否值得长期持有
ETH 2.0 的影响:以太坊网络用户会很高兴,因为 ETH 将改变其费用结构,用户将为交易支付更少的费用。这意味着当前的矿工将减少每笔交易的新包含费用,而不是以太坊的拍卖式费用市场,但预计由于 PoS 的能源效率提高和数量的增加,他们的每笔交易成本将下降。由于成本较低,用户和验证者都受益,因此交易量会更高。
ETH 2.0 降低的成本和更高的速度将使更多类型的 Defi 交易成为可能,并为新的和不同类型的安全令牌、NFT 和其他分布式金融应用程序提供机会,这些应用程序在 ETH 1.0 中没有经济意义。
ETH 2.0 还将允许使用零知识汇总和乐观汇总的更复杂和更便宜的智能合约。通过汇总,所有交易数据都以比使用常规基于区块链的交易更便宜的方式捆绑并在以太坊上可用。汇总所需的计算负载是在链下完成的,进一步提高了吞吐量和交易成本效率。
分片将使网络民主化,最终使普通用户能够在个人设备上操作以太坊。越来越多的网络参与者将进一步分散区块链。ETH 的发行量也会减少;ETH 联合创始人 Vitalik Buterin 曾表示,在 ETH 2.0 下,新代币的发行量应在每年 10 万至 200 万之间,低于目前的每年 470 万,这可能会增加硬币需求。
总结:
ETH 2.0 升级将使这个有益的全球去中心化智能合约系统能够以其速度、安全性和可靠性的愿景向前发展,减少其碳足迹,并为投资者提供公平的竞争环境,通过赌注他们对 ETH 的未来拥有民主发言权以太坊。以太坊 2.0 是对已经最广泛用于智能合约的区块链网络的必要升级。随着加密货币、智能合约 Dapp 和 NFT 的接受度不断增长,以太坊 2.0 网络的可扩展性无疑将吸引更多用户,使其成为首选服务。
‘叁’ 如何创建和签署以太坊交易
交易
区块链交易的行为遵循不同的规则集
由于公共区块链分布式和无需许可的性质,任何人都可以签署交易并将其广播到网络。
根据区块链的不同,交易者将被收取一定的交易费用,交易费用取决于用户的需求而不是交易中资产的价值。
区块链交易无需任何中央机构的验证。仅需使用与其区块链相对应的数字签名算法(DSA)使用私钥对其进行签名。
一旦一笔交易被签名,广播到网络中并被挖掘到网络中成功的区块中,就无法恢复交易。
以太坊交易结构
以太坊交易的数据结构:交易0.1个ETH
{这些数据与交易内容无关,与交易的执行方式有关,这是由于在以太坊中发送交易中,您必须定义一些其他参数来告诉矿工如何处理您的交易。交易数据结构有2个属性设计"gas": "gasPrice","gasLimit"。
"gasPrice": 单位为Gwei, 为 1/1000个eth,表示交易费用
"gasLimit": 交易允许使用的最大gas费用。
这2个值通常由钱包提供商自动填写。
除此之外还需要指定在哪个以太坊网络上执行交易(chainId): 1表示以太坊主网。
在开发时,通常会在本地以及测试网络上进行测试,通过测试网络发放的测试ETH进行交易以避免经济损失。在测试完成后再进入主网交易。
另外,如果需要提交一些其它数据,可以用"data"和"nonce"作为事务的一部分附加。
A nonce(仅使用1次的数字)是以太坊网络用于跟踪交易的数值,有助于避免网络中的双重支出以及重放攻击。
以太坊交易签名
以太坊交易会涉及ECDSA算法,以Javascript代码为例,使用流行的ethers.js来调用ECDSA算法进行交易签名。
可以使用在线使用程序Composer将已签名的交易传递到以太坊网络。这种做法被称为”离线签名“。离线签名对于诸如状态通道之类的应用程序特别有用,这些通道是跟踪两个帐户之间余额的智能合约,并且在提交已签名的交易后就可以转移资金。脱机签名也是去中心化交易所(DEXes)中的一种常见做法。
也可以使用在线钱包通过以太坊账户创建签名验证和广播。
使用Portis,您可以签署交易以与加油站网络(GSN)进行交互。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
‘肆’ 以太坊是什么丨以太坊开发入门指南
以太坊是什么丨以太坊开发入门指南
很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。
以太坊是什么
以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。
对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用。
在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。
以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。
目前围绕以太坊已经形成了一个较为完善的开发生态圈:有社区的支持,有很多开发框架、工具可以选择。
智能合约
什么是智能合约
以太坊上的程序称之为智能合约, 它是代码和数据(状态)的集合。
智能合约可以理解为在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。
在比特币脚本中,我们讲到过比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,而以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。
智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。
目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。
编程语言:Solidity
智能合约的默认的编程语言是Solidity,文件扩展名以.sol结尾。
Solidity是和JavaScript相似的语言,用它来开发合约并编译成以太坊虚拟机字节代码。
还有长像Python的智能合约开发语言:Serpent,不过建议大家还是使用Solidity。
Browser-Solidity是一个浏览器的Solidity IDE, 大家可以点进去看看,以后我们更多文章介绍Solidity这个语言。
运行环境:EVM
EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。
Solidity之于EVM,就像之于跟JVM的关系一样,这样大家就容易理解了。
以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码不能跟外部有联系。
而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。
合约的编译
以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译,可以选择Browser-Solidity Web IDE或solc编译器。
合约的部署
在以太坊上开发应用时,常常要使用到以太坊客户端(钱包)。平时我们在开发中,一般不接触到客户端或钱包的概念,它是什么呢?
以太坊客户端(钱包)
以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。
EVM是由以太坊客户端提供的。
Geth是典型的开发以太坊时使用的客户端,基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。Geth的使用我们之后会有文章介绍,这里大家先有个概念。
Geth控制台和Chrome浏览器开发者工具里的面的控制台是类似,不过是跑在终端里。
相对于Geth,Mist则是图形化操作界面的以太坊客户端。
如何部署
智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。
以太坊中有两类账户:
· 外部账户
该类账户被私钥控制(由人控制),没有关联任何代码。
· 合约账户
该类账户被它们的合约代码控制且有代码与之关联。
和比特币使用UTXO的设计不一样,以太坊使用更为简单的账户概念。
两类账户对于EVM来说是一样的。
外部账户与合约账户的区别和关系是这样的:一个外部账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部账户或合约账户。
在两个外部账户之间传送消息是价值转移的过程。但从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。
只有当外部账户发出指令时,合同账户才会执行相应的操作。
合约部署就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上(由实际矿工出块之后,才真正部署成功)。
运行
合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。
Gas
和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用(天下没有免费的午餐对不对!)。
以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。
而Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。
Gas的目的是限制执行交易所需的工作量,同时为执行支付费用。当EVM执行交易时,Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。
如果没有这个限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。
因此实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用。
以太坊网络
有些着急的同学要问了,没有以太币,要怎么进行智能合约的开发?可以选择以下方式:
选择以太坊官网测试网络Testnet
测试网络中,我们可以很容易获得免费的以太币,缺点是需要发很长时间初始化节点。
使用私有链
创建自己的以太币私有测试网络,通常也称为私有链,我们可以用它来作为一个测试环境来开发、调试和测试智能合约。
通过上面提到的Geth很容易就可以创建一个属于自己的测试网络,以太币想挖多少挖多少,也免去了同步正式网络的整个区块链数据。
使用开发者网络(模式)
相比私有链,开发者网络(模式)下,会自动分配一个有大量余额的开发者账户给我们使用。
使用模拟环境
另一个创建测试网络的方法是使用testrpc,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。而且testrpc可以在启动时帮我们创建10个存有资金的测试账户。
进行合约开发时,可以在testrpc中测试通过后,再部署到Geth节点中去。
更新:testrpc 现在已经并入到Truffle 开发框架中,现在名字是Ganache CLI。
Dapp:去中心化的应用程序
以太坊社区把基于智能合约的应用称为去中心化的应用程序(DecentralizedApp)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了,一个Dapp不单单有智能合约,比如还需要有一个友好的用户界面和其他的东西。
Truffle
Truffle是Dapp开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程。
总结
我们现在来总结一下,以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用,在这个应用中,使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们需要用以太坊客户端用一个有余额的账户去部署及运行合约(使用Truffle框架可以更好的帮助我们做这些事情了)。为了开发方便,我们可以用Geth或testrpc来搭建一个测试网络。
注:本文中为了方便大家理解,对一些概念做了类比,有些严格来不是准确,不过我也认为对于初学者,也没有必要把每一个概念掌握的很细致和准确,学习是一个逐步深入的过程,很多时候我们会发现,过一段后,我们会对同一个东西有不一样的理解。
‘伍’ 以太坊国内有平台吗
以太坊(ETH)火币网、币安网、中币网、币龙网OKEx、btctrade多个数字货币交易平台,如平台(比特币交易网络)可以交易。就我个人而言,我认为中国的货币网络可能更可靠。
没有“特性”是以太坊设计哲学中的一个根本性部分。取而代之的是,以太坊提供了一个内部的图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型。想建立一个全规模的守护程序
目前,国内用户购买以太坊的渠道有很多以太坊是一个开源的以智能合约功能为核心的区块链平台,以太坊网络是由全球成千上万的计算机构成的。包括中国顶尖学府北京大学和国有企业在内的各大知名机构
‘陆’ 以太坊是一个什么样的东西怎么开发
以太坊是一种区块链的实现。在以太坊网络中,众多的节点彼此连接,构成了以太坊网络: 以太坊节点软件提供两个核心功能:数据存储、合约代码执行。在每个以太坊全节点中,都保存有完整的区块链数据。以太坊不仅将交易数据保存在链上,编译后 的合约代码同样也保存在链上。以太坊全节点中,同时还提供了一个虚拟机来执行合约代码。以太坊虚拟机 以太坊区块链不仅存储数据和代码,每个节点中还包含一个虚拟机(EVM:Ethereum Virtual Machine)来执行 合约代码 —— 听起来就像计算机操作系统。事实上,这一点是以太坊区别于比特币(Bitcoin)的最核心的一点:虚拟机的存在使区块链迈入了2.0 时代,也让区块链第一次成为应用开发者友好的平台。以上内容来自:以太坊DApp开发入门教程
‘柒’ 什么是以太币/以太坊ETH
以太币(ETH)是以太坊(Ethereum)的一种数字代币,被视为“比特币2.0版”,采用与比特币不同的区块链技术“以太坊”(Ethereum),一个开源的有智能合约成果的民众区块链平台,由全球成千上万的计算机构成的共鸣网络。开发者们需要支付以太币(ETH)来支撑应用的运行。和其他数字货币一样,以太币可以在交易平台上进行买卖 。
温馨提示:以上解释仅供参考,不作任何建议。入市有风险,投资需谨慎。您在做任何投资之前,应确保自己完全明白该产品的投资性质和所涉及的风险,详细了解和谨慎评估产品后,再自身判断是否参与交易。
应答时间:2020-12-02,最新业务变化请以平安银行官网公布为准。
[平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~
https://b.pingan.com.cn/paim/iknow/index.html
‘捌’ DAI——分散又透明!可以作为USDT的替代品!
最近,文章下面出现了非常多的高质量留言,昨天文章 《官方承认 1 USDT ≠1 美金!持有USDT很危险!我们还可以持有哪些替代稳定币?》 有三位读者的留言非常赞👍,让爱莉莎反思“是不是因为Tether擅自改规则,让大家反感!愤怒的情绪占了上风,而忽略了改动后有利的一面?”
贴上他们的留言,供大家参考!换个角度看问题,更全面,更客观。
@第二个区块 说:
@看听说 :
@区块链佛系选手 说:
同时,读者 @幸福的花儿开 问: DAI和TUSD比USDT强吗?
那么今天,爱莉莎找到一篇谈DAI的文章,说说为什么大家觉得DAI 比 USDT更好。
DAI ,是一种基于以太坊网络,并由ETH抵押的分散稳定币。它完全透明,任何人都可以查看。DAI有很多交易对,我们可以将持有的加密货币,换成DAI。比如通过DAI/USDT交易对,将USDT换成DAI,
DAI最有意思的特点是: 可以通过抵押ETH,来借用DAI 。这个抵押借贷的过程被称为 开CDP(collateralized debt position 抵押债务头寸) ,这是一个引领分散财务革命的辉煌发明。
下面,我们举个例子, “如何开CDP” ,看看CDP对加密货币用户,以及整个以太坊生态系统,到底意味着什么?为什么说他是闪亮的星?是辉煌的发明?
用户小明,希望以价值200美元的ETH代币开CDP。
1. 首先,他需要将他的ETH代币,发送到DAI智能合约。
2. 接下来,他必须选择抵押率。
DAI智能合约,要求至少抵押150%价值的ETH,才能贷款。也就是说,200美元的最高可借款额为:
200/1.5 = 200x0.66 = 132美元
抵押价值200美元的ETH,可以贷出价值132美元的DAI
不过,这样的抵押没有安全边际。ETH的价格常年波动,如果ETH的价格跌幅过大,很容易导致被清算。最好抵押超过150%的ETH。
假如小明,是一位精明的金融家,选择抵押300%价值的ETH:
200/3 = 200x0.33 = 66美元,借出价值66美元的DAI
虽然这笔贷款额度很小,但是,它将确保了:ETH价格下跌超过50%,才会导致贷款被清算。
3. 选择抵押率后,小明告诉DAI智能合约,将DAI发送到哪个地址!
几分钟后,他就拥有了借贷的资金,可以按照他的想法去花钱。
DAI的最大优势在于—— 在任何时间,我们都可以查看有多少ETH代币支持贷款,100%透明 。
使用 MakerScan 我们可以看到,在本文发布时,大约有220万个ETH被锁定为抵押品。目前的抵押率约为31%,这意味着每借出1美元DAI,就会锁定超过2美元的ETH。
(注:抵押率=贷款本息之和÷抵押物估价×100%)
与Tether的不透明相比,这种透明度简直让人难以置信!
虽然Tether之前声称:每发行一枚USDT,就会在银行里存1美元来支撑,但他们账目是不透明的, 没有人能确切地 知道他们确实在银行了存了相应的美金。而且,现在他们将1USDT改为等同价值1美元的资产(包括货币、债务、加密货币等等资产)了。
尽管随着ETH价格大幅下跌,DAI仍然幸存了下来,并且仍与美元挂钩。但是,DAI的头顶总悬着——一个闪电崩盘的利剑。如果发生闪电崩盘事故,在价格恢复正常之前,可能会有成千上万的CDP被清算。
此外,整个项目是建立在以太坊区块链上的,以太坊网络目前仍然受到智能合约漏洞的困扰和影响。
尽管,DAI有可能会出现问题,但是就目前来说,DAI已经非常受欢迎了!即使在熊市,DAI的智能合约中,被锁定的ETH数量,仍然持续增长。
此外,虽然目前只能使用ETH作为抵押品,但DA00(DAI背后的团队)计划在未来开放多边抵押。这将允许除ETH之外的其他加密资产,用作抵押品。一旦实施,让越来越多的人开CDP,很容易想象——分散和透明的DAI,将变得比不透明的Tether更受欢迎。
之前,爱莉莎在 《V神持有哪些币?V神如何赚币?》 一文,提到
其中,MKR和Dai是MakerDAO 去中心化智能合约的双代币。
MakerDAO : 是一个去中心化的智能合约平台,推出了以太坊第一个去中心化的稳定币,同时它采用双代币结构。
原文链接: https://toshitimes.com/dai-is-the-decentralized-and-transparent-alternative-to-tether/
‘玖’ 以太坊的 ChainId 与 NetworkId
ChainId 是 EIP-155 引入的一个用来区分不同 EVM 链的一个标识。如下图所示,主要作用就是避免一个交易在签名之后被重复在不同的链上提交。最开始主要是为了防止以太坊交易在以太经典网络上重放或者以太经典交易在以太坊网络上重放。在以太坊网络上是从 2675000 这个区块通过 Spurious Dragon 这个硬分叉升级激活。
引入 ChainId 后,带来了哪些影响呢?
NetworkId 主要用来在网络层标识当前的区块链网络。NetworkId 不一致的两个节点无法建立连接。
NetworkId 无法通过配置文件指定,智能通过参数 --networkid 来指定。所以我们启动自己私链节点上需要记得加上这个参数。如果不加这个参数也不指定网络类型,默认 NetworkId 的值和以太坊主网一致。
不是。
这个根据上面的介绍可以很明显的看出,两者并没有非常高的关联度。
网上几乎所有提到搭建以太坊私链的文章,都要强调 NetworkId 需要和 genesis 文件里 ChainId 的值相同。事实上是没必要的。
就像下面这张图展示的这样,很多已经在主网运行的 EVM 链,它们的 ChainId 和 NetworkId 并不相同。比如以太经典,它的 ChainId 是 61,但 NetworkId 和以太坊主网一样都是 1。
之所以很多文章强调 ChainId 和 NetworkId 要保持一致,可能因为在某一段时间内,一些开发工具比如 MetaMask,会把 NetworkId 当作 ChainId 来用。不过现在 MetaMask 已经支持自定义 ChainId,以太坊也添加了 “eth_chainId” 这个 RPC API,相信两者误用的情况会越来越少。
‘拾’ 如何看待以太坊ETH2.0
我个人不是特别看好以太坊2.0。
以目前以太坊的发展情况来看,以太坊已经成为了世界上最大的一条公链,这点毫无疑问。伴随着以太坊得进一步发展,我们会发现区块链行业也取得了长足的进步。
一、我先讲一下关于目前以太坊的现状。
以太坊在这一次牛市中非常亮眼,换而言之,这一次的牛市就是因为以太坊上面的应用而拉起的。目前的以太坊有几个困境:第1个困境是交易费率太高,吓跑了很多人。第2个困境是交易速度太慢,网络拥堵问题非常严重。第3个困境是交易相对繁琐,其他公链显然要优于以太坊。这正是以太坊需要破局的地方,当以太坊升级到2.0以后,这些问题都会相应解决。