一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。
区块链-《精通比特币》笔记:
最近在巴比特上看《精通比特币》第二版,看到一些概要大致记录整理。
比特币所有权:密钥+地址+数字签名
密钥独立现在存储于钱包(密钥以对的形式出现,公钥、私钥)、地址用于转移接收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)内容支持计划赞助。
之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:
领取专属 10元无门槛券
私享最新 技术干货