go比特币离线签名
A. 比特币冷钱包到底应该怎么做
比特币冷钱包指的其实是比特币的一种存储方式。
冷钱包主要是指离线状态下、电脑上下载安装的单机版的比特币软件钱包。
操作主要如下:
1、下载单机版的比特币钱包软件,安装到个人电脑,把其他平台上的比较币转入到电脑名下;然后断网。
2、由钱包软件生成相应的比较币地址及密钥文件,密钥文件存放在的u盘中(比特币地址和密钥分开存放)。
3、需要进行交易的时候,把u盘接到其他联网状态下的电脑,进行密钥文件签名,完成交易。
冷钱包主要是指不经常性使用的钱包,与网络在线钱包相比,是相对的。
B. 比特币的数字签名简介
比特币中的数字签名,是交易中的发起方产生的,为了保证这笔交易确实是由此人发起,并且数据在传输时没有被篡改。数字签名简单点来说,就是完整的交易信息,通过数字摘要技术压缩成固定格式的字符串,然后通过非对称加密技术,生成一个私钥。将完整的交易信息和数字签名传送给矿工,矿工用交易发起方的公钥对数字签名进行解密,解密成功,就将此交易数据写到区块中。
C. 如何使用比特币离线签名交易
GUA单GUADAN
D. 如何保存比特币
方法/步骤
1关闭比特币客户端并找到 wallet.dat 这个文件。
WinXP开始菜单,选择“运行”输入如下内容:explorer%APPDATA%BitCoin
Windows Vista 或 Windows 7,直接在开始菜单的“搜索程序和文件”框中输入 wallet.dat进行搜索
2在这个文件上点右键,选择“添加到压缩文件…”,之后会出现如下对话框:
3设置一个文件名,勾选“压缩后删除源文件”。
然后点“高级”选项卡:
4点击“设置密码…”,在弹出的对话框中输入两次相同的密码
点击“确定”按钮,再点击一次“确定”按钮,加密即完成。
5你会看到钱包文件夹下原来的 wallet.dat 文件没有了,而多出来一个 .rar 的文件。
6加密成功。
恢复钱包
1您只要按照“备份钱包”的步骤 (在上一篇经验值有介绍)打开 Bitcoin 比特币官方客户端的钱包文件夹。
2将备份的 wallet.dat 文件复制到该文件夹,覆盖原文件即可。
注意事项
如果您用 WinRAR 加密备份,首先需要输入正确的密码,才能恢复 wallet.dat。
E. 当你向朋友转了两个比特币,在交易的过程中你提交了哪些信息给矿工
地址、金额、手续费、比特币签名
传统转账是在银行账户之间进行的。同样,比特币转账就是把比特币从一个比特币地址转移到另一个比特币地址上的过程。它的转账过程也类似:
①登陆钱包:你需要登陆你的钱包,类似登陆银行的网银、支付宝、微信等;
②选择钱包地址:你先选好要从自己哪个比特币地址转币给你的朋友,也就是自己的银行卡号(或者支付宝账号微信账号)。
③填写转账钱包地址、金额、手续费、比特币签名、矿工记账:填写好朋友收币的比特币钱包地址,填写转账的数额、比如100个然后写下你想付出的交易手续费金额,签上你的比特币签名,提交给比特币网络,然后就等矿工们来处理记账了。
④转账确认:确定支付后交易信息会在比特币网络进行全网广播,矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户。通常需要经过6次确认,确保交易记录不能被任何人窜改,转账才算真正完成。
F. 比特币的加密(秘钥、地址、脚本验证)
https://en.bitcoin.it/wiki/Address
https://www.cnblogs.com/zhaoweiwei/p/address.html
生成方式:
P2PKH的交易脚本
举个真实的例子:
ScriptSig:
PUSHDATA(72)[9701] PUSHDATA(33)
[]
这里面的一个scriptSig由2部分组成,第一部分是签名,第二部分是公钥,PUSHDATA(N),表示要压入栈顶的byte,1个byte表示2个字符,PUSHDATA(72)表示压入144个字符
Output Scripts
HASH160 PUSHDATA(20)[] EQUAL
DUP HASH160 PUSHDATA(20)[] EQUALVERIFY CHECKSIG
第二个找零output地址因为是P2PKH开头的,所以格式和描述的一样
https://www.hibtc.org/2428.html
结合多重签名一起使用
scriptSig: ..signatures... <serialized script>
scriptPubKey: OP_HASH160 <scriptHash> OP_EQUAL
表示一共有n个参与方,只要有m个参与方同意了这笔交易,则这笔交易就生效了,具体的规则是通过scriptHash里面的脚本内容决定的
m-of-n multi-signature transaction:
scriptSig: 0 <sig1> ... <script>
script: OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG
ScriptSig:
0[] PUSHDATA(72)[1201] PUSHDATA(71)[01] PUSHDATA1[]
HASH160 PUSHDATA(20)[] EQUAL
结合P2SH的新特征
https://en.bitcoin.it/wiki/Transaction
目前比特币支持两种类型的交易:Pay-to-PubkeyHash、Pay-to-Script-Hash
验证一笔P2PKH交易的一个输入是否合法:
总结:先验证这笔output是不是属于该用户,再验证该用户的签名是否有效
参考:
https://blog.csdn.net/jerry81333/article/details/56824166
初级版的比特币交易
https://www.jianshu.com/p/a57795ec562c
G. 比特币的数字签名是什么
比特币的数字签名,就是只有比特币转账的转出方生成的,一段防伪造的字符串。通过验证该数字串,一方面证明该交易是转出方发起的,另一方面证明交易信息在传输中没有被更改。
数字签名通过数字摘要技术把交易信息缩短成固定长度的字符串。举个栗子,牛牛发起一笔比特币转账,需要先将该交易进行数字摘要,缩短成一段字符串,然后用自己的私钥对摘要进行加密,形成数字签名。完成后,牛牛需要将原文(交易信息)和数字签名一起广播给矿工,矿工用牛牛的公钥进行验证,如果验证成功,说明该笔交易确实是牛牛发出的,且信息未被更改。
同时,数字签名加密的私钥和解密的公钥不一致,采用非对称加密技术。看起来好复杂,其实转账只需要你输入私钥就瞬间完成啦!
H. 离线生成的比特币地址是如何避免冲突的
BTC的地址生成过程如下,完整的可以查一下比特币中文维基:
比特币地址的生成过程
(说明: 有些数字以"0x"开头,意思是此数字使用十六进制表示法。"0x"本身没有任何含义,它是C语言流传下来的,约定俗成的写法,比如0xA就是十进制的10。另外,1个字节 = 8位二进制 = 2位十六进制)。
第一步,随机选取一个32字节的数、大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间,作为私钥。
第二步,使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥。 (共65字节, 1字节 0x04, 32字节为x坐标,32字节为y坐标)关于公钥压缩、非压缩的问题另文说明。
第三步,计算公钥的 SHA-256 哈希值
第四步,取上一步结果,计算 RIPEMD-160 哈希值
第五步,取上一步结果,前面加入地址版本号(比特币主网版本号“0x00”)
00
第六步,取上一步结果,计算 SHA-256 哈希值
第七步,取上一步结果,再计算一下 SHA-256 哈希值(哈哈)
第八步,取上一步结果的前4个字节(8位十六进制)
D61967F6
第九步,把这4个字节加在第五步的结果后面,作为校验(这就是比特币地址的16进制形态)。
00D61967F6
第十步,用base58表示法变换一下地址(这就是最常见的比特币地址形态)。
I. 为什么比特币交易过程要将前一笔交易和收款人的公钥进行哈希变化并数字签名,其中前一笔交易是什么
首先,这个做哈希变化并数字签名是为了记录这一笔交易并发布到全网,那么这里说的前一笔交易是在你交易的前一笔交易记录,因为这是分布式账本,也就是说每个人的交易在这个账本上都是有据可查的
J. 什么是比特币冷钱包
指离线钱包,用户通常使用离线比特币钱包地址收发比特币,然后再离线使用钱包私钥进行确认签名。因此黑客是无从窃取冷钱包私钥的。由于相应多出了一个离线确认签名的环节,因此比特币冷钱包在使用上就没有热钱包那么方便快捷.。