区块链期末复习3:跨链原子交换其他加密货币

参考教材:《区块链:技术驱动金融》

一、跨链原子交换(不可分割的交叉链互换)

1.实施步骤

假设Alice要拿1BTC交换Bob的3BCY。Alice作为交易的发起者。

1)Alice创建一个secret(一个随机数x), 并计算其哈希值 (h(x))

2)Alice创建交易tx1,但并不广播上链。

tx1的输入是Alice拥有的1BTC,输出脚本则要求使用方满足下面两个条件之一:

A. Alice的签名以及Bob的签名

B.   secret(即x的值)以及Bob的签名

也就是说,Bob要想拿走Alice的这一BTC,除了签上Bob的签名之外,还需要拥有Alice的签名或者secret(x)的值。Bob当然拿不到Alice的签名,所以Bob只有在知道secret(x)的值之后,才能拿走这1BTC。

tx1的输出脚本可以如下:

<pubkey_Bob>
OP_CHECKSIGVERIFY
OP_DUP
<pubkey_Alice>
OP_CHECKSIG
OP_IF
OP_DROP
OP_I
OP_ELSE
OP_HASH160
<x_hash>
OP_EQUAL
OP_ENDIF

拿走tx1中存储的这1BTC的交易,需要输入脚本如下:

<sig_Alice>
<sig_Bob>

或者如下:

<sig_Alice>
<sig_Bob>

 3)Alice利用时间锁,创建赎回这1BTC的交易tx11.请求Bob对tx11签名,

这是为了防止Bob不拿走tx1中存储的1BTC,Alice也无法拿回这笔钱。(因为这笔钱已经被转到了某个地址,需要借由Bob的签名和随机数x才能取出)。

时间锁可以设置为48h.输入是tx1中存储的这1BTC,输出地址是Alice的地址。只要tx1中的这笔钱在48h内没有被取走,这笔钱就会转入Alice的地址,Alice就能成功赎回这笔钱。

4)Bob签名tx11后(也就是如果tx1中的钱没有被Bob拿走,Alice可以借由tx11成功赎回锁在tx1中的钱),tx1广播上链。

5)Bob从Alice发布的tx1中获得h(x),即随机数的哈希值。借此创建交易tx2.tx2不广播上链。

tx2的输入是Bob的3BCY,输出脚本需要满足下面两个条件之一才能把3BCY拿走:

A. Alice的签名以及Bob的签名

B.   secret(即x的值)以及Alice的签名

Alice想要拿走这3BCY,当然无法签上Bob的签名,只能签上自己的签名并提供随机数x(secret)的值。

只要Alice成功拿走了这3BCY,Bob也就从这笔交易中知晓了随机数x的值,从而可以拿走Alice存储在tx1中的1BTC.

6)Bob利用时间锁,时间设为24h(小于Alice的时间锁时间就好),创建赎回这3BCY的交易tx22.请求Alice对tx22签名。

这是为了防止Alice不愿意交换币,不拿走Bob在tx2中存储的3 BCY,从而Bob也无法拿走锁在tx2中的这笔钱,

7)   tx2广播上链

如果两人都愿意交换,则Alice通过x和自己的签名从tx2中拿走3BCY后,Bob也就从交易记录中知晓了x的值,从而可以借助x和自己的签名从tx1中拿走1BTC,从而完成交换。

如果任一一方反悔,另一方都可以在时间锁时间到达后,成功赎回自己放在tx1或tx2中的钱。

流程总结

1)Alice创建secret(x),计算哈希值。(注意这个secret不能提前公布,而哈希值可以公布)

2)Alice把1 BTC放在tx1中,tx1先不广播上链。Bob需要知道secret才能拿走tx1中的这笔钱。

3)Alice用48h时间锁创建赎回交易tx11,如果tx1中的钱没有被Bob取走,Alice可以在48h后从tx1中拿回自己的这笔钱。Alice需要请求Bob在tx11上签名,使之有效。

4)tx1广播上链

5)Bob通过x的哈希值,创建交易tx2,把3 BCY放在tx2中。tx2先不广播上链。Alice需要提供secret才能拿走tx2中的这笔钱。

6)Bob用24h时间锁创建赎回交易tx22,如果tx2中的钱没有被Alicce取走,Bob可以在24h后从tx2中拿回自己的这笔钱.Bob需要请求Alice在tx22上签名,使之有效。

7)tx2广播上链

8)Alice通过自己的签名和secret从tx2中拿走3 BCY。

9)Bob从上一步的交易记录中知晓secret的值,通过自己的签名和secret从tx1中拿走1 BTC。交换成功。

2.图示

成功拿走Alice在tx1中存储的1BTC的图示。

上半部分展示的是输入脚本是Alice和Bob的签名的情况;

下半部分展示的是知道随机数x的值和Bob签名的情况:

二、两种简单的加密货币

1.高飞币

