Web3 详解

news2024/9/17 7:42:55

1. 使用 Web3 库

        Web3 是一个 JavaScript 库,可用于通过 RPC 通信与以太坊节点通信。 Web3 的工作方式是,公开已通过 RPC 启用的方法,这允许开发利用 Web3 库的用户界面,以便与部署在区块链上的合约进行交互。

        一旦 Geth JavaScript 控制台运行,就可以查询 Web3,如下图所示:

 

1.1 合约部署

        可以使用 Geth 部署简单的合约,并通过 Geth 提供的命令行界面 (控制台或附加) 与 Web3 进行交互。

        其次,将代码粘贴到 Remix IDE 后,它将如下图所示:

下图显示了 Web3 部署脚本:

显示了将 Web3 部署脚本粘贴到 Geth 控制台进行部署时的输出。还可以通过 Geth 日志进行验证,你将看到类似于以下内容的消息:

成功部署合约后,可以查询与此合约相关的各种属性。如下图所示,这包括合约地址和 ABI 定义等。

  

1.2 POST 请求

        可以通过 HTTP 上的 JSONRPC 与 Geth 进行交互。为此,可以使用 curl 工具。

1.3 HTML 和 JavaScript 前端

        网页可以提供更友好与合约进行交互的方式,因此可以考虑使用 HTML/JS/CSS 的网页中的 Web3.js 库与合约进行交互。

        可以使用任何 HTTP Web 甩务器来提供 HTML 内容,而 Web3.js 则可以通过本地 RPC 连接到正在运行的以太坊客户端 (Geth), 并为区块链上的合约提供接口。如下图所示:

2. 安装和使用 Web3.js

        只需发出以下命令,即可通过 npm 安装 Web3:

[admin@daolian ~]$npm install web3

现在,可以使用任何浏览器来通过 TCP 端口 7777 查看服务的网页,如下图所示.

 应该注意的是,此处显示的输出在浏览器的控制台窗口中.

3. 开发框架

        以太坊现在有各种开发框架。从上面讨论的示例中可以看出,通过手动方式部署合约可能会非常耗时,如果能够使用 Truffle 或类似框架(如 Embark),则可以使该过程简单、更快捷。我们选择 Truffle 是因为它拥有更活跃的开发者社区,并且是目前使用最广泛的以太坊开发框架。请注意,现在还没有 “最佳” 框架,因为所有框架都旨在提供简化开发、测试和部署的方法。

4. Truffle 应用示例

        前文简介绍过 Truffle, 本节将讨论 Truffle 的示例项目,该项目将演示如何使用 Truffle 来开发完整的去中心化应用程序。 

        我们将使用 Ganache 作为本地区块链来提供 Web3 接口.因此,你需要确保 Ganache 在后台运行并进行挖矿.在以下示例中,它有 5 个帐户,并在端口 7545 上运行.可以在 Ganache 的 SERVER(服务器) 选项中修改这些选项,如下图所示:

为了验证这一点, 可以在 Ganache 中显示交易的帐户列表,如下图所示: 

 

 还要注意的是,如下图所示,以太币已从帐户中被消耗掉.随着交易的运行,可以在 Ganache 中看到 BALANCE (余额) 更新.

这将显示类似于下图所示的输出.

这 打开 Web 浏览器并转到 http://localhost:8080,这将显示下图所示的输出.

这些交易将显示在 Ganache 上,如下图所示

 

6. 去中心化存储

        为了充分利用去中心化机制,除去中心化状态/计算(区块链)之外,还可以对存储和通信层也去中心化。

         传统上,Web 内容是通过集中式服务器提供服务,但也可以使用分布式文件系统来进行去中心化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

25届计算机专业选题推荐-基于python的线上拍卖会管理系统【python-爬虫-大数据定制】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的线上拍卖会管理…

Window下编译OpenJDK17

本文详细介绍Window下如何编译OpenJDK17,包含源码路径,各工具下载地址,严格按照文章中的步骤来操作,你将获得一个由自己亲手编译出的jdk。 一、下载OpenJDK17源码 下载地址:GitHub - openjdk/jdk at jdk-1735 说明&a…

碰撞检测 | 详解矩形AABB与OBB碰撞检测算法(附ROS C++可视化)

引言 在复杂的人工智能系统和机器人应用中,碰撞检测(Collision Detection)作为一项基础技术,扮演着至关重要的角色。无论是在自动驾驶车辆中防止车祸的发生,还是在机器人导航中避免障碍物,碰撞检测的精度和效率都直接决定了系统的可靠性和安全性。在游戏开发、虚拟现实、…

USART—串口通讯

USART—串口通讯 大纲 串口通讯协议简介STM32 的 USART 简介USART 功能框图USART 初始化结构体详解 具体案例 串口通讯协议简介 物理层 串口通讯的物理层有很多标准及变种,我们主要讲解 RS-232 标准,RS-232 标准主要规定了信号的用途、通讯接口以及…

