区块链应用开发入门

2023-11-11

区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种。作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想基于区块链来练一下手,以免日后被新技术淘汰?不过,区块链涉及如密码学和P2P等多种技术,区块链的技术门派众多,新鲜概念层出不穷;而另一方面,区块链技术的发展在全球范围内还都尚处在早期阶段,各种技术方案和应用场景等还需要进一步地探索和完善,导致很多人想运用区块链,都找不到突破口,应该学习哪些知识和技术呢,应该用什么样的区块链呢?

就区块链技术而言,Elwin只能算是新司机,但我仍然尝试从开发工程师的角度,給区块链有兴趣的工程师分享一下区块链应用开发入门的经验。

我们大多数人的使用和开发区块链的目标来说,并不是要真的自己重新创建一套区块链,只是希望基于现有的区块链底层或技术框架去开发自己的应用。因此,对于类似加密算法、 P2P技术、共识算法等我们只需要有个基本了解就可以了,暂时不需要深入研究。而我们入门区块链应用开发的首要目标,是寻找一个相对成熟的区块链底层去做我们的应用开发的基础,其次,这个区块链底层需要配套强大易用的开发接口或开发框架,此外,这个区块链底层如果要考虑以后真正商用,还需要符合一些区块链的技术指标,如扩展性、燃料费用、交易频率等等。

就这两点目标,Elwin走遍天涯海角,最终挑选出认为符合要求的几个区块链底层平台給大家参考:


一、      比特币

最早的区块链开发便是基于比特币的区块链网络进行开发了,由于比特币是全球最广泛使用和真正意义的去中心化,就区块链应用来说,比特币就是世上最强大的锚,拥有最大的权威性。因此,围绕比特币的各种区块链技术非常多,这里不一一描述,只针对入门级别开发的介绍。

基于比特币的区块链网络开发介绍两种方式,一种相对比较简单,基于Blockchain.info的API进行开发。Blockchain.info是比特币的最流行的比特币钱包和区块查询网站,同时也提供的比特币及其区块相关API。 Blockchain.info 提供了多种主流语言的API库,包括了比特币的钱包、支付、区块、交易数据、市场数据等多方面的API。

​安装和使用Blockchain.info的API比较简单,首先你的机器需要有Node环境,在Blockchain.info的申请接口授权码,安装Blockchain Wallet API服务程序,就可以开始配置和测试Blockchain Wallet API服务程序了,要进一步开发,可以根据你的开发语言选择安装API的客户端支持库。

进一步的探索,可以采用Docker容器来快速安装和配置私有节点的比特币测试网络(bitcoin-testnet)作为开发试验环境,这样可以更深入了解、调试和使用比特币区块链网络。在Bitcoin的wiki网页上面,提供很多种语言都可以调用Bitcoin的RPC,大家选择适合自己的语言具体去试验,当然,Elwin仍然推荐你使用NodeJS。

具体流程是下载比特币测试网络的Docker镜像,运行Docker镜像并启动比特币测试网络,初始化和测试区块链数据,当然为了测试少不了要先挖矿储备一下。然后安装相关开发语言的RPC支持库后,就可以调试你的区块链程序了。

二、      以太坊

可以说除了比特币外,以太坊目前在区块链平台是最吸引眼球的。 以太坊是一个图灵完备的区块链一站式开发平台,采用多种编程语言实现协议,采用Go语言写的客户端作为默认客户端(即与以太坊网络交互的方法, 支持其他多种语言的客户端)。

基于以太坊平台之上的应用是智能合约,这是以太坊的核心。每个智能合约有一个唯一的以太币地址,当用户向合约的地址里发送一笔交易后(这个时候就要消耗燃料费用,也就是手续费用),该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果。以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App),相对于冷冰冰的智能合约代码,DApp拥有一个友好的界面和外加一些额外的东西,配合上图灵完备的语言,可以让用户基于合约搭建各种千变万化的DApp应用,实际上,在以太坊APP展区,已经有大大小小280个的DApp应用在展示(虽然只有一部分应用在真正运行)。

