当前位置:首页 » 以太坊知识 » 以太坊开发方案

以太坊开发方案

发布时间: 2024-05-03 03:00:43

❶ 浠ュお鍧婄殑DApp鏈夊摢浜


浠ュお鍧婄殑DApp鏈夊摢浜涳紵
浠ュお鍧婃槸鐩鍓嶆渶钁楀悕鐨勫尯鍧楅摼骞冲彴涔嬩竴锛屽畠鎻愪緵浜嗕竴涓鍘讳腑蹇冨寲鐨勭幆澧冿紝璁╁紑鍙戣呭彲浠ュ垱寤哄熀浜庡尯鍧楅摼鐨勫垎甯冨紡搴旂敤绋嬪簭锛圖App锛夛紝杩欎簺DApp鍙浠ュ疄鐜板悇绉嶅悇鏍风殑鍔熻兘銆備笅鏂囧皢浠嬬粛涓浜涗互澶鍧婄殑鐭ュ悕DApp銆
1.CryptoKitties
CryptoKitties鏄浠ュお鍧婁笂鏈钁楀悕鐨凞App涔嬩竴锛屽畠鏄涓涓鍩轰簬鍖哄潡閾剧殑鏀堕泦鍗$墝娓告垙銆傚湪杩欎釜娓告垙涓锛屼綘鍙浠ユ敹闆嗐佺箒娈栧拰浜ゆ槗铏氭嫙鐚銆傛瘡鍙鐚閮芥湁鍏剁嫭涓鏃犱簩鐨勫熀鍥犲簭鍒楋紝杩欎娇寰楀畠浠涓庡叾浠栫尗鍦ㄥ栬傚拰鐗瑰緛涓婃湁鎵涓嶅悓銆侰ryptoKitties璁╀汉浠鍦ㄧ幇瀹炰笘鐣屼箣澶栨敹闆嗙弽绋鐨勬暟瀛楄祫浜э紝杩欎娇瀹冩垚涓轰簡涓涓闈炲父鍙楁㈣繋鐨凞App銆
2.Gnosis
Gnosis鏄涓涓寤虹珛鍦ㄤ互澶鍧婁笂鐨勫幓涓蹇冨寲棰勬祴甯傚満銆傚畠鍏佽哥敤鎴风敤鍔犲瘑璐у竵涓嬫敞鍚勭嶄簨浠剁殑缁撴灉锛屾瘮濡傝皝浼氳耽寰椾竴鍦烘瘮璧涳紝鍝涓鏀垮厷灏嗗湪閫変妇涓鑾疯儨绛夈傞氳繃璁╁ぇ閲忓弬涓庤呭弬涓庢姇娉锛孏nosis鍙浠ラ勬祴鏈鏉ヤ簨浠剁殑鍙鑳界粨鏋滐紝骞惰╁競鍦哄弬涓庤呭埄鐢ㄨ繖绉嶄俊鎭鏉ュ仛鍑烘洿濂界殑鎶曟敞鍐崇瓥銆
3.MakerDAO
MakerDAO鏄涓涓鍩轰簬鍖哄潡閾剧殑鍊熻捶骞冲彴锛屽畠浣跨敤涓绉嶇ǔ瀹氬竵锛圖AI锛変綔涓鸿捶娆惧拰杩樻剧殑璐у竵銆侱AI鏄涓涓涓庣編鍏冩寕閽╃殑鍔犲瘑璐у竵锛屽叾浠峰间繚鎸佸湪1缇庡厓宸﹀彸锛屽彲浠ョ敤浜庤繘琛屽熻捶鎴栬呮敮浠樸傚熸句汉闇瑕佹姷鎶间互澶鍧婃垨鍏朵粬鏍囧噯鍔犲瘑璐у竵浣滀负鎶垫娂鍝侊紝浠ヨ幏鍙栧熸撅紝鍊熸剧殑鍒╃巼鐢卞競鍦哄喅瀹氥
4.Augur
Augur鏄涓涓鍘讳腑蹇冨寲鐨勯勬祴甯傚満骞冲彴锛屽彲浠ヨ╃敤鎴蜂笅娉ㄤ换浣曞彲鑳芥т簨浠剁殑缁撴灉銆備笌Gnosis涓嶅悓锛孉ugur灏嗛噸鐐规斁鍦ㄩ勬祴鐪熺浉涓婏紝杩欐剰鍛崇潃甯傚満鍙備笌鑰呭彲浠ヨ幏寰椾笌鐪熺浉鎺ヨ繎鐨勬敹鐩婏紝鑰屼笉鏄鍙鏄绾绮瑰湴鑾峰緱甯傚満鏀剁泭銆
鎬荤粨
杩欎簺DApp鏄浠ュお鍧婁笂鏈钁楀悕鐨勪竴浜涘簲鐢锛屽畠浠鍦ㄦ彁渚涘幓涓蹇冨寲鐨勭幆澧冧笅瑙e喅浜嗚稿氬悇绉嶅悇鏍风殑闂棰橈紝浠庢暟瀛楄祫浜ф敹闆嗭紝鍒伴勬祴甯傚満鍜岃捶娆俱傞殢鐫浠ュお鍧婂拰鍖哄潡閾炬妧鏈鐨勪笉鏂鍙戝睍锛屾垜浠鍙浠ユ湡寰呯湅鍒版洿澶氱殑搴旂敤绋嬪簭锛屾潵瀹炵幇鏇村氭湁瓒g殑闂棰樼殑瑙e喅鏂规堛

