众筹的起源,翻译自国外crowd funding一词,即大众筹资,是一种“预消费”模式,用“团购+预购”的形式,向公众募集项目资金。众筹利用互联网和SNS传播的特性,让小企业家、艺术家或个人对公众展示他们的创意,争取大家的关注和支持,进而获得所需要的资金援助。
相对于传统的融资方式,众筹更为开放,能否获得资金也不再是以项目的商业价值作为唯一标准。只要是公众喜欢的项目,都可以通过众筹方式获得项目启动的第一笔资金,且一般首次筹资的规模都不会很大,为更多小本经营或创作的人提供了无限的可能。
—— [ 维基百科 ]
众筹传到国内后疯狂发展,到现在我国有了庞大的人群。同时也带来一个非常严峻的问题——信任危机。对于传统的众筹平台而言必须要一个中心化的系统,例如支付宝这样的一个第三方,所有用户的资金都由第三方的中心数据库来管理。对于更多的用户的数据安全性完全暴露给了第三方,就有可能出现第三方的纂改而用户没有发现的可能。其次对于第三方管理数据需要大量的人力物力的资源保障。所以众筹平台需要一个更安全、更可靠的去中心化的数据库,恰好区块链在这一方面表现优异。
中心化系统 | 去中心化系统 | |
---|---|---|
维护成本 | 中 | 低 |
可靠 | 高 | 极高 |
安全 | 中 | 低 |
通过上表的对比可以看出去中心化系统在对于众筹业务的使用上是具有得天独厚的优势
区块链技术是一种不依赖第三方、通过自身分布式节点进行网络数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度,把区块链技术看成是一种分布式开放性去中心化的大型网络记账薄,任何人任何时间都可以采用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。
—— [ 维基百科 ]
大小 | 字段 | 描述 |
---|---|---|
4字节 | 区块大小 | 用字节表示的该字段之后的区块大小 |
80字节 | 区块头 | 组成区块头的几个字段 |
可变 | 交易 | 记录在区块里的交易信息 |
使用上面的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
区块链中哈希函数的特征:
- 函数参数为string类型
- 固定大小输出
- 计算高效
有了以上的特征就产生了如下的优点
- collision-free 即冲突概率小
- 能够隐藏原始信息
例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法。
哈希在区块链中用处广泛,其一我们称之为哈希指针(Hash Pointer)
哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为Hash Pointer的示意图
![]()
HashPointer在区块链中主要有两处使用,第一个就是构建区块链数据结构。了解区块链的读者应该知道区块链数据结构由创世区块向后通过区块之间的指针进行连接,这个指针使用的就是图示的HashPointer.每个区块中都存储了前一个区块的HashPointer。这样的数据结构的好处在于后面区块可以查找前面所有区块中的信息且区块的HashPointer的计算包含了前面区块的信息从而一定程度上保证了区块链的不易篡改的特性。第二个用处在于构建Merkle Tree。
数字签名又称之为公钥数字签名,是一种类似于写在纸上的物理签名。数字签名主要用于数据更改的签名者身份识别以及抗抵赖。数字签名包含三个重要特性:
- 只有自己可以签署自己的数字签名,但是他人可以验证签名是否是你签发
- 数字签名需要和具体的数字文档绑定,就好比现实中你的签名应该和纸质媒介绑
- 数字签名不可伪造
依赖非对称加密机制可以较容易实现上述三种特性。首先,需要生成个人的公私钥对:
,sk私钥用户自己保留,pk公钥可以分发给其他人
其次,可以通过sk对一个具体的message进行签名:
这样就得到了具体的签名sig
最后,拥有该签名公钥的一方能够进行签名的验证:
在区块链体系中每一条数据交易都需要签名,在比特币的设计过程中直接将用户的公钥来表征用户的比特币地址。这样在用户发起转账等比特币交易时可以方便的进行用户交易的合法性验证。