0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NFT盲盒商城系统dapp开发合约编程

搭建punk2558 来源:搭建punk2558 作者:搭建punk2558 2022-08-26 10:38 次阅读

以太坊私链,也就是搭建属于自己的区块链,最常见的方式就是通过Geth(Go-Ethereum)搭建了,他可以算是比较真实的区块链平台了,唯一区别就是不需要挖矿,也就是不需要共识,Geth搭建私链时,我们需要配置创世块、bootnode、启动节点、挖矿等操作,搭建私链教程可点击此处。

测试环境中的公链,一些组织为了让开发者更方便的开发DApp,搭建了自己的以太坊平台并对外开放,这些测试平台的以太币可以免费获取,但每个账户获取的数量有限,不过也足以我们用来测试了,在下文的实践中用的也是这种方案。而测试平台有哪些呢,在我们安装了MetaMask插件以后,可以在里面找到。

以太坊,最后的环境肯定是以太坊了,不过我们在上线前一定要做好测试,因为区块链具有不可篡改性,我们的DApp在上线后出bug可是无法修复的,只能通过发布一个新的DApp,然后通知你的用户以后使用新地址,所以我们在设计合约时应当设置有无效标志位,尽早地告知调用者该合约已经废弃。

编程语言

编写一个DApp可以说是包括两部分,合约部分和业务逻辑部分。

智能合约

Solidity,类JavaScript,这是以太坊推荐的语言,也是最流行的智能合约语言,另外测试、调试Solidity有一个非常好的在线IDE–Remix,由以太坊团队推出的。由于考虑在线网络比较慢,可以使用本地IDE。

业务逻辑

业务逻辑部分即提供客户端与智能合约交互的接口,相当于目前BS结构中的后台逻辑,因此业务逻辑部分可部署在中心服务器中,而且在以太坊中每个智能合约函数的每一行代码都有固定的gas费用以及延时的,一些简单的逻辑应该交由业务逻辑处理,编写业务逻辑目前提供有以下几种语言:

JavaScript,主要是基于Web3.js这个库调用智能合约,本文例子也是使用JavaScript编写的。

Go,上述提到的以太坊私链搭建工具geth就是使用Go编写的。

Python

Java

Ruby

Haskell

Rust

DApp原理

一个DApp被调用之前需要先部署到以太坊上,不管是私链,公链还是联盟链。故本章节分为两部分,DApp部署原理和调用原理。

部署

一个DApp由多个智能合约组成,部署一个DApp也就是同时部署多个智能合约,这里讲述一下部署一个智能合约的流程,如下图所示。

poYBAGMIMgiAUsAnAACAoMXM-Yc576.png

将编写好的Solidity智能合约通过RPC调用以太坊钱包或Web3.js等工具。

Web3.js发送合约源码到部署在以太坊节点的Solc编译器。

编译器返回合约字节码。

发送合约字节码和初始化参数到以太坊节点。

以太坊节点上EVM验证完成后,部署到全网的所有节点,完成后返回合约地址和应用二进制接口(ABI)。

这里推荐使用Remix进行部署,因为Remix不仅可以连接浏览器内嵌的以太坊VM,还可以和MetaMask联动,使用MetaMask当前所连的以太坊网络,而且Remix还可以调试部署好的合约,十分方便。在Remix上部署十分简单,选择部署的以太坊网络和填好合约初始化参数后,点击create按钮即可。如果我们选的是MetaMask当前的以太坊网络,则会跳转交易界面,因为部署合约本质上也是一笔交易,我们需要付交易手续费。

部署后的合约其实外部还不能调用,还需要我们上传源代码进行验证,不然别人不可能在不清楚源码情况下向合约发起交易,向你转账。

调用

部署好的合约我们就可以调用了,根据调用方式的不同,本文分为前端调用和后端调用。

前端调用相对来说简单一点,因为有MetaMask这个强大的插件,我们不必操心以太坊数据源,直接调用web3.currentProvider即可,下图展示了前端调用合约的一般流程,由于前端连接的Web3 Provider是与特定的以太坊节点相连,前端不需要管方法的签名,只需无脑调用合约中的方法即可。

至于后台调用就麻烦一点了,由于后台没有MetaMask这么方便的工具可调用,因此要是调用公链上的智能合约,只能使用特定账户的私钥签名方法后,并且以该账户的身份调用合约

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3587

    浏览量

    93580
  • 区块链
    +关注

    关注

    110

    文章

    15559

    浏览量

    105750
