比特币--个人笔记1

硬分叉:更新后的软件--》承认挖出来的coinbase是合理的


矿工想扩容:增加容量后,可以增加交易的容量,从而收取的手续费也多。另外,容量增加后,可以增加交易的吞吐量。


开发团队:不支持扩容。


隔离见证:增加交易的速度,但是初衷不是扩容。


如何判断ICO:
白皮书; 开发团队;天使投资人。


如果想做ICO:最好支持ERC20等标准,兼容性好。


大家都认为自己是对的那个人。


比特币有种子节点,方便新人加入,找到组织。


中本聪:银行超发货币,如果你什么都不做,那你的财产就会贬值。


比特币---数字银行货币系统


区块链---分布式账本的一种。


矿工现在已经不是完全意义上维护比特币系统的人群了,而是那些拥有矿池的人,他们那里会有许多全节点(肯定不止一台)。所以总的来说,维护系统的人---》矿池主与爱护自愿维护比特币的人。


谁来记账呢:挖出区块的人。


P2P:既可以做服务端,也可以做客户端。


拜占庭将军问题:分布式容错问题。


比特币没有使用拜占庭将军的解决方案:每个节点都需要想其他的所有节点发送消息,造成网络阻塞。


拜占庭将军的目的:让忠诚的将军达成共识,而不是因为叛军产生分歧。


现在的coinbase,是记录在矿池主的名下,然后矿池主根据每个矿工算力的大小分配比特币。


BTC通过公钥锁定。


为什么所有人的共识是在最长的链条上挖:因为最长的链条代表着大家所有的劳动--》每个人都是逐利的。


假设有人想要篡改交易,让自己之前的交易作废,那么他需要从初始交易的区块重新挖,而且要有全网至少51%的算力,可是这样的人有吗。


唯一能够搞垮比特币系统人--矿工与矿池主。(POW的缺点)


POW意味着:如果你有强大的算力,那么你就可以搞垮一个加密货币。


区块高度与区块深度的区别。深度侧重于讲一笔交易。


交易确认数:交易区块确认的数量;


BTC实际上可以产生并发高一点,通过修改较低的NONCE值,那样产生的区块的速度非常快,但是相应的分叉的机会变得非常多。造成某些交易作废。


哈希用例:用户密码存储;文件的完整性;数字签名;


数据库不存储用户的明文,存储哈希。


数字签名:非对称加密+哈希(为什么)--》为什么用到了哈希:因为如果不用哈希,那么接收方可以用发送方的公钥解出原文内容,而不是摘要;此外文件哈希后的内容变小。哈希还可以保证原文的完整性。




非对称加密每次对相同内容加密的密文都是不一样的,防止别人推导出你的原文或者加密机制。但是对于哈希来说,如果内容相同的话,加密后是不会变得。


为什么签名用发送方的私钥来加密,而不是接收方的公钥:因为这种方式,才能让接收方确认这条信息是发送方发出来的。只有发送方的公钥才能解开发送方的签名。( **此外,不要认为摘要的比对过程可以确认你发送给你的那个人的是你想要的那个人,因为如果签名用的是你自己的公钥的话,那么你根本不知道发送给你的那个人是谁,(其实自己心里有个前提,是你知道对方的摘要了,但事实上你根本不知道)不管摘要比对正确与否,你都不知道发送给你的人是不是你想的那个人**


CA:证书授权中心--》信任的第三方,大家认同甴它产生的公钥(对你的公钥进行加密);证明你就是你。(HTTPS)


UTXO:未花费的交易输出--》用拥有者的公钥锁定的数字。


UTXO存放在全节点的数据库里。


比特币没有账户的概念。


比特币地址是公钥的哈希,而不是公钥。


量子计算机可以破解椭圆曲线数字签名算法(也就是说,给定一个公钥,量子计算机可以相当快速的找到对应的私钥),但它们不能相类似的逆转哈希算法。


由于交易记录可能因为分叉被销毁,所以卖家提货时,一般要等待六个区块确认才可以。


逆波兰表示法(后缀表示法)+栈【1 2 + 3 * 9 ==】


节点需要对收到的交易进行验证:
1. 交易的Size小于区块的size;
2. 交易的UTXO是存在的;
3. 交易的UTXO 没有被其他节点应用:防止双花
4. 输入总金额》输出金额(矿工费)
5. 解锁脚本验证


优先级:交易的额度*UTXO的深度/交易的size(防粉尘攻击)


不仅交易需要验证,区块也需要验证:第一笔交易必须是coinbase交易;nonce值验证;merkle是否正确等。


区块验证包含交易的验证。


BIP141(隔离见证)--解决签名的风险。(椭圆曲线加密的漏洞)








猜你喜欢

转载自blog.csdn.net/zhaiguowei/article/details/80053689