过了一把区块链的瘾!
大家好,我是敖丙。
在很早以前,一个网站还只对应着一个数据库,所有的数据都以一定规则存储在某台服务器上。假设这台存储数据的服务器宕机了并且数据还没有进行备份,那么结局你懂的。。
人们意识到了要将数据或者流量分布在不同的节点上以防止突发情况——分布式技术诞生了。但尽管如此,分布式技术也同样会带来些许问题,比如多节点数据同步、以及节点权限等问题。
后来人们思考,是否可以在分布式的思想基础上做到权限统一、共同维护的特点?就像是每个人手握一份”账本“,所有人都能看到相同的记录,然后再统一地校验数据呢?
于是「分布式账本」被提倡了出来。秉着”公开透明“、”不可伪造“、”不可篡改“的特点,它成为了区块链的核心,让区块链迅速进入了人们的视野。
什么是区块链?
6月底,我参加了首届techoday腾讯技术开放日的活动,了解了区块链的技术背景和市场价值,我决定跟大家分享一下⬇️⬇️⬇️
使用区块链技术你可以知道一款产品从生产到流通环节的全过程;作为近年来趋于成熟的技术,它被用于支付、产品检验等众多领域。
你可以理解为它是由“区块” + “链”组成,这条链接串联起了一个个区块。即使分布形式上和传统数据库有所不同,其本质功能也是用于承载信息流,每一条信息流都是以数据记录为基本单位来存储的。区块和区块之间通过广播的方式进行通信,那么通信的目的又是什么呢?没错,一切都是为了交易。
整个区块链其实都是一个不断实时同步的分布式账本,每个区块节点相当于一个账本。在这个账本上,每一个动作都可以算作一笔“交易”,这样一笔笔的交易构成了区块链的全部。
我们上面说了区块链存储的基本单位是数字记录,所以你可以理解”交易“的过程就是一笔笔数字被记录的过程。
知道了交易,我们还需要了解一下另外几个术语:
上链
因为区块链是由一个个账本连接起来的区块链接。所以想要加入到这条链中就需要上链登记,这是使用区块链重要的一步。
通过上链就可以将我们局域实现的“账本”共享到区块链。比如想发挥你项目的优势让更多人认识你的业务,只需要将它进行上链,区块链会将你做的事情都记录下来并且广播给其他人。这个记录是公开透明的,会伴随着这条链永久存在。
那我们要如何创造一条记录呢?
哈希算法
我们上链的每一条记录必须是系统认可且实际发生过的存在,所以就需要使用到哈希加密。哈希算法想必大家都熟。以MD5算法为例,任何一串字符使用它加密后都会得到一串独一无二的散列值,只要原输入有任何改动经过哈希加密后的数字就会完全不同。所以使用区块链之后任何信息都无法更改,即便你是系统管理员。这就保证了信息的安全透明。
智能合约
啥是合约嘞?举一个生活中的栗子,假如你往自动售货机里面投入了两枚硬币,因为售货机已经事先设置了固定程序,所以它会吐出你所选的饮料出来。这就是你和售货机之间的“合约”。
区块链的智能合约,就是你事先在区块链平台定义的固定承诺。因为区块链的特点是“数字化”,所以智能合约就是用数字和程序的方式定义的“承诺“,所有的行为都基于这一系列承诺而执行。所以我们的应用开发过程在区块链就是一个写合约的过程。
另外,这一系列合约记录都是不可删除的哟。
怎么用?
还是拿腾讯云为例,我带大家手把手操作。
首先进入腾讯云TBaaS官网https://console.cloud.tencent.com/tbaas/ ,点击「免费体验长安链」-选择适合自己的测试组织-之后进入控制中心。
来到长安链区块链网络的控制中心,你就可以看到节点的整体情况了。
腾讯云一共提供了4个组织4个节点,每个节点都是16核,32G和1000GB的磁盘存储。好家伙,这个配置实属是高呀。
你可以看到其它用户的上链信息和交易列表。
正如你所见的,区块链上的交易信息都是透明的,包括交易笔数,交易时间和组织等。
ok,在知道了它的整体布局之后,下一步的操作就是去安装智能合约。
长安链为我们提供了智能合约Demo,使用的合约语言是长安链自研的DockerGo,我们需要在合约详情中下载合约文件。
下载完毕之后需要将合约进行编译,流程可以查看开发指南,我这里也带大家详细编译一遍~
此次编译需要在Linux环境下并且安装docker哟。
首先输入以下命令拉取一下长安链的docker镜像,静静的等待它完成。
docker pull chainmakerofficial/chainmaker-docker-go-contract:v2.2.1
安装完镜像后执行以下docker run命令,目的是将上面下载好的链接挂在到你的工作目录中以便随时能用。$WORK_DIR就是你的工作目录所在路径。
docker run -it --name chainmaker-docker-go-contract -v $WORK_DIR:/home chainmakerofficial/chainmaker-docker-go-contract:v2.2.1 bash
接下来就是比较重点的部分了,需要进行合约的编译和压缩。
cd /home
tar xvf /data/contract_docker_go_template.tar.gz
cd contract_docker_go
./build.sh
please input contract name, contract name should be same as name in tx:
<contract_name> #此处contract_name必须和交易中的合约名一致
please input zip file:
<zip_file_name> #建议与contract_name保持一致(不包含文件后缀)
按照我上面的步骤安装,看到Everything is Ok后,那就说明编译成功了。
以上这个就是我们编译好的文件啦,下一步只需要将它装进合约文件⬇️
点击确认,一个新的合约就生成好了。
除了DockerGo,目前一共还支持Solidity、Rust、C++ 四种编程语言。每一种智能合约官方都写了详细的参考文档,点击你对应的语言即可查看详细文档:
智能合约开发(DockerGo)
智能合约开发(Solidity)
智能合约开发(Rust)
智能合约开发(C++)
安装完智能合约之后就是去测试它是否成功,这也是距离使用区块链最近的一步了。点击「快速上链」,发起快速调用。
上链操作完毕后就会返回上链结果了:
达到了这里,就代表着你已经成功进入到区块链了。连接建立后最后一步就要让TBaaS和我们的应用做对接了。这里也就是业务衔接的部分。
具体对接过程你可以查阅:云 API 对接说明
完事之后你的业务行为就会被视为交易发送到链上,通过【区块链浏览器】就可以一眼查阅实时的交易记录。
TBaaS平台就这么将区块链实现可视化,接下来你就可以自由查看区块和交易去感受区块链了~
总结
区块链给咱的整体操作过程就是一个从加入体验网络->安装智能合约->业务对接->交易申请的过程,在此之后就可以轻松地在腾讯云后台上查看到你的节点和业务的关联信息了。
较比传统的业务平台搭建和监控确实更加便捷迅速,成本也更低。我认为作为腾讯云的重点建设项目TBaaS平台今后也会研发出更多丰富的功能,值得期待一波。
在这次TechoDay腾讯技术开放日上,除了区块链,开放日上还介绍了serverless,lighthouse等热门产品的技术原理解读——原来我可能觉得这种厂商活动可能主要就是打广告,但这次活动上的“架构原理场”,还是介绍很多通用技术的基础原理,感兴趣的同学可以下载这个课件精华版:《腾讯云工具指南》,对很多技术领域的入门还是挺有意义的。