【重读经典系列】精通比特币(上)

最开始接触区块链的时候就是同学让我读一下《精通比特币》,由于当时对区块链的很多内容不了解,所以,只是囫囵吞枣的看了一遍,没有留下太多的印象。现在随着区块链知识的深入学习以及前面有仔细的读了一遍比特币白皮书。所以,这里重读一遍,相信有更多的体会。

1. 难度调整

整个网络每产生2,106个区块后会根据之前2,106个区块的算力进行难度调整。

[注] 大约十分钟出一个块,那么大约2106*10/60/24=14.625天难度调整一次

2. 流通中的比特币数量非常接近一条曲线,并将在2140年比特币将达到2,100万枚。

[注] 这里是通过从最开始每个区块奖励50枚比特币,之后每新建210000个区块,则减半一次,直到奖励减小为1聪,这样来进行计算得来的。

3. 每笔交易你都可以使用不同的地址,这有利于提高隐私的安全性。用户可创建地址的数量几乎不受限制。

[注] 但是当每个地址的金额很小,支出需要多个地址的金额进行汇总开支付的时候,创建的这个多个输入一个输出的交易就会暴露你控制着哪些地址,以及这些地址里面有过哪些交易。

4. 钱包应用甚至可以在完全离线时建立交易。就像在家里写张支票,之后放到信封发给银行一样,比特币交易建立和签名时不用连接比特币网络。只有在执行交易时才需要将交易发送到网络。

[注] 比特币网络就是交易的集合。当执行交易的时候就是将交易发送到网络上。

5.交易的输出会被创建成为一个包含这笔数额的脚本的形式,只能被引入这个脚本的一个解答后才能兑换。简单点说就是,Alice的交易输出会包含一个脚本,这个脚本说 “这个输出谁能拿出一个签名和Bob的公开地址匹配上,就支付给谁”。因为只有Bob的钱包的私钥可以匹配这个地址,所以只有Bob的钱包可以提供这个签名以兑换这笔输出。因此Alice会用需要Bob的签名来包装一个输出。

[注] 本质上,比特币网络不会维护未花费的输出列表,网络中只有交易记录。所以,我们所谓的可以使用的“比特币”,是前面交易记录的输出。如果有很多输出,也钱包或节点会遍历所有以我们的地址为输出的交易,来计算我们拥有的金额,即未花费输出UXTO。

6. 这个工作量证明算法指的用SHA256加密算法不断地对区块头和一个随机数字进行哈希计算,直到出现一个和预设值相匹配的解。第一个找到这个解的矿工会赢得这局竞赛并会将此区块发布到区块链中。

[问题] 所有的矿工计算的是同一个问题吗?每次计算除了自己的这个随机数之外还有什么内容?

7. 它会立刻将一些交易和这个新区块的数字指纹放在一起开始构建下一个新区块,并开始给它计算工作量证明。

[注] 每个矿工计算的这里提到的交易是相同的吗?

8. 安装相关命令

获取比特币客户端代码: $ git clone https://github.com/bitcoin/bitcoin.git

获取代码标签(版本): $ git tag

$ git checkout v0.9.0rc1

生成一个构建脚本: $ ./autogen.sh

帮助文档: $ ./configure --help

发现所有必要的库: $ ./configure

进行编译: $ make

安装: $ sudo make install

查询路径: $ which bitcoind $ which bitcoin-cli

运行: $ bitcoind

以后台模式运行 bitcoind: $ bitcoind -daemon

9. 运行相关命令

查看可用的比特币RPC命令列表: $ bitcoin-cli help

获得比特币核心客户端状态的信息: $ bitcoin-cli getinfo

设置密码为foo: $ bitcoin-cli encryptwallet foo

解锁钱包和设定解锁时间: $ bitcoin-cli walletpassphrase foo 360

钱包备份: $ bitcoin-cli backupwallet wallet.backup

导入备份文件: $ bitcoin-cli importwallet wallet.backup

将钱包转储为人类可读的文本文件: $ bitcoin-cli dumpwallet wallet.txt

获得其中的一个地址: $ bitcoin-cli getnewaddress

询问bitcoind客户端此地址已经接收到的比特币数额,以及指定该数额要被加到余额中所需要的确认数: $ bitcoin-cli getreceivedbyaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL 0

整个钱包接收到的交易: $ bitcoin-cli listtransactions

列出整个钱包的所有地址:$ bitcoin-cli getaddressesbyaccount ""

显示所有经过至少minconf个确认的交易加和后的余额:$ bitcoin-cli getbalance

获取某一地址的交易: $ bitcoin-cli gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3

获取地址对应的原始十六进制的交易数据: $ bitcoin-cli getrawtransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3

解码上述命令获取的原始数据: $ bitcoin-cli decoderawtransaction 0100000001d717...388ac00000000

把区块哈希值作为参数来查询对应的区块:$ bitcoin-cli getblock 000000000000000051d2e759c63a26e247f185ecb7926ed7a6624b↵ c31c2a717b true

通过区块高度来检索一个区块,这样需要将区块高度作为参数,并返回那个区块的区块哈希值: $ bitcoin-cli getblockhash 0

查看我们钱包中所有剩余的从之前交易中已确认的支出:$ bitcoin-cli listunspent

得到未花费的输出的详细细节: $ bitcoin-cli gettxout 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 0

建立一笔交易。我们将交易的收入(50已确认未支出的mBTC)和两笔交易的输出(送往新地址的比特币和从原先账户找回的零钱)作为createrawtransaction的参数: $ bitcoin-cli createrawtransaction '[{"txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", "vout" : 0}]' '{"1LnfTndy3qzXGN19Jwscj1T8LR3MVe3JDb": 0.025, "1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL": 0.0245}'

10. 交易ID(txid)在交易确认之前并不权威。区块链中找不到交易哈希值并不意味着此笔交易没有进行。这被称作“交易延展性”,因为交易哈希值在区块确认之前是可以更改的。在确认之后txid是不变且权威的。

11. "blockindex" : 18,

值为18的区块索引(表明我们的交易为此区块的第18笔交易)。

12. 交易中包含一个空的条目scriptSig,因为我们并没有给它签名。如果没有签名,那么交易是没有意义的;同时我们也不能证明我们拥有未花费的输出的来源地址的所有权。通过签名,我们移除了输出上的障碍同时证明了我们的输出可靠。我们使用signrawtransaction 命令去签名交易。它需要原始十六进制的字符串作为参数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容