最近在公司做钱包的项目,产品已接近落地,基于 TEE 和 SE 的,主打安全性。 前几天去和一家做 REE 钱包的公司谈合作,这家公司主打的是跨链交易,很感兴趣。 之前也听说过跨链交易,但是了解不多,这几天就多学习了下。 BTC_relay 是其中一种,在看到 BTC_relay 之前,我也在想如何实现跨链交易,我觉得有几点是必须的: 为了解决互相不信任的问题,要有公正的第三方...
比特币命令行
bitcoin-cli 或者 bitcoin core wallet 的 console,支持很多命令,可以获得区块链相关的很多信息,一步步实验和解析下命令的输出。 完整的命令列表 getwalletinfo 获取钱包相关的一些信息。 { "walletname": "wallet.dat", "walletversion": 159900, "balance": 0.0...
RLP和VarInt
在区块链的世界里,一方面由于是分布式存储,一样的数据存储在所有的节点里,如果数据中包含无用的字节,那么在所有节点中浪费的总量就很客观,另一方面虽然数字货币的交易速率都不高,但是至少也有每秒几笔(比特币)到几十笔(以太坊),如果每笔交易中都包含一定的无用字节,那么时间长了,就会浪费掉非常大的空间。 所以在比特币和以太坊中都有一些为了减少浪费而做的设计。 比特币 VarInt VarInt...
比特币-交易体
这次学习下比特币交易体,主要包括交易体的数据结构、签名的几种类型和分别是如何产生的。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 前言 交易体位于区块体内,一个区块体内包含很多笔交易,每笔交易都是一个交易体。 为什么想要介绍下交易体的结构呢,有两个方面的原因: 交易体内包含签名,而签名的流程是 TEE 钱包需要保护的内容,有的客户需要我们将整个交易体的打包都放到 TA ...
比特币以太坊白皮书
之前对比特币和以太坊已经有一些了解,这次重新再看一遍白皮书,主要记录一些以前忽略或者理解不是很深的知识。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 比特币白皮书 1. 默克尔树 默克尔树除了比特币、以太坊上的应用,在其他大多数的 P2P 分布式应用中都可见身影,其核心就是将大量数据进行 hash 后增加其分布式索引性能,通过维持一个较小的高效索引进而管理复杂的大量数据(引用自...
比特币-钱包备份和恢复
这篇学习下钱包备份和恢复相关的知识。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 前言 之前 HD 钱包的文章介绍过钱包密钥的派生过程,主密钥(包括链码)是由熵、助记词、种子一步步推导出来的,而子密钥都是根据主密钥确定性派生出来的,所谓确定性就是说只要提供子密钥的路径,无论派生多少次,派生出来的密钥都是一样的。 那么其实对于用户来说,只要保留好熵、助记词、种子、主密钥(包括链码...
比特币-脚本相关
这次来学习比特币脚本相关的概念。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 前言 在介绍脚本之前,先简单说下自己对比特币所有权的理解。 经常所说的比特币钱包,容易引起一种误解,觉得比特币就像是现实的硬币一样,我们从一堆硬币里,抓一把硬币放到我们自己的钱包里,这样硬币就从那堆硬币中分离开了,他们有了新的位置(在我们的钱包里),硬币本身是不记名的,在我钱包里的硬币就是我的。 但...
比特币-核心客户端编译和运行
如何下载、编译和运行 bitcoin 核心客户端。 这是完整节点客户端,有安装版和编译版,适合于普通用户和开发者。 安装版 在 bitcoin 官网 下载,包括 windows、macOS、linux、ubuntu 等版本,下载后安装即可。 编译版 clone bitcoin 源码并切换版本 $ git clone https://github.com/...
比特币-密钥与地址
这篇文章一起学习下比特币密钥和地址的由来。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 比特币秘钥 比特币的签名算法是 ECDSA (Elliptic Curve Digital Signature Algorithm), 即椭圆曲线签名算法,是数字签名算法一种,基于椭圆曲线离散对数问题的难解性。 大家平时经常接触到的可能是 RSA 算法,是基于极大整数因数分解的难解性。 这...
比特币-分层确定性钱包
这篇文章,参考《精通比特币》,加入了一些自己的理解和注释。 先从钱包开始写,是因为自己正在做钱包,这里是钱包的入口。 本人知识有限,如有错误和疏漏,请务必指正,多谢。 什么是非确定性钱包 非确定性指的是,无法从一个私钥推导出另一个私钥,也就是私钥是完全随机生成的。 比特币为了保护交易隐私,要求地址不能重复使用(也就是每次交易之后,改变地址),因为每个地址对应一对公私钥,所以变更地址...