大家好,今天小编来为大家解答bitcoin.org.en这个问题,bitcoin: dns seed很多人还不知道,现在让我们一起来看看吧!
本文目录
比特币的加密(秘钥、地址、脚本验证)bitcoin: dns seedbitcoin计算Block Hash为什么比特币的私钥无法被攻破比特币的加密(秘钥、地址、脚本验证)https://en.bitcoin.it/wiki/Address
https://www.cnblogs.com/zhaoweiwei/p/address.html
生成方式:
P2PKH的交易脚本
举个真实的例子:
ScriptSig:
PUSHDATA(72)[3045022100f8df16671995baaecab5a8d91fc3c78f22c156918cefb90dd1092fcd8578567d022041395667d7e99d131bffcb908904a2417cfb74b46df8bded2517a02beda0279701]PUSHDATA(33)
[021fc349da71680b2482e4c307adbd7aa2fc16d2cd564843ab873a8efff748d87b]
这里面的一个scriptSig由2部分组成,第一部分是签名,第二部分是公钥,PUSHDATA(N),表示要压入栈顶的byte,1个byte表示2个字符,PUSHDATA(72)表示压入144个字符
OutputScripts
HASH160PUSHDATA(20)[d3ecd0e0d42d4b617767d9d1b966216c77ebb513]EQUAL
DUPHASH160PUSHDATA(20)[7c45023433aea27b48251d4c5a52b1d73caba74e]EQUALVERIFYCHECKSIG
第二个找零output地址因为是P2PKH开头的,所以格式和描述的一样
https://www.hibtc.org/2428.html
结合多重签名一起使用
scriptSig:..signatures...<serializedscript>
scriptPubKey:OP_HASH160<scriptHash>OP_EQUAL
表示一共有n个参与方,只要有m个参与方同意了这笔交易,则这笔交易就生效了,具体的规则是通过scriptHash里面的脚本内容决定的
m-of-nmulti-signaturetransaction:
scriptSig:0<sig1>...<script>
script:OP_m<pubKey1>...OP_nOP_CHECKMULTISIG
ScriptSig:
0[]PUSHDATA(72)[30450221009b37b97eb11341a5fa69d191312df12a41449cf922dbf8e72e93eb6ca7515cb60220759126a28f69525903da3e79e873c59ee7355b6a4874eed06ed6f616712ee51201]PUSHDATA(71)[304402202da30a860b7a2ee3cf614aae2ae8fb5a75de3ea9d5274701ef0ceebc94f75801022063155b788bfb7cada4e8050992b23340d9324306fbd6a201a169ff4a676ea9d701]PUSHDATA1[52210246ccf4de0c54cc7f3354cdd993c2c50cf965fd82238b89659fbd73a1b4bf05a121024fc59f72272a897fe43803374969f396058152fe4765a8d15216f94624257b1b21022593bc69ecbf3bbcc3c58082267cb49dadaf4ca8dbf1b2297338a9d628c4297653ae]
HASH160PUSHDATA(20)[d3ecd0e0d42d4b617767d9d1b966216c77ebb513]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
bitcoin: dns seed当bitcoin客户端第一次启动的时候,程序不知道任何活跃的bitcoin全节点。
为了发现一些IP地址,需要把一些DNS地址(也叫dns种子)硬编码到比特币源码中。如果没有dnsseed,客户端不能自动联上节点。
DnsSeed由比特币的社区成员维护,其中一些提供动态的dnsseed服务,通过扫描网络自动获取活跃的节点IP地址,其中一些提供静态dnsseed,这些种子是手动添加的。
我们看下sipa维护的dnsseed
83.162.254.34176.115.25.48...158.69.251.126都是节点地址,当客户端启动的时候,会自动链接这些地址。
dnsseed硬编码在什么地方了?
1需要爬虫一类的服务,通过bitcoinprotocol嗅探到一些节点
2可以模仿dns请求,dns通过UDP协议的53端口进行通讯,把嗅探到节点发送出去
这些工作,敬爱的sipa在bitcoin-seeder都帮我们做了。
从seed.bitcoin.sipa.be.14852INNSxps.sipa.be.了解到seed域名的ns服务(即nameserver)
是由xps提供的.我们在dnspod做如下配置.
需要在xps服务器启动bitocin-seeder
1先编译make,得到dnsseed执行文件
2启动爬虫
等一段时间,digseed.liushooter.cc就会看到结果.
参考:
https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery#DNS_Addresses
https://bitcoin.org/en/developer-guide#p2p-network
bitcoin计算Block Hashbitcoin的创世块的数据是已hardcode的形式写在源码里,
之后的blockhash都是通过固定的方式计算出来的.怎么计算出来呢?
每一个block都有:
version即网络节点的版本号
prev_block前一个块的hash,创世块没有,以后的块都有
mrkl_root,是Merkletree,即默克尔树
time即时间戳,当前时间
bits网络的难度
nonce随机数
这个nonce就是Pow要计算的随机量,区别是要计算2次hash.
先把versionprev_blockmrkl_roottimebitsnonce当做字符串合并到一起,得到结果result.得到result后,做2次sha256运算,得到hash,再然后hash做大小端转换,最后的结果就是这个block的hash.
不过versiontimebitsnonce要转换为unsignedlong型小字端,
prev_blockmrkl_root要转换为16进制并大小端转换,这一步确实很麻烦.
测试下height=1的blockhash值
挖矿做的工作
在一个block的结构中,versionprev_blockmrkl_roottimebits都是很容易计算的.只有nonce这个随机数不确定.
bitcoin的pow就是找到一个合适的nonce,使得versionprev_blockmrkl_roottimebitsnonce合并的结果reuslt,再经过2次sha256计算,达到一个符合bitcoin网络难度的数值.bitcoin的网络难度通过bits计算,难度即最后计算的hash的前n位是零.
每一个blockhash的计算,都包含了prev_block_hash,这也是链的体现,增加了攻击bitcoin的难度.如果有人改了一个block的hash,这个块之后的所有的块hash都要重新计算.
python处理字节序
参考:
https://en.bitcoin.it/wiki/Block_hashing_algorithm
http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html
https://en.bitcoin.it/wiki/Difficulty
https://bitcoin.org/en/developer-guide#term-merkle-tree
为什么比特币的私钥无法被攻破关于:为什么比特币的私钥无法被破解?
以下为正文:
破解比特币私钥,实际上就是要在1到2²⁵⁶之间找到一个数,这个数对应的钱包里面有比特币。
2²⁵⁶约等于10⁷⁷,这是个巨大的数字,对比的话,人类可观测宇宙的基本粒子也就是在10⁸⁰这个数量级上。
人类现有的超级计算机,前500强加起来的算力,大约是每秒进行10¹⁸次浮点运算,有兴趣的人可以算一算,就算每次浮点运算能完成一次破解比特币的尝试,那完成破解需要多少时间。简单说,一年约有3.1536×10⁷秒,按上文的假设,破解一个比特币需要的时间在10⁵¹年这个数量级上。
实际上要花的时间比这多的多,比特币网络计算的是哈希值,现在比特币全网每秒可以做约1.51×10¹⁸次哈希运算,这差不多相当于每秒做1.91×10²²次浮点运算,这远超过现有的超级计算机的算力(换句话说就是超级计算机没法对比特币网络进行攻击,能力差距太大,这和比特币网络解决的是一个专门问题,超级计算机要解决的是各种不同问题有关系)。
无论如何,我觉得超过10⁴年(也就是一万年)的时间对我们的意义都不大了,甚至超过10²年(也就是一百年)的时间对我们都没有多大意义。想想,要花那么多年,只是破解一个钱包的私钥,还不知道这钱包里有多少比特币,这事情实在没有做的意义,就算是知道某个钱包里有很多比特币,投入产出也不可能合算。
这些年间,被盗的比特币都是从人类这边搞的,都是什么从持币人手里盗取了私钥之类的事情,直接攻击比特币网络尝试破解私钥的,闻所未闻,未来估计也不可能有了。
有些人担心量子计算机,首先,量子计算机现在还是早期,解决的都是特定问题,没有针对处理比特币网络的问题,其次,量子计算机的算力现在还是比较低的,远远威胁不到比特币网络,第三,就算量子计算机将来发展起来了,比特币网络也会一并演进的,到时肯定会有针对性的升级。总之,量子计算机并不是比特币的一个威胁。
以下为该文的参考文献;
HowHardIsIttoBruteForceaBitcoinPrivateKey?
https://news.bitcoin.com/how-hard-is-it-to-brute-force-a-bitcoin-private-key/
超级计算机500强
https://en.wikipedia.org/wiki/TOP500
PetaFLOPSandhowitrelatestoBitcoin
https://bitcointalk.org/index.php?topic=50720.0
BitcoinTotalHashRate(比特币全网算力)
https://www.blockchain.com/charts/hash-rate
Observableuniverse(可观测宇宙)
https://en.wikipedia.org/wiki/Observable_universe
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
本文地址:http://www.cj8845.cn/13639.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。