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

    文章

    3707

    浏览量

    96765
  • 区块链
    +关注

    关注

    112

    文章

    15574

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

    如果 PD 合约不匹配,BCR 是否仍会打开 SINK_FET_EN POWER_DRILL2GO路径?

    BCR 具有 SINK_FET_EN 和 SAFE_PWR_EN 引脚来控制POWER_DRILL2GO消耗路径。 如果 PD 合约不匹配,BCR 是否仍会打开 SINK_FET_EN POWER_DRILL2GO路径?或者只打开 SAFE_PWR_EN POWER_DRILL2GO路径?
    发表于 05-23 08:01

    索尼FCB-EV9520L机芯:商城智能监控系统的技术革新者

    在零售行业数字化转型的浪潮中,商城监控系统正从传统的“事后追溯”向“实时预警”升级。索尼FCB-EV9520L一体化摄像机模组凭借其卓越的低延时传输、高精度光学变焦及智能图像处理能力,成为新一代商城
    的头像 发表于 05-07 17:48 521次阅读

    20倍变焦+智能编码:FCB-ER8530破局商城监控「全域无

    在日均客流量超5万人次的大型商业综合体中,传统监控系统常陷入"看得见但看不清"的困局——收银台前顾客手势遮挡密码输入、停车场立柱后车辆剐蹭逃逸、中庭活动区人群踩踏风险预警滞后……索尼
    的头像 发表于 04-28 15:59 642次阅读

    探秘叁仟智设备:智慧城市的智能枢纽

    科技有限公司旗下的重要产品。这家公司作为中国智慧路灯杆行业发展引领者,是一家集科研开发、生产经营、技术服务、系统集成于一体的高新技术企业。叁仟智设备是其智慧路灯杆软硬件系统平台的重要
    的头像 发表于 04-27 16:20 448次阅读

    电源的应用场景

    电源的应用场景非常广泛,主要包括以下几个方面: ‌特定设备驱动‌: 电源被用于驱动特定设备,如普克尔等。这种电源通常具有特定的设计,如推拉锁紧插座、监控接口等,以提高安全性和便
    的头像 发表于 03-07 10:24 980次阅读

    电源输出信号类型

    S7-1200等PLC(可编程逻辑控制器)的电源,通常提供直流电压输出,如24V DC,用于为CPU、I/O模块等内部组件供电‌1。 ‌ 交流电压(AC) ‌:虽然不如直流电压常见,但一些特殊应用场景下,电源也会提供交流电压
    的头像 发表于 03-07 10:20 1009次阅读

    孔技术对PCB厚度的影响

    孔技术对PCB厚度影响的多方面分析 从空间利用角度 孔技术的应用有助于在一定程度上减小PCB的厚度需求。因为孔不需要穿透整个板层,在进行层间连接时,相比传统通孔,可以在有限的空间内实现更多
    的头像 发表于 01-08 17:30 882次阅读

    华为云 Flexus 云服务器 X 实例部署——抽奖商城系统以及编译发布小程序

    抽奖商城系统使用 thinkphp6.0 + uniapp 开发,做到了全移动端兼容。一个系统
    的头像 发表于 12-31 10:36 981次阅读
    华为云 Flexus 云服务器 X 实例部署——<b class='flag-5'>盲</b><b class='flag-5'>盒</b>抽奖<b class='flag-5'>商城</b><b class='flag-5'>系统</b>以及编译发布小程序

    影响孔PCB打样价格的四大因素:从材料到工艺全面解析

    一站式PCBA智造厂家今天为大家讲讲影响孔pcb打样价格的因素有哪些?影响孔PCB打样价格的因素。在现代电子设备日益小型化和高性能化的趋势下,多层PCB印刷电路板的设计和制造技术不断进步。其中
    的头像 发表于 12-23 09:52 924次阅读

    HDI埋孔工艺及制程能力你了解多少?

    HDI技术通过 增加埋孔来实现高密度布局 ,适用于高端服务器、智能手机、多功能POS机和安防摄像机等领域。通讯和计算机行业对HDI线路板需求较高,推动了科技的进步。目前,HDI板在国内市场的前景
    发表于 12-18 17:13