摘要: 一般来说,匿名通常跟隐私保护联系在一起。在比特币是基于交易的区块链,系统中没有用户的概念,不要求用户使用真名,可以用公钥产生地址,所以比特币具有一定的匿名性。 但比特币中的交易记录在区块链上,区块链是公开的。虽然使用者可以生成任意多的地址来隐藏自己,但由于所有的交易信息的都是公开的,仍可以通过分析链 阅读全文
posted @ 2020-08-28 10:28 落雷 阅读(1677) 评论(0) 推荐(0) 编辑
摘要: Hash指针 指针保存的是本地内存地址,只在本地计算机上才有意义,发送到其它计算机上就没有意义了。所谓的Hash指针只是一种形象的说法,实际系统中用到的时候只有Hash,没有指针。 那么怎么才能找到前一个区块的内容呢?全节点一般是把这些区块存储在一个key-value的数据库中:key是区块的Has 阅读全文
posted @ 2020-08-28 10:26 落雷 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 区块链由一条变为两条或者多条,这一过程被称为分叉。导致分叉的原因有很多,按分叉出现的原因可分为两种: state fork(状态分叉) 挖矿时,两个节点差不多同时挖到了矿,此时就会出现一个临时性的分叉,这是由于对于比特币区块链当前状态出现意见分歧而导致的分叉。分叉攻击(forking attack) 阅读全文
posted @ 2020-08-28 10:25 落雷 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 挖矿难度 \(H(version,target,nonce,Hash_{pre},MerkleTreeRoot) <= target\) 比特币中使用的Hash算法是SHA-256,产生的Hash值是256位。即整个输出空间是$2^{256}$。比特币的挖矿难度的调整,就是调整目标空间占输出空间的比 阅读全文
posted @ 2020-08-28 10:24 落雷 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 比特币工作在应用层,它的底层是一个P2P网络。比特币的P2P网络是非常简单的,所有节点都是对等的,不会出现某些P2P网络中所谓的超级节点或者中心节点。 比特币网络的设计原则:simple, robust, but not efficient,即简单,健壮,而不是高效。每个节点都会维护一个邻居节点的集 阅读全文
posted @ 2020-08-28 10:23 落雷 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 比特币系统是一个基于交易的账本,这意味着存储在账本中的是一笔笔交易。那么在用户进行转账交易时,首先就需要确保用户所持有的数量要大于或等于将要交易的。这要做的目的是为了避免双花问题。 这种基于交易的账本好处在于隐私保护性比较好,缺点在于每次交易都需要说明币的来源。 在比特币的全节点中,会在内存中维护一 阅读全文
posted @ 2020-08-28 10:22 落雷 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 双花问题 在比特币系统中,Hash指针有两个用途:指向前一个区块和指向某笔交易。 比特币支付过程中,每笔交易都必须包含输入和输出。 交易输入中需要包含付款方此次交易的币的来源,付款方的公钥,交易输出包括此次要交易的币的数量以及收款方的地址。 币的来源中会包含付款方的地址,这样可以防止盗币事件的发生。 阅读全文
posted @ 2020-08-28 10:21 落雷 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 哈希指针(Hash Pointers) 对于一个结构体而言,指向它的指针存储的是它在内存中的首地址;而指向它的哈希指针,不仅保存这它的首地址,还保存着该结构体内容的哈希值。通过哈希指针,不仅可以找到该结构体,还能查验该结构内容是否被篡改过。 区块链 比特币中存储数据用的是区块链。所谓区块链,可以理解 阅读全文
posted @ 2020-08-28 10:20 落雷 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 比特币又称加密货币,但其实加密货币并没有加密:区块链中的所有信息都是公开的,包括交易的内容、交易的金额以及交易账户的地址。之所以称之为加密货币,主要是因为交易的双方在不与真实世界发生关联的情况下,双方的身份是无法获知的。 比特币中主要用到了密码学中的“哈希”和“签名”。 密码学中用的哈希被称作Cry 阅读全文
posted @ 2020-08-28 10:17 落雷 阅读(754) 评论(2) 推荐(0) 编辑