当前位置: 首页 > 编程日记 > 正文

区域链实践第一步——区域链测试环境搭建

区域链光速发展,在许多人的期许下,已经成为了互联网下一个革新点。区块链会成就的未来价值互联网,是新时代的基石。

IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通过该平台,用户能够免费、快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上编写智能合约。

通过IBM的SuperVessel,我们能接触区块链,能自己部署和执行智能合约;通过Github上的开源项目,也就是上面提到的Hyperledger Fabric,我们能去了解区块链技术如何实现。

所以,加油咯。

使用IBM超能云免费构建自己的区域链

下面介绍一下如何通过SuperVessel来构建自己的区域链平台。

区域链服务公测地址:http://crl.ptopenlab.com:8800/bc

进入网址后,使用自己的邮箱注册即可。

然后是到主页点击中间的那个 “GIVE ME A BLOCKCHAIN”

接下来就是选择Consensus Plugin(共识插件)和Size(区块链网络节点数量)。

Consensus Plugin是Hyperledger Fabric中共识插件,有两种:

  1. pbft是 微软论文PBFT共识算法的一个实现;
    2.noops 用于开发和测试,它没有共识机制,但是会处理所有consensus message,所以如果要开发自己的consensus plugin,从它开始吧

我选择的是pdft,4个节点。提交后就进入了自己的区块链监控面板。

右侧是网络面板,展示申请到的区块链网络信息,我的是4个节点;左侧是智能合约面板,包括智能合约的管理和部署;点击右侧面板右上角的望远镜,则可以实时监控各节点的日志信息。最下方是区块链面板,展示当前区块链的整体情况,初始状态下只有一个区块。

在智能合约面板里,已经有了2个智能合约作为示例,分别为map和chaincode_example02。其中map合约可以实现键值对(key-value)的存储,chaincode_example02合约可以模拟两个人的转账和查询。

部署合约

点击chaincode_example02合约对应的Deploy(部署)按钮,并填写合约的初始化值,包括合约名初始函数初始参数

该合约初始函数为init,初始参数需按格式填写,如["a","100","b","200"]表示注册两个人a和b,分别给他们100单位和200单位。

点击Deploy按钮,该合约将部署在你的区块链中,该过程大约需要20~40秒时间。当区块链面板出现一个新区块,通常表示合约已部署完成。

部署过程中,右侧面板还会有动画。

下面,我们来看一下智能合约。

智能合约是 1990s 年代由尼克萨博提出的理念,几乎与互联网同龄。由于缺少可信的执行环境,智能合约并没有被应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,以太坊首先看到了区块链和智能合约的契合,发布了白皮书《以太坊:下一代智能合约和去中心话应用平台》,并一直致力于将以太坊打造成最佳智能合约平台,所以比特币引领区块链,以太坊复活智能合约。

调用合约

部署完成后,在智能合约管理面板的My Deployment(我的部署)标签下查看已部署的合约实例。

点击Action下方的Invoke按钮调用智能合约,并填写调用的方法名和相应参数(不同合约的方法名和参数含义不同,具体与合约内容相关哦)。如对该合约,调用invoke方法名,填写参数[“a”,”b”,”50”],表示a给b转50个单位。

点击Submit完成调用,可以看到下方出现了新的区块:

智能合约

智能合约程序不只是一个可以自动执行的计算机程序:它自己就是一个系统参与者。它对接收到的信息进行回应,它可以接收和储存价值,也可以向外发送信息和价值。

这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。

通过自己实际操作,invoke操作两个用户之间的“转账”,是不是就能更理解这段话了?

查询合约

调用完成后,接下来你可以查询合约执行结果。仍然在My Deployment标签下,点击Action下方的Query按钮查询智能合约,并填写查询的方法名和相应参数。如选择query方法名,填写参数[“a”],表示查询a的当前单位。

点击Submit后可以看到上方出现了一个黑框框,输出a的当前单位为50。

好了,接下来可以继续操作该合约,观察区块链情况。

总结

相信通过以上操作,你也已经大概了解了什么是区块链,什么是智能合约,以及区块链是用来干什么的。从上面的例子中,我们可以看出:区块链是用来记录合约的动作变化的。

另外,可以看一下区块链部分,用鼠标点击一个区块,可以看到弹出来的此区块内容:

type是操作内容,invoke是执行,depoly是部署。每个动作都记录在了区块链上,而网络中(我们的四个节点),每个节点又都记录着区块链。无论我们在哪个节点上操作,我们的操作都会被记录到区块链中,从而实现了区块链的不可篡改、分布式、去中心化等性质。

感兴趣了话,或者说,更感兴趣了的话,就去Github上star一下、fork一下、clone一下Hyperledger Fabric,然后用Go或JavaScript来编写自己的智能合约,然后再把它上传到你的区块链网络中吧!

参考资料:

  1. 从零开始,5分钟创建并玩转属于自己的区块链(图文攻略)
  2. IBM HyperLedger fabric 简述
  3. Github - hyperledger fabric
  4. 智能合约

相关文章:

