博客
关于我
区块链第四次作业跨链原子交换交易
阅读量: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/

    你可能感兴趣的文章
    Nginx:NginxConfig可视化配置工具安装
    查看>>
    ngModelController
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>