专栏名称: 以太经典社区
与核心团队紧密联系,分享以太坊经典(ETC)相关技术、生态与社区新闻。此公众号由以太坊经典中国社区(Ethereum Classic Community)运营。
目录
相关文章推荐
半月谈  ·  免票!半价!哪吒粉丝福利来啦 ·  昨天  
半月谈  ·  规范词积累的底层逻辑与实战技巧 ·  3 天前  
51好读  ›  专栏  ›  以太经典社区

如何实现ETH\/ETC的自动转换|玩转ETC新姿势

以太经典社区  · 公众号  ·  · 2018-05-22 17:44

正文


什么是和平中继( Peace Relay )?


KyberNetwork(KNC) 是一个提供去中心化交易服务,实现加密资产即时转换并保证流动性的网络。和平中继是 KNC 开发的一种智能合约系统,旨在使用中继合约来进行跨 EVM 跨链通信。


中继合约通过验证区块的 merkle-patricia 证明,可以确定 区块内包含的状态、交易和收据等信息。


结合 SmartPool 实现的 ETH 哈希验证算法,可以实现在任何 EVM 链上实现所有跨链跨代币的可靠传输。 这里使用的 merkle-patricia 证明代码是 Zac Mitton 实现的。

和平中继( Peace Relay )怎么工作的?


重要提示:


· 为了进行跨链验证,我们需要验证存储在中继合约中的块头信息,以便可以根据块头中的梅克尔树根验证其他信息(例如交易证明,帐户状态证明)。

在中继合约的初级版本中,我们假设提交的区块头都是来自相应链的正确信息。 将来这些区块头信息将采用 PoW 进行验证,并将允许重新组织区块。

· 在实例中,当用户想把 ETH 的资金转移到 ETC , 合约会锁定他的 ETH 从而返回 ETC 。 然后用户可以在 ETC 链上做任何交易。


详细步骤:


假设用户想要将资金从 ETH 转移到 ETC 。 我们将使用 Kovan 测试网代表 ETH, Rinkeby 测试网代表 ETC 。 换句话说,我们将锁定 / 解锁 Kovan 中的 ETH 并获得 Rinkeby 中的 ETC (造币 / 销毁)。


· Kovan Rinkeby 上同时部署的 PeaceRelay 中继合约(各 1 份)

· Kovan 上部署 ETHLocking 合约

· Rinkeby 上部署 ETHToken 合约


ETH 换到 ETC 上的代币 / Kovan Rinkeby


1. 使用 ETHLocking.lock() 函数发送期望转换的 ETH Kovan 上的锁定合约 ETHLocking


请注意,除非在执行过程中 GAS 耗尽,否则此功能将无法中止(抛出)。


2. 等待包含交易的 Kovan 区块被发送到 Rinkeby 。 同时,生成脱链的交易证明。


3. 使用上一步中生成的证明来发送交易执行 ETHToken.mint() 函数。 这将铸造 ETC


然后用户可以随意花费这些 ETC ,直到有一天他们希望将 ETC 转换回 ETH /                         Kovan


ETC 转回为 ETH / Rinkeby 回到 Kovan


1. 使用 ETHToken.burn() 函数将 ETC 进行销毁。


2. 等待包含交易的 Rinkeby 区块被发送到 Kovan 。 同时,生成脱链的交易证明。


这里的证明包含交易和相应的交易收据


3. 使用上一步中的证明发送交易以执行 ETHLocking.unlock() 函数来解锁 ETH


软件安装教程


前提条件


需要有 2 个钱包: 个用于提交块头,另一个用于为智能合约提交造币 / 解锁交易。

合约部署


合约代码可以在 ./contracts 文件夹中找到。


1. Rinkeby 上部署 PeaceRelay 合约。 这份合约负责接收来自 Kovan 的块头。


2. Kovan 上部署另一个 PeaceRelay 合约。 此合约将负责接收来自 Rinkeby 的块头。


3. Rinkeby 上部署一个 ETC 合约,它将使用 PeaceRelay 合约地址(步骤 1 )作为构造函数参数。


4. Kovan 上部署 ETHLocking 合约,该合约使用 Kovan PeaceRelay (步骤 2 )和 Rinkeby ETC 合约(步骤 3 )作为其构造函数参数。

设置中继合约


我们使用 AWS 服务器来完成块头的中继。 所有必要的文件都可以在 ./cli 文件夹中找到。 创建一个 linux 服务器(你也可以在本地运行)并将这些文件上传到服务器上。


1. 编辑 settings.json 文件。 输入两个钱包的不同合约地址和专用密钥,它们执行块头提交和交易提交。


2. 运行命令 :  node peacerelay.js --from = {srcChain} --to = {destChain} --start = {blockNum}


其中


· srcChain 是块头将被中继的源链(小写)

· destChain 是接收块头的目的链(小写)

· blockNum 是要中继的起始块号

· 例如。 节点 peacerelay.js --from = kovan --to = rinkeby --start = 6919465 (从块 6919465 开始,将 Kovan 块头复制到 Rinkeby PeaceRelay 合约中)

· 例如。 节点 peacerelay.js --from = rinkeby --to = kovan --start = 2136659 (从块 2136659 开始,继续 Rinkeby Kovan PeaceRelay 合约的块头)

设置网页


1. 假定合约已经部署并且已经建立了中继合约。


2. 运行 truffle deploy 来编译合约。 你现在应该有一个 build 文件夹。 前端网站需要 json 文件。 (即合约的 ABI


3. 确保 settings.json 文件包含正确的信息,如 ' 设置中继合约 ' 部分的步骤 2 中所述。


4. 运行 npm install 来安装依赖项。


5. 运行 npm run dev yarn && yarn start


6. 网站应可以通过 localhost 3000 访问

参考链接:


1. https://github.com/KyberNetwork/peace-relay

2. https://github.com/ethereum/btcrelay






官方网址:

http://www.ethereumclassic.org







请到「今天看啥」查看全文