去中心化:没有中介机构进入,所有节点的权利义务都一样。
分布式:将数据和程序分布在多台设备上。
2. 区块链怎么运行?
2.1比特币钱包
Bob和Alice电脑上都有比特币钱包。钱包是一种文件,可以让用户访问多个比特币地址。一个地址是由多个字母和数字组成的字符串。每一个地址都有自己的比特币余额。
2.2创建比特币地址
Bob建立一个新的比特币地址用于接收Alice的付款。创建新地址的过程实际上就是创建一对密钥。私钥保存在比特币钱包,而新建的地址存储公钥。
可以将地址看成银行账号,但工作方式稍有不同,比特币用户可以建立多个地址,并且鼓励为新的交易建立地址,增强隐蔽性。
2.3 创建一个支付:
Alice告诉她的比特币客户端,她要向Bob的收款地址转账。Alice的钱包里有她的每一个比特币地址的私钥。比特币客户端用Alice此次使用的付款地址的私钥,对她的这一交易申请进行签名。此时,网络中的所有人都可以利用公钥来验证这个交易的合理性。(付款的时候是从已有的地址里面挑选一个地址进行交易吗?如果一个地址里面余额没有了,那这个地址还存在吗?要不要删除?如果每一笔交易都建立一个地址,那么钱包里面是不是要存无数的地址,这个地址都在区块链里面吗?一个人拥有的比特币是所有的地址的和吗? )
2.4验证交易:
矿工的电脑将过去10分钟内的交易打包成一个新的区块。矿工的电脑被设置为能计算加密哈希函数。
源数据被转换成哈希函数,微小的变化都能带来哈希值的不同。
为相同的数据创建不同的哈希值,比特币使用随机数来实现。随机数是在进行哈希计算之前,在数据中添加的随机数字。改变这个随机数会产生极不相同的哈希值。每一个新的哈希值包含关于此前所有比特币交易的信息。
矿工的电脑基于前一个区块的哈希值、新交易区块和随机数,来计算新的哈希值。创建哈希在计算上微不足道,但比特币系统要求新的哈希值拥有特定格式——必须以特定数量的0作为开始。矿工无法预测哪个随机数会产生以要求的数量的0作为开始的哈希值,所以他们被迫用不同的随机数创建很多哈希,直到获得有效的那一个。(工作量证明)
每一个区块都包含一个名为coinbase的初始交易,这是给胜出矿工的50比特币的支付。成功的矿工的钱包里生成了一个新地址,里面的余额是新挖到的比特币数量。
2.5交易验证:
任何人想要修改其中一条记录,比如上面所说的Alice的例子将在越来越多的记录下被淹没。修改记录就要重做Alice到最近一条记录的所有工作。(工作量证明)
原文:https://www.cnblogs.com/yitou13/p/9332861.html