要写以太坊的智能合约有好几种语言可选,有类Javascript的Solidity,Python接近的Serpent,还有类Lisp的LLL,目前比较主流的是Solidity,推荐大家使用。当Solidity合约编译好并且发送到网络上之后,你可以通过以太坊的Mist客户端对智能合约进行测试和使用,也可以使用以太坊的web3.js JavaScript API来调用它,构建能与之交互的web应用。

由于以太坊的知名度,所以很多社区大牛创造更加便捷的DApp开发框架和工具,包括Truffle、Embark、Meteor、BlockApps.net APIs,使得你可以快速开发你的Dapp。我的另外一篇文章《微软的那些区块链云服务》有提及,Embark和BlockApps.net两个区块链工具已经給整合到微软Azure BAAS服务中了。这几个框架和工具中,Elwin更推荐Embark,使用起来非常简单。

通过以太坊,你既可以搭建基于属于自己私链,也可以和合作伙伴一起搭建联盟链,又或者直接将应用部署在以太坊的公共网络中,Elwin要吐槽的是,使用以太坊Gas费用越来越高了,对于互联网的应用,是自己搭建以太区块链,还是使用以太公共网络,真是两难境地(以太坊宣称,以太币Ether价格上升时,那以太坊燃料的价格应该按比例下降,但好像并不是这样阿)。

几个主要入门步骤給大家简单介绍一下,首先你可以安装以太坊钱包客户端Ethereum Wallet,体验一下以太坊的钱包和智能合约,当中可以选择公共网络或测试网络(如果你没有或不想花费以太币)。如果你已经很熟悉这些了,那好,直接进入正题,准备好Geth和Node的环境,同时安装以太坊Mist客户端(这个是为测试你的智能合约和Dapp准备),配置和启动Geth(Geth和eth相关参数文章,请参考官网文档),通常我会先用Geth搭建自己的私链来测试,Geth启动后,你可以先在Mist客户端中熟悉智能合约和Solidity语言(记得在Geth console先挖矿,否则没有以太币来测试),然后根据官网的几个例子来试炼你的第一个Dapp。上手后,可以尝试使用web3.js来调用,或直接安装Truffle或Embark来开发自己真正的Dapp应用。

三、      IBM HyperLedger

IBM HyperLedger 又叫 fabric,他的目标是打造成一个由全社会来共同维护的一个超级账本,fabric源于IBM,初衷为了服务于工业生产,IBM将44,000行代码开源,是了不起的贡献,让我们可以有机会如此近的去探究区别于比特币的区块链的原理。目前就Elwin所知,fabric还未进入真正的商用阶段,更多是试验和探索,不过相对于很多其他区块链,从技术底蘊他又是比较可信和靠谱的。

要基于HyperLedger进行区块链开发比想像中简单,有两种途径,一种是基于超能云(IBM中国研究院开发的超能云平台提供了各种云服务),他给区块链爱好者、开发者的区块链开发测试环境,通过超能云平台,用户能够免费、超快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上调试智能合约。Hyperledger Fabric的合约是基于Go语言的,上手比较简单。

​根据Elwin尝试,似乎超能云的区块链只适用于科研测试,要真正运营,还是建议自己搭建Fabric的区块链网络。安装和运行Hyperledge fabric的运行有几种方式,比较推荐是下载Fabric区块链网络的Docker镜像,运行Docker镜像并启动Fabric区块链网络,但相对于比特币和以太坊,Fabric网络的架构和安装相对复杂,除了区块链服务外,还需要另外安装运行validating peer和Certificate Authority (CA) 服务。搞定后要真正使用,还需要先用户注册和登记授权,然后才可以通过CLI 或REST API进行调试和使用。其中里面智能合约的编写,跟在超能云的区块链云服务的是一样的。此外,除了CLI或REST API,IBM还提供了gRPC API和 SDK的方式进行应用的开发。

四、      Lisk

LISK是新一代的区块链平台,允许JavaScript(又是Javascript技术,工程师们注意了)的开发和基于分布的分散的应用程序使用一个易于使用的,功能齐全的生态区块链系统。

