14

引介 | 以太坊元交易

 收集于7个月前 阅读数 14
以下为 快照 页面,建议前往来源网站查看,会有更好的阅读体验。
原文链接: https://www.tuicool.com/articles/MnaYjy3

z22iumn.png!web

引介

上手 Dapp 实在是太麻烦了。以太坊生态若想普及,就应该允许新用户直接使用其功能,而不是先安排几座大山让用户翻山越岭。

这意味着需要为新来的用户垫付 Gas 费用。当前的以太坊协议并没有提供原生方法来实现这一点。然而,得益于公/私密钥对,用户可以通过对 元交易 进行签名并激励 桌面矿工(desktop miners) 来为他们支付 gas 费用。

在一开始,先要自动生成密钥对并保存在你的浏览器中。那些密码朋克一定会对这种方式嗤之以鼻,但用户不该被下载钱包的要求挡在门外。首先,他们要能使用产品并通过 Dapp 提供价值。一旦他们收到了一些代币或以太币,就应该马上将这些币转移到类似 MetaMask 或 Trust 这样的钱包中。

基础

首先,我想介绍一些基础概念,来为解释以太坊上的元交易奠定基础。但如果你是一位密码学大牛的话,直接跳过吧...

哈希

通过哈希函数,可以将长短不一的信息转化为一段长度任意但可预测的(确定性的)结果。这是一类神奇的函数,可以将一大堆信息转变成一串短的,可作为摘要的数据 “指纹”。对于一个给定的输入而言,生成的 “指纹” 始终一致。 如果你的原始数据中有任何细微的改动,生成的哈希值将大不相同。

密钥对

公/私密钥对运用了一些令人头晕的数学知识,当然,想搞清楚它的概念并不难;可以使用私钥对一个信息进行签名,任何人都能使用与之对应的公钥来证明该签名的正确性(译者注:即验证签署交易的私钥与相应的公钥是否恰为一对)。重申一遍, 我可以给你一个带有我签名的信息,而你只需使用我的公开信息就能从数学上证明我对这条特定的信息签过名。 私钥极为敏感,绝对不能公示给他人,而公钥则就可以被广泛分享。你的以太坊地址就是你的公钥,它 代表了你的身份 (译者注:准确点来说,你的以太坊地址是用你的公钥单向推导出来的)。

公钥也可以用来加密一个简短的信息,然后,只有私钥的拥有者才能解密该信息。这并不重要,但非常酷不是么?所以我认为应该告诉你:)(译者注:这就所谓的 “非对称加密”。)

来自 @ cooganbrennan :“通过对一串数据的哈希值签名,你实现了三件事:

不可干扰:

你知道数据没有被篡改过

身份:

你可以明确交易的发送方

不可抵赖: 发送交易的人之后无法否认发送了该交易”

交易

要想和区块链进行交互,你需要发送一笔交易。一笔交易由少数几部分组成,我喜欢用巨慢无比的邮件来类比:

  • 目标地址:交易发送到的目标以太坊地址。可以是另一个人或一个智能合约。你可以将它想象成写在信封正面的收件地址。
  • 价值:这就像在信封里放一丢丢现金给收件人。
  • 数据:这就像你寄出的信件上的内容。当你只发送价值时,这部分通常是空的。
  • Nonce(流水号):由于你发送的内容都是数字信息,因此可能被复制。为了防止同一封信被寄了两次,我们会跟踪一个计数。这有点像信封本身的标识。(另一个关于 nonce 的形象比喻是支票号码。从技术上讲,银行不应该兑现最后一张现金支票之前的一张现金支票)
  • Gas Price:这就像是你放在邮箱中的一些零钱,用来激励邮递员为你送信。你放的零钱越多,邮递员取走你信件的可能性就越高。
  • Gas Limit:这就像邮递员送信的最远距离的限制。假设他最终要去地球的另一边为你送信,这意味着他要绕过重重阻碍……你当然希望避免这种情况,因为你要为他的行程买单。
  • 签名:最终,我们把上面的数据都汇总在一起并进行哈希运算、用你(对哈希值)的签名来封好信封,该签名证明里面的内容都经过了你的验证。

这是一个非常不严谨的类比,像这样的类比我的脑子里还有一大堆。来边喝啤酒边慢慢聊吧,我在 Devcon 等你哦。

智能合约

我的祖父曾跟我讲过一个关于他哥哥在他堪萨斯州的后院里种植番茄的故事。他会将前一天晚上采摘的番茄放在门前的台阶上,旁边摆上一个标着价格的天平。每天晚上他都会出门从一个雪茄盒里收回挣到的钱。这个系统严重依赖于人与人之间的信任。智能合约和这有点类似,但支撑它的是数学,而非信任。

我喜欢将智能合约看成带有一组规则的存储。假设在盒子里有 25 个番茄,规则是 15 美分一磅。如果你往雪茄盒中寄一封内含 30 美分的信件,就会有两磅番茄送到你家。这个规则会一直运行,除非番茄卖光了。在这一天结束的时候,合约的所有者可以取走雪茄盒中所有的钱,因为他通过私钥证明了自己是盒子的主人。

合约之间也能互相交流。它们甚至可以使用我们前面提到的技能——证明某个特定的消息是由某个特定的账户签名的。这也正是(元交易)这种技术的核心所在…

