# 区块链实施原则
在项目实施时,我们需要根据实际业务来评估区块链技术能够做什么。评估业务中有多少参与者?参加者的地域分布如何?你有什么性能要求?如果考虑将数据库迁移到区块链时,需要重点定义区块链系统中每一方的规则、风险和责任。以下是适合区块链技术解决的业务,具体原则如下:
1) 需要建立一个共享的数据库,且数据库中有多方参与者。
2) 由于各种原因,参与业务的各方之间没有建立起信任关系。
3) 在现有业务中必须信任一个或多个信任机构,比如托管机构、发证机构、数据提供者等。
4) 在现有业务中有加密认证的业务需求,以保证数据的机密性、完整性、身份的唯一性和不可抵赖。
5) 在业务流程中,数据需要集成到不同的数据库中,而且之间数据需要保证一致,且业务数字化的需求很迫切。
6) 对于系统参与者有统一的规则。
7) 双方的决策是透明的,而不是保密的。
8) 需要有客观的、不可改变的历史或事实记录供各方参考。
区块链技术虽然很强大,但区块链也不是万能的,以下情况不适合区块链技术来解决,具体原则如下:
1) 业务数据无法公开。
区块链技术最大的优势数据公开、透明。如果涉及过多隐私数据,目前的区块链技术还不能满足业务需要。
2) 业务中涉及大量的静态数据,或者数据非常大。
由于区块链技术是将数据存储在不同节点上,这样导致系统的数据量会非常大且效率不高。最好的解决方案是将业务状态数据和必要的数据信息存储在区块链上,如果是静态数据、或者数据量非常大,建议采用其他技术解决方案会更合适(IPFS是备选方案)。
3) 业务规则经常变化。
如果业务规则经常变动,或者业务规则不确定,这样的业务场景是不适合区块链技术来解决的。在区块链中,智能合约的业务规则是预先设定的,一旦部署,业务规则将不能改动,因此智能合约业务必须是确定的业务规则。另外,由于区块链数据不可篡改,只能增加、不能删除、修改,因此,对于经常变动的业务采用传统关系型数据库会更适合(联盟链合约是可以升级)。
4) 需要使用外部服务来收集、存储数据。
为了确保智能合约的安全性,不受来自外部的攻击,因此智能合约在设计上是不能获取外部数据,只能与区块链上的数据进行交互。智能合约要与外部数据进行交互,就必须将外部数据存储在链上,这样智能合约就可以安全的使用区块链上的数据了。
在区块链实践中,我们要将区块链公开、透明、不可篡改、可追溯的特点应用在关键业务中,对于大部分应用和业务,一些变通的方法就可以满足业务的需求。
比如对于一般文件的存储,可以使用关系型数据主、从结构来保证数据的安全性。类似的,我们可以使用区块链中的加密算法来对数据进行加密,无需采用区块链技术中的数据复制机制。