SpringCache之本地缓存

针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。 CacheManger 描述 SimpleCacheManager 使用简单的Collection来存储缓存,主要用于测试 ConcurrentMapCacheManager 使用ConcurrentMap作为缓存技术&…

spring揭秘20-spring事务02-编程式事务与声明式事务管理

文章目录 【README】【1】编程式事务管理【1.1】使用PlatformTransactionManager进行编程式事务管理【1.2】使用TransactionTemplate进行编程式事务管理【1.3】基于Savepoint的嵌套事务 【2】声明式事务管理【2.1】基于xml的声明式事务【2.1.1】使用ProxyFactory(Pr…

【基础篇】应届毕业生必备:机器学习面试题指南【1】

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

【软件工程】软件开发模型

三、瀑布模型 四、几种软件开发模型的主要特点 题目 判断题 选择题 小结

房贷计算及比较

本博客主要介绍: 1. 等额本金计算公式 2. 等额本息计算公式 3. 对比两种还款方式 4. 本示例:贷款金额为35万, 期限12年,年利率4.9% 等额本金计算 import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams[font.sans-s…

day1 QT

作业 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口大小this->resize(1025,533);//固定窗口大小this->setFixedSize(1025,533);//设置窗口背景色,设置弧度//this->setStyleSheet("background-image:url(E:/…

JS_数据类型

一、JS的数据类型 数值类型 数值类型统一为 number,不区分整数和浮点数 字符串类型 字符串类型为 string 和JAVA中的String相似,JS中不严格区分单双引号,都可以用于表示字符串 布尔类型 布尔类型为boolean 和Java中的boolean相似,但是在JS的if语句中,非空字符串会被转换为…

SuperMap iManger 单个镜像更新流程

1. 下载镜像 docker pull registry.cn-beijing.aliyuncs.com/supermap/common-dashboard-api:11.1.1-240802-amd64 label 没区分架构,在 x64 环境 pull arm64 镜像 通过 --platformarm64 参数可以实现 docker pull mariadb:10.5.26 --platformarm64 # 指定拉取ar…

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &…

20240909 每日AI必读资讯

重磅!TIME揭榜2024全球AI 100人:奥特曼、黄仁勋、姚期智、王小川等上榜 - TIME正式揭晓了第二届100位最具影响力AI人物名单!「领导者」榜单中,有我们耳熟能详的OpenAI CEO Sam Altman、英伟达CEO黄仁勋。而字节跳动联合创始人兼C…

数据结构(邓俊辉)学习笔记】排序 7——希尔排序:Shell 序列 + 输入敏感性

文章目录 1.邮资问题2. 定理K3.逆序对 1.邮资问题 此前曾经讲到希尔排序在对矩阵逐列排序时所使用的算法本身未必需要十分高效,而更重要的是应该具有输入敏感的特性,因此我们更倾向于使用插入排序。那么背后的具体原因又当如何解释呢?这里的…

ubuntu16.04 vim使用中文出现乱编文档处理

问题现象 vim 编译文件时出现乱码问题 解决方法 1. 中文语言包安装: apt-get install language-pack-zh-hans 2. 配置环境变量:echo "export LC_ALLzh_CN.UTF-8" >>/etc/bash.bashrc 3. 修改当前环境的字符集 /etc/default/locale cat /etc/default/locale…

国内外网络安全政策动态(2024年8月)

▶︎ 1.《关于进一步加强智能网联汽车准入、召回及软件在线升级管理的通知》公开征求意见 8月1日,工业和信息化部装备工业一司联合市场监管总局质量发展局组织编制了《关于进一步加强智能网联汽车准入、召回及软件在线升级管理的通知(征求意见稿&#…

事务的原理

1. 什么是事务 事务就是一个包含多个步骤的事情,这些步骤要么都做好,要么都别做。 2. ACID 事务都跟ACID相关,注意这里说的是“相关”,而不是一定都“满足”。全都严格满足,是“刚性事务”,部分满足或一…

240908-Python代码实现6种与DBGPT-Knowledge-API的交互方式

A. Chat模式 # import asyncio # from dbgpt.core import ModelRequest # from dbgpt.model.proxy import OllamaLLMClient# clientOllamaLLMClient()# print(asyncio.run(client.generate(ModelRequest._build("qwen2:1.5b", "你是谁?"))))imp…

Debug-027-el-tooltip组件的使用及注意事项

前言: 这两天,碰到这个饿了么的el-tooltip比较多。这个组件使用起来也挺简单的,常用于展示鼠标 hover 时的提示信息。但是有一些小点需要注意。这里不再机械化的介绍文档,不熟悉的话可以先看一下: https://element-pl…