如果加密和解密使用相同的秘钥,叫对称加密技术。
反之加密和解密使用不同的秘钥,叫非对称加密技术。
A要和B互相发送信息,A和B都要生成各自的一对公私钥,公钥是给别人看的,私钥是自己留的。
A要向B发送信息,首先要B把自己的公钥发送给A,然后A用它来加密信息,然后发送给B,B再用自己的私钥解密,这确保了信息的安全。
在比特币的世界里,我们可以把账户地址看做公钥,把签名和输密码的过程看做是私钥解密。
篡改是说对账本进行恶意修改,因为矿工在一页账单记账完毕后马上开始下一页账单的竞争,如果有人想修改某一页账单,必须在短时间内重新计算该账单的数学题,并且要赶上现在最长的区块链(规定全网同步最长的链)才可能,理论上只有当算力达到全网的51%才有可能修改某一页账本里的数据,但是这几乎是不可能的事,因为社区会对算力超过30%的力量采取监控和施压。
同时,就算有人对账本进行了篡改,花费这么大代价使自己获得了大量比特币,但是由于比特币的不可被篡改属性被破坏,比特币会变得一文不值,篡改人还是得不偿失。
不可伪造就是说不能造假币,也不能被支付两次。比特币世界中的每一笔转账都可以追溯到上一次的收款,也就是说,每一个比特币都可以被追溯到它从某某区块诞生开始。
一开始大家用cpu挖矿,后来有人(就是那个花1万比特币买两个披萨的程序员)发现GPU的挖矿速度是cpu的几十倍,人们纷纷使用gpu挖矿,这导致了显卡的大幅涨价,后来就有了专门的矿机,这些矿机除了进行hash运算挖比特币外什么都干不了,同时还很费电,噪声也大。
买一部矿机挖矿的操作步骤很简单,但是现在几乎没有个人挖矿者了,现在挖矿都是规模挖,和矿池合作(矿池是集合一群矿机进行运算获得比特币,然后根据计算力比例分成的机构)。
管理比特币私钥,地址的工具叫钱包
全节点钱包:包含所有比特币节点的数据,自己维护全网数据和验证竞争挖矿的结果,是完全去中心化的钱包,比如Bitcoin Coin。
轻钱包:只维护跟你有关的交易相关数据,不同步其他数据,也是去中心化钱包。比如国内的比太钱包。
中心化钱包:完全依赖于运行这个钱包的公司,你读取的数据都是这家公司提供给你的,而非比特币网络数据提供的。
如果你不会使用完全去中心化的钱包或者嫌操作麻烦,又不放心中心化的公司,该怎么办呢?可以使用多重签名技术。
运用私钥进行解密的过程就是签名,多重签名就是需要好几把私钥才能动用一个地址上的比特币。
多重签名适合企业级存储,比较安全。
比特币的每一个区块是1Mb,仅能容纳1000条左右的交易信息,如果交易记录过多,那么打包可能发生在好几个区块之后,也就是说,你的一笔转账记录可能要等好几天才被确认。
历史上比特币曾经遭遇好几次“粉尘攻击”,有人制造了大量的小额转账,导致正常确认交易时间被延迟。
比特币社区从2014年开始就开始讨论扩容方式,2017年比特币开始升级和部署。
扩容方式分为两种:
将大量的交易置于比特币本身网络之外。即小额交易不会马上结算,而是在几轮之后最后结算。比如A欠B10元,B欠C20元,最后A给C10元,B给C10元就行了。
闪电网络让比特币网络不会被大量小额交易所占据,但是这个技术目前还没有发展成熟。
这个方法的代表是BIP141方案。首先要解释一下什么叫隔离见证,硬分叉和软分叉。
区块上的信息分为交易信息和见证信息(每个节点在什么时间验证交易信息的可靠性的信息),如果将见证信息分离出来,那么区块上就只存储交易信息,也达到了扩容的目的。
当比特币协议规则发生改变,如果旧节点拒绝接受由新节点创造的区块的情况时,区块链将分成两条独立的链,矿工需要在2条区块链中选择一条进行挖矿。
如果比特币真的分叉,最大的风险就是“重放攻击”。
如果用户同时在比特币的三条链上都有比特币,并且私钥和地址的生产算法相同,这样在一条链上发起的交易完全可以在另外一条链上重新广播,也就是说,你在一条链上转账给别人会导致另外两条链也同时转账给别人。
应对重放攻击的方法就是每条链上设置不同的地址,在分叉落定之前不要转账。或者在靠谱的钱包和交易平台进行转账,他们会帮你应付重放攻击。
当比特币协议规则发生改变,旧节点不会意识到规则是不同的,他们将遵循改变后的规则,不会产生不同的链。
BIP141是当前公认的隔离见证激活方案。他要求全网95%的算力都确认隔离见证,但是这个条件很难实现,所以又有了UASF和SegWit2x方案来帮助实现BIP141。
UASF是由用户激活的软分叉,采用一个叫BIP148的软件来激活隔离见证,如果大多数矿工都运行这个软件,那么没有运行这个软件的矿工挖出的区块将不被承认。
这个方案目前已经实施,诞生了新的资产比特币现金,区块大小可以达到8M。
SegWit2x方案则是在原来的区块链上分出新的一条支持扩容的链,两条链同时存在,支持新链的矿工在新链上挖矿,不支持的还在老链上挖矿,是硬分叉的方案。