DataGrid的几个小技巧

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/方法一:使用模版列 我们在绑定好数据的DataGrid增加一个模版列,在列中放置一个按钮<asp:TemplateColumn><ItemTemplate><asp:Button id"btnDelete&q…

32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...

在大学阶段&#xff0c;大家都学过概率论、线性代数和微积分的课程&#xff0c;但是为什么在面对机器学习中的数学问题时&#xff0c;却有一种天书的既视感&#xff1f;第一&#xff0c;大学课程中的知识点并没有完全覆盖机器学习领域所需。 回想一下大学概率统计课程内容的内容…

DHCP tftp PXE实现Ghost网络克隆

概述&#xff1a;加ghost参数&#xff0c;实现客户端只需连接网线&#xff0c;在无光驱、软驱的情况下&#xff0c;且无需其他配置&#xff0c;完成网络克隆。所要用到的软件&#xff1a;1、ghost 8.2 企业版中的Ghost Boot Wizard&#xff08;其中的ghost.exe程序可以用ghost1…

PHP文件上传和文件操作案例

<?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname upload; $fileClass new fileClass($dirname); $fileClass -> fileCMM();/*文件重命名操作*/ $fileClass -> fileDelete();/*文件删除操作*/ ?> <!DOCTYPE html> <html> <…

将模式对话框的返回值回送(PostBack)到服务端

作者&#xff1a;张老三的专栏 http://blog.csdn.net/billy_zh/在一些应用中&#xff0c;希望将模式对话框的值回送(PostBack)到服务端&#xff0c;也就是执行一个服务端操作&#xff0c;从而刷新页面。举个例子&#xff1a;比方说新建一个订单&#xff0c;此时希望能在模式…

android zip解压缩(含有子目录)

为什么80%的码农都做不了架构师&#xff1f;>>> note: 如果目录中含有中文名称&#xff0c; 要用substr new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换&#xff0c;否则为乱码 /*** 解压缩功能.* 将ZIP_FILENAME文件解压…

用Python实现抖音上的“人像动漫化”特效,原来这么简单

作者 | 黄伟呢来源 | 数据分析与统计学之美前几天&#xff0c;女友拉着我和她玩儿抖音&#xff0c;就是这个人像动漫化的操作&#xff0c;顿时觉得很好玩儿。我心想&#xff1a;Python 既然这么强大&#xff0c;是不是也可以使用 Python 程序来实现这样一个操作呢&#xff1f;哈…

easyui在IE中: SCRIPT1003: 缺少 ':'

转载于:https://www.cnblogs.com/FredLee/p/5894614.html

NumPy学的还不错?来试试这20题

来源 | 早起Python&#xff08;ID: zaoqi-python&#xff09;又到了NumPy进阶修炼专题。NumPy大家应该不陌生了&#xff0c;看了太多的原理讲解之后&#xff0c;用刷题来学习是最有效的方法&#xff0c;本文将带来20个NumPy经典问题&#xff0c;附赠20段实用代码&#xff0c;拿…

tomcat报 Context [] startup failed due toprevious errors

今天同事在实施项目中,遇到一个问题,就是项目布到tomcat服务器上了,却总是找不到访问路径.tomcat报 Context [] startup failed due toprevious errors 当时就觉的很郁闷,项目是本机测试完整打包的.按以前的项目实施也很少出现这样的问题.在网上搜索以下解决方案: ------解决方…

DataGrid中自带的分页功能的使用

作者&#xff1a;木子 http://blog.csdn.net/derny/1、把AllowPaging属性设置为true 并设置PageSize的大小 2、在html页面中设置datagrid的属性OnPageIndexChanged"DataGrid_Page" // //DataGrid_Page 为点击页数的时候激发的事件 3、在程序中加入代码如下&…

34补1-2_3 HA Cluster基础及heartbeat实现HA

HA Cluster基础及heartbeat实现HA配置环境node1&#xff1a;192.168.1.121CentOS6.7node2&#xff1a;192.168.1.122CentOS6.7node3&#xff1a;192.168.1.123CentOS6.7vip 192.168.1.80配置前准备# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 loc…

关于SSL配置的报告

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/一&#xff0c;服务器上装有CA(Certificate Server) 1&#xff0c;服务器上安装CA Win2000中带有CA的安装程序。单击Start&#xff0c;Control Pannel Add/Remove Prog…

认知智能,AI的下一个十年 | AI Procon 2020

整理 | 屠敏 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 60 年间的「三起两落」 &#xff0c;人工智能的沉浮变迁。 在 1956 年的夏天&#xff0c;人工智能在美国达特茅斯大学召开的学术会议之上蹒跚学步&#xff0c;吸引无数研究学者对其智能化的探索以及未来美…

STL 队列queue

q.front() 返回队头元素 q.push(a) 将元素a入队 q.pop() 队头元素出队 q.empty() 如果队列为空 返回ture 否则返回false转载于:https://www.cnblogs.com/xujian9502/archive/2012/02/19/2358055.html

OpenCV——使用ROI进行图像切割