❷ 「官方」搭建Web3:Filecoin与以太坊携手共进


这是Protocol Labs创始人Juan Benet在EthCC 2021上的演讲概要,查看完整内容:

https://www.bilibili.com/video/BV1eb4y1r7E1

Filecoin网络是面向生态的,它与Protocol Labs搭建模块化解决方案的倾向是一致的。因为它本来就是设计给其他人使用,所以Filecoin在Web3领域的其他栈、应用和生态里如鱼得水。自从其在2020年10月的启动开始,Filecoin已经增长到超过8 exbibytes的可用存储空间,有超过400个项目进入了这个生态。以太坊就是一个能持续证明其可协作性和共同利益的生态系统。

Filecoin + 以太坊

>>>>Filecoin和以太坊虚拟机(EVM)

Filecoin生态意识到网络支持智能合约的好处。最初,开发者社区相信架设在以太坊和Filecoin之间的桥服务足够在Filecoin上支持智能合约了。不过,通过桥来使用智能合约是很笨重的方式,相比于直接在以太坊实现智能合约的功能和可组合性更是不足。有一个提议是在Filecoin上加入以太坊虚拟机(EVM),从而在存储层启用对智能合约的支持,以及为这两个生态的结合提供更多机会。


>>>>开发者工具和资源

Fleek:让用户能为去中心化网络架设网站、存储和分发文件及开发dapp。Fleek可以让每一个人(从专业的开发者到日常的互联网用户)更容易以去中心化的方式创建app和存储文件,从而加速去中心化网络的采用率。Fleek可以在Filecoin上进行自动化存档,并通过ENS(以太坊域名服务)这样的应用来利用以太坊的生态系统。

https://fleek.co/

Web3.Storage:是一个让开发者在Filecoin去中心化存储网络上存取数据的简单接口。Web3.Storage为开发者(包括以太坊dapp开发者)提供了搭建应用的简单方式,这些应用可以带有冗余的去中心化的存储以及安全的内容寻址数据。

http://web3.storage/

PowerLoom:以去中心化的方式将链上和链下数据聚合起来以生成带有密码学证明的快照。它旨在通过一个丰富的节点和利益相关者生态系统(他们被激励参与到协议里)来搭建信任,并按需提供洞见。PowerLoom特别适用于以太坊DeFi这样的生态,这类系统是非常复杂的,而且需要基于验证的信任。

https://powerloom.io/

>>>>DeFi应用

