以太森林区块链小丑这款区块链游戏怎么玩?

  • 主营产品: app开发 小程序开发 公众號开发

  • 主营产品: 建筑材料 装饰材料 多媒体电教设备 建筑模型制作

  • 主营产品: app研发 系统开发

  • 编程开发软件,手机软件

    主营产品: app开发 小程序開发 公众号开发

}

众所周知以太森林区块链坊的區块链是公开可见的。也就是说每当你转移ERC-20通证或任何其他的数字资产时都会在区块链上留下记录,任何第三方都可以轻而易举地监控箌这些记录

众所周知,以太森林区块链坊的区块链是公开可见的也就是说,每当你转移ERC-20通证或任何其他的数字资产时都会在区块链上留下记录任何第三方都可以轻而易举地监控到这些记录。

同时如果借助Etherscan、Blockscout这样的区块链浏览器,第三方还可以查到你全部区块链上活動的历史记录

可以说,你在区块链上的活动就好像是在“裸奔”不过不要害怕,我们可以通过一些手段来保护自己的隐私比如,你鈳以开通多个加密货币的帐户但你必须时刻牢记不要让这些帐户产生关联。

就拿我们日常生活中时常见到的情况来说如果突然出现一個账户钱不够的情况该怎么办?这些条条框框将成为你在使用加密货币时的噩梦有没有一种更优雅的,更有技术含量的解决方案呢

最恏的办法,就是利用AZTEC(一个建立在以太森林区块链坊之上的隐私协议)在本篇文章中,我不会像你的高中老师一样一条条地为你讲述协議使用到的底层密码学技术我们来聊点轻松的,聊聊这个协议的实际应用也就是我们今天的主题——如何用AZTEC来开发隐私通证

可以不誇张的说AZTEC这个协议就是我的心血。

在开始前这里我假定你已经是一名“链圈”的老司机了,并对以下的一些常识有了最基本的了解:

  • 使用Truffle框架进行以太森林区块链坊开发;

同时请确保你的计算机上装有node.js和npm ,接下来我们使用npm来安装Truffle框架只需一行指令:

说完了最基本的區块链常识,现在我们上点干货来聊聊核心的技术概念。

如果把以太森林区块链坊比作一个国家那么AZTEC协议就是一片森林

在以太森林區块链坊这个国家中人们通过去中心化应用进行交互和财务往来,还可以自由地搬到想去的城市(自由选择钱包软件)我认为AZTEC协议就昰这个国家里的一片宁静森林人们可以来到森林里躲避追踪在进入森林前你的区块链上活动都是公开可见的,而一旦踏入了森林你所有的交易都是保密的

就像下面这张美丽的风景图就可以代表我所说的进入AZTEC协议的理念。在正常情况下你的区块链上活动就如同这張图中的风景一样清晰可见,而一旦穿越了图中的拱门整个世界(以太森林区块链坊)就会逐渐模糊,并最终被森林( AZTEC 协议)隐藏

AZTEC中囿一个基本概念,叫记录(notes)记录是该协议中的“一等公民”和核心原语(操作系统或计算机网络用语范畴,是由若干条指令组成的鼡于完成一定功能的一个过程)。

当你使用零知识证明技术进行交易时智能合约中不会存储任何的余额信息,仅仅存储椭圆曲线点(密碼学上的概念可以简单地理解为零知识证明机制的组件),而椭圆曲线点对于没有私钥进行解密的第三方来说都只是计算噪声

很重要嘚一点是,我们要正确地区分最常见的ERC-20标准和AZTEC协议的隐私通证标准ERC-1724

从原理上来说,前者存储了以太森林区块链坊地址和未加密余额之间嘚映射而后者对余额进行了加密。我喜欢将AZTEC记录比作比特币的UTXO(Unspent Transaction Output即未使用的交易输出)模型,因为在AZTEC上花费记录的过程与它非常相似

以下是一个记录中的内容,我们可以按照可见性将它们分类:

  • 公开可见的(Public):拥有者、加密后的金额

  • 仅用户可见的(Private):花费的密钥、金额

为了节省时间在这里我们不过多地去讲那些花里胡哨的密码学技术。不过在进行编程之前你需要注意的是AZTEC协议需要一个可信任嘚设置。本篇文章先暂时使用我们团队内部生成的可信任设置这里仅作为介绍,由于生产环境情况十分复杂不同情况还需要不同对待。

首先按照如下命令复制代码库并安装node模块:

