首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

虾说区块链-46-《精通比特币》第二版笔记

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-《精通比特币》笔记:

最近在巴比特上看《精通比特币》第二版,看到一些概要大致记录整理。

比特币所有权:密钥+地址+数字签名

密钥独立现在存储于钱包(密钥以对的形式出现,公钥、私钥)、地址用于转移接收bitcoin、数字签名用于交易见证。(比特币交易过程中通讯和交易数据不加密)

公钥加密方式:采用椭圆曲线算法。私钥用户自己保存、公钥在网络中公开。交易过程中发送公钥和签名。

公钥基于私钥生成:私钥一个随机数,通过单项加密函数生成公钥。

地址:地址基于公钥。地址=RIPEMD160(SHA(公钥)),可见地址再经过Base58编码显示。

查看密钥:getnewaddress生成私钥但显示公钥、dumpprivkey显示私钥。

椭圆加密算法:基于离散对数问题的非对称加密算法。

Base58编码:不含数字0、大写字母O、小写字母i、大写字母I、+、/。

版本检验码:checksum=SHA256(SHA256(prefix+data))

私钥格式:私钥是256位的数字,有不同格式:Hex、WIF、WIF-compressed。

公钥格式:公钥264位的数字,有不同格式:Hex、WIF、WIF-compressed。

加密私钥:BIP0038通用标准,使用一个口令私钥,通过Base58check对加密私钥进行编码。具体加密方案:输入私钥,通过WIF编码吗,base58check字符串前缀5,使用长密码作为口令,那么base58check编码前缀为6P。

P2SH:以3开头bitcoin地址为P2SH地址,P2SH函数实现多重签名地址脚本,N个密钥需要M个签名,M-N多签名。

靓号地址:通过靓号生成算法,选择私钥生成公钥,多次试验得到匹配。安全性上需要权衡。

纸钱包:打印在纸上的bitcoin私钥,一种备份机制。

钱包:钱包里没有bitcoin,钱包包含私钥,bitcoin实际上记录在区块链上。

非确定性钱包(nondeterministic wallet),其中密钥都是随机生成,彼此无关联性。简称JBOK(just a bunch of keys)钱包。

确定性钱包(deterministic wallet),密钥都是一个主密钥衍生出来。使用多种不同的密钥推导方法。

非确定钱包密钥是一个松散集合,确定性钱包以一个种子来衍生其他密钥,只备份种子即可。

分层确定性钱包,根据BIP-32和BIP-44生成的HD钱包,树形结构衍生各个密钥。有效建立一个公共密钥序列。

种子和助记词:现在使用钱包中一般都会看到助记词选项,一系列的英文单字生成种子。助记词生成过程(BIP-39):从熵源开始,增加校验、然后映射。过程:

1.创建128-256随机序列(熵)

2.提出SHA-256哈希前面几位(熵长/32),创建一个随机序列的校验和。

3.校验和添加到随机序列末尾。

4.序列划分11位不同部分。

5.11位部分值和2048个单字字典做对应。

6.生成单词即可

助记词生成种子:

PBKDF2(密钥延伸函数)熵用于导出512位种子,增加“盐”的概念,“盐”的目的一个增加暴力破解难度,另一面引入密码短语,保护种子的附加安全性。

接上述6步:PBKDF2密钥延伸函数的第一个参数来自生成的助记词,第二个参数为“盐”,由助记词和密码字符串连接而成,PBKDF2使用HMAC-SHA512算法,使用2048次hash来延伸助记词和盐参数,生成一个512位的值的输出,即为种子。

获取bitcoin代码:git clonehttps://github.com/bitcoin/bitcoin.git

查看bitcoin核心版本:git tag

检查版本:git status

编译:新版本通过make,旧版本通过makefile

安装:sudo make install 默认安装路径:/usr/local/bin

检查安装状态:which bitcoin、which bitcoin-cli

运行bitcoin核心:bitcoind

配置节点配置文件:

1.在.bitcoin/bitcoin.conf文件中设置用户和密码,rpcuser=用户名、rpcpassword=密码

2.alertnotify:电子邮件警报、conf:配置文件制定的命令和脚本、datadir:选择文件存储目录和文件系统(默认为.bitcoin目录)、prune:删除旧块、txindex:维护所有交易的索引、maxconnections:连接的最大节点数、maxmempool:内存限制、maxreceivebuffer:内存缓冲区限制(1000字节)倍数、minrelayfee:最低交易费用。

查看bitcoin进程运行状态:bitcoin-cli getinfo

使用JSON-RPC API接口:查看命令帮助:getblockhash RPC、bitcoin-cli help getblockhash

查看客户端状态:bitcoin-cli getinfo

获取相关交易信息:getrawtransaction+hash、decodeawtransaction+(十六进制解码顺序交易信息)

获取区块信息:getblockhash+区块号、getblock+hash

本文由币乎社区(bihu.com)内容支持计划赞助。

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171213B0DU9600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券