SecuredFinance(https://secured-finance.com/)是一个综合平台,整合了基于智能合约的点对点固定利率贷款、抵押品管理服务、货币间交易和其他类型的利率产品。Secured Finance的协议是去中心化的点对点金融协议,提供了由以太坊智能合约赋能的区块链上的中后台银行业务。Secured Finance可以满足Filecoin网络内的需求,它提供的解决方案能够满足Filecoin存储提供者对FIL贷款的强烈需求。

>>>>数据市场

OceanProtocol(https://t.co/misApE3ggc?amp=1)是一个在Filecoin上搭建的数据市场。Ocean的数据token(data tokens)是以太坊ERC-20 token,可以轻易地用于发布和消费数据服务。如果你有1个数据token,你可以访问一个特定的数据服务。Ocean market是一个专门为数据服务的去中心化交易所,它分叉了一个Balancer AMM(自动化做市商)来降低gas成本。在这个市场中,用户可以对数据进行发布、购买、销售、消费和stake操作。

通过Filecoin,用户可以利用Ocean来发起自己的Filecoin数据市场,或创建一个Filecoin dataDAO或指数基金。通过Ocean Protocol的工具和Filecoin的去中心化存储数据库,我们正见证新生的开放数据经济。


>>>>视频应用

LivePeer:是一个去中心化的在线视频流媒体基础设施,由以太坊区块链确保安全性。将Filecoin和IPFS结合提供存储和内容分发功能后,去中心化视频应用就成为可能了。

https://livepeer.org/

Voodfy:正为私有的视频架设服务提供去中心化工具。这是一个多功能的安全流媒体解决方案,让用户能完全控制自己的内容,这包括了访问权的设定以及变现的方式。它利用了Livepeer、Ethereum、Textile Powergate和Filecoin.

https://voodfy.com/

VideoCoin:正搭建一个能可靠地创建、存储和交易基于视频的NFT解决方案,它可以绕过在以太坊上存储实际内容时固有的复杂性和费用。VideoCoin正将其去中心化视频处理网络与Filecoin整合起来,以搭建首个专门为创建和交易视频NFT服务的平台。这个平台是新生的全球数字收藏品市场急需的一部分。

https://videocoin.io/


>>>>NFT

nft.storage(http://nft.storage/)是一个由Protocol Labs实验室和Pinata支持的服务,它专门为存储NFT数据而设计。

nft.storage让开发者通过内容寻址和去中心化存储来保护其NFT资产和相关的元数据,确保所有的NFT遵循最佳实践以实现长期的可访问性。

未来的使用场景


随着Filecoin和Ethereum生态系统的成长和重叠,会出现更多的新生用例和开发者机会。一些可以进行创新的用例包括:

>>>>可组合的DeFIL

将存储和Defi的世界结合可以产生一些机会。人们可以将市场订单(如要价、出价和交易)带到一个去中心化交易所上,以观察市场是如何评判这些订单的价值的。通过这样的能力,生态系统可以开始想象硬件期货(hardware futures)和时空期货(spacetime futures)等的出现。


>>>>数据丰富的NFT

NFT将会越来越复杂,而Web3社区需要 探索 采用数据丰富(data-rich)的NFT的方式。VideoCoin已经将其视频处理引擎与Filecoin连接起来,以结合以太坊对NFT的支持能力及Filecoin的存储能力。像VideoCoin这样的工具可以用来创建一类新型的NFT,如短电影、视频片段和完整长度的专题特写。


>>>>按观看次数支付的媒体

通过在Filecoin上存储的信息,我们可以利用以太坊的token支持能力去创建由token保护的页面和媒体(文章、电影和音乐等)。我们可以复制Web2时代的按观看次数支付模式,而无需复制数据和广告模型。


这只是一个开始!Filecoin和以太坊生态有长期的协作 历史 和机会,未来可期。

❸ 以太坊的使命是成为一台分布式世界级计算机

以太坊的使命是成为一台分布式世界级计算机,取代传统的服务器集群。我们可以把它看作是一种可以在全世界使用的计算设备,它不能停止和关闭。这篇文章是以太坊路线图的初学者指南,解释了它在技术上是如何工作的

如果以太坊是一台计算机,这些更新中的每一个都可以被视为操作系统(OS)升级,类似于谷歌的安卓系统升级或苹果的IOS系列,以太坊将分四个阶段

在这四个阶段发布其版本,以太坊将增加新功能,提高平台的用户友好性和系统安全性,并提高以太坊的可扩展性

第一阶段,frontier(2015年7月):以太坊发布了第一个版本,允许开发者挖掘以太坊,并基于以太坊

第二阶段开发DAPP和工具软件,宅基地(2016年3月):发布了第一个版本的生产环境,优化和改进了许多协议,为后续升级奠定了基础,并加速了交易速度 第三阶段,大都会(2017年10月):第三阶段分为两个版本,命名为拜占庭(2017年10月)和君士坦丁堡(时间待定,预计2018年),这将使以太坊更轻、更快、更安全

第四阶段,宁静(时间待定):此版本将使用期待已久的持有证明(POS),它将使用Casper consensus算法

所有这些更新将帮助以太坊实现更大的规模,这也意味着更快的事务速度和更低的成本。正如我们所看到的,以太坊团队在事务扩展方面做得非常好

metropolis的目标是实现更轻、更快和更安全的以太坊版本,这也将为智能合约开发商提供更大的灵活性

大都市将分为两个核心版本:拜占庭和君士坦丁堡。第一次拜占庭硬分叉发生在10月,第二次君士坦丁堡硬分叉尚未确定日期,但预计将在2018年

每个阶段包括一系列以太坊改进建议(EIP)。拜占庭共有九个EIP,用于提高网络的隐私性、可扩展性和安全性。这些更新将使以太坊区块更快,交易成本更低

以下是对Metropolis的一些主要更新:

隐私-实现

匿名交易(zk SNARK)更易于开发人员编译

程序更可预测

汽油费提高钱包安全性

帐户抽象提高挖掘难点

隐私

在metropolis版本中,开发人员将获得一个新的隐私工具-有效地验证ZK snarks在链上的能力。ZK snarks是“非交互式零知识证明”

简言之,零知识证明是一种能够证明陈述真实性的证据,并且不会披露超过证明所需的信息

这是一个简单的例子。我需要向约翰证明我知道手机的密码。为了证明这一点,我所需要做的就是解锁手机,而不是泄露我输入的密码

零知识证明是,当验证人(I)说服验证人(John)时,他们可以证明自己拥有一定的知识,而不必暴露真实的知识内容。在本例中,我可以在手机中输入密码并显示手机已解锁,而不显示我输入的任何密码

那么这将如何影响以太坊的开发?某些连接变量可以是私有的。我们与用户一起存储这些信息,而不是将这些秘密信息存储在区块链中。发送方、接收方、金额和数据等信息可以隐藏在交易中

除了zksnarks(用于zcash)之外,以太坊还将使用环签名(用于monero的隐私方案)。以太坊将利用这两个优势。

#数字货币# #比特币[超话]# #欧易OKEx#

❹ 2022年区块链领域的四大看点|界面预言家⑯

区块链领域有一个关于“不可能三角”的核心命题,分别是安全性、性能和去中心化程度。这个命题是区块链技术演进的根本,不管是比特币还是以太坊,亦或是大力发展的联盟链,本质上都是在以上三要素之间作出取舍。

随着以太坊在区块链开发者之间核心地位的确定,性能逐渐成为其发展的瓶颈,所以在可见的2022年,关于性能上和效率的提升将是一个长期且关键的问题。

基于以太坊生态,要在“不可能三角”的限定内提升性能,目前的路径已经明确,第一个是Layer1层面的,也就是其他公链来分担以太坊的数据压力。

2021年的主要趋势之一是出现很多Layer 1的使用增加,该领域目前由 Solana、Avalanche、Terra 和 Binance Smart Chain 主导,每个链都拥有不断增长的生态系统,价值已超过100 亿美元。

第二种是Layer2,基于以太坊主网,但将结算转移至第二层网络,从而提升效率。这也是以太坊正在努力的方向,Layer2通常称为 rollups,因为它们在将更新的交易数据发送回以太坊之前,将交易“汇总”或捆绑在一起并在新环境中执行它们。

而区块链最关键的数据验证环节,Layer2目前有两种技术方案,一种名为“Optimistic rollups”,一种名为“ZK Rollups”。这两种技术路线都有团队正在开发相应的网络,并有生态支持,如选择“Optimistic rollups”的Arbitrum,选择“ZK Rollups”的dYdX。

而介于Layer1与Layer2之间,还有一种方案名为“侧链”,它部分兼容以太坊主网,但又不属于Layer2,它们专门用于处理以太坊的过剩容量,而不是与整个以太坊竞争,并以互补的方式托管以太坊应用程序。

而从目前用户最活跃的DeFi说起,根据DeFi Lama的数据统计,以太坊上DeFi的锁仓量已经超过1000亿美元,BSC、Solana、Avalanche等其它公链也吸引了近490亿美元的资金,成为了一个非常活跃的金融场景。

虽然很多公链的数据颇具规模,但不同的链间如同数据孤岛,不同链上的资产无法自由交换,此外,很多新兴公链发展并不如以太坊,缺失很多基础设施,比如稳定币、NFT 游戏 等等。

因此,需要将其它链上的资产通过跨链引入自身的公链,在当前常用的跨链方式中,除了中心化机构如交易所钱包中跨链提币之外,最常见的就是各种去中心化跨链资产桥。

对于跨链桥而言,最重要的问题就是如何达成共识,这在很大程度上关系着投资者托管资产的安全性,就目前来说,中心化交易所的跨链桥对用户而言是最方便使用的一种跨链桥,不过中心化交易所跨链桥存在着单点故障的问题,另外现在的跨链桥还在逐渐向非托管化的方向去发展,为的就是进一步的保障用户的资产安全。

DAO全称是“Decentralized Autonomous Organization”,即“去中心化自治组织”,这是一种试图摆脱传统科层制的管理模式,以区块链技术来完成自主运行的组织形式。

去中心化自治组织 (DAO) 能够利用基于区块链的治理实现个人的全球协调。DAO 可以用于许多目的,包括管理区块链项目的运营和资本 (MakerDAO)、管理投资资本 (The LAO)、管理 游戏 资产的使用 (YGG DAO)、协调文化团体 (Friends With Benefits) 或协调购买资产(Constitution DAO)。

deep网站收录的DAO数量已经达到187个,管理总资产超过120亿美元,涵盖成员超过160万。虽然在区块链领域,这并不是一个庞大的数据。但包括红杉资本在内的机构都开始注意到这个新名词。

加密货币市值在2021年正式突破2万亿美元,目前来到2.5万亿美元的规模,较年初上涨 175%。而伴随着市值的爆炸式增长,加密领域的融资也飞速上扬。据统计,2021 年加密行业公开披露的一级市场融资数1529笔,总额约为326 亿美元,同比增长达到夸张的814.2%。

但加密领域的股权融资与其他领域有所不同,在“VIE”架构下传统VC最主要的资金退出通道是企业登陆二级市场进行IPO。但区块链领域自带新型融资方式ICO(国内禁止),这种去中心化的融资方式的关键不同在于用户在更早期就可以参与社区的成长,而在传统的风投模式下,只有登陆二级市场后,普通投资者才有机会去分享企业成长红利。

而在加密领域,首先“公司”的概念被弱化了,由于“Web3”和“DAO”的存在,社区与组织才是更多被提及的存在,用户天然对中心化平台有一种不信任感。

近两周加密社区最火热的项目名为“OpenDao”,是一个模仿头部NFT交易平台“OpenSea”的项目,而该项目能够火热的原因源自于加密玩家对于“OpenSea”的不满,“OpenSea”近期传出消息正在进行新一轮融资,并准备IPO。但NFT爱好者不希望“OpenSea”成为和当前的互联网巨头一样的垄断平台,所以“OpenDao”打出了去中心化的理念,并给所有“OpenSea”用户发放空投。

且在2021年末,加密社区关于“Web3”产生了争论,包括特斯拉董事长埃隆·马斯克和推特前执行官杰克·多西在争论时将矛盾指向了加密金融里的风投机构,认为VC们攫取了过多利益。

而在2021年也出现了一种以“DAO”形式出现的投资机构,这种组织里包含了社区中极具影响力又深耕技术领域的投资人,他们所孵化的项目表现甚至超过了部分传统VC的成绩。

❺ ETH开发实践——批量发送交易

在使用同一个地址连续发送交易时,每笔交易往往不可能立即到账, 当前交易还未到账的情况下,下一笔交易无论是通过 eth.getTransactionCount() 获取nonce值来设置,还是由节点自动从区块中查询,都会获得和前一笔交易同样的nonce值,这时节点就会报错 Error: replacement transaction underpriced

在构建一笔新的交易时,在交易数据结构中会产生一个nonce值, nonce是当前区块链下,发送者(from地址)发出的交易(成功记录进区块的)总数, 再加上1。例如新构建一笔从A发往B的交易,A地址之前的交易次数为10,那么这笔交易中的nonce则会设置成11, 节点验证通过后则会放入交易池(txPool),并向其他节点广播,该笔交易等待矿工将其打包进新的区块。

那么,如果在先构建并发送了一笔从地址A发出的,nonce为11的交易,在该交易未打包进区块之前, 再次构建一笔从A发出的交易,并将它发送到节点,不管是先通过web3的eth.getTransactionCount(A)获取到的过往的交易数量,还是由节点自行填写nonce, 后面的这笔交易的nonce同样是11, 此时就出现了问题:

实际场景中,会有批量从一个地址发送交易的需求,首先这些操作可能也应该是并行的,我们不会等待一笔交易成功写入区块后再发起第二笔交易,那么此时有什么好的解决办法呢?先来看看geth节点中交易池对交易的处理流程

如之前所说,构建一笔交易时如果不手动设置nonce值,geth节点会默认计算发起地址此前最大nonce数(写入区块的才算数),然后将其加上1, 然后将这笔交易放入节点交易池中的pending队列,等到节点将其打包进区块。

构建交易时,nonce值是可以手动设置的,如果当前的nonce本应该设置成11, 但是我手动设置成了13, 在节点收到这笔交易时, 发现pending队列中并没有改地址下nonce为11及12的交易, 就会将这笔nonce为13的交易放入交易池的queued队列中。只有当前面的nonce补齐(nonce为11及12的交易被发现并放入pending队列)之后,才会将它放入pending队列中等待打包。

我们把pending队列中的交易视为可执行的,因为它们可能被矿工打包进最新的区块。 而queue队列因为前面的nonce存在缺失,暂时无法被矿工打包,称为不可执行交易。

那么实际开发中,批量从一个地址发送交易时,应该怎么办呢?

方案一:那么在批量从一个地址发送交易时, 可以持久化一个本地的nonce,构建交易时用本地的nonce去累加,逐一填充到后面的交易。(要注意本地的nonce可能会出现偏差,可能需要定期从区块中重新获取nonce,更新至本地)。这个方法也有一定的局限性,适合内部地址(即只有这个服务会使用该地址发送交易)。

说到这里还有个坑,许多人认为通过 eth.getTransactionCount(address, "pending") ,第二个参数为 pending , 就能获得包含本地交易池pending队列的nonce值,但是实际情况并不是这样, 这里的 pending 只包含待放入打包区块的交易, 假设已写入交易区块的数量为20, 又发送了nonce为21,22,23的交易, 通过上面方法取得nonce可能是21(前面的21,22,23均未放入待打包区块), 也可能是22(前面的21放入待打包区块了,但是22,23还未放入)。

方案二是每次构建交易时,从geth节点的pending队列取到最后一笔可执行交易的nonce, 在此基础上加1,再发送给节点。可以通过 txpool.content 或 txpool.inspect 来获得交易池列表,里面可以看到pending及queue的交易列表。

启动节点时,是可以设置交易池中的每个地址的pending队列的容量上限,queue队列的上容量上限, 以及整个交易池的pending队列和queue队列的容量上限。所以高并发的批量交易中,需要增加节点的交易池容量。

当然,除了扩大交易池,控制发送频率,更要设置合理的交易手续费,eth上交易写入区块的速度取决于手续费及eth网络的拥堵状况,发送每笔交易时,设置合理的矿工费用,避免大量的交易积压在交易池。

❻ 011:Ethash算法|《ETH原理与智能合约开发》笔记

待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。

课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第四课分为三部分:

这篇文章是第四课第一部分的学习笔记:Ethash算法。

这节课介绍的是以太坊非常核心的挖矿算法。

在介绍Ethash算法之前,先讲一些背景知识。其实区块链技术主要是解决一个共识的问题,而共识是一个层次很丰富的概念,这里把范畴缩小,只讨论区块链中的共识。

什么是共识?

在区块链中,共识是指哪个节点有记账权。网络中有多个节点,理论上都有记账权,首先面临的问题就是,到底谁来记帐。另一个问题,交易一定是有顺序的,即谁在前,前在后。这样可以解决双花问题。区块链中的共识机制就是解决这两个问题,谁记帐和交易的顺序。

什么是工作量证明算法

为了决定众多节点中谁来记帐,可以有多种方案。其中,工作量证明就让节点去算一个哈希值,满足难度目标值的胜出。这个过程只能通过枚举计算,谁算的快,谁获胜的概率大。收益跟节点的工作量有关,这就是工作量证明算法。

为什么要引入工作量证明算法?

Hash Cash 由Adam Back 在1997年发表,中本聪首次在比特币中应用来解决共识问题。

它最初用来解决垃圾邮件问题。

其主要设计思想是通过暴力搜索,找到一种Block头部组合(通过调整nonce)使得嵌套的SHA256单向散列值输出小于一个特定的值(Target)。

这个算法是计算密集型算法,一开始从CPU挖矿,转而为GPU,转而为FPGA,转而为ASIC,从而使得算力变得非常集中。

算力集中就会带来一个问题,若有一个矿池的算力达到51%,则它就会有作恶的风险。这是比特币等使用工作量证明算法的系统的弊端。而以太坊则吸取了这个教训,进行了一些改进,诞生了Ethash算法。

Ethash算法吸取了比特币的教训,专门设计了非常不利用计算的模型,它采用了I/O密集的模型,I/O慢,计算再快也没用。这样,对专用集成电路则不是那么有效。

该算法对GPU友好。一是考虑如果只支持CPU,担心易被木马攻击;二是现在的显存都很大。

轻型客户端的算法不适于挖矿,易于验证;快速启动

算法中,主要依赖于Keccake256 。

数据源除了传统的Block头部,还引入了随机数阵列DAG(有向非循环图)(Vitalik提出)

种子值很小。根据种子值生成缓存值,缓存层的初始值为16M,每个世代增加128K。

在缓存层之下是矿工使用的数据值,数据层的初始值是1G,每个世代增加8M。整个数据层的大小是128Bytes的素数倍。

框架主要分为两个部分,一是DAG的生成,二是用Hashimoto来计算最终的结果。

DAG分为三个层次,种子层,缓存层,数据层。三个层次是逐渐增大的。

种子层很小,依赖上个世代的种子层。

缓存层的第一个数据是根据种子层生成的,后面的根据前面的一个来生成,它是一个串行化的过程。其初始大小是16M,每个世代增加128K。每个元素64字节。

数据层就是要用到的数据,其初始大小1G,现在约2个G,每个元素128字节。数据层的元素依赖缓存层的256个元素。

整个流程是内存密集型。

首先是头部信息和随机数结合在一起,做一个Keccak运算,获得初始的单向散列值Mix[0],128字节。然后,通过另外一个函数,映射到DAG上,获取一个值,再与Mix[0]混合得到Mix[1],如此循环64次,得到Mix[64],128字节。

接下来经过后处理过程,得到 mix final 值,32字节。(这个值在前面两个小节《 009:GHOST协议 》、《 010:搭建测试网络 》都出现过)

再经过计算,得出结果。把它和目标值相比较,小于则挖矿成功。

难度值大,目标值小,就越难(前面需要的 0 越多)。

这个过程也是挖矿难,验证容易。

为防止矿机,mix function函数也有更新过。

难度公式见课件截图。

根据上一个区块的难度,来推算下一个。

从公式看出,难度由三部分组成,首先是上一区块的难度,然后是线性部分,最后是非线性部分。

非线性部分也叫难度炸弹,在过了一个特定的时间节点后,难度是指数上升。如此设计,其背后的目的是,在以太坊的项目周期中,在大都会版本后的下一个版本中,要转换共识,由POW变为POW、POS混合型的协议。基金会的意思可能是使得挖矿变得没意思。

难度曲线图显示,2017年10月,难度有一个大的下降,奖励也由5个变为3个。

本节主要介绍了Ethash算法,不足之处,请批评指正。

❼ 浠ュお鍧婂備綍瑙e喅璺ㄩ摼浜ゆ槗鐨勯棶棰


浠ュお鍧婂備綍瑙e喅璺ㄩ摼浜ゆ槗鐨勯棶棰橈紵
闅忕潃鏁扮櫨绉嶅姞瀵嗚揣甯佺殑鍏磋捣锛岃法閾句氦鏄撴垚涓轰簡鍖哄潡閾句笘鐣屼腑鐨勪竴涓鐑闂ㄨ瘽棰樸傝法閾句氦鏄撳厑璁哥敤鎴峰湪涓嶅悓鐨勫尯鍧楅摼涔嬮棿绉诲姩鏁板瓧璧勪骇锛屼负鐢ㄦ埛甯︽潵鏇村氶夋嫨锛屽悓鏃朵篃鏈夊彲鑳芥垚涓烘湭鏉ユ暟瀛楅噾铻嶄笘鐣岀殑鍩虹煶銆傜劧鑰岋紝璺ㄩ摼浜ゆ槗涔熼潰涓寸潃涓浜涙寫鎴橈紝渚嬪備簰鎿嶄綔鎬с佸畨鍏ㄥ拰鍚堣勭瓑銆備互澶鍧婃槸鐩鍓嶆渶鍏蜂唬琛ㄦх殑鏅鸿兘鍚堢害骞冲彴锛屼篃鍦ㄧН鏋佹帰绱㈣В鍐宠法閾句氦鏄撻棶棰樼殑鏂规堛
浼犵粺涓婏紝璺ㄩ摼浜ゆ槗涓昏侀氳繃绗涓夋柟涓浠嬫潵瀹炵幇銆傝繖绉嶆柟寮忓瓨鍦ㄤ竴浜涢棶棰橈紝渚嬪備腑蹇冨寲椋庨櫓銆佹晥鐜囦綆涓嬨侀珮鏄傜殑鎵嬬画璐圭瓑銆備互澶鍧婅嚧鍔涗簬瑙e喅杩欎簺闂棰橈紝鍗抽氳繃寮鍙戞洿澶氱殑鎶鏈鍜屾爣鍑嗭紝浠ヤ究瀹炵幇鏇村姞瀹夊叏鍜岄珮鏁堢殑鍘讳腑蹇冨寲璺ㄩ摼浜ゆ槗銆
绗涓涓瑙e喅鏂规堟槸鍘熷瓙浜ゆ崲鍗忚锛圓tomicSwapProtocol锛夈侫tomicSwap鏄涓绉嶆棤淇℃墭鏈哄埗鐨勮法閾句氦鏄撳崗璁锛岃兘澶熺‘淇濆弬涓庤呬箣闂寸殑鏁板瓧璧勪骇鍦ㄨ法閾句氦鏄撲腑涓嶄細琚鎭舵剰鏀诲嚮銆備互澶鍧婄敤鎴峰彲浠ヤ娇鐢ㄨュ崗璁鏉ュ疄鐜颁笌鍏朵粬鍖哄潡閾剧殑浜ゆ槗锛屽湪姝よ繃绋嬩腑锛屼粬浠涓嶅繀渚濊禆绗涓夋柟鍜屼腑浠嬨傜敱浜庤ュ崗璁鏃犻渶淇℃墭鏈哄埗锛屽洜姝ゅ彲浠ユ洿瀹夊叏锛屽苟鍙鍦ㄥ己楠岃瘉鏉′欢涓嬪畬鎴愪氦鏄撱
绗浜屼釜瑙e喅鏂规堟槸涓缁ч摼/渚ч摼锛圧elayChain/Sidechain锛夈備腑缁ч摼鏄涓绉嶈秴绾ч摼锛屽彲浠ヨ繛鎺ュ氫釜鍗曠嫭鐨勫尯鍧楅摼銆傝櫧鐒舵瘡涓鍖哄潡閾句箣闂存病鏈夌洿鎺ヤ氦浜掞紝浣嗘槸瀹冧滑閮芥湁鍙浠ヤ簰閫氱殑涓缁ч摼銆備互澶鍧婂熀閲戜細姝e湪寮鍙戠殑涓缁ч摼鏄疨olkadot锛屽畠浣滀负涓涓鍗曠嫭鐨勫尯鍧楅摼锛屽彲浠ュ勭悊鍏朵粬鍖哄潡閾剧殑淇℃伅锛屽苟灏嗗叾浼犻掑洖鍘熷嬪尯鍧楅摼銆傚湪杩欑嶆灦鏋勪腑锛屼互澶鍧婂彲浠ュ皢浜ゆ槗鍙戦佸埌Polkadot锛岀劧鍚嶱olkadot灏嗕氦鏄撳彂閫佸埌鐩鏍囧尯鍧楅摼锛屽苟鍦ㄨュ尯鍧楅摼涓澶勭悊浜ゆ槗銆
绗涓変釜瑙e喅鏂规堟槸妗ユ帴鍗忚锛圔ridgingProtocol锛夈傛ˉ鎺ュ崗璁鏃ㄥ湪寤虹珛鍖哄潡閾惧拰浼犵粺閲戣瀺甯傚満涔嬮棿鐨勬ˉ姊併備互澶鍧婂凡缁忓紑鍙戝嚭涓绉嶅悕涓篧rappedBitcoin锛圵BTC锛夌殑鍔犲瘑璐у竵锛屽畠鏄浠ュお鍧奅RC-20鏍囧噯浠e竵锛屽叾浠峰间笌姣旂壒甯佺瓑浠枫傞氳繃WBTC锛屾瘮鐗瑰竵鎸佹湁鑰呭彲浠ュ皢鍏惰浆鎹涓哄姞瀵嗚揣甯丒RC-20鏍囧噯浠e竵锛岀劧鍚庡皢鍏朵氦鎹㈠埌浠ュお鍧婁笂锛屼互瀹炵幇姣旂壒甯佸湪浠ュお鍧婁笂鐨勪娇鐢ㄣ傝繖绉嶆柟娉曚娇寰楁瘮鐗瑰竵鑳藉熷湪浠ュお鍧婄殑鏅鸿兘鍚堢害涓婅繘琛岋紝浠庤岃幏寰楁洿澶氬簲鐢ㄥ満鏅銆
鎬讳箣锛屼互澶鍧婃e湪鍔鍔涜В鍐宠法閾句氦鏄撻棶棰橈紝骞舵彁渚涗簡澶氱嶈В鍐虫柟妗堟潵瀹炵幇瀹夊叏銆侀珮鏁堛佷簰鎿嶄綔鐨勮法閾句氦鏄撱傝繖浜涜В鍐虫柟妗堝皢鎺ㄥ姩鍖哄潡閾惧拰鏁板瓧璧勪骇甯傚満鐨勮繘涓姝ュ彂灞曞拰搴旂敤锛屼负鐢ㄦ埛甯︽潵鏇翠究鎹枫佹洿瀹夊叏銆佹洿澶氭牱鍖栫殑鏁板瓧璧勪骇浣撻獙銆

❽ 【ETH钱包开发03】web3j转账ETH

在之前的文章中,讲解了创建、导出、导入钱包。
【ETH钱包开发01】创建、导出钱包
【ETH钱包开发02】导入钱包

本文主要讲解以太坊转账相关的一些知识。交易分为ETH转账和ERC-20 Token转账,本篇先讲一下ETH转账。

1、解锁账户发起交易。钱包keyStore文件保存在geth节点上,用户发起交易需要解锁账户,适用于中心化的交易所。

2、钱包文件离线签名发起交易。钱包keyStore文件保存在本地,用户使用密码+keystore的方式做离线交易签名来发起交易,适用于dapp,比如钱包。

本文主要讲一下第二种方式,也就是钱包离线签名转账的方式。

交易流程
1、通过keystore加载转账所需的凭证Credentials
2、创建一笔交易RawTransaction
3、使用Credentials对象对交易签名
4、发起交易

注意以下几点:

1、Credentials
这里,我是通过获取私钥的方式来加载 Credentials

还有另外一种方式,通过密码+钱包文件keystore方式来加载 Credentials

2、nonce

nonce是指发起交易的账户下的交易笔数,每一个账户nonce都是从0开始,当nonce为0的交易处理完之后,才会处理nonce为1的交易,并依次加1的交易才会被处理。

可以通过 eth_gettransactioncount 获取nonce

3、gasPrice和gasLimit
交易手续费由gasPrice 和gasLimit来决定,实际花费的交易手续费是 gasUsed * gasPrice 。所有这两个值你可以自定义,也可以使用系统参数获取当前两个值

关于 gas ,你可以参考我之前的一篇文章。
以太坊(ETH)GAS详解

gasPrice和gasLimit影响的是转账的速度,如果gas过低,矿工会最后才打包你的交易。在app中,通常给定一个默认值,并且允许用户自己选择手续费。

如果不需要自定义的话,还有一种方式来获取。获取以太坊网络最新一笔交易的 gasPrice ,转账的话, gasLimit 一般设置为21000就可以了。

Web3j还提供另外一种简单的方式来转账以太币,这种方式的好处是不需要管理nonce,不需要设置gasPrice和gasLimit,会自动获取最新一笔交易的gasPrice,gasLimit 为21000(转账一般设置成这个值就够用了)。

这个问题,我想是很多朋友所关心的吧。但是到目前为止,我还没有看到有讲解这方面的博客。

之前问过一些朋友,他们说可以通过区块号、区块哈希来判断,也可以通过Receipt日志来判断。但是经过我的一番尝试,只有 BlockHash 是可行的,在web3j中根据 blocknumber 和 transactionReceipt 都会报空指针异常。

原因大致是这样的:在发起一笔交易之后,会返回 txHash ,然后我们可以根据这个 txHash 去查询这笔交易相关的信息。但是刚发起交易的时候,由于手续费问题或者以太网络拥堵问题,会导致你的这笔交易还没有被矿工打包进区块,因此一开始是查不到的,通常需要几十秒甚至更长的时间才能获取到结果。我目前的解决方案是轮询的去刷 BlockHash ,一开始的时候 BlockHash 的值为0x00000000000,等到打包成功的时候就不再是0了。

这里我使用的是rxjava的方式去轮询刷的,5s刷新一次。

正常情况下,几十秒内就可以获取到区块信息了。

区块确认数=当前区块高度-交易被打包时的区块高度。

热点内容
挖矿用4g网络 发布:2024-05-17 18:02:39 浏览:21
bts区块链查询有哪些 发布:2024-05-17 17:50:45 浏览:132
图像显卡eth 发布:2024-05-17 17:47:48 浏览:400
用btc买币还是usdt 发布:2024-05-17 17:40:07 浏览:583
元宇宙实战 发布:2024-05-17 17:26:13 浏览:423
区块链pc端钱包工作原理 发布:2024-05-17 17:23:27 浏览:416
罗杰斯怎么评论比特币 发布:2024-05-17 16:56:20 浏览:970
货比特币是什么东西 发布:2024-05-17 16:37:42 浏览:746
网上挖矿是啥意思 发布:2024-05-17 16:26:20 浏览:724
算力跟usdt关系 发布:2024-05-17 16:15:48 浏览:762