引介

Linkdrops:以太坊上发红包的开源标准

Ajian   |     |   4065 次阅读

第四届以太坊开发者大会开始之前,Status 在布拉格举办了一场主题为 Cryptolife(让加密技术走进生活) 的黑客马拉松。我与来自 Volca.tech / Eth2.io 的 Mikhail 以及来自 trustlines.network / brainbot technologies 的 Bernd、Dong-ha、Dominik 和 Kristoffer 一起开发了一款名为“onbotting.eth”的去中心化应用。

微信红包在最巅峰时期拥有超过 6.5 亿名用户

我们的目标是将 Web 2.0 创造的绝佳用户体验复刻到 Web 3.0 上。 Paypal 自从推出了用户可以兑现的数字支票功能之后,在一年之内吸引了数百万用户。同样,微信受到了中国传统的发红包习俗的启发,推出了线上发红包游戏,在一年之内成了世界上最大的通讯应用。这些都是非常了不起的解决方案,因为它们满足了用户的需求,但是密码学货币目前还做不到这样。对此,我们的解决方案是让用户将密码学货币放入某个地址然后发送出去,无需用到钱包和 gas 之类的东西,就像 Paypal 那样。

我们非常荣幸地获得了 Alex Van De Sande 颁发的社交类应用一等奖和统一登录类应用一等奖。请观看视频了解 “onbotting.eth” 的详情

运作原理介绍

核心设想

  • Bob 是一名新用户,没有以太币和钱包,也不具备密码学货币的背景知识。
  • Alice 有一个 EIP 1077 身份合约和一个闲置的 ERC721 机器人
  • Alice 通过 Whatsapp 之类的加密信息通道将邀请链接分享给了 Bob
  • (在用户层、dapp 层或中继层)有另外一种激励机制来支付 gas 费用

  1. Alice 将邀请链接分享给了 Bob
  2. 邀请链接中包含一个中转私钥和一个签名
  3. Bob 是一名新用户,没有以太币和钱包,也不具备密码学货币的背景知识
  4. Bob 点击链接进入了一个网页
  5. Bob 生成了自己的私钥,存储在浏览器上
  6. Bob 使用中转私钥签署自己的地址
  7. Bob 的浏览器会将两个签名都发送给中继器
  8. 中继器调用 Alice 的身份合约
  9. Alice 的身份合约为 Bob 创建了一个身份合约,并且发送了一个机器人
  10. Bob 现在已经成了以太坊用户,并且拥有了一个可以一起玩耍的机器人!

linkdrops 的模块化实现

经历过数次迭代之后,Alex van de SandeMarek 开发的 Universal Login SDK 在 Devon 4 上向模块化架构升级。以下是一个简单版本的模块化邀请机制,无需为收款方生成一个身份合约:

这个模块的主要功能是 transferTokensByLink (通过链接实现代币转账)

  • 验证两个签名(转账双方的签名)的有效性
  • (通过存储 transitPubKey,即中转公钥)来验证该转账链接之前是否被使用过
  • 从付款方的身份合约内将代币转移到收款方的地址

使用 owner.canExecute  可以验证付款方的签名 —— https://gist.github.com/Dobrokhvalov/00e2bbca13a1378636fa5a400bd692f5#file-invitelink-sol-L117

进行代币转账的时候可以使用 owner.moduleExecute ——https://gist.github.com/Dobrokhvalov/00e2bbca13a1378636fa5a400bd692f5#file-invitelink-sol-L141

欢迎各位读者给出改进建议,万分感谢!

React Native 启动器的实现

我们正积极致力于将 linkdrops 邀请链接的功能添加进不同的移动应用中。我们已经开发出了 Universal Login React Native Starter (统一登录 React Native 启动器)。欢迎反馈 :) 。

要求

  • NodeJS v10.12.0
  • Yarn 1.10.

该启动器只在 OS X 系统上测试过。

依赖库

该启动器使用 react-native-navigation 操作码(第一版)进行导航。

rn-nodeify 程序包允许使用节点的核心模块。点击此处了解更多内容

安全快捷的加密技术原生库:

  • react-native-secure-randombytes
  • react-native-fast-crypto

通过授权委托降低 gas 成本

为了降低 gas 成本,我们决定研究如何通过提出以太坊改进建议来解决这一问题,我们的灵感来源于 Gnosis SafeTenzorumArgent 之类优秀项目和 #MetaCartel 的 Pet3rpan 给出的反馈。最后 Mikhail 提出了一个解决方案。

嘿,有个好消息!我已经通过 EIP-1167 提出的授权委托创建了合约,将 gas 成本降低了 10 倍。

查看一下优化情况:

优化前 Ropsten 测试网络上的 gas 费用 etherscan

优化后 Ropsten 测试网络上的 gas 费用 etherscan

免 gas 费用的实现

最后,这方面的最新进展是一个免 gas 费用的去中心化网页应用模式,可以看作是 Austin Griffith 的 #burner wallet 的改进版本。这款钱包的演示版即将推出,希望能得到各位读者的反馈,点击该链接可以体验在线版本

✨ Cryptoxmas.xyz ✨ —— linkdrops 模式下的慈善应用参考例

发送非同质化代币的圣诞卡片来支持委内瑞拉难民

作为一个 linkdrop 模式的圣诞慈善应用,我们已经发起了 this Giveth campaign 的活动,来支持 airdropvenezuela.orgbitcoinvenezuela.com

视频地址是:

https://twitter.com/dobrokhvalov/status/1071440314169208834

流程

发送流程

  1. 发送方将 ETH 发送到一个托管智能合约来购买圣诞贺卡(NFT)。(发送方可以选择在卡片售价基础上多发送一些 ETH 给接收方)
  2. 托管智能合约将 NFT 从销售方那里转移给托管方
  3. 智能合约会基于 NFT 售价拨出一小部分(0.01 eth)发送至临时账户作为 gas 费用,余下部分作为捐款赠予 Giveth campaign 。超出 NFT 售价部分的 ETH 则由托管方托管,以待接收方领取。
  4. 发送方分享 claim link(领取链接)给接收方,链接中包含临时账户的私钥

接收流程

  1. 接收方使用领取链接中的私钥提交领取交易(Claim transaction)
  2. 托管智能合约将圣诞贺卡(NFT)以及多出的 ETH 发送至接收方地址

原文链接: https://medium.com/@Gfriiis/linkdrops-an-open-source-standard-for-invite-digital-asset-links-on-ethereum-29f34b3fa5ec
作者: Gustav Friis
翻译&校对: 闵敏 & Elisa

本文由作者授权 EthFans 翻译及再出版。


你可能还会喜欢:

科普 | 深处的蚁穴:与 Gas 相关的三种安全问题
观点 | 以太坊用户体验的痛点
干货 | 理解去中心化身份

 
0 人喜欢