收藏 人收藏

    评论

    相关推荐

    机远程监控运维管理系统方案

    ,数之能了一种封机远程监控运维管理系统方案。 痛点分析 1、实时监控困难:设备分散在不同地点,难以实时监控运行状态,导致故障发现不及时。 2、维护成本高:设备出现故障时,需要技术人员现场排查,增加了人力成本和
    的头像 发表于 11-15 13:54 73次阅读

    HDI板孔制作常见缺陷及解决

    HDI板是一种高密度互连印刷电路板,其特点是线路密度高、孔径小、层间连接复杂。在HDI板的制作过程中,孔的制作是一个关键步骤,同时也是常见的缺陷发生环节。以下是根据搜索结果总结的HDI板孔制作的常见缺陷及其解决方法。
    的头像 发表于 11-02 10:33 153次阅读

    MCU编程语言和开发环境介绍

    微控制器单元(Microcontroller Unit,简称MCU)是嵌入式系统的核心,广泛应用于各种电子产品中。随着技术的发展,MCU编程语言和开发环境也在不断进步,以适应不同的应用需求。 1.
    的头像 发表于 11-01 11:51 459次阅读

    如何判断/埋孔HDI板有多少“阶”?

    /埋孔HDI板概述/埋孔HDI(HighDensityInterconnect,高密度互连)板是一种高级的印刷电路板技术,它通过使用微小的孔和埋孔来提高电路板上的布线密度。这种技术特别适用于
    的头像 发表于 11-01 08:03 135次阅读
    如何判断<b class='flag-5'>盲</b>/埋孔HDI板有多少“阶”?

    如何判断/埋孔HDI板有多少“阶”?

    /埋孔HDI板概述 /埋孔HDI (High Density Interconnect,高密度互连)板是一种高级的印刷电路板技术,它通过使用微小的孔和埋孔来 提高电路板上的布线密度
    发表于 10-23 18:38

    孔在HDI线路板中的作用

    孔在HDI线路板中起到增加连接密度、改善电气性能、增强机械稳定性和提升制造效率的作用。1、增加连接密度优化空间利用:孔穿透PCB的部分层,能在有限空间内有效连接外层和相邻内层,支持高密度布局
    的头像 发表于 10-23 17:43 320次阅读
    <b class='flag-5'>盲</b>孔在HDI线路板中的作用

    火柴大小的开发板duos做轻NAS体验

    火柴大小的国产开发板,做轻NAS是什么样的体验!哈喽,大家好;前段时间有一家公司叫算能,他送给我们一个火柴大小的一个开发板,他说这个开发
    的头像 发表于 10-10 08:08 884次阅读
    火柴<b class='flag-5'>盒</b>大小的<b class='flag-5'>开发</b>板duos做轻NAS体验

    孔PCB线路板加工流程

    孔PCB线路板的加工流程是一个复杂的过程,涉及到多个步骤和技术。以下是埋孔PCB线路板加工流程的详细解释。
    的头像 发表于 09-07 09:42 678次阅读

    pcb设计中孔和过孔的区别?

    在PCB设计中,孔和过孔是两种常见的孔类型,它们在电路板的制造过程中起着重要的作用。 定义 孔(Blind Vias):孔是一种连接外层和内层但不穿透整个PCB板的孔。它的一端连接
    的头像 发表于 09-02 14:47 846次阅读

    Linux 驱动开发与应用开发,你知道多少?

    一、Linux驱动开发与应用开发的区别开发层次不同:Linux驱动开发主要是针对硬件设备进行编程,处于操作
    的头像 发表于 08-30 12:16 580次阅读
    Linux 驱动<b class='flag-5'>开发</b>与应用<b class='flag-5'>开发</b>,你知道多少?

    6层板,有、埋孔现在能做吗?

    6层板,有、埋孔现在能做吗?
    发表于 04-29 14:54

    fpga开发需要掌握哪些编程语言

    FPGA(现场可编程门阵列)开发涉及多种编程语言和技术.
    的头像 发表于 03-27 14:34 1362次阅读

    基于单片机的导拐杖设计

    电子发烧友网站提供《基于单片机的导拐杖设计.rar》资料免费下载
    发表于 01-12 09:43 11次下载

    基于单片机的导拐杖设计

    电子发烧友网站提供《基于单片机的导拐杖设计.rar》资料免费下载
    发表于 01-03 11:07 10次下载

    HDI(、埋孔)板压合问题

    随着电子信息技术的迅速发展,电子产品的功能越来越复杂、性能越来越优越、体积越来越小、重量越来越轻……因此对印制板的要求也越来越高,比如其导线越来越细、导通孔越来越小、布线密度越来越高等等。 埋、
    发表于 12-25 14:09