以太坊发送事务
Ⅰ ethereum缃戠粶鐨勭敤娉曟槸浠涔堬紵
浠ュお鍧婏紙Ethereum锛夋槸涓涓寮婧愮殑锛屽尯鍧楅摼鎶鏈鍩虹鐨勫钩鍙帮紝瀹冨厑璁稿紑鍙戣呭垱寤哄拰閮ㄧ讲鏅鸿兘鍚堢害銆傝繖浜涙櫤鑳藉悎绾﹀彲浠ヨ嚜鍔ㄦ墽琛屼簨鍔★紝鏃犻渶绗涓夋柟浠嬪叆銆備互涓嬫槸涓浜涗互澶鍧婄綉缁滅殑鐢ㄦ硶锛
1.**寤虹珛鍘讳腑蹇冨寲搴旂敤锛圖Apps锛**锛氫互澶鍧婄殑鏍稿績鍔熻兘涔嬩竴灏辨槸浣垮紑鍙戣呭緱浠ュ湪鍏跺钩鍙颁笂鏋勫缓鍜岃繍琛孌Apps銆傝繖浜涘簲鐢ㄤ笉鍙椾换浣曚釜浣撴垨缁勭粐鐨勬帶鍒讹紝涓斾笉闇瑕佷俊浠讳换浣曚腑蹇冩湇鍔″櫒銆
2.**鏅鸿兘鍚堢害**锛氫互澶鍧婂紑鍒涗簡鏅鸿兘鍚堢害鐨勬傚康锛岃繖绉嶅崗璁鍙浠ュ湪婊¤冻鏌愮嶆潯浠舵椂鑷鍔ㄦ墽琛屼氦鏄撱傛櫤鑳藉悎绾﹀彲浠ヨ鐢ㄤ簬鍚勭嶅満鍚堬紝鍖呮嫭閲戣瀺浜ゆ槗銆佷繚闄┿佸拰鎴垮湴浜х瓑銆
3.**浠e竵鍙戣**锛氫娇鐢ㄤ互澶鍧婏紝寮鍙戣呭彲浠ュ垱寤鸿嚜宸辩殑鍔犲瘑璐у竵銆備緥濡傦紝璁稿氬垵濮嬩唬甯佸彂鍞锛圛CO锛夐兘浣跨敤浜嗕互澶鍧婄殑ERC-20鏍囧噯銆
4.**鍒嗗竷寮忚嚜娌荤粍缁囷紙DAO锛**锛氫互澶鍧婁篃鍙浠ュ垱寤篋AO锛岃繖绉嶇粍缁囧舰寮忓畬鍏ㄧ敱浠g爜杩愯岋紝娌℃湁涓蹇冪$悊鑰呫
5.**闈炲悓璐ㄥ寲浠e竵锛圢FTs锛**锛氫互澶鍧婃敮鎸丯FTs鐨勫彂琛岋紝杩欎簺浠e竵鏄鐙涓鏃犱簩鐨勶紝鍙鐢ㄤ簬琛ㄧず鍚勭嶇嫭鐗圭殑铏氭嫙鎴栫幇瀹炰笘鐣岀殑鍟嗗搧鍜岃祫浜с
6.**Defi锛堝幓涓蹇冨寲閲戣瀺锛**锛氫互澶鍧婄綉缁滀篃琚骞挎硾鐢ㄤ簬鏋勫缓鍘讳腑蹇冨寲閲戣瀺搴旂敤锛屾彁渚涜稿傚熻捶銆佽嶇敓鍝佷氦鏄撱侀勬祴甯傚満绛夋湇鍔°
鎬荤殑鏉ヨ达紝浠ュお鍧婂湪寰堝氶嗗煙閮芥湁骞挎硾鐨勫簲鐢锛屽寘鎷浣嗕笉闄愪簬娓告垙銆佽壓鏈銆侀噾铻嶆湇鍔$瓑绛夈
Ⅱ 什么是Rollup
我们先来打个比方。
想象一下,我们回到了初中数学课堂上。“残忍” 的初中数学老师给我们每人发了一张卷子,上面列了 100 道数字很大的除法题。我们的任务是解出尽可能多的题。但是,这里面有个陷阱:我们只能将最终的解和每个计算步骤写在一张答题纸上。几分钟后,我们有了一种不祥之感,越想越觉得这个任务荒谬至极。算完几道题之后,这张答题纸就已经满满当当了。
这个噩梦般的故事与 Rollup 有什么关系?
在这个故事里,答题纸就是以太坊区块,算术题就是智能合约交易。以太坊目前非常拥堵。每个区块内要包含的交易太多了。更糟糕的是,绝大多数交易都是计算密集型的,例如闪电贷和通过聚合器路由的交易。随着 DeFi 兴起,简单转账和支付已经成了过去时。
这就是问题的关键所在。就像数学老师要求我们将每个计算步骤都写在一张答题纸上那样,以太坊也必须处理并记录每个事务的每一笔计算。
直到 Rollup 出现。
Rollup 将计算转移到链下,只将最少的事务数据存储在链上。从这个基本意义上来讲,Rollup 就是以太坊的草稿纸。Rollup 负责所有复杂的数据处理,让每个以太坊区块都能容纳(叠卷)成倍多的智能合约事务。
这个比喻不仅直观呈现了 Rollup 旨在解决的问题(“因计算过载而导致的网络拥堵”),还让我们大概了解了 Rollup 解决方案需要做到什么(“将计算转移到链下”)。但是,Rollup 的实际运作方式、呈现形式以及魅力所在都是我们需要深入研究的。
Ⅲ 如何创建和签署以太坊交易
交易
区块链交易的行为遵循不同的规则集
由于公共区块链分布式和无需许可的性质,任何人都可以签署交易并将其广播到网络。
根据区块链的不同,交易者将被收取一定的交易费用,交易费用取决于用户的需求而不是交易中资产的价值。
区块链交易无需任何中央机构的验证。仅需使用与其区块链相对应的数字签名算法(DSA)使用私钥对其进行签名。
一旦一笔交易被签名,广播到网络中并被挖掘到网络中成功的区块中,就无法恢复交易。
以太坊交易的数据结构:交易0.1个ETH
{
'nonce':'0x00', // 十进制:0
'gasLimit': '0x5208', //十进制: 21000
'gasPrice': '0x3b9aca00', //十进制1,000,000,000
'to': '' ,//发送地址
'value': '0x16345785d8a0000',//100000000000000000 ,10^17
'data': '0x', // 空数据的十进制表示
'chainId': 1 // 区块链网络ID
}这些数据与交易内容无关,与交易的执行方式有关,这是由于在以太坊中发送交易中,您必须定义一些其他参数来告诉矿工如何处理您的交易。交易数据结构有2个属性设计"gas": "gasPrice","gasLimit"。
"gasPrice": 单位为Gwei, 为 1/1000个eth,表示交易费用
"gasLimit": 交易允许使用的最大gas费用。
这2个值通常由钱包提供商自动填写。
除此之外还需要指定在哪个以太坊网络上执行交易(chainId): 1表示以太坊主网。
在开发时,通常会在本地以及测试网络上进行测试,通过测试网络发放的测试ETH进行交易以避免经济损失。在测试完成后再进入主网交易。
另外,如果需要提交一些其它数据,可以用"data"和"nonce"作为事务的一部分附加。
A nonce(仅使用1次的数字)是以太坊网络用于跟踪交易的数值,有助于避免网络中的双重支出以及重放攻击。
- const ethers = require('ethers')
- const signer = new ethers.Wallet('钱包地址')
- signer.signTransaction({
- 'nonce':'0x00', // 十进制:0
- 'gasLimit': '0x5208', //十进制: 21000
- 'gasPrice': '0x3b9aca00', //十进制1,000,000,000
- 'to': '' ,//发送地址
- 'value': '0x16345785d8a0000',//100000000000000000 ,10^17
- 'data': '0x', // 空数据的十进制表示
- 'chainId': 1 // 区块链网络ID
- })
- .then(console.log)
以太坊交易结构
以太坊交易签名
以太坊交易会涉及ECDSA算法,以Javascript代码为例,使用流行的ethers.js来调用ECDSA算法进行交易签名。
可以使用在线使用程序Composer将已签名的交易传递到以太坊网络。这种做法被称为”离线签名“。离线签名对于诸如状态通道之类的应用程序特别有用,这些通道是跟踪两个帐户之间余额的智能合约,并且在提交已签名的交易后就可以转移资金。脱机签名也是去中心化交易所(DEXes)中的一种常见做法。
也可以使用在线钱包通过以太坊账户创建签名验证和广播。
使用Portis,您可以签署交易以与加油站网络(GSN)进行交互。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。