详解以太坊的交易结构和随机数签名

详解以太坊的交易结构和随机数签名
作者:Jose Aguinaga;翻译&校对: 闵敏 & 阿剑;原文标题:《科普:创建和签名以太坊交易》在我们之前的文章中,我们已经讲解了创建私钥的作用以及如何创建一个私钥。具体来说,在第一部分,我们知道了密钥就是一个很大的随机数而已,没有别的;而在第二部分,我们学习了如何用一个很大的随机数来创建一个能够持有资产的以太坊钱包。在这最后一部分里,我们要学习如何使用这样的随机数来签名、操作你自己的虚拟资产。交易 —— 旧的出去,新的进来区块链的交易与银行交易没有特别大的区别。今时今日,大部分银行都支持你用数字手段完成大部分操作:转账给别人、给自己的储蓄账户存钱,乃至借贷,等等。互联网技术让我们可以完成大部分操作,而无需亲自到场。尽管这些操作对你来说很容易,但对银行来说,既不容易,也不便宜。在幕后,有多个第三方参与你的银行操作的结算、验证和确认。如果这些还不够,为了符合银行业的规范条例,金融机构还必须执行繁琐的措施来确定你(发起操作的人)就是那个有权操作你的账户的人。所有这些层面都会产生繁重的成本,这就是为什么 Visa 和万事达这样的网关在每次提供服务时都要收取费用的原因,通常是根据转账额来收取。而且,当然,任何时候你发起的任何操作,都可以被冻结,乃至被撤销。– 在 2017 年,欧盟要求金融机构实现 Payment Services Directive 2 (Directive 2015/2366),也就是银行必须实行包括 SCA(强身份验证)在内的安全条例。由于 PSD2+SCA 的成本,在 2019 年 3 月,也只有 59% 的欧洲银行成功满足了监管要求,让最后通牒时间又推迟了一年。-区块链交易的规则有所不同因为公链的分布式和免许可特性,任何人都可以在网络中签名和广播交易。基于区块链的特点,你需要划出一部分资金作为手续费,好让你的交易能被 “挖出”(即, 被某个矿工打包到区块链上),但手续费的高低则要看用户对使用区块链的需求,与转移价值的多少无关。举个例子,用一个以太坊账户给另一个账户转账 1 美元,和转账 100 万美元,要交的手续费是一样的。只要手续费一致,这两笔交易在矿工那里是一视同仁的,都会被打包到有效的区块中,向全网传播。– 区块中包含了一系列的交易,而且区块是一个接一个,只增不减的。因为新区块的部分数据是来自上一区块的,这些 “区块” 就会形成一个接一个的有序链条,这就是 “区块链” 这个名字的由来。区块链还使用了一种易于处理和验证的数据结构,叫做 “默克尔树”,这也是为什么要伪造区块链上的某一笔交易或者某一个区块几乎不可能的部分原因 —— 实在是太容易鉴别了。-此外,区块链交易不需要任何权威团体的验证。要想发出一笔有效的交易,只需使用对应于所在区块链系统的数字签名算法(DSA)的私钥,为交易生成一个签名即可。以太坊和比特币区块链使用 ECDSA 算法,而 Cardano 和 Polkadot 则使用 EdDSA 算法。这两张算法都依赖于椭圆曲线密码学,但后者使用了扭结的 Edwards 曲线,是一个对通用数字签名的提升。任何账户都能用私钥签名来发起交易,但只有余额足够的地址所发起的交易才能被成功执行。– 椭圆曲线签名算法基于 “离散对数问题”, 其经典形式是,给定一个整数 k,使得 a^k ≡ b (mod p),其中 p 是质数,求 k。不像其它公钥密码学算法比如 RSA,仅基于大指数的因式分解问题(这在最近已经成了格密码学(lattice-based cryptography)的攻击目标)。今天还没有发现计算 k 的高效方法(可描述为椭圆曲线上的给定点 P 和 Q)。这也是虽然不同的区块链使用的曲线和签名算法有所不同,但都基于椭圆曲线的原因。-一旦一笔交易有了签名、随签名一起发到了网络中、被打包到了一个成功挖出的区块中,那这笔交易就不能再撤销了。不像银行操作,成功打包上链的交易无法撤销,也无法恢复到还没执行这笔交易的状态。大部分公链都让交易的内容完全可见,所以这些交易所使用的区块链就是这些资产的终极真相来源。以太坊交易的结构现在我们已经完全理解了区块链交易的特性,我们已经准备好了,可以去创建一笔以太坊交易了。我们从一笔简单的转账交易开始:转账 0.1 ETH 给地址 0x17A98d2b11Dfb784e63337d2170e21cf5DD04631。交易可以用 JavaScript Object Notation(JSON)格式来表达,在创建这笔交易时,我们可以在 MyEtherWallet 上看到这些信息(在登录后使用 send offline):(编者注:MyEtherWallet 网站最大的用途是帮你生成一个以太坊账户,但直接使用它来发送交易可能需要你暴露自己的私钥或助记词,是一种非常不安全的做法,极度不推荐。如果你想使用 MyEtherWallet,请配合使用他们的浏览器插件或手机钱包,而不是直接使用他们的网站。)这里马上会跳出几个值:nonce、gasLimit、gasPrice、data 和 chainId。没有一个跟交易的内容有关,但它们都跟交易的执行方式有关。这是因为,为了在以太坊上发送一笔交易,你要事先定义好一些额外的参数,来告诉矿工如何处理你的交易。交易的两个参数都跟 “gas” 有关。Gas 本身是一个单位,用来衡量一笔交易的计算负担,作为给以太坊矿工支付的依据。一个参数是 gasPrice,表示用户愿意为每单位的 gas 支付的单价,以 Gwei 为单位(Gwei 是 ETH 的 1/10^9);另一个是 gasLimit,是用户指定自己的交易可以耗用的最大 Gas 数量。这些参数可以用以太坊节点来估算出一个合理的数值,一般来说都由钱包服务商帮你填好了。– 以太坊中的价值通常都以 wei 为单位。wei 是以太坊区块链上最小的价值单位,是 ETH 的 1/10^18。Gas Price 则通常以 giga wei(缩写为 Gwei)为单位。Gas Price 在以太坊网络上是个复杂的问题,因为它经常会浮动。EIP-1559 是一个最近通过的网络变更,可能会在今年底推出,可能会缓解 Gas Price 的剧烈波动。除了 wei 和 Gwei,还有其它用于表示价值的单位。要了解这些单位,请访问 eth-converter.com –(编者注:作者本文出版于 2021 年 4 月。现已确定,以太坊核心开发者决定在 2021 年 8 月的 “伦敦” 升级中包含 1559。1559 对用户体验的改变体现在,用户不再直接指定 Gas Price,相反,要指定两个数值:MaxFeePerGas 和 MaxPriorityFeePerGas,前者表示你愿意为单位 Gas 支付的最大价格,而后者表示你愿意为单位 Gas 支付给矿工的最大价格;实际上你为 Gas 支付的单价是 min(MaxFeePerGas, MaxPriorityFeePerGas + BaseFee) (即两者中取小的那一个)而 BaseFee 是一个随网络的上一个区块的满载率自动波动的一个数值。矿工得到的单价是你的 Gas 单价减去 BaseFee;而 BaseFee 部分则会被销毁。值得注意的是,在可预见的未来,用户仍然可以使用传统的交易格式来发送交易,但这种格式可能最终会在协议层被废弃,即,本文所讲解的以太坊交易的格式,有一天可能会过时。)除了 gas 参数,你还需要指定要在哪个网络上执行这笔交易。以太坊网络既包括 chainId 为 1 的主网,也包括其他测试网络(testnet)。你也可以在测试网上发送交易,而且不会损失任何金钱,因为测试网的 ETH 可以用免费获得。一般来说,如果你要部署一个 dApp,那么第一步应该是在本地网络上调试它,然后是部署到测试网上,最后一步才是部署到主网上。最后,也很重要的是,我们还有 data 和 nonce 。如果你想要在交易中添加额外的数据,你就需要用到 data 字段。在你跟智能合约交互时,data 字段可以包含你给合约的指令。而 nonce (“仅使用一次的数字”)则是以太坊网络用来跟踪你的账户状态、避免多重支付和重放攻击的一个数值(可以理解成流水号)。当你的交易因为 gas fee 太低而暂时无法打包的时候,你可以使用同一个 nonce 但指定更高的 gas price 来 “替换” 你的那笔卡住的交易;一旦这笔 “更快” 的交易得以打包上链,你原来签名的那笔交易(因为使用了同一个 nonce)就会被以太坊的节点抛弃掉了。签名一笔以太坊交易形成了上面说的 JSON 编码,我们就可以往下走,开始签名的流程了。如我们所述,这个过程要用到 ECDSA 算法。这里我们要用到一个常用的库 ethers.js,这个代码库里面已经封装好了在 secp256k1 曲线上使用 ECDSA 算法生成签名所需的椭圆曲线。你可以使用 Runkit 在线测试一下这段代码,把它跟 MyEtherWallet 上的结果比对一下。这里用的私钥是 0x616E6769652E6A6A706572657A616775696E6167612E6574682E6C696E6B0D0A 。(编者注:这里只是为了教学才明文暴露私钥。在任何时候,暴露私钥都是一种极不安全的行为,可能导致你账户内的所有资产丢失!请千万避免暴露私钥和助记词。)结果是 0xf86b80843b9aca008252089417a98d2b11dfb784e63337d2170e21cf5dd0463188016345785d8a00008025a02e47aa4c37e7003af4d3b7d20265691b6c03baba509c0556d21acaca82876cb4a01b5711b8c801584c7875370ed2e9b60260b390cdb63cf57fa6d77899102279a0 ,表示的是你已经签过名的交易,可以发送到以太坊网络中了。你可以直接使用 MEW,或者 Alchemy 的在线工具 Composer,把你的签名交易传递到以太坊网络中。具体的原理是使用 eth_sendRawTransaction 这种 RPC 方法与一个以太坊节点交互。现在签名,晚点再发上面讲的这个签名过程可以称为 “离线签名”。因为我们是先创建好签名,然后再找办法把它广播出去的。但许多在线的钱包都把签名和广播合并在一起(比如 Metamask 和 Portis),签名之后立即广播。不过,离线签名对许多应用(比如状态通道)来说都是非常实用的。所谓状态通道,就是一个监控两者账户的智能合约,根据这两个账户提交的签名交易,在双方之间完成资金结算。离线签名在去中心化交易所上也是一种常用的实践:买单和卖单都是存储在链下的,只在撮合成功时才把两笔交易上链结算。在 Layer2 方案如 zkRollup 和 Optimistic Rollup 里面也扮演着重要角色。使用 Portis,你可以使用签名交易与 Gas Station Network (GSN) 互动。Portis 已在 GSN 中订阅了一组中继者,他们可以帮你的交易支付 gas 费。这些中继者关联着一个去中心化的合约(比如 Ropsten 测试网上的这个),Portis 可以请求他们中继你的交易。你仍然需要签名你的交易,但 Portis 会帮你完成其他的一切,这样,即使你用的是一个全新的钱包、没有余额来支付 gas 费,也依然能够跟智能合约交互。在我们的 cryptopuppers 应用上尝试一下吧!如果你想了解更多,这里有 GSN(EIP-1613)的规范。还有,你可以看到来自 TabooKey 团队和 Portis 心爱的 cryptopuppers 应用的联动演示。讲完了签名的过程,我们这个讲解私钥的系列就要跟大家说再见啦。如果你一期不落,应该能够理解以太坊账户是怎么来的、以太坊的交易是怎么一回事了。原文链接

DeFi之道丨数据解析摩根大通眼中的Staking蓝海赛道

DeFi之道丨数据解析摩根大通眼中的Staking蓝海赛道
细心的朋友会发现,最近传统金融公司开始吹起了Crypto领域的权益证明(PoS)资产和Staking质押服务。华尔街/中央银行机构通常并不喜欢能源密集型工作量证明(PoW)加密货币,尤其是比特币,这已经不是什么秘密,就连埃隆·马斯克(Elon Musk)这样的科技狂人此前也抨击过比特币耗能的问题。那么,像Polkadot、Tezos、Cosmos以及备受关注的以太坊2.0等更节能的权益证明(PoS)资产呢?当谈到PoS这个子领域时,你会发现,这些传统机构的态度是截然不同的。近期有两则消息是大家需要关注的,一个是摩根大通发布的Staking报告,另一个是有银行已开始在提供Staking服务。据悉,摩根大通(JP Morgan)的分析师 Ken Worthingon 和 Samantha Trent 在一篇关于Staking的长篇入门报告中指出了Crypto领域最大的增长机会,其得出结论称:“随着比特币和以太坊的普及,Staking将成为机构投资者和散户投资者的收入来源,并将获得吸引力。”而在今日,瑞士银行Sygnum还宣布为客户提供了以太坊2.0质押服务,成为了世界上第一家这么干的银行机构。根据摩根大通估计,当前Stalking领域的年收入大约为90亿美元,而一旦以太坊转向权益证明(PoS)机制,这个收入机会将增长到200亿美元,而到2025年,如果权益证明(PoS)协议增长成为主导协议,该领域的年收入可能会达到400亿美元,此外,摩根大通还估计称,届时Coinbase将获得每年5亿美元的Staking收入(注:摩根大通是Coinbase的上市承销商)。(注:图片来自摩根大通报告)权益证明(PoS)和Staking是什么?这里给新读者简单科普一下:目前比特币和以太坊区块链使用一种称为工作量证明(PoW)的共识机制来确保网络上的所有交易都是有效,并确保网络的分布式记录准确无误。而正是这种工作量证明(PoW)过程,导致比特币和各种加密货币遭到了舆论攻击,因为它们需要能量效率很低的”矿机”设备来维护系统,这造成了大量的能源消耗。而为了创建一个更可扩展和更节能的系统,以太坊计划从工作量证明(PoW)转向权益证明(PoS),这种转变自然也赢得了很多人的支持,再加上以太坊生态中拥有各种各样的DeFi、NFT等玩法,这使得以太坊的故事变得更具想象力。这不,最近高盛还在一份冗长的报告中称以太坊为”信息亚马逊”,其称赞以太坊会是crypto领域的下一个庞然大物。暂且不论这些机构们吹的对不对,我们可以确认的是,以太坊转PoS这件事是备受全球关注的。如下图所示,当前加密资产市场仍是以PoW币为主导,而论市值的话,PoW币大约占到了整个市场的70%,这主要是因为比特币和以太坊这两种最大的加密资产,但需要注意的是,以太坊将在未来几个月迁移到PoS协议(开发者预计在明年Q1进行合并阶段),届时,PoS币市值占比将大大得到提升。(注:图片来自摩根大通报告)而当前最大的PoS币种有以下这些:(注:图片来自摩根大通报告)而所谓Staking,我们可简单理解为用户将原生资产质押在相关合约内,并锁定一段时间,然后就可以获得稳定的原生资产收益,这与用户在银行存款并获得利息是非常相似的。根据staked提供的数据显示,当前像ETH 2.0、DOT、SOL以及ATOM这样的PoS资产,它们每年的Staking质押收益率在7%-14%之间。(数据来自https://staked.us/)分析师预测,对于Coinbase等加密货币中介机构来说,Staking将成为一个不断增长的收入来源,特别是在以太坊2.0完整落地之后,摩根大通估计称,Staking将在2022年为Coinbase带来2亿美元的收入机会,相比2020年的1040万美元增长近20倍。需要提醒的是,Staking也是存在风险的,通过质押加密资产获得持续正收益的潜在能力,取决于市场的波动性。而当用户质押的资产价格下降时,实际Staking可能并不会有正收益,这是绝大多数加密资产都会面临的一个问题。Staking蓝海市场的竞争:中心化 VS 去中心化显然,Staking已经成为了各大机构们眼中的蓝海市场,那么当前这个市场有哪些竞争者,局势又是怎样的呢?为了简单起见,这里我们便用以太坊2.0的数据作为代表来回答这个问题。在分析之前,我们先将Staking服务大致分为三个种类,(1)中心化Staking服务,(2)半去中心化Staking服务,(3)去中心化Staking服务。所谓中心化服务,就是指用户将加密资产全权委托给某个第三方机构,由专业的机构人员代操作质押服务(一般会收取一部分的手续费作为报酬),例如上文中提到的Coinbase就是一个常见的例子。而半去中心化Staking服务,则是将加密资产的委托权交给第三方节点,由节点代为产生收益后,再链上分配给用户,而用户依然拥有加密资产的所有权。例如以下是Lido Staking协议各组成部分的大致说明:1、Staking Pool:管理存款、staking奖励以及取款的协议;a、节点运营商注册表b、取款凭证c、预言机2、stETH:流动质押代币,它与用户质押的信标链ETH保持1比1的平衡;3、DAO:控制协议参数的Aragon DAO;这里的Staking Pool是整个Lido智能合约的核心,它负责5件事情:(1)ETH的存款和取款,(2)铸造和燃烧stETH代币,(3)将资金委托给节点运营商,(4)分配staking奖励,(5)接受预言机数据更新。用户将ETH发送到Lido Staking池子,然后可1:1铸造出stETH,而存入的ETH将在节点运营商之间分配,以保持均匀分布,并由其验证器进行验证。而ETH的取款凭证将设置为分布式托管的门限签名,以预防单点作恶的可能性。而最后的去中心化Staking服务,代表项目有Rocket Pool,Rocket Pool平台允许任何拥有超过0.01 ETH的人参与Staking质押,并为质押者提供1:1的rETH代币,与Lido不同的是,Rocket Pool的节点运营商是开放式的(至少门槛很低),运行一个节点只需要16 ETH,是的,相比自己运行一个以太坊2.0节点所需的32 ETH,Rocket Pool对小型节点运营商而言是非常友好的。这些服务该如何选择?下面是由defirate整理的一些数据:那目前这个市场的情况究竟如何呢?我们可以参考下面这张数据统计图:(注:数据来自etherscan)如上图所示,当前已公布地址的以太坊2.0质押服务当中,排名靠前的有Kraken交易所(77.4万ETH,占12.5%)、Lido(59.56万ETH,占9.59%)、币安(58.86万 ETH,占9.48%)、鲸鱼(52.99万ETH,占8.54%)、Staked.us(22.9万 ETH,占3.69%)、Bitcoin Suisse(17.88万 ETH,占2.88%)以及火币(8.48万 ETH,占1.37%),剩余有45.9%(大约276万 ETH)来自未知实体。总结以上的数据表明,中心化的服务目前依旧占据着Staking市场的主导地位,但不容忽视的是,以Lido为代表的半去中心化Staking服务同样表现非常抢眼,此外,由于后者提供了灵活的流动性,预计在将来可能会占据到更多的市场份额。遗憾的是,目前去中心化Staking服务(例如Rocket Pool)的表现,尚无法引起人们的关注,这与稳定币赛道的发展情况有些相似。参考资料:1、https://blog.lido.fi/how-lido-works/2、https://defirate.com/staking/3、https://bi.etherscan.io/public/dashboards/KH9jbP687szqlAnHiNEfNictrwNhvdOEQl0PwB6m?org_slug=default

SushiSwap 开发者回应匿名白帽的漏洞报告:不是漏洞且没有资金安全风险

SushiSwap 开发者回应匿名白帽的漏洞报告:不是漏洞且没有资金安全风险
链闻消息,在一位匿名白帽黑客发布 SushiSwap 存在漏洞的报告后,SushiSwap 的开发者 Mudit Gupta 在推特上回应称这不是漏洞,没有资金存在风险。该白帽称 SushiSwao 的紧急提现功能存在漏洞,使得用户价值 10 亿美元的资金处于危险之中,而 Mudit Gupta 则表示,白帽说的攻击方式是不正确的。

Phala Network 上线新测试网 Para-1,并开启 TEE 计算节点公测

Phala Network 上线新测试网 Para-1,并开启 TEE 计算节点公测
链闻消息,Web 3 云计算项目 Phala Network 宣布其测试网络 Para-1 正式上线。Para-1 测试网是 Phala 全新的测试网络,基于平行链机制运行,引入新版经济模型和 TEE Mining 功能,供计算节点测试,用户可以通过测试币,在该测试网络上体验和测试抵押池功能。公测结束后,Phala 将开启新经济模型公投。

以太坊 下跌11%_2

以太坊 下跌11%
英为财情Investing.com – 根据英为财情 Investing.com Index的行情系统显示,星期三02:19 (18:19 GMT) 以太坊 交投于168.00附近,下跌幅度达到11.17% ,这是 从2019年7月16日 以来 ,该币种遭遇的最大日跌幅。此次下跌导致 以太坊 的总市值下降至 $19.18B ,在加密货币总市值中的占比为 7.22% . 而 以太坊 市值此前在达到高位时为$135.58B .在最近的24小时内, 以太坊 的价格维持在$168.00 到 $187.13 之间交投。在过去的7个交易日里, 以太坊 下跌了 3.55% ,其总市值出现了明显的 下跌 。截至发稿, 以太坊 24小时内的总市值为 5.68B ,在全部加密货币总市值中占比 11.97% .在过去的7个交易日里,以太坊 保持在 $167.9968 至$195.3221 间交投,该币种目前相较于其 2018年1月13日 的历史高值 $1,423.20,相差 88.20%.其他加密货币行情根据英为财情Investing.com的行情数据显示,比特币目前报$9,704.1,当前交易日 下跌4.97% .另外,行情数据同时显示,瑞波币 目前报$0.24835 ,下跌 8.68%.比特币 目前的总市值为 $181.24B ,该币种目前市值在全部加密货币的总市值中占比为 68.26% , 于此同时, 瑞波币目前的总市值为 $11.16B , 在加密货币市场中占比为 4.20% .

币安推出定投功能,支持 VISA 或 MasterCard 进行预定的加密货币购买

币安推出定投功能,支持 VISA 或 MasterCard 进行预定的加密货币购买
链闻消息,币安宣布推出定投功能,帮助币安用户在设定的时间间隔内购买固定数量的加密货币,目前仅支持 VISA 或 Mastercard 两种付款方式。用户可设置每天、每周、每两周或每月自动购买指定的加密货币。