在这个过程中,控制台中可能会弹出很多关于scrypt和keccak这两种哈希函数的信息不要在意,因为峩们用到了aztec.js而它调用了以太森林区块链坊的web3.js库,从而生成了一些关于密码学的依赖项

在实际运行展示程序之前,你还需要执行以下几個重要步骤:

  • 在存放源代码的src文件夹中创建一个accounts.js文件在其中只需要设置两个帐户,具体的设置方法你可以参考一个名为accounts.js.example的示例文件;

  • 在項目的根目录下创建一个.env文件并使用下面的属性填充它。同样的文件夹中也包含一个名为.env.example的示例文件;

  • 将包含隐私通证的智能合约部署到以太森林区块链坊测试网络Rinkeby上,你可以使用Truffle框架来执行这一操作:

接下来是部署环境变量可以按照如下步骤:

  • CONFIDENTIAL_TOKEN_ADDRESS(隐私通证地址):請注意实际智能合约的名称是ZKERC20,在Truffle框架成功部署智能合约后你会得到这个

完成上述步骤之后现在,你的项目应该是这样的:

接下来运行這个展示程序:

中间需要等待一段时间因为交易被发送到了以太森林区块链坊测试网络Rinkeby上。几分钟后你会在控制台中收到一份收据清單。恭喜你你刚刚在以太森林区块链坊上进行了第一次隐私通证的转移!

现在,让我们来看看src / demo.js中的源代码

可以通过以下代码来实现:

  • 苼成一些随机帐户,这里我们必须使用椭圆曲线"secp256k1”来生成公钥私钥对因为AZTEC协议需要帐户的公钥,而不仅仅是它们的地址;

  • 创建4个记录湔两个记录属于第一个帐户,后两个从初始总共10个通证中转移8个到第二个帐户

为了更好地理解第2步,请回想一下我们刚才说到的AZTEC的记錄与比特币UTXO模型相似的性质。当一个人转移资金时他必须把余额转换成一组新的记录,这与使用平衡模型的以太森林区块链坊的交易规范相反

此外,我将以太森林区块链坊中使用的帐户(src / accounts.js中的帐户)与随机生成的AZTEC帐户区分开来(演示脚本生成了一个名为aztecAccounts.json的文件)

可以通过以下代码来实现:

  • 声明所有者publicOwner很乐意将10个公共可见的ERC-20通证转换为AZTEC隐私通证;

  • 第一个随机生成的AZTEC帐户成为通证新的所有者,回想一下湔两个记录每个值为5个通证,并且都由该AZTEC帐户拥有

  • 以完全成熟的零知识证明形式将8个通证转移到第二个AZTEC账户;

  • 销毁前两个输入的记录,從而第一个AZTEC帐户将来不能再重复使用它们

我们需要这些代码来与名为“NoteRegistry“(记录注册)的智能合约进行交互,这个智能合约是每个隐私通证智能合约所特有的你可以将代码中的proofHashes视为先前生成证明的唯一标识符列表。

在代码中我们制作了一些通证并授予NoteRegistry智能合约从ERC-20智能匼约中支出它们的权限。

就像ERC-20一样NoteRegistry需要被授予使用AZTEC证明的权限。我们承认这是一个需要积极研究的领域我们也正在研究大幅度提升用戶体验的方法。

最后也是最有趣的部分:调用隐私通证智能合约进行通证转移。

请注意第一笔交易仅转移ERC-20通证,因此第三方可以分析嘚到转移的通证数但第二笔交易就是完全保密的了。

以下是我们本篇文章所有操作逻辑的思维导图:

在触发隐私通证转移之前需要进荇大量的预先批准。正如前面说到的这是我们接下来改进的方向。

当AZTEC智能合约只有一个用户时隐私性就会大大降低。由于通过ERC-20通证存叺的钱是在区块链上公开可见的因此第三方可以将其与智能合约持有的总金额进行比较从而大致推测出用户的交易。也就是说越多的鼡户加入 AZTEC ,它的隐私性就越好

以下是在本文中AZTEC协议所使用程序包的详尽清单:

我们的主干程序库monorepo 中提供了所有这些程序的源代码。

如果伱喜欢这个教程或者对隐私交易十分感兴趣,或者想了解更多内容

可以请查看以下两笔以完全成熟的零知识证明形式,使用一些AZTEC证明轉移10个ERC-20通证的交易:

}

我要回帖

更多关于 以太森林区块链 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信