草庐IT

过了一把区块链的瘾!带你了解一下!

敖丙 2023-03-28 原文

大家好,我是敖丙。

在很早以前,一个网站还只对应着一个数据库,所有的数据都以一定规则存储在某台服务器上。假设这台存储数据的服务器宕机了并且数据还没有进行备份,那么结局你懂的。。

人们意识到了要将数据或者流量分布在不同的节点上以防止突发情况——分布式技术诞生了。但尽管如此,分布式技术也同样会带来些许问题,比如多节点数据同步、以及节点权限等问题。

后来人们思考,是否可以在分布式的思想基础上做到权限统一、共同维护的特点?就像是每个人手握一份”账本“,所有人都能看到相同的记录,然后再统一地校验数据呢?

于是「分布式账本」被提倡了出来。秉着”公开透明“、”不可伪造“、”不可篡改“的特点,它成为了区块链的核心,让区块链迅速进入了人们的视野。

什么是区块链?

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平台今后也会研发出更多丰富的功能,值得期待一波。

            

有关过了一把区块链的瘾!带你了解一下!的更多相关文章

  1. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  2. ruby - 了解在 Ruby 中与 lambda 一起使用的 inject 行为 - 2

    我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject

  3. ruby-on-rails - 如何测试自己对 Ruby/ROR 的了解? - 2

    是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby​​和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T

  4. ruby-on-rails - 了解 "attribute_will_change!"方法 - 2

    我想覆盖store_accessor的getter。可以查到here.代码在这里:#Fileactiverecord/lib/active_record/store.rb,line74defstore_accessor(store_attribute,*keys)keys=keys.flatten_store_accessors_module.module_evaldokeys.eachdo|key|define_method("#{key}=")do|value|write_store_attribute(store_attribute,key,value)enddefine_met

  5. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  6. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  7. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  8. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  9. ruby-on-rails - 正确了解 Rails 框架的最佳方式是什么? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我一直在Rails上做两个项目,它们运行良好,但在这个过程中重新发明了轮子,自来水(和热水)和止痛药,正如我随后了解到的那样,这些已经存在于框架中。那么基本上,正确了解框架中所有智能部分的最佳方法是什么,这将节省时间而不是自己构建已经实现的功能?从第1页开始阅读文档?是否有公开所有内容的特定示例应用程序?一个特定的开源项目?所有的rails交通?还是完全

  10. ruby - 了解 Ruby Enumerable#map(具有更复杂的 block ) - 2

    假设我有一个函数defodd_or_evennifn%2==0return:evenelsereturn:oddendend我有一个简单的可枚举数组simple=[1,2,3,4,5]然后我用我的函数在map中运行它,使用一个do-endblock:simple.mapdo|n|odd_or_even(n)end#=>[:odd,:even,:odd,:even,:odd]如果不首先定义函数,我怎么能做到这一点?例如,#doesnotworksimple.mapdo|n|ifn%2==0return:evenelsereturn:oddendend#Desiredresult:#=>[

随机推荐