如何生成bitcoin 地址长度不一样

如何生成bitcoin 地址长度不一样,第1张

1.首先你要知道公钥和私钥的概念(已经懂的不用看这部分了)

公钥私钥是现代密码学分支非对称性加密里面的名词,通常都是用公钥加密信息,用私钥解密信息,为什么要这样? 因为你看电视剧的时候,发电报那种都是对称性加密,这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方法,于是按照加密方法反着来就能解密。 一直到非对称性加密这种情况才有所改观,公钥就是可以对全世界公开的密钥,比如你和google通讯,用google给的1024位的公钥加密,送到google那里只有他有对应的私钥,只有他能解密,于是就保证了通讯安全

2.比特币主要用了ECDSA,也就是椭圆曲线签名算法,这个算法有两个特性,注意这两点对下面至关重要

a.只要知道私钥,可以算出相应的公钥;

b.你用私钥签名过的东西,可以用公钥算一下是不是你签的;

3.知识准备完了,下面开始讲比特币的交易,比特币其实没有钱包,只有交易账单,整个比特币就是一大堆交易账单

比如:

账单1 从A转到B 转了XXX比特币

账单2 从B转到C和D 转了XXX比特币

账单3 从C转到E 转了XXX比特币

。。。。任何人只要下载了客户端都能接收到从比特币成立那一天起的所有账单,所以,只要把所有账单都下载全了自然知道每个账户上应该剩多少钱(这里仔细思考下)

4.比特币的账户,就是刚才讲的一段公钥

5.下面我开始贴一个比特币的账单,这里是核心部分了!!! 每个账单都是一段数据,你签完了以后会发送到全网,把数据结构逆向成易懂的中文解释如下:

FROM(谁发送的,包括两部分)

Previous tx: 你要花的这笔钱的那个账单的id, 也就是说,你花的任何一笔钱都应该有人转给你过,需要出示那个账单的id

scriptSig: 你对这笔交易的签名,就是把单子用你的私钥做hash,只有你能做这个hash

TO(谁接受,包括两部分)

Value: 要发多少

scriptPubKey: 对方的公钥,比特币账户就是一段公钥

6.等你签完单子以后,开始往全网发送,怎么发呢? 比特币通讯没那么复杂,你可以类比成IRC频道,但和普通的“IRC”不同的是,任何一个客户端都是一台“IRC”服务器,当你启动客户端的时候,会接收到周围的有公网IP的客户端地址,就是“服务器”列表,这个列表也不断的刷新,都是其他的比特币用户,于是你在这个“IRC”喊一句话的时候,周围的人会听到,进而扩散的全世界。

7.把签单发送到全世界以后,所有收到这个单子的客户端会效验你这个单子对不对,比如会效验你的签名,是不是你发的,会效验你是否有那么多钱(根据历史交易可以推算出你有多少钱可以花)

如果这个交易大家算过没问题了,基本上就算转账成功了。

8.实际上现在对方已经接受了比特币,但是要想花的话,他得有那个地址(公钥)对应的私钥。于是他就能填下一个单子的 FROM头部,Previous tx就是刚才这笔交易的序号,scriptSig填用他私钥签名过的hash

如此往复。。。

当bitcoin客户端第一次启动的时候, 程序不知道任何活跃的bitcoin全节点

为了发现一些IP地址, 需要把一些DNS地址(也叫dns种子)硬编码到比特币源码中。如果没有dns seed, 客户端不能自动联上节点。

Dns Seed 由比特币的社区成员维护, 其中一些提供动态的dns seed服务,通过扫描网络自动获取活跃的节点IP地址,其中一些提供静态dns seed, 这些种子是手动添加的。

我们看下sipa维护的 dns seed

83.162.254.34176.115.25.48 ... 158.69.251.126 都是节点地址,当客户端启动的时候, 会自动链接这些地址。

dns seed 硬编码在什么地方了?

1 需要爬虫一类的服务,通过bitcoin protocol 嗅探到一些节点

2 可以模仿dns请求, dns通过UDP协议的53端口进行通讯, 把嗅探到节点发送出去

这些工作,敬爱的sipa在 bitcoin-seeder 都帮我们做了。

从 seed.bitcoin.sipa.be. 14852 IN NS xps.sipa.be. 了解到seed域名的ns服务(即 nameserver)

是由 xps提供的. 我们在 dnspod 做如下配置.

需要在xps服务器启动bitocin-seeder

1 先编译 make , 得到 dnsseed 执行文件

2 启动爬虫

等一段时间, dig seed.liushooter.cc 就会看到结果.

参考:

https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery#DNS_Addresses

https://bitcoin.org/en/developer-guide#p2p-network

文章概要:一个名叫中本聪(Satoshi Nakamoto)的人,在P2P 基金会(p2pfoundation)网站上发帖,称自己开发出了一个叫作比特币的开源P2P(点对点)电子现金系统,它完全去中心化,没有中央服务器或者托管方,所有一切都是基于参与者。 比特币™(BitCoin)是一种P2P形式的虚拟货币。点对点的传输意味着一个去中心化的支付系统。比特币不依靠特定货币机构发行,它通过特定算法的大量计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。 比特币是一种网络虚拟货币,跟腾讯公司的Q币类似,你可以使用比特币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用比特币购买现实生活当中的物品。 比特币与其他虚拟货币最大的不同,是其总数量是非常有限的,具有极强的稀缺性。该货币系统在前4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个之内。还有一点是,你可以用电脑生产比特币。 详细介绍 比特币(Bitcoin)是一种由开源的P2P软体产生的电子货币。也有人将比特币意译为“比特金”。虚拟货币比特币(BitCoin)的概念最初由中本聪(SatoshiNakamoto)在2009年提出,现在比特币也用于指称bitcoin根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。与大多数货币不同的是,比特币不依赖于特定的中央发行机构,而是使用遍布整个P2P网络节点的分布式数据库来记录货币的交易,并使用密码学的设计来确保货币流通各个环节安全性。例如,比特币只能被它的真实拥有者使用,而且仅仅一次,支付完成之后原主人即失去对该份额比特币的所有权。 特征 比特币被设计为允许匿名的所有权与使用权,比特币既可以被以计算机文件的形式(wallet)保存在个人电脑中,也可以储存在第三方托管服务。不管以何种形式保存,比特币都可以通过比特币地址发送给互联网上的任意一个人。P2P的分布式特性与不存在中央管理机制的设计确保了任何机构都不可能操控比特币的价值,或者制造通货膨胀。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/482674.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-09
下一篇2023-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存