1)两个规则:

  • (造币):高飞可以随时创建新币,且这些新创建的币都属于他
  • (转币):拥有此币的人可以将它转给其他人

 对于规则一,高飞将生成一个以前从未生成的唯一货币编号(uniqueCoinID),并建立字符串CreateCoin [uniqueCoinID]”,该字符串与高飞的签名构成一单位币任何人都可以验证该新币具有高飞的有效签名,则该币为有效币。

对于规则二,需要汇款人的私钥签名,收款人的公钥。可以借由哈希指针追溯币的来源,以及最开始是否具有高飞的签名。

2)致命安全隐患:双重支付。

在交易规则中,只追溯该币的来源是否有效,却没有检测该币是否被花费过。

 2.财奴币

以高飞币为基础创建,解决双重支付的问题。

1)特点:由财奴负责公布“仅增账目”(append-only ledger)。

建立一个区块链,每个区块都包含一次交易(而在比特币中,每个区块包含多个交易)。

每个区块包含交易的ID、交易的内容,以及上一个区块的哈希指针。

财奴数字签名是针对最后一个哈希指针(它约束整个结构中的所有数据),并将签名与区块一起公布。

注:仅增特性确保财奴不能修改或删除已经发布的交易,也避免财奴支持双重支付(因为在区块链中,能看到这笔钱是否被花过)。

2)规则

  • (造币):财奴负责创建币。相较高飞币,财奴可以在一次交易中创建多个币量。
  • (转币):付币交易有效,当且仅当:被消耗的币有效;具有全部所有者的签名;没有被双花;消耗(转入)的币值等于产生(转出)的币值。

 

3)财奴币存在的问题:中心化

财奴具有太高的权利,虽然无法改变已有的交易,但可以拒绝为某些人提供服务,不把他们的交易发布在区块上,让他们手中的币花不出去。并且财奴拥有造币的权利。 

补充:几种最早的另类币

 1.域名币

1)目的:提供一个去中心化的域名系统DNS。

2)基本原则:

-把录入的数据视为域名或数值对(name/value pairs),域名是全球唯一的

-只有首次录入某个域名的使用者,才有权限更新这个域名。

2.莱特币

1)设计理念:通过维护CPU矿工社区,创造出一个用CPU挖矿的分布式体系。(失败了)

2)采用memory-hard puzzles,每2.5min产生一个区块。其他的类似比特币。

 3.狗币

卖点是有趣幽默,而非技术创新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OCR实践-Table-Transformer

前言 书接上文 OCR实践—PaddleOCR Table-Transformer 与 PubTables-1M table-transformer&#xff0c;来自微软&#xff0c;基于Detr&#xff0c;在PubTables1M 数据集上进行训练&#xff0c;模型是在提出数据集同时的工作&#xff0c; paper PubTables-1M: Towards comp…

重装操作系统后 Oracle 11g 数据库数据还原

场景描述&#xff1a; 由于SSD系统盘损坏&#xff0c;更换硬盘后重装了操作系统&#xff0c;Oracle数据库之前安装在D盘(另一个硬盘)&#xff0c;更换硬盘多添加一个盘符重装系统后盘符从D变成E&#xff0c;也就是之前的D:/app/... 变成了现在的 E:/app/...&#xff0c;重新安装…

gozero项目接入elk的配置与实战

在 **GoZero** 项目中接入 **ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;** 来进行日志管理&#xff0c;是一个非常强大的监控和分析方案。通过集成 ELK&#xff0c;你可以收集、存储、查询和可视化日志数据。 在这里&#xff0c;我将介绍如何在 GoZero 项目中…

探索PIL库:Python图像处理的强大工具

文章一览 前言一、PIL图像处理库简介二、基本概念2.1颜色模型2.1.1 RGB 颜色模型2.1.2 CMY色彩空间 2.2 通道2.3 图像数据2.4 模式 三、用PIL做图像处理3.1 图像缩放、翻转等处理3.1.1 图像缩放处理3.1.2 图像旋转处理&#xff08;1&#xff09;PIL 提供的函数:&#xff08;2&a…

boot工程需求

1、 关闭看门狗、初始化中断和trap向量表&#xff0c;进行时钟和外设初始化&#xff0c;让芯片正常运行起来 2、 提供CAN ETH等用于通讯功能的驱动&#xff0c;能够接受外部数据的传输请求 3、 提供Flash的读写与擦除驱动&#xff0c;设置服务来对通讯端接受到的数据更新代…

C#中的类型和函数参数传递

1.类型 C#中类型分为两类&#xff1a;值类型和引用类型 1.值类型 所有值类型继承自System.ValueType类&#xff08;这是System.Object的一个子类&#xff09; 值类型变量是直接存储数据&#xff0c;值类型变量声明后&#xff0c;不管是否赋值&#xff0c;编译器都会为其分配…

android系统查找应用包名以及主activity:

一、查找应用的主activity&#xff1a; pm list packages 发现所有的包 dumpsys package 包名&#xff1a; 获取所有的包信息&#xff0c;可以所有关键词MAIN来找主activity 也可以通过下面命令找到所有activity&#xff0c;看下面大概率com.android.settings/.Settings为主ac…