Elwin觉得LISK相对于前面说的几个区块链底层,他的应用优势不仅仅在于他是第一个完全写在Javascript里的去中心化的应用解决方案,还在于他把每个应用加到LISK的单独侧链上。用过比特币和以太坊的朋友都知道,由于比特币和以太坊只有一条主链,所有功能和数据都加入这条主链导致区块快速膨胀,超大的区块体积,超长的同步时间,这个一个很痛苦的经历。Lisk的侧链模式给在处理高交易量下如何解决网络拥堵的问题提供了一种方法,用户只有用到相关的应用时才需要下载对应的侧链,大大减小了无效的同步数据,保持了整个Lisk网络的高效运行,而且,Lisk网络的速度随着时间的推移会继续加快,越显示他的特别优势。

其次,相对以太坊和Hyperledge fabric以智能合约为核心的区块链不同, Lisk区块链建立的目的并不是为了创建智能合约,而是使用Lisk APP SDK框架来开发不同的应用程序和功能。

Lisk APP的主要开发语言是NodeJS,Web开发者既能够开发应用程序的后端,也可以开发前端。通过使用Lisk APP SDK包,Web开发者可以轻松创建区块链应用。Lisk APP的开发也比较简单,跟你之前其他的NodeJS应用的开发是类似的。然而,跟比特币和以太坊的一样,Lisk的使用也是要消耗燃料费用的,还好,跟其他区块链底层网络一样,Lisk 也是有testnet模式的。

五、      布比网络

布比,是国内区块链技术特别是底层技术领先者之一,已拥有多项核心技术,并已经成熟的应用在了商业积分、游戏币、游戏道具、预付卡、电子券、保险卡单、证券化资产、互助保险等行业和领域。

布比区块链平台分为基础框架层(BubiChain)和应用适配层(Bubi Application Adaptors)。底层基础框架层提供区块链的基础服务,应用适配层提供上层应用所需的功能组件,为具体的应用系统开发提供接口和SDK,降低由于区块链自身复杂的逻辑所带来的应用开发的难度。

​对于一般开发的应用适配层,布比提供布萌区块链应用开发平台,该平台基于布比区块链技术,将上层应用所需要的功能组件进行封装,开发者想实现对应的功能,只需要注册成为布萌开发者即可获得接口使用权限。同时,平台提供开发者运维所需要的可视化管理工具。