ROI&#xff08;region of interest&#xff09;——感兴趣区域。 1.用途 这个区域是图像分析所关注的重点。圈定这个区域&#xff0c;以便进行进一步的处理。而且&#xff0c;使用ROI指定 想读入的目标&#xff0c;可以减少处理时间&#xff0c;增加精度&#xff0c;给图像处理…

Asp.net动态生成html页面

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/适用于&#xff1a;Microsoft ASP.NET 摘要:asp.net动态生成html页面,适用 简介 此功能适用于后台数据库功能不强的web站点&#xff0c;即大部分文本不是存放在数据库的…

View 5.1 重装上阵(4—基础架构篇)

从底层架构方面来看&#xff0c;VIEW 5.1最大的改进在于引入了Content-Based Read Cache(CBRC) 技术&#xff0c;大大降低了部署桌面虚拟化所带来的IOPS风暴&#xff0c;同时大大降低了对于存储的压力和成本&#xff0c;可谓桌面虚拟化领域的一大福音。 在以往的桌面虚拟化项目…

再见了,Python!!

结合我最近这些年的 Python 学习、开发经验&#xff0c;发现近90%的程序员在学 Python 时都会遇到下面这3个问题&#xff1a;1.想学Python&#xff0c;但不知从何学起&#xff0c;应用方向太多了也不知道该选择什么方向...2.基础入门看似简单&#xff0c;但是进阶实战就举步维艰…

alert在asp.net中如何使用??

改成这样&#xff1a;string str"<script languagejavascript>alert(省局数据不能进行修改&#xff01;);</script>";Page.RegisterStartupScript("dd",str); 提示成功后转到别的页面Response.Write("<script>window.alert(提示语…

.NET工程师必须掌握的知识点

以下内容是转载的 Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库 SQL Server 数据库的组成部分&#xff1f;&#xff08;参见联机丛书&#xff09;   如何保证数据库的完整性、安全性、并发性&#xff1f;   数据库设计创建步骤&#xff1f;&#xff08;参见…

@程序员:这些瓜没吃到,可以告别互联网了!

最近&#xff0c;程序员届有一个重大好消息&#xff0c;可能很多人还不知道&#xff0c;那就是&#xff1a;国内某些城市已经开始程序员人才补贴了&#xff01;对于人工智能公司的项目开发、人才引进、科技研发&#xff0c;最高按照国拨经费的30%给予配套支持&#xff0c;单个项…

日志分析工具splunt

实验环境 网关 classroom 172.25.8.254 workstation 172.25.8.9 server a-jeth0 172.25.8.10-外网 eth1 192.168.0.x内网 eth2 192.168.1.x备用 -------------------------------------------- 需求&#xff1a; 设计&#xff1a; 原理&#xff1a;日志的作用&#xff0c;1&a…

正则表达式语法规则收集

turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了msdn里面了&#xff0c;有兴趣的朋友可以自己去研究一下(ms-help://MS.MSDNQTR.2003OCT.1033/cpgenref/html/cpconRegularExpressionsLanguageElements.htm)&#xff0c;这里罗…

Python实现信息自动配对爬虫排版程序

作者 | 李秋键责编 | 晋兆雨头图 | CSDN付费下载自视觉中国在很多的公司项目中&#xff0c;常常有很多对office项目的比较机械化的操作&#xff0c;在这里就可以借助python实现对office的合理排版。而这里我们就将借助海尔公司的出货表爬取对应图片信息&#xff0c;并重新排版成…

关于2012年度土建工程专业中级专业技术资格考试有关问题的通知

关于2012年度土建工程专业中级专业技术资格考试有关问题的通知 现将2012年度土建工程专业初、中级专业技术资格考试、报名、培训工作有关事项通知如下&#xff1a; 一、考试组织 湖南省住房和城乡建设厅、省人力资源和社会保障厅联合成立领导小组&#xff0c;负责对考试工作进行…

Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

做出的C++选择以及背后的原因

要让出资人明白你做出的C选择以及背后的原因。也许出资人会有更容易操作、更快实现的好主意。3、为你提供的日期说明信心范围。很可能管理层不明白你的估算意味着什么&#xff0c;而且你也有可能不理解他们所要的东西。 2&#xff0e;变量的C使用范围每个变量的使用范围只在定义…

拖放 DataGrid 列--来自MSDN

发布日期&#xff1a; 09/19/2004| 更新日期&#xff1a; 09/19/2004Chris SanoMicrosoft Corporation 摘要&#xff1a;了解如何利用基本的 GDI 功能&#xff0c;从而通过 DataGrid 控件获得可视化效果。通过跨越托管边界进行调用&#xff0c;可以利用本机 GDI 功能来执行屏幕…

最近很火的最新一代国际视频标准 VVC 到底是什么?阿里专家为你揭秘

作者 | 叶琰&#xff0c;阿里巴巴达摩院XG实验室视频标准团队负责人责编 | 夕颜头图 | CSDN付费下载自视觉中国2020年7月1日晚上&#xff08;日内瓦时间&#xff09;&#xff0c;第十九次JVET会议在线上落下帷幕&#xff0c;新一代国际视频编码标准VVC第一版&#xff08;Versat…