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这么方便的工具可调用,因此要是调用公链上的智能合约,只能使用特定账户的私钥签名方法后,并且以该账户的身份调用合约

审核编辑 黄昊宇

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

    关注

    90

    文章

    3725

    浏览量

    97527
  • 区块链
    +关注

    关注

    112

    文章

    15579

    浏览量

    111293
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式以太网原型开发套件:探索嵌入式系统编程的理想选择

    嵌入式以太网原型开发套件:探索嵌入式系统编程的理想选择 在电子工程师的日常工作中,拥有一套功能完备、易于使用的开发套件对于项目的开展至关重要。今天,我们就来详细介绍一款嵌入式以太网原型开发
    的头像 发表于 05-13 13:50 133次阅读

    常见PCB孔孔径标准、要求与测量方法

    孔作为机械加工与电子制造中的核心结构特征,特指那些未完全穿透材料、仅一端开口的孔洞。其广泛应用于PCB板的层间互联、精密模具的定位销孔以及液压阀体的油路构建中。由于孔的功能性高度敏感,其孔径
    的头像 发表于 05-13 10:03 1005次阅读
    常见PCB<b class='flag-5'>盲</b>孔孔径标准、要求与测量方法

    PCB智造中孔失效会带来哪些影响?

    在当下电子产品高度集成化的时代,印制电路板(PCB)作为电子设备的“神经系统”,其可靠性直接决定了产品性能与寿命。其中,孔作为连接PCB不同层间的关键通道,一旦发生失效,将引发一系列连锁反应,乃至
    的头像 发表于 05-09 15:47 120次阅读
    PCB智造中<b class='flag-5'>盲</b>孔失效会带来哪些影响?

    PCB为什么要做孔切片分析?

    印刷电路板(PCB)的设计与制造工艺日趋复杂,多层板设计中,为了节省空间、优化布线,孔技术被广泛应用。孔是连接表层与内层特定层面、而未贯穿整个板厚的导通孔。然而,其特殊的结构也带来了独特的质量
    的头像 发表于 05-08 10:19 226次阅读
    PCB为什么要做<b class='flag-5'>盲</b>孔切片分析?

    如何通过精准孔检测降低PCB报废率?

    随着PCB行业向高密度、高性能快速演进,孔质量已成为影响产品合格率的关键。一个微小的孔壁缺陷、镀层不均或残留物问题,都可能导致整批产品报废,造成巨大的材料与时间损失。本文将深入探讨如何通过精准的
    的头像 发表于 04-16 10:01 230次阅读
    如何通过精准<b class='flag-5'>盲</b>孔检测降低PCB报废率?

    AI预测如何赋能城市二次供水系统智能化

    在城市供水系统的末端,隐藏着一个被长期忽视的“”——二次供水泵房。
    的头像 发表于 04-02 09:05 729次阅读
    AI预测如何赋能城市二次供水<b class='flag-5'>系统</b>智能化

    五阶孔印制电路板的典型工艺流程

    本文以五阶孔印制电路板为研究对象,围绕逐次增层法制备流程,系统阐述微孔激光成形、超高厚径比孔电镀填孔、层间精密对位三大核心技术。通过优化 UV+CO₂复合激光参数、脉冲电镀体系与分区域标靶对位
    的头像 发表于 03-17 09:28 942次阅读
    五阶<b class='flag-5'>盲</b>孔印制电路板的典型工艺流程

    Bamtone班通:孔显微镜有哪些行业应用?能解决什么问题?

    孔显微镜主要用于对各种材料和器件中的“孔/埋孔”进行放大观察、测量和缺陷分析,典型场景集中在PCB、电路封装、半导体和精密机械等行业。作为国内领先的PCB测量仪器、智能检测设备等专业解决方案
    的头像 发表于 01-05 17:25 755次阅读
    Bamtone班通:<b class='flag-5'>盲</b>孔显微镜有哪些行业应用?能解决什么问题?

    如何选择适合的埋孔技术?

    选择埋孔技术需综合考虑以下因素: 1. 技术类型与适用场景 一阶埋孔‌:适合8层以下PCB,如消费电子主板,成本较低但仅支持单层连接‌。 二阶埋孔‌:用于10层以上PCB(如服务器、高端显卡
    的头像 发表于 12-04 11:19 666次阅读
    如何选择适合的<b class='flag-5'>盲</b>埋孔技术?

    别再让光缆故障“开”!广州邮科这套系统,让运维从玄学变科学

    网络就像城市的“数字神经”,但传统的运维方式却像是在“开”——故障何时发生、发生在哪段、什么原因,全靠经验和运气。 今天,我要认真安利 广州邮科的 光缆监测系统 。用了它,我们运维团队终于从“救火队员”变成了“
    的头像 发表于 12-02 10:04 509次阅读
    别再让光缆故障“开<b class='flag-5'>盲</b><b class='flag-5'>盒</b>”!广州邮科这套<b class='flag-5'>系统</b>,让运维从玄学变科学

    埋孔线路板加工工艺介绍

    埋孔线路板加工工艺是实现高密度互联(HDI)板的核心技术,其制造流程复杂且精度要求极高。
    的头像 发表于 11-08 10:44 2105次阅读

    MCU单片机TWS耳机充电系统控制方案

    TWS(True Wireless Stereo,真无线立体声)耳机已成为主流音频设备,其充电系统设计对整体使用体验至关重要。由于耳机内部空间有限,无法容纳大容量电池及充电元件,因此需要通过专用
    的头像 发表于 11-05 09:22 610次阅读

    物联网平台应用环境监控:低代码零编程简化开发,组态应用

    传统环境监控系统开发常陷入两难困境,企业开发周期长、开发维护成本贵,基层运维人员不懂技术,遇到参数调整只能依赖IT团队。而物联网平台驱动的环境监控系统,以低代码零
    的头像 发表于 08-29 15:33 1165次阅读

    多层PCB孔与埋孔工艺详解

    多层PCB孔与埋孔工艺详解 一、基本定义与区别 孔(Blind Via)‌ 仅连接PCB表层(TOP/BOTTOM)与相邻内层,不贯穿整个板子,例如8层板中连接L1-L3层‌。 通过激光钻孔实现
    的头像 发表于 08-29 11:30 2436次阅读

    音乐芯片方案——N9305音乐芯片

    音乐芯片方案开发音乐盒,作为一种融合艺术与机械智慧的精巧物件,散发着独特魅力。它以灵动的音符为载体,承载着人们的情感、回忆与祝福。从孩童手中开启梦幻世界的木质八音,到恋人间传递爱意的精致音乐
    的头像 发表于 06-05 15:29 1076次阅读
    音乐<b class='flag-5'>盒</b>芯片方案——N9305音乐芯片