就Elwin体验来说,布萌区块链的接入应该是几大区块链底层中最容易的,因为他不仅提供标准REST API,并提供JAVA等主流语言的SDK接入,同时,基于布萌区块链平台专注数字资产应用场景,跟其他大部分区块链接口纯技术和面向广泛应用的方式而言,布萌提供的接口更贴近业务场景的,更便于相关数字资产的应用接入到区块链。相对以太坊着重区块技术和智能合约的区块链不同,布比区块链的接入更务实和落地,你只需要关注你实际的业务,而不需要过多考虑区块链的技术细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链应用开发入门 的相关文章

  • 每天都在谈SOA和微服务,但你真的理解什么是服务吗?

    近几年来 我一直从事着和面向服务相关的底层软件研发工作 逐渐的形成了一些自己的看法 其中我觉得比较重要的看法就是服务需要一个更准确细致的定义 简单来说 服务的本质就是行为 业务活动 的抽象 为了更好的阐述新服务的概念 并方便与传统的SOA中
  • 为什么要使用零知识证明来开发跨链协议

    用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2 由于在安全性 低成本 快速交易以及开发者和用户社区差异等方面 不同链都具有各自不同的优势 用户在不同链之间切换使用的行为是很常见的 比起以太坊链
  • 区块链能提供有效的身份管理?

    随着身份盗窃和数据泄露在世界各地越来越多的情况下 身份验证是一个主要问题 对访问数据的人进行身份验证实际上是他们要求的 每天 数以百万计的人在网上进行不同的活动 从研究一个学术话题 到购买新的项目 到在社交媒体平台上发表评论 甚至进行不同的
  • 以太坊系列之十五: 以太坊数据库

    以太坊数据库中都存了什么 以太坊使用的数据库是一个NOSQL数据库 是谷歌提供的开源数据leveldb 这里尝试通过分析以太坊数据库存储了什么来分析以太坊可能为我们提供哪些关于区块链的API 存储内容 NOSQL是一个key value数据
  • 2018年区块链人才趋势:降温、调节、蓄势待发

    2018年 戊戌年 是一个不平静的年份 自960年前的戊戌年王安石变法 到最近两百年的四个戊戌年 其间发生的大事无不与 变革 息息相关 年初 从科技圈 金融圈里 引爆出一个叫 区块链 的公众热点 从技术角度而言 这并非新生事物 但因其巨大的
  • 浅析『链上数据分析』 : 区块链 + 数据分析

    什么是链上数据分析 01 区块链 02 链上数据 03 为什么要分析链上数据 04 数据分析思维 05 数据分析技能 06 数据分析工具 07 业务逻辑理解 什么是链上数据分析 链上数据分析 顾名思义 就是对区块链上的数据进行分析 其实就是
  • 区块链学习笔记(六)——区块链的分类

    文章目录 一 强调 二 公有链 联盟链 私有链 1 公有链 2 联盟链 3 私有链 总结 一 强调 先做一下重复强调 区块链技术是集分布式存储 点对点传输 共识机制 加密算法 数据区块等概念于一体的新兴技术集合 二 公有链 联盟链 私有链
  • 区块链程序要怎么去测试?

    区块链程序开发越来越多 区块链怎么做测试 让大家很好奇 与传统测试不同的是区块链系统边界模糊 不管是是独立的应用程序 还是客户端 服务器模式的应用程序 传统软件都具备明显的系统边界 可以通过UI用户界面或者客户端去进行测试 区块链底层则不同
  • 不要向全网放通你的ETH系列节点的rpc接口访问权限!!!

    北京时间 2021年 8月 27 日 20 点 50 分左右 区块高度 13107518 一个共识漏洞 利用了 geth v1 10 8 中修复的共识漏洞 袭击了以太坊主网 以太坊因遭到攻击而导致分叉 攻击的根本原因在于 Geth 旧版本在
  • 如何使用区块链技术保护个人隐私和数据安全

    区块链技术是一种分布式账本技术 它具有不可篡改 去中心化 透明度高等特点 区块链技术能够实现数据的可信存证 隐私保护和交易安全 并且能够通过智能合约的自动执行 因此被广泛应用于金融 电商 物流 社交网络等领域 区块链技术的核心是 分布式账本
  • 使用web3和infura开发以太坊ethereum区块链

    web3 Github https github com ethereum web3 js web3 js是以太坊提供的一个Javascript库 它封装了以太坊的RPC通信API 提供了一系列与区块链交互方法 使js与以太坊交互变得简单
  • 期货ctp基础知识(合约,开仓,平仓,做多,做空,保证金,手续费)

    期货ctp教程地址 期货ctp教程 合约 期货买卖的是合约 股票买卖的是股票 做多和做空 2 1 做多 你就是买入看涨 所以买这个动作对应的指令就是 买开仓 当你赚了或者止损的时候 就要把合约卖掉 对应的指令就是 卖平仓 2 2 做空 你先
  • 扬帆证券:A股风格或呈大小盘短期均衡

    上星期 A股商场接连弱势盘整格局 沪指于3000点上方窄幅轰动 前期小盘股占优的风格再度演绎 北交所个股体现继续生动 组织观念以为 近期北证50指数的动摇加剧 短期商场的风格或许会呈现大小盘均衡 进入12月 出资者对经济和商场的决心进一步上
  • Solidity之旅(十)OOP-抽象合约

    抽象合约 abstractcontract 前文在讲合约继承的基类构造函数的参数时 有提到抽象合约 也就是说 如果派生合约未能给其继承的基合约指定构造函数参数时 那么 该派生合约必须声明为抽象合约 abstractcontract 我们知道
  • zkSend — — 在Sui上发红包像发电子邮件一样简单

    12月14日 知名区块链媒体平台The Block发表了这篇关于对Mysten Labs联合创始人Adeniyi Abiodun的采访 文中 我们 指代该媒体 数据均为截止撰写文章时数据 以下是正文 两年前 当五名前Facebook工程师创
  • 期权有杠杆吗?在哪里看期权有多少倍杠杠?

    期权有杠杆吗 在哪里看期权有多少倍杠杠 期权本身没有杠杆 期权合约自带杠杆 期权买方只需要缴纳较少的权利金就可以获得更高价值的标的资产波动所带来的收益 但是期权卖方不需要缴纳保证金 期权卖方需要付出保证金才可以建仓 这是因为期权卖方需要履行
  • Sui限定版冬季任务来袭,100万份礼物和50万SUI在等你!

    在这个渐趋寒冷但节日氛围却日渐浓厚的冬日 Mysten Labs非常高兴地向大家宣布 限定版冬季任务已于北京时间12月19日凌晨3点正式启动啦 这次冒险任务充满刺激 奖励丰厚 快来 Mysten Labs任务网站 体验吧 对于参加过Ques
  • 期权开户最低多少钱个人可以开?

    大家新年好 现在2024年龙年 很多想玩期权的小伙伴都知道期权开通需要50万的门槛 那么今天来给大家详细介绍下期权开户最低多少钱个人可以开 本文将对期权开户最低金额进行探讨 帮助投资者更好地了解期权交易的投资门槛 本文来自 期权酱 一 期权
  • 英国金融时报关注TRX登陆Mercado Bitcoin交易所:波场TRON强化南美洲布局,国际化进程持续加速

    近日 波场TRON网络原生代币TRX正式上线巴西最大的合规加密交易所Mercado Bitcoin 英国金融时报 Decrypt Blockworks等财经及加密行业权威媒体对该话题进行了报道 表示此次合作是波场TRON全球业务增长的有力证
  • 案例研究:YGG 如何通过 GAP 帮助 Pixels 扩大玩家群体

    在 Sky Mavis 联合创始人 Jeffrey Jihoz Zirlin 在 YGG Web3 游戏峰会 W3GS 上发表主题演讲时 他向在场的人们透露 MMO 农场游戏 Pixels 的日活跃用户数已经超过了 130 000 人 这使

