区块链(Blockchain)技术源于比特币。在比特币中,为了保证每笔交易可信并不可篡改,中本聪发明了区块链,它通过后一个区块对前一个区块的引用,并以加密技术保证了区块链不可修改。
随着比特币的逐渐发展,人们发现区块链本质上其实是一个分布式的,不可篡改的数据库,天生具有可验证、可信任的特性,它不但可用于支持比特币,也可用于数字身份验证,清算业务等传统的必须由第三方介入的业务,从而降低交易成本。
虽然区块链近年来越来越火,各种概念和商业模式满天飞,但基于区块链底层技术的研究却很少。本教程从零基础开始,从底层开始研究区块链,彻底掌握区块链密码学原理、安全机制、共识技术与工程实现。最大的特色是:
1. 零基础入门区块链,还能写代码!
2. 不仅掌握理论,还能写代码实现,这样就可以轻松识别真假区块链,同时对未来技术的发展有清晰的认识。
最后,请大家务必注意:
本教程为技术教程,教程的所有内容均不构成任何投资比特币或其他数字货币的意见和建议,也不赞成个人炒作任何数字货币!
随着比特币的逐渐发展,人们发现区块链本质上其实是一个分布式的,不可篡改的数据库,天生具有可验证、可信任的特性,它不但可用于支持比特币,也可用于数字身份验证,清算业务等传统的必须由第三方介入的业务,从而降低交易成本。
虽然区块链近年来越来越火,各种概念和商业模式满天飞,但基于区块链底层技术的研究却很少。本教程从零基础开始,从底层开始研究区块链,彻底掌握区块链密码学原理、安全机制、共识技术与工程实现。最大的特色是:
1. 零基础入门区块链,还能写代码!
2. 不仅掌握理论,还能写代码实现,这样就可以轻松识别真假区块链,同时对未来技术的发展有清晰的认识。
最后,请大家务必注意:
本教程为技术教程,教程的所有内容均不构成任何投资比特币或其他数字货币的意见和建议,也不赞成个人炒作任何数字货币!
2021年09月24日
2021年09月24日 当我们已经成功地将一个合约部署到以太坊链上时,如何调用该合约?
2021年09月24日 当我们编写完Vote合约后,如何把它部署到以太坊的链上?
2021年09月24日 以太坊的智能合约就是一段由EVM虚拟机执行的字节码,类似于Java虚拟机执行Java字节码。直接编写字节码非常困难,通常都是由编译器负责把高级语言编译为字节码。
2021年09月24日 以太坊相比比特币的一个重大创新就是它支持智能合约(Smart Contract)。
2021年09月24日 在比特币中,交易就是消耗已有UTXO,并通过执行脚本产生新的UTXO,其中隐含的新旧差额即为矿工手续费。在以太坊中,交易也需要手续费,手续费被称为Gas(汽油),它的计算比比特币要复杂得多。
2021年09月24日 比特币的区块链是由PoW保证每个区块都指向前一个区块,而在每一个区块内部,由一个独立的Merkle Tree来保证所有交易的不可篡改。用户的比特币是以UTXO的方式存储的,因此,比特币的交易就是不断地消耗现有的UTXO,并产生新的UTXO。
而以太坊采用的是账户模型,如果小明的账户在某个区块的资产是1 ETH,当小明给小红转账0.2 ETH后,刨除手续费,他的账户还剩下约0.8 ETH。由于小明的账户地址不变,所以,以太坊的区块结构必须能在每个区块持续地跟踪并记录小明的账户余额变动。因此,和比特币相比,以太坊的区块数据结构更加复杂。
而以太坊采用的是账户模型,如果小明的账户在某个区块的资产是1 ETH,当小明给小红转账0.2 ETH后,刨除手续费,他的账户还剩下约0.8 ETH。由于小明的账户地址不变,所以,以太坊的区块结构必须能在每个区块持续地跟踪并记录小明的账户余额变动。因此,和比特币相比,以太坊的区块数据结构更加复杂。
2021年09月24日 以太坊账户负责存储用户的以太坊余额。对大多数普通用户来说,以太坊账户和银行账户非常类似,通常只需要一个账户即可。
2021年09月24日 以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。
2021年09月24日
2021年09月24日 从HD钱包的创建方式可知,要创建一个HD钱包,我们必须首先有一个确定的512bit(64字节)的随机数种子。
如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住。
如果自己想一个句子,例如bitcoin is awesome,然后计算SHA-512获得这个64字节的种子,虽然是可行的,但是其安全性取决于自己想的句子到底有多随机。像bitcoin is awesome本质上就是3个英文单词构成的随机数,长度太短,所以安全性非常差。
为了解决初始化种子的易用性问题,BIP-39规范提出了一种通过助记词来推算种子的算法。
如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住。
如果自己想一个句子,例如bitcoin is awesome,然后计算SHA-512获得这个64字节的种子,虽然是可行的,但是其安全性取决于自己想的句子到底有多随机。像bitcoin is awesome本质上就是3个英文单词构成的随机数,长度太短,所以安全性非常差。
为了解决初始化种子的易用性问题,BIP-39规范提出了一种通过助记词来推算种子的算法。
2021年09月24日 HD钱包算法决定了只要给定根扩展私钥,整棵树的任意节点的扩展私钥都可以计算出来。
2021年09月24日 在比特币的链上,实际上并没有账户的概念,某个用户持有的比特币,实际上是其控制的一组UTXO,而这些UTXO可能是相同的地址(对应相同的私钥),也可能是不同的地址(对应不同的私钥)。
出于保护隐私的目的,同一用户如果控制的UTXO其地址都是不同的,那么很难从地址获知某个用户的比特币持币总额。但是,管理一组成千上万的地址,意味着管理成千上万的私钥,管理起来非常麻烦。
能不能只用一个私钥管理成千上万个地址?实际上是可以的。虽然椭圆曲线算法决定了一个私钥只能对应一个公钥,但是,可以通过某种确定性算法,先确定一个私钥k1,然后计算出k2、k3、k4……等其他私钥,就相当于只需要管理一个私钥,剩下的私钥可以按需计算出来。
这种根据某种确定性算法,只需要管理一个根私钥,即可实时计算所有“子私钥”的管理方式,称为HD钱包。
出于保护隐私的目的,同一用户如果控制的UTXO其地址都是不同的,那么很难从地址获知某个用户的比特币持币总额。但是,管理一组成千上万的地址,意味着管理成千上万的私钥,管理起来非常麻烦。
能不能只用一个私钥管理成千上万个地址?实际上是可以的。虽然椭圆曲线算法决定了一个私钥只能对应一个公钥,但是,可以通过某种确定性算法,先确定一个私钥k1,然后计算出k2、k3、k4……等其他私钥,就相当于只需要管理一个私钥,剩下的私钥可以按需计算出来。
这种根据某种确定性算法,只需要管理一个根私钥,即可实时计算所有“子私钥”的管理方式,称为HD钱包。
2021年09月24日 Segwit地址又称隔离见证地址。在比特币区块链上,经常可以看到类似bc1qmy63mjadtw8nhzl69ukdepwzsyvv4yex5qlmkd这样的以bc开头的地址,这种地址就是隔离见证地址。
2021年09月24日 比特币的区块链由一个个区块串联构成,而每个区块又包含一个或多个交易。如果我们观察任何一个交易,它总是由若干个输入(Input)和若干个输出(Output)构成,一个Input指向的是前面区块的某个Output,只有Coinbase交易(矿工奖励的铸币交易)没有输入,只有凭空输出。所以,任何交易,总是可以由Input溯源到Coinbase交易。
2021年09月24日 由比特币的签名机制可知,如果丢失了私钥,没有任何办法可以花费对应地址的资金。这样就使得因为丢失私钥导致资金丢失的风险会很高。为了避免一个私钥的丢失导致地址的资金丢失,比特币引入了多重签名机制,可以实现分散风险的功能。
2021年09月24日 比特币的所有交易的信息都被记录在比特币的区块链中,任何用户都可以通过公钥查询到某个交易的输入和输出金额。当某个用户希望花费一个输出时,例如,小明想要把某个公钥地址的输出支付给小红,他就需要使用自己的私钥对这笔交易进行签名,而矿工验证这笔交易的签名是有效的之后,就会把这笔交易打包到区块中,从而使得这笔交易被确认。