微信V3支付报错 平台证书及平台证书序列号

1.平台证书及平台证书序列号设置错误报错&#xff1a; 错误1&#xff1a; Verify the response’s data with: timestamp1735184656, noncea5806b8cabc923299f8db1a174f3a4d0, signatureFZ5FgD/jtt4J99GKssKWKA/0buBSOAbWcu6H52l2UqqaJKvrsNxvodB569ZFz5G3fbassOQcSh5BFq6hvE…

在Ubuntu下通过Docker部署Mastodon服务器

嘿&#xff0c;朋友们&#xff0c;今天咱们来聊聊如何在Ubuntu上通过Docker部署Mastodon服务器。想要拥有自己的社交媒体平台&#xff1f;Mastodon就是个不错的选择&#xff01;&#x1f310;&#x1f680; Docker与Mastodon简介 Docker是一个开源的容器化平台&#xff0c;让…

Es搭建——单节点——Linux

Es搭建——单节点——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/downloads/elasticsearch 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv elastics…

【机器学习】梯度下降

文章目录 1. 梯度下降概念2. 梯度下降的技巧2.1 动态设置学习率2.2 Adagrad调整梯度2.3 随机梯度下降&#xff08;SGD&#xff09;2.4 特征缩放 3. 梯度下降理论基础 1. 梯度下降概念 梯度&#xff1a;Loss 对参数在某一点的偏微分&#xff0c;函数沿梯度的方向具有最大的变化…

数据库在大数据领域的探索与实践:动态存储与查询优化

在大数据时代&#xff0c;数据库的灵活性与高效性成为数据存储与分析的重要基石。从关系型数据库到 NoSQL 数据库的演进&#xff0c;开发者逐渐可以在结构化与非结构化数据间找到平衡。本文将聚焦大数据场景下的数据库实践&#xff0c;尤其是如何动态存储与查询复杂数据&#x…

【Python科研数据爬虫】基于国家标准查询平台和能源标准化信息平台的海上风电相关行业标准查询信息爬取及处理

基于国家标准查询平台和能源标准化信息平台的海上风电相关行业标准查询信息爬取及处理 1 背景2 标准检索平台2.1 能源标准化信息平台2.2 全国标准信息公共服务平台3 标准信息数据的爬取与处理3.1 能源标准化信息平台的信息爬取3.2 全国标准信息公共服务平台的信息爬取3.3 标准信…

AWS Certified AI Practitioner 自学考试心得

学习目标&#xff1a; 考取 AWS Certified AI Practitioner 那什么是 AWS Certified AI Practitioner 认证 是基础级的认证 比较简单 — 学习内容&#xff1a; 1. AWS网站自学网站 极客时间免费课程&#xff1a;http://gk.link/a/12sJL 配合极客时间课程的章节测试检验自…

Ngnix介绍、安装、实战及用法!!!

一、Nginx简介 1、Nginx概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 2、正向代理 正向代理&#xff1a;如果把局…

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)

05.HTTPS的实现原理-HTTPS的握手流程&#xff08;TLS1.2&#xff09; 简介1. TLS握手过程概述2. TLS握手过程细化3. 主密钥&#xff08;对称密钥&#xff09;生成过程4. 密码规范变更 简介 主要讲述了混合加密流程完成后&#xff0c;客户端和服务器如何共同获得相同的对称密钥…

YOLO11全解析:从原理到实战,全流程体验下一代目标检测

前言 一、模型介绍 二、网络结构 1.主干网络&#xff08;Backbone&#xff09; 2.颈部网络&#xff08;Neck&#xff09; 3.头部网络&#xff08;Head&#xff09; 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…

C++ 与 Python(静态类型语言与动态语言)

C 与 Python&#xff08;静态类型语言与动态语言&#xff09; 一、说明 Python和C到底有啥区别&#xff1f;在使用的时候有啥特殊的益处&#xff1f;这种问题的意义在于&#xff1a;如果对语言了解越清楚&#xff0c;越能够更加大胆地应用哪些极限功能&#xff0c;从而最大限…

Jenkins 构建流水线

在 Linux 系统上安装 Jenkins 服务&#xff0c;以及配置自动化构建项目 前置准备环境&#xff1a;docker、docker-compose、jdk、maven 一、环境搭建 1. Jenkins 安装 &#xff08;1&#xff09;拉取镜像 # 安装镜像包&#xff0c;默认安装最新版本 docker pull jenkins/jen…

【Java】面试题 并发安全 (1)

文章目录 synchronized1. 基本概念与作用2. 使用方式3. 底层原理&#xff08;基于monitor&#xff09;4. 面试题回答要点5. 注意事项与进阶理解 Java中synchronized锁相关知识总结Java内存模型&#xff08;JMM&#xff09;CAS概述及重要性volatile关键字AQS简介 synchronized …