随机推荐

  • PHP基础巩固【PHP导入导出EXCEl,TP实用封装函数,可定义表格样式】

    这个方法是自己封装了 方法确实也好用 自己也用了好几年了 但是最近发现好多小年轻用到都是PhpOffice 咱也应该与时俱进 就先把这方法分享出来 等熟悉下phpoffice再贴出更新后的版本 把以下代码写入公共函数 导入EXCEL par
  • Spigot插件开发, 使用IDEA初始化maven项目并完成简单的世界保护功能 (Spigot开发笔记-1)

    文章目录 笔记提要 开发环境 初始化项目 1 安装 IDEA 中 MineCraft 开发辅助插件 2 利用插件创建 Spigot 项目 3 填写 Spigot 项目初始化选项 4 填写 bukkit yml 选项 5 完成创建 初始化插件
  • 使用阿里云和PicGo搭建个人图床

    使用阿里云和PicGo搭建个人图床 图床 顾名思义 就是一个存储图片的云盘 可以用于作为写笔记和博客的工具 平时做笔记时直接通过截图保存的图片一般都存储在本地 一当本地图片受不可抗力被删除或者是希望把文档分享给他人或上传到自己的博客的时候
  • jquery-migrate.min.js兼容jQuery版本

    一 情形描述 已知live 方法在 jQuery 版本 1 7 中被废弃 在版本 1 9 中被移除 特殊原因下 你需要在已引用jquery 2 1 1 js的页面中使用live 那么肯定是无效的 1 代码
  • 先记录一下转化json特殊处理

    JsonProperty n private String name JsonProperty u private String url JsonProperty i 先记录一下转化json特殊处理
  • mongodb shell中显示更多数量的结果

    DBQuery shellBatchSize 300 url http stackoverflow com questions 3705517 how to print out more than 20 items documents in
  • AngularJs、RequireJs、AngularAMD、ui-router搭建的JS文件动态加载

    如今页面的复杂度极高 需要加载的脚本文件极多 降低了用户体验 所以写了这个动态加载脚本的demo 欢迎交流 1 主页 requireJs 入口 data main mian js 如下 b b
  • 递归和循环的区别

    针对需要重复地多次计算相同的问题 通常可以选择递归或者循环两种不同的方法 递归是在一个函数的内部调用这个函数本身 循环是通过设置计算的初始值及终止条件 在一个范围内重复计算 我们以计算1 2 3 n为例 我们可以采用递归和循环两种方式求出结
  • 三菱plc pwm指令_【三菱PLC指令教程】步进指令STL和RET(单序列状态转移图编程)

    戳上方 蓝字 PLC课程 关注我们哦 一 状态继电器 状态继电器 S 是PLC内部软继电器的一种 它和输入继电器 X 和输出继电器 Y 一样 有无数对常开触点和常闭触点 如不作步进状态软元件 可作一般的辅助继电器 M 使用 FX2N系列PL
  • CSS的盒模型

    盒子模型 Box Modle 可以用来对元素进行布局 包括内边距 边框 外边距 和实际内容这几个部分 盒子模型分为两种 第一种是W3C标准的盒子模型 标准盒模型 第二种IE标准的盒子模型 怪异盒模型 标准盒模型与怪异盒模型的表现效果的区别之
  • IPD流程介绍

    IPD体系中最重要的三大流程是市场管理流程 需求管理流程和集成产品开发流程 关系如图 图来自网上 尽量把三个流程的活动讲清楚 包括每个流程的活动的细节 运用的工具或方法等 1 MM流程 2 需求管理流程 3 集成产品开发流程
  • Oracle:错误码ORA-28040 的坑

    一 背景 因项目要求 第一次部署了Oracle 12 C的Server Linux CentOS版 数据库装好之后部署一个Java Web项目 A项目 去连接数据库 该Java项目之前用的Oracle是11 g版本 这次换成了12 C的版本
  • 使用docker方式安装FastDFS

    FastDFS 架构包括 Tracker server 和 Storage server 客户端请求 Tracker server 进行文件上传 下载 通过 Tracker server 调度 最终由 Storage server 完成文件
  • 时钟天气小插件显示没服务器,天气时钟小插件大全

    有没有好用的天气时钟插件 首先右击桌面选排列图标 勾选显示桌面图标 2 如果故障依旧 打开任务管理器 按下 Ctrl Alt Del 组合键即可打开 点击 文件 新建任务 在打开的 创建新任务 对话框中输入 explorer 单击 确定 按
  • windows docker wsl2的docker内存占用大

    windows docker wsl2的docker内存占用大 1重启wsl2 最终采用 实测直接stop运行的docker实例 并不会减少Vmmem内存 因此需要重启wsl2 输入wsl shutdown即可 同时把Docker Desk
  • Vs QT 程序添加按钮控件,及使用信号和槽

    include QtWidgetsApplication1 h include
  • 基于python的分布式实现多节点资产收集管理平台

    真正的大师 永远都怀着一颗学徒的心 一 项目简介 基于python的分布式实现多节点资产收集管理平台 二 实现功能 支持域名扫描 支持备案信息查询 支持fofa查询 支持多账号管理 支持web站点扫描 支持目录扫描 支持端口扫描 支持漏洞扫
  • ESP32 ADC –使用Arduino IDE读取模拟值

    本文介绍了如何使用Arduino IDE通过ESP32读取模拟输入 模拟读取对于从电位计或模拟传感器等可变电阻读取值非常有用 模拟输入 ADC ADC是非线性的 analogRead 函数 其他有用的功能 使用ESP32从电位计读取模拟值
  • MySQL 事务隔离级别,读现象,MVCC

    目录 数据库读现象 事务隔离级别 错误日志 详情参见 MySQL日志管理 JasonJi 博客园 mvcc多版本并发控制 多版本并发控制mvcc multi version concurrency controll 基于多版本的并发控制 在
  • 区块链应用开发入门

    区块链技术如今是非常火热 不仅让金融家和创投家趋之若鹜 如今已经在多个领域遍地播种 作为拥有锐利触角的创业家们 是否也想将区块链集成到你们现有的应用中去 而作为IT技术工程师的你 是否也是跃跃欲试 想基于区块链来练一下手 以免日后被新技术淘