佛萨奇2.0智能合约系统开发(web3.0技术开发)丨佛萨奇2.0开发源码分析

简介: 区块链本质上是一个去中心化的分布式账本数据库,由多个服务器组成,不可更改和伪造,类似于银行系统,不同的是区块链可以使每个人手上都有这个账本,账本公开所有人都可以查看;

  公有链

  公有链(Public Blockchain)通常也称为非许可链(Permissionless Blockchain),公有链是区块链的一种,无官方组织及管理机构,无中心服务器,参与的节点按照系统规格自由接入网路、不受控制,节点间基于共识机制开展工作。

  公有链一般适合于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景,比特币和以太等就是典型的公有链。

  智能合约

  智能合约是在区块链中“实时”运行的小型程序,它使得区块链是可编程的,它提供了一个平台,开发人员可以在这个平台上,为区块链网络创建分布式应用程序。

  智能合约就是一段由EVM虚拟机执行的字节码,常都是由编译器负责把高级语言编译为字节码。当智能合约被编译成二进制文件后,被部署到区块链上。用户通过调用智能合约的接口,来触发智能合约的执行操作。EVM执行智能合约的代码,修改当前区块链上的数据(状态),被修改的数据,会被共识,确保一致性。

  智能合约主要是为了解决信任问题而产生的,由于智能合约存放在区块链,并且区块链不可抵赖,不能篡改,因此智能合约比现实中任何一个机构的公信力都强,而区块链的去中心化思想的最大优势就是解决了信任问题。

  但是如果智能合约出错后,可能会造成代币被盗或者消耗大量的gas,必须去修复错误,而修复bug只能重新部署合约,就会产生一个问题:原来的合约已经有很多人在使用,如果部署新的合约,老合约的数据就丢失。

  去中心化

  去中心化(Decentralized)的意思就是用户可以不通过Google、Facebook、微博等中介的服务访问互联网上的数据和信息,而是由个人自己拥有和控制互联网的各个部分。也就是说,在Web3上,开发者不需要在一个单独的服务器上建立和部署应用,也不用在一个单独的数据库中储存数据,极大降低了单点故障的风险。

  区块链是真正去中心化互联网的核心,它改变了数据存储和管理的方式,其独特的架构允许多个节点在没有一个集中的事实来源的情况下就数据集的当前状态保持一致。作为用户为去中心化执行而激活的自动执行代码,智能合约是加密难题的重要组成部分,这允许两方在彼此不知情的情况下进行价值转移。

  gas费用

  链上交易需要手续费,手续费被称为gas(汽油),gas是用于评估在区块链上执行特定操作所需的计算工作量的单位。

  gas只是一个抽象单位,它仅存在于以太虚拟机中,用户实际上总是在以太网络中使用ETH(以太币)进行交易。

  为什么要引入gas呢?

  以太虚拟机可以执行任意代码,但它也更容易受到halting problem的影响。halting problem是指从一个任意计算机程序的代码和输入来确定该程序是会结束运行,还是会永远继续运行。如果没有gas,用户就可以执行一个永远不会停止的程序,为了防止这种情况发生,以太引入了与每个操作相关的gas成本,这将防止程序处于永远运行的状态,最终使整个网络陷入停滞状态。

  DApp的基本架构图:

  主要分为三个部分:

  1、区块链以及本身提供的能力

  2、三方钱包等提供的能力

  3、我们要写的DApp部分----分为三个部分:

  (1)和EVM交互的合约层--solidity编写;(2)和合约层、钱包交互的交互层-web3js,其和Ajax类似,可以用来读取以太区块链,主要使用的JSON RPC和区块链进行通信,对区块链网络进行数据的读写操作;(3)前端代码业务层-vue、react等编写;DAPP可以使用

  开发dapp的步骤

  1、开发智能合约:一般使用solidity语言进行开发,选用以太合约、bsc合约等;

  2、部署智能合约:一般使用remix工具进行部署,先在测试环境中进行部署智能合约,申请对应的测试币;

  3、开发dapp前端:使用前端框架进行开发,前端设计到和钱包的连接、调用合约、数据查询等内容;

  环境搭建

  主要需要解决的问题是模拟链(毕竟真链上的操作都是要花钱的)、钱包和合约的问题;

  1、链可以用ganache进行模拟

  2、钱包用MetaMask

  3、solidity既然是一个编程语言,并且要跑再EVM上,那就有编写、编译、测试和调试的地方,这里推荐使用remix

  3.2.4部署和调用

  DApp在被调用之前需要先部署到以太上,主要分为部署和调用两部分;

  (1)部署

  一个DApp可以由多个智能合约组成,因此部署一个DApp也就是同时部署多个智能合约,那么部署一个智能合约的流程图如下:

  智能合约使用RPC调用以太的钱包、Web3.js等工具;

  Web3.js将合约部署到以太中的Solc编译器中;

  编译器将编译后的字节码返回;

  将合约字节码以及相关参数发送到以太的节点中;

  以太部署节点后返回合约地址以及二进制接口(ABI)

  (2)调用

  部署好的合约可以进行调用,前端调用主要依赖MetaMask插件,前端的Web3 Provider是与特定的以太节点相连,可以直接使用

  web3.currentProvider调用,下图展示了前端调用合约的一般流程。

  智能合约:存在于区块链上的代码片段。它们在区块链内操作,且不可更改。

  节点/Web3提供者:要从区块链获取数据,需要节点或Web3提供者;节点运行区块链的副本。节点是web3开发人员栈的重要组成部分,因为没有节点,web3库就无法与智能合约交互。它们充当进入区块链领域的门户。

相关文章
|
24天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
125 45
|
2天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
14 6
|
5天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
19 2
|
19天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
33 1
|
22天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
22天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
40 1
|
25天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
35 2
|
25天前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
49 2
WK
|
25天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
44 0
|
26天前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
40 0
下一篇
无影云桌面