- 浏览: 762937 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
A.张三给李四发送一笔资金(UTXO)
1.张三先用hash对交易生成摘要D1
D1=hash(tx1) //D1:b0c39931d0734757d4e44b54d25357ad2c81068d75dd1288f2d4349b866fe0c1
2.张三用自己的私钥通过ECDSA(椭圆曲线签名函数)对摘要进行签名
Sig1=Fun_ECDSA(prikey,D1)
3.张三将自己公钥(pubkey)和签名(Sig)写入交易(tx1)的解锁脚本(scriptSig)中,然后将交易广播到网络
B.证明交易是张三发的:
1.节点从交易(tx1)的解锁脚本(scriptSig)中取出张三的公钥,然后能过ECDSA椭圆曲线签名对交易(tx1)解出摘要D1
2.节点对收到的交易进行hash(tx1)得到摘要D1',对比D1和D1'看是否相等,如果相等就可证明该交易确实是张三发的
C.李四如果想通过交易tx2花掉这笔钱(UTXO),则需要提供李四的公钥(pubkey)和李四对交易(tx2)的签名
1.李四使用这笔资产作为交易(tx2)的输入,并生成摘要D2
D2=hash(tx2)
2.李四用ECDSA签名算法,用自己的私钥(prikey)对摘要D2生成签名Sig2
Sig2=ECDSA(prikey,D2)
3.李四将自己的公钥(pubkey)和签名Sig2写入到交易(tx2)的解锁脚本(scriptSig)中,然后将交易(tx2)广播到网络
网络节点测试:
1.网络节点收到tx2后,先对锁定脚本的pubkey进行hash,看是否和UTXO的锁定脚本的公钥hash相同,相同则表明李四有资格花这笔钱
2.检查签名:
D2=hash(tx2)
D2'=ECDSA(pubkey,tx)
如果D2==D2',则表示这笔交易确实是李四发出来的,他有权花这笔UTXO
多重签名交易,这种交易用在要求更加严格的场合,简单的说就是要支出一笔钱,需要得到N个人中至少M个人的签字认可(M <= N)才行。这种交易会在UTXO上指定N个公钥(N个监管人的公钥),需要提取资金时,必须提供至少M个签名,只有所有的签名都能满足才行。以3个人管理一笔资金,提取时必须得到其中2个人的签名为例,满足条件的脚本如下:
0 | Sig1 | Sig2 | 2 | Public Key 1 | Public Key 2 | Public Key 3 | 3 | OP_CHECKMULTISIG
注意这里MULTISIG的脚本必须以0开始,这源自与OP_CHECKMULTISIG操作符在执行过程中的一个bug。
验证签名:通过摘要hash和签名可以转出公钥,再与原公钥对比
1.张三先用hash对交易生成摘要D1
D1=hash(tx1) //D1:b0c39931d0734757d4e44b54d25357ad2c81068d75dd1288f2d4349b866fe0c1
2.张三用自己的私钥通过ECDSA(椭圆曲线签名函数)对摘要进行签名
Sig1=Fun_ECDSA(prikey,D1)
3.张三将自己公钥(pubkey)和签名(Sig)写入交易(tx1)的解锁脚本(scriptSig)中,然后将交易广播到网络
B.证明交易是张三发的:
1.节点从交易(tx1)的解锁脚本(scriptSig)中取出张三的公钥,然后能过ECDSA椭圆曲线签名对交易(tx1)解出摘要D1
2.节点对收到的交易进行hash(tx1)得到摘要D1',对比D1和D1'看是否相等,如果相等就可证明该交易确实是张三发的
C.李四如果想通过交易tx2花掉这笔钱(UTXO),则需要提供李四的公钥(pubkey)和李四对交易(tx2)的签名
1.李四使用这笔资产作为交易(tx2)的输入,并生成摘要D2
D2=hash(tx2)
2.李四用ECDSA签名算法,用自己的私钥(prikey)对摘要D2生成签名Sig2
Sig2=ECDSA(prikey,D2)
3.李四将自己的公钥(pubkey)和签名Sig2写入到交易(tx2)的解锁脚本(scriptSig)中,然后将交易(tx2)广播到网络
网络节点测试:
1.网络节点收到tx2后,先对锁定脚本的pubkey进行hash,看是否和UTXO的锁定脚本的公钥hash相同,相同则表明李四有资格花这笔钱
2.检查签名:
D2=hash(tx2)
D2'=ECDSA(pubkey,tx)
如果D2==D2',则表示这笔交易确实是李四发出来的,他有权花这笔UTXO
多重签名交易,这种交易用在要求更加严格的场合,简单的说就是要支出一笔钱,需要得到N个人中至少M个人的签字认可(M <= N)才行。这种交易会在UTXO上指定N个公钥(N个监管人的公钥),需要提取资金时,必须提供至少M个签名,只有所有的签名都能满足才行。以3个人管理一笔资金,提取时必须得到其中2个人的签名为例,满足条件的脚本如下:
0 | Sig1 | Sig2 | 2 | Public Key 1 | Public Key 2 | Public Key 3 | 3 | OP_CHECKMULTISIG
注意这里MULTISIG的脚本必须以0开始,这源自与OP_CHECKMULTISIG操作符在执行过程中的一个bug。
验证签名:通过摘要hash和签名可以转出公钥,再与原公钥对比
发表评论
-
chaintips
2019-07-02 09:07 3071.invalid 该分支包含至少一块无效区块。 2.head ... -
比特币RPC
2019-02-13 08:10 401代码详解:https://mistydew.github.io ... -
比特币命令行参数
2019-02-03 09:04 429-?:提示常用的命令行参数并退出 -version:打印版本然 ... -
比特币消息类型
2019-01-27 09:28 6271.VERSION:当主动连接上对方时,发送version消息 ... -
外带数据
2019-01-07 08:08 399外带数据:保存在区块链但不进行货币交易的信息,比如需要永久保存 ... -
watch-only 地址
2019-01-06 16:34 469watch-only 地址:监控某一个地址,只能看不能花,相当 ... -
签名模式
2019-01-05 09:24 732交易的签名方式可以通过SIGHASH符号来控制,该符号附加在签 ... -
Script(脚本)字段
2018-12-28 07:57 4551.常见关键字段 OP_0/OP_FA ... -
coinbase交易
2018-12-26 22:14 525coinbase交易:用于凭空产生比特币 1.只有一个输入,该 ... -
根据地址查询私钥
2018-12-26 09:44 691字符串转私钥 1.先将字符串decode base58,获取C ... -
难度值
2018-12-26 07:45 498难度值:它决定了节点需要经过多少次哈希运算才能产生一个合法的区 ... -
即时支付
2018-12-23 16:52 663即时支付:直接发给主节点让主节点快速确认的交易 1.手续费最 ... -
椭圆曲线密码算法
2018-12-21 08:06 686椭圆曲线密码(Elliptic Curve Cryptogra ... -
Merkle树
2018-12-19 21:17 377Merkle哈希数是一类基于 ... -
SHA256
2018-12-19 21:07 531SHA256是构造区块链所用的主要密码哈希函数.无论是区块的头 ... -
比特币交易
2018-12-16 14:16 440交易类型 TX_NONSTANDARD 非标准的交易 TX_P ... -
Bloom过滤器
2018-12-16 09:47 337Bloom filter:是一种节省空间,高效率的数据表示和查 ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 10Berkeley DB:作为比特币的钱包数据库(存储walle ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 1959Berkeley DB:作为比特币的钱包数据库(存储walle ... -
P2P消息通信
2018-12-12 23:23 2951.启动的时间先与程序 ...
相关推荐
比特币中的交易通过一系列数字签名链来实现。具体来说,每一枚电子货币都可以被视为一条数字签名链,其中包含了一系列的交易记录。每次交易时,当前持有者会将自己的公钥和接收者的公钥以及上一笔交易的哈希值进行...
通过这个库,我们可以了解到如何在分布式环境中管理比特币签名,以及与云原生(cloud native)架构的结合。 首先,让我们聚焦于“btc-sign-manager”。这个名字暗示了它可能是一个用于处理比特币交易签名的工具。...
# 基于Python和Qt框架的比特币钱包管理系统 ## 项目简介 本项目是一个基于Python和Qt框架开发的比特币钱包管理系统,旨在为用户提供一个安全、便捷的比特币存储和交易平台。通过该系统,用户可以管理自己的比特币...
区块链系统:以比特币为基础,实现分布式交易,可持久化,支持私钥加密,公钥解密,签名算法,SHA256算法。
根据以上信息,我们可以推测“btc-sign-manager”可能是一个用于管理比特币签名的Python库,它可能实现了与比特币交易相关的功能,如签名生成、验证等。同时,由于与ZooKeeper的关联,它可能在分布式环境下运行,...
例如,比特币网络的每一笔交易都需要用私钥对交易进行签名,而其他节点通过公钥验证这个签名的有效性。签名过程保证了只有私钥持有者才能发起支付,而验证过程则确保了交易的不可篡改性。 总的来说,比特币椭圆曲线...
比特币白皮书:一种点对点的电子现金系统 本篇论文中,中本聪(Satoshi Nakamoto)提出了一个基于点对点技术的电子现金系统,使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。该...
Schnorr 签名方案应用在比特币上,该算法在性能、安全、体积、扩展等方面均优于比特币现主要用的椭圆曲线签名算法。Blockstream(业内第一家旨在扩大比特币协议层功能的公司)正大力推动将 Schnorr 签名方案应用于...
2021年的Taproot升级同样具有里程碑意义,它引入了Schnorr签名和MAST(默克尔抽象语法树)等技术,显著增强了比特币的可扩展性、隐私性和灵活性。Schnorr签名通过将多个签名合并成一个,减少了交易所需的字节数,...
比特币:一种点对点的电子现金系统 由中本聪撰写,比特币白皮书首次发表于2008年,并在2009年随着比特币网络的推出得到实际应用。这份文档不仅定义了比特币这一数字货币的运作机制,而且奠定了去中心化加密货币的...
比特币交易本质上是一个已签名的数据结构,这使得它能够在任何网络环境中执行。人们常误以为比特币交易必须通过比特币网络进行,实际上并非如此。交易需要达到矿工并被包含在区块中,但其传播路径并不局限于比特币...
2. **交易构造与签名**:用户可以使用此库来构造新的比特币交易,并对交易进行签名,确保交易的安全性和合法性。 3. **脚本解析与构建**:库提供了解析和构建比特币脚本的功能,这对于理解交易逻辑和实现自定义智能...
ECC数字签名广泛应用于数字货币(如比特币)、物联网设备、安全电子邮件、软件签名等领域,提供高效且安全的身份认证和数据完整性保护。 综上所述,ECC数字签名在密码学中占据重要地位,尤其在资源有限的环境中,如...
"bitcoinlib"是一个基于Python编写的区块链库,它为开发者提供了构建和操作比特币及其它兼容比特币协议的加密货币的工具。这个库的核心在于其简洁而强大的设计,使得开发者能够更轻松地理解和实现区块链相关的功能。...
3. **签名和验证**:库提供了创建和验证比特币交易签名的功能,确保交易的安全性和有效性。 4. **地址转换**:Coincurve支持将公钥哈希转换为Base58Check编码的比特币地址,以及进行反向验证。 5. **交易处理**:...
该库的核心功能是提供安全、高效的方式来执行与比特币相关的操作,如签名、验证、密钥管理等。它的设计目标是为开发者提供一个简洁、易用且可靠的接口,使得在Python中处理比特币相关的任务变得更加便捷。 在描述中...
这个库通常适用于那些需要在Web应用中处理比特币交易或者与比特币钱包交互的场景,例如加密货币交易平台、钱包服务等。 该库的核心功能包括: 1. **编码**: 提供了将绝对锁定时间转换为符合BIP65规范的编码格式的...
- **签名和验证**:提供ECDSA(椭圆曲线数字签名算法)签名和验证功能,这是比特币交易确认的重要组成部分。 - **地址编码和解码**:支持将公钥哈希编码为比特币地址,以及将地址解码回公钥哈希。 - **椭圆曲线操作*...
1. **区块链**:比特币等加密货币采用ECDSA进行交易的签名与验证,保证交易的安全性和不可篡改性。 2. **HTTPS**:部分网络协议使用ECDSA提供安全连接,如TLS/SSL证书的签名。 通过深入理解ECDSA签名算法,我们可以...
标题 "IASchnorr.7z" 暗示着这个压缩包可能包含了与Schnorr签名算法相关的代码实现,特别是针对比特币系统中使用的secp256k1曲线和SHA256哈希函数。Schnorr签名是一种高效且安全的数字签名方案,常用于区块链技术和...