博客
关于我
区块链第四次作业跨链原子交换交易
阅读量:590 次
发布时间:2019-03-11

本文共 1982 字,大约阅读时间需要 6 分钟。

跨链原子交换交易的实现

在本次实验中,我们需要实现Alice和Bob之间的跨链原子交换交易。这项任务涉及到不同的区块链网络,如BTCTestnet3和Blockcypher的BCY Testnet。以下将详细介绍实验的过程以及所需实现的关键部分。

配置环境

首先,确保环境配置正确。运行以下命令安装所需依赖项:

pip install -r requirements.txt

确保使用Python3执行脚本。

创建密钥并领取测试币

  • 生成并导入密钥

    • 使用keygen.py生成BTCTestnet3和BCY Testnet的密钥,并将其导入keys.py文件。
  • 领取测试币

    • 在Project1测试网中,为Alice的地址领取测试币。
    • 在Blockcypher测试网(BCY)中,注册账户并获取API token。使用curl命令创建Alice和Bob的地址:
      curl -X POST https://api.blockcypher.com/v1/bcy/test/addrs?token=YOURTOKEN
    • 使用curl命令领取测试币:
      curl -d '{"address":"BOB_BCY_ADDRESs", "amount": 1000000}' https://api.blockcypher.com/v1/bcy/test/faucet?token=YOURTOKEN
  • 划分测试币

    使用split_test_coins.py文件,将测试币划分为不同的地址。确保在BTC和BCY网络中分别进行调整,特别注意调用函数和网络类型的适当性。

    完善swap.py

    根据项目要求,填写swap.py中的相关函数。这部分需要结合前面的步骤,确保密钥和地址正确引用。

    核心部分:完善swap_scripts.py

    swap_scripts.py中,实现跨链原子交换所需的脚本,重点完成以下部分:

    1. 创建脚本coinExchangeScript

    实现一个可以由接收者签名和秘密激活的脚本,确保交易只在预定条件下解锁。

    2. 实现coinExchangeScriptSig1coinExchangeScriptSig2

    • coinExchangeScriptSig1:接收方已知秘密X,可以用签名激活交易。
    • coinExchangeScriptSig2:双方签名激活交易。

    实现思路

    结合LSTM脚本语言(如Bitcoin脚本语言),使用OP_IFOP_ELSEOP_ENDIF等操作码来处理不同的解锁条件。

    • coinExchangeScript:检查解锁条件,执行相应的签名验证。
    • coinExchangeScriptSig1:验证秘密X的哈希值,并使用P2PK脚本验证接收方签名。
    • coinExchangeScriptSig2:使用P2MS脚本验证双方签名。

    解锁脚本示例

    解锁脚本1:基于秘密X和接收方签名

    OP_IF  OP_HASH160 hash_of_secret OP_EQUALVERIFY  public_key_recipient OP_CHECKSIGOP_ELSE  public_key_sender public_key_recipient  OP_CHECKMULTISIGOP_ENDIF

    解锁脚本2:基于双方签名

    OP_IF  public_key_sender public_key_recipientOP_ELSE  2 public_key_recipient  OP_CHECKMULTISIGOP_ENDIF

    代码实现

    swap_scripts.py中填充上述脚本。

    def coinExchangeScript(public_key_sender, public_key_recipient, hash_of_secret):    # 返回脚本字节流    return b''def coinExchangeScriptSig1(sig_recipient, secret):    # 返回解锁签名字节流    return b''def coinExchangeScriptSig2(sig_sender, sig_recipient):    # 返回签名验证字节流    return b''

    执行过程分析

    • 解锁脚本1:当秘密X的哈希值正确且接收方签名正确时,交易可执行。
    • 解锁脚本2:当双方提供签名时,交易可执行。

    确保在swap.py中正确调用这些解锁脚本,并结合区块链网络特性,安全完成跨链交易。

    总结

    实现跨链原子交换交易需要深入理解区块链脚本语言和网络机制,正确编写解锁和锁定脚本,确保交易的原子性和安全性。本次实验通过具体的例子和代码实现,展示了如何在不同网络间安全交换加密货币的所有权。

    转载地址:http://vcqtz.baihongyu.com/

    你可能感兴趣的文章
    npm学习(十一)之package-lock.json
    查看>>
    npm安装 出现 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! 解决方法
    查看>>
    npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
    查看>>
    npm安装教程
    查看>>
    npm报错Cannot find module ‘webpack‘ Require stack
    查看>>
    npm报错Failed at the node-sass@4.14.1 postinstall script
    查看>>
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错TypeError: this.getOptions is not a function
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>
    npm的常用操作---npm工作笔记003
    查看>>
    npm的常用配置项---npm工作笔记004
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    npm编译报错You may need an additional loader to handle the result of these loaders
    查看>>
    npm设置淘宝镜像、升级等
    查看>>
    npm设置源地址,npm官方地址
    查看>>