元交易

首先,我精心设计了一笔交易,它的结构与一般的以太坊交易类似,但我在里面附加了点额外的信息:

  • 数据:信件中的这部分内容变得更加复杂了。它是经过编码的信息,详细列出了要执行的操作,包括要调用的函数名的哈希值以及要传递给该函数的参数。
  • 奖励:在一个去中心化的系统中,经济激励尤为重要。如果你希望 “桌面矿工” 来为你的交易支付 gas 费用,你就得付钱。不过,这些钱并不来自于你的账户,而来自代理身份的智能合约。 以太币或其他代币都能用来支付给矿工。
  • 需求:交易中还可以包含额外的需求,并且可以通过智能合约对这些需求进行检查。比如说按照时间顺序检查交易。假设这笔交易只能在月底完成,合约可以验证这一点。

接下来,我不会把这笔交易直接发送给一个智能合约,我会将这笔交易发送到一个次级网络(secondary network)。这个网络会分析我请求的合法性并确保我签名的有效性。然后它们会选择哪些交易值得提交,并与区块链直接进行交互。

最终,当我的代理合约收到从第三方那里发来的我的交易之后,它将分析交易中的指令,然后付钱给第三方,并执行我的指令。这些指令可以是发送代币,调用函数,或任何普通区块链交易可以做到的事情。

以太坊元交易的录屏演示

在以太坊上通过身份代理合约进行元交易

结论

通过元交易,我们可以用一个完全没有以太币的账户来与区块链进行交互。对于推动以太坊的普及来说,这种技术可能是不可或缺的。 用户并不关心去中心化或者私钥;他们更关心的是可以使用你的 Dapp 来做一些对他们而言重要的事情。

Universal Logins

另一个关于元交易的非常棒的用例是 “ Universal Logins ”。你应该将以太币存在 “冷” 钱包中,并使用该 “冷” 钱包来给一个代理合约提供资金。这个合约将作为你的链上身份、代表你持有一些资金或代币。然后,随着各种新设备在你的生活中进出,你可以使用身份代理来信任它们。这些设备从未持有任何资金,里面的私钥也从未转移。同时,它们可以使用元交易和区块链进行交互。

跳跃代理——以太坊上的身份代理合约,为没有以太币的账户发起元交易

感谢您看完了这篇关于以太坊元交易的文章。可以来 Twitter 找我: https://twitter.com/austingriffith 或通过 我的作品集 了解更多关于我的信息。

灵感来源:


猜你喜欢

  • 3

    本文是 Bloxis 对 Metamask 在 Gitcoin 上举办的普遍化元交易竞赛的回应。由于我们计划将这项功能整合进我们即将面世的产品中,因而在该领域投入了大量时间与精力,也正因如此,我们由衷地希望能够参与到该领域的讨论中来。如果您对我的观...

  • 31

    编者注:本文为 Alexey Akhunov 介绍以太坊 1.x 理想工作流程的一篇文章,既总结了现有开发流程中的一些局限,也列举了新开发流程可能会面临的一些挑战。大家都知道公链治理很难,但作为外围人员,通常也并不清楚其中的流程到底是什么样的...

  • 39

    引介 | 以太坊 2.0:验证者详解

  • 35

    编者注:本文为以太坊开发者 Hsiao-Wei Wang 在 2019 以太坊技术与应用大会上讲解 Eth2.0 信标链和验证者的时候所用的幻灯片。值得庆祝的是,6 月 30 日,Phase 0 的技术详述已经基本确定下来了。

  • 29

    译者注:提前说明以下信息,也许可以帮助读者更好地理解本文的内容以及我们在翻译用词上的选择:在以太坊 2.0 中,验证者的职责之一是提交 attestation,可以理解为投票;但在一条 attestation 中,验证者投票的内容却有三项,而不是一项...

  • 12

    关于以太坊难度计算的所有信息 每当以太坊的定时炸弹爆炸时,总会有两个问题出现在我们面前。第一个问题(也可以说是更重要的一个问题)是:“什么时候出块会变慢,那简直不能忍。” 第二个问题是,“这一次,我们应该将炸弹推迟...

  • 9

    默认情况下,你在以太坊上所有的交易历史和余额都是公开的。通过诸如 Etherscan 这样的区块浏览器可以查看所有的交易,某人但凡知道了你的地址,就可以轻轻松松获取你的支付记录、跟踪你的资金来源、计算你的持仓、甚至分析你的链上活动。...

  • 32

    概要 要想成功解决公链的可扩展性问题,不只是要提高交易吞吐量。所谓的可扩展性,就是系统要能够在 满足数百万用户的需求...

  • 2

    标题:Flashloans,魔法互联网货币的新发明 链圈一直声称要变革金融业,最近终于开始有点迹象了,因为年轻的银行家跟技术人员开始结盟了。 最新的一种玩法叫做 “闪电贷(flash loan)”,就是说,你可以用...

  • 5

    什么是账户抽象化? 目前,以太坊上有两种账户:外部账户(externally-owned account)和合约账户(contract account)。前者是由私钥控制的,而后者是由存储在智能合约账户(有时也被称为智能钱包)内的以太坊虚拟机代码控制...

关于极客头条


聚合每日国内外有价值,有趣的链接。

AD