以太坊Dapp终极教程——如何构建一个完整的全栈去中心化应用(一)

手把手教你一步步开发第一个Dapp(使用solidity语言实现投票合约)——Remix版本 第一个Dapp开发(使用solidity语言实现投票合约)——Remix版本 Remix使用教程 MetaMask使用教程 Dapp开发技术 Web3.js 阅读详情

今天,我将向你展示如何在以太坊区块链上构建你的第一个去中心化应用程序或dApp。我将告诉你如何编写你的第一个以太坊智能合约,我们将在两个候选人之间举行选举。我们将针对智能合约编写测试,将其部署到以太坊区块链,并开发允许帐户投票的客户端应用程序。我们还将研究关键概念,如“什么是区块链?”,“什么是智能合约?”,以及“dApp如何工作?”。

什么是区块链?

让我们用一个类比来理解区块链是什么以及它是如何工作的。我们来看一个Web应用程序。

通常,当你与Web应用程序交互时,你使用Web浏览器通过网络连接到中心服务器。此Web应用程序的所有代码都位于此中心服务器上,并且所有数据都位于中央数据库中。无论何时与应用程序进行交易,都必须与Web上的此中心服务器进行通信。

如果我们要在网上构建我们的投票应用程序,我们会遇到一些问题:

    1. 可以更改数据库上的数据:可以多次计数,也可以完全删除。
    1. Web服务器上的源代码也可以随时更改。

我们不想在网络上构建我们的应用程序。我们希望在区块链上构建它,任何连接到网络的人都可以参与选举。我们希望确保他们的投票得到统计,并且他们只计算一次。那么让我们来看看它是如何工作的。

区块链不是拥有网络,中心服务器和数据库,而是一个网络和数据库。区块链是计算机的点对点网络,称为节点,共享网络中的所有数据和代码。因此,如果你是连接到区块链的设备,则你是网络中的节点,并且你可以与网络中的所有其他计算机节点进行通信。你现在拥有区块链上所有数据和代码的副本。没有更多的中心服务器。只是一堆在同一网络上相互通信的计算机。

而不是集中式数据库,区块链中节点之间共享的所有交易数据都包含在称为块的记录包中,这些记录捆绑在一起以创建公共分类帐。此公共分类帐表示区块链中的所有数据。公共分类帐中的所有数据都通过加密散列来保护,并通过一致性算法进行验证。网络上的节点参与以确保通过网络分发的所有数据副本是相同的。这是我们在区块链上构建投票申请的一个非常重要的原因,因为我们希望确保我们的投票得到计算,并且它没有改变。

我们的应用程序用户对区块链进行投票会是什么样子?那么,对于初学者来说,用户需要一个带有钱包地址的帐户,其中有一些Ether,以太坊的加密货币。一旦他们连接到网络,他们就会投票并支付一笔小额交易费用来将此交易写入区块链。这笔交易费用称为gas。无论何时投票,网络上的一些节点(称为矿工)都会竞争完成此交易。完成此交易的矿工将获得我们付款投票的以太币。

作为回顾,当我投票时,我支付gas价格进行投票,当我的投票被记录时,网络上的一台计算机获得我的以太网费用。我反过来相信我的投票是永远准确记录的。

所以同样重要的是要注意,对区块链进行投票会花费以太币,但只是看到候选人名单没有。这是因为从区块链中读取数据是免费的,但写入区块链则不是。

什么是智能合约?

这就是投票过程的工作原理,但我们如何实际编写应用程序代码呢?好吧,以太坊区块链允许我们使用名为智能合约的东西在区块链上使用以太坊虚拟机(EVM)执行代码。

智能合约是我们应用程序的所有业务逻辑所在。这是我们实际编写应用程序去中心化部分的地方。智能合约负责向区块链读取和写入数据,以及执行业务逻辑。智能联系人使用名为Solidity的编程语言编写,看起来很像Javascript。它是一个完整的编程语言,它允许我们执行Javascript所能提供的许多相同类型的事物,但由于它的用例,它的行为有点不同,正如我们在本教程中将看到的那样。

区块链上智能合约的功能与网络上的微服务非常相似。如果公共分类帐表示区块链的数据库层,那么智能合约就是与该数据进行交易的所有业务逻辑所在的位置。

此外,他们被称为智能合约,因为他们代表契约或协议。在我们的投票dApp的情况下,这是一项协议,我的投票将被计算,其他投票只计算一次,并且投票最多的候选人实际上将赢得选举。

现在让我们快速浏览一下我们正在构建的dApp的结构。

<
构建以太坊 dApp 的完整指南:前端和后端 目录面向全栈开发人员的端到端 dApp 教程什么是 DApp?后端(智能合约)前端(Web 用户界面)数据存储IPFS一群去中心化消息通信协议拍卖 DApp拍卖 DApp:后端智能合约DApp 治理拍卖 DApp:前端用户界面进一步分散拍卖 DApp将拍卖 DApp 存储在 Swarm 上准备蜂群将文件上传到 Swarm以太坊名称服务 (ENS)ENS 规范底层:名称所有者和解析者中间层:.eth 节点顶层:事迹注册名称管理您的 ENS 名称ENS 解析器将名称解析为 Swarm 哈希(内容)从 App 到 阅读详情

相关推荐

以太坊DApp开发入门教程——Node.js和truffle框架打造区块链投票系统

第一节 课程概述本课程面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 —— 区块链投票系统。通过本课程的学习,你将掌握:以太坊区块链的基本知识开发和部署以太坊合约所需的软件环境使用高级语言(solidity)编写以太坊合约使用NodeJS编译、部署合约并与之交互使用Truffle框架开发分布式应用使用控制台或网页与合约进行交互前序知识要求...

mongo_node的专栏 1万+

以太坊DApp开发全攻略:从智能合约到去中心化应用的完整实现

本文将带你了解以太坊DApp开发的完整流程,从基础准备到实际部署,为你的区块链项目打下坚实的基础。

龙链DAPP开发 1730

从零到一构建去中心化应用(DApp):区块链架构师的完整搭建指南

摘要: 去中心化应用(DApp)基于区块链技术,通过智能合约实现业务逻辑,具备去中心化存储、开源透明、无中介等特点。构建DApp需选择合适区块链平台(如以太坊、Solana),开发智能合约(Solidity),并集成前端(React/Vue)与钱包(MetaMask)。采用IPFS存储数据,重视安全性(防重入攻击、溢出)。未来趋势包括多链支持、Layer 2方案和用户体验优化。DApp开发需平衡性能、成本与安全,是区块链技术的核心应用方向。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1457

构建一个简单的以太坊+IPFS+React.js去中心化应用DApp

我们为什么要构建这个?在以太坊区块链上存储大量数据是非常昂贵的。根据以太坊的黄皮书,它是大约20,0000gas,256bit/8字节(1字)。基于02/28/2018 gas价格为4gwei/gas。请参阅:https://ethgasstation.info了解当前价格。 每个交易8个字节20,000gas*4gwei/gas=80,000gwei。 8,000字节80,000gwei*100...

mongo_node的专栏 1316

【区块链 | DAPP】Dapp应该怎么开发?分享一篇Dapp开发的逻辑(分享) 更新中~

写在前面 本篇文章将带领你从零学会一个Dapp开发,笔者从最初的不了解区块链概念到如今精通Dapp、智能合约开发,中间踩过无数的坑,经历过无数困难! 一、什么是Dapp? 去中心化应用(decentralized application),或简称DApp,通常与区块链平台例如以太坊相联系,是一个在分布式点对点网络上运行的应用程序,而不是在一台中央计算机上。这样做的主要好处是,网络的用户不依赖于中央计算机来发送和接收信息。 为了充分理解去中心化应用程序与中心化应用程序之间的区别,我们可以看一下中心.

1万+

以太坊DApp入门教程区块链投票系统

本课程面向初学者,内容涵盖以太坊去中心化应用开发相关的诸多概念,如区块链、ganache仿真器、Solidity语言、solc编译器、web3js库、通证(代币)发行等,并将手把手地教大家如何构建一个基于以太坊的完整去中心化应用 —— 区块链投票系统。

以太坊开发DApp入门教程——区块链投票系统(一)

概述 对初学者,首先要了解以太坊开发相关的基本概念。   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java… 前端开发语言:HTML/CSS/JavaScript Linxu命令行的使用 数据库的基本概念 项目简介 我们构建一个去中心化的(Decentralized)投票应用。利用这个投票应用, 用户可以在不可信(trustless)的分布环境中对特定候选人投票,每次投票都会被记录在区块 链上:   所谓去中心化应用(DApp:Dcentralized Application),就是一个不存在中心服务器 的

COMSOL金属氢化物-放氢过程

"层流"的出口设置压降函数,解决“找不到一致的初始值”问题,主要是一开始设置出口为1atm的话,压力场过渡太剧烈,不好找到初始解,要么就先算个稳态流场,这种也能求解。注:P0是根据实测PCT的插值曲线(函数名称为:p_iso)得到的,根据初始质量储氢量wtw0,和初始温度条件T0,然后根据函数p_iso(wtw0)*exp(-deltHd/R_const*(1/T0-1/303.15[K]))求解获得。若"初始步长"选择框不勾上,前面0~5s内的求解容易发散,然后求解失败。2、设置"达西定律"的。

qq_24800941的博客 1929

FreeRTOS --(15)信号量之概述

FreeRTOS 中使用信号量来做同步,信号量可以在任务中使用作为任务与任务间的同步,也可以在中断中使用(带 FromISR 的版本)中断与任务间的同步; 针对不同的应用场景,信号量分为两种: 1、二值信号量; 2、计数信号量; 1、二值信号量 1.1、Usage 顾名思义,二值信号量只有两个值:0 和 1;它用于简单场景下的任务与任务、中断与任务之间的同步,比如:一个任务,在等待某个资源到位后,才能够继续执行,在得到这个资源之前,它处于阻塞状态,假如一个中断来了,给出了这个资源,那么.

StephenZhou 6517

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 317

【电路设计】SERDES与pcie

明确通信接口需要达到什么样的数据速率、信号完整性以及系统中各个部件的互相作用。2.

数字人生 4563

系统安装(kuntaiR522 kvm安装)

鲲泰R522服务器kvm安装rocky

weixin_46396917的博客 1818

动态时间规整(Dynamic Time Warping,DTW):让时间序列分析不再枯燥和代码全分析

动态时间规整(DTW)是一种用于比较时间序列相似性的算法,特别适用于处理长度不同或时间轴不对齐的序列。本文介绍了DTW的核心概念,包括其通过非线性对齐解决时间扭曲问题的能力,以及在语音识别、金融分析等领域的应用。通过Python代码示例,演示了如何计算两个模拟时间序列的DTW距离,并可视化最优对齐路径。结果显示,DTW能够有效捕捉序列间的相似模式,即使它们在时间轴上存在偏移或伸缩。该算法通过最小化累积距离来评估相似性,得分越低表明序列间相似度越高。

此星光明博客 160

人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】

摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字)

cdfunlove的博客 632

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 以太坊Dapp终极教程——如何构建一个完整的全栈去中心化应用(二)
下一篇: 区块链浏览器导航
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值