web3.js

2023-11-09

 
安装

别按照官网上面 npm install web3 下载,我已经吃过一次亏了
npm init
npm install ethereum/web3.js --save
 
指令
web3.isConnected()  #检查结点的连接是否存在
web3.reset()  #重置web3
web3.sha3(string,options)  #加密
web3.toHex()  #将任何值转为hex
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
web3.net.peerCounnt  #连接节点的数量
web3.eth.defaultBlock  #默认地址
web3.eth.getBalance()
 

系统和软件

  • Ubuntu 16.04 64位
  • nodejs 6.10.0
  • npm 3.10.10

示例合约

本文以下面的MetaCoin合约为例,说明在应用中使用web3.js操作智能合约的方法。

// 本文中用到的MetaCoin合约
pragma solidity ^0.4.2;

contract MetaCoin {
   
	mapping (address => uint) balances;

	event Transfer(address indexed _from, address indexed _to, uint256 _value);

	function MetaCoin() {
   
		balances[tx.origin] = 10000;
	}

	function sendCoin(address receiver, uint amount) returns(bool sufficient) {
   
		if (balances[msg.sender] < amount) return false;
		balances[msg.sender] -= amount;
		balances[receiver] += amount;
		Transfer(msg.sender, receiver, amount);
		return true;
	}

	function getBalance(address addr) returns(uint) {
   
		return balances[addr];
	}
}

这个合约有三个函数:

  • MetaCoin:构造函数,在合约被部署到区块链时执行
  • getBalance:返回某账户的余额,它只读数据,不会修改数据
  • sendCoin:向另一个账户发送指定数量的MetaCoin,它会改变状态变量balances

启动一个以太坊节点,将上面的合约部署到区块链中,并记录下合约的地址,可以通过truffle部署,具体参考这篇文章。 接下来就可以按照下面的步骤在项目中通过web3.js来使用这个合约。

添加web3到项目中

首先新建一个Nodejs项目并初始化:

$ mkdir web3test && cd web3test
$ npm init</
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web3.js 的相关文章

  • NFTScan 与 Atem Network 在 NFT 数据领域达成战略合作

    近日 Web3 基础设施 NFTScan 浏览器与 Atem Network 协议达成战略合作伙伴关系 双方已在 NFT 数据领域展开深度了合作 Atem Network 是一个 Web3 社交平台 用户可以通过 NFT 创建 连接和拥有自
  • GRE隧道协议

    一 GRE协议简介 GRE General Routing Encapsulation 通用路由封装 是对某些网络层协议 如IP和IPX 的数据报文进行封装 使这些被封装的报文能够在另一网络层协议 如IP 中传输 此外 GRE协议也可以作为
  • 以太坊存储分析(整合)

    分析背景及概述 更加深入地了解以太坊的内部存储机制 更好地实现自己的区块链 存储是一个不能缺少的模块 但是存储又不是单一的数据保存 它涉及到了以太坊核心的编码 数据结构 中间还有缓存的部分 最后才通过leveldb 一种key value数
  • 测试中

    root ubu blockchain2 ll total 44 drwx 5 root root 4096 Aug 4 09 48 drwxr xr x 23 root root 4096 Jul 26 11 26 rw r r 1 ro
  • 以太坊的企业系统集成

    最流行的开源Java集成库 Apache Camel现在支持以太坊的JSON RPC API 以太坊生态系统 以太坊是一个开源 公共 区块链平台 用于运行智能合约 它提供了一个去中心化的图灵完备虚拟机 可以执行脚本和加密货币 用于补偿参与者
  • 以太坊的状态树 Merkle Patricia Tree

    Merkle Patricia Tree Merkle树 https www cnblogs com fengzhiwu p 5524324 html Merkle Tree 通常也被称作Hash Tree 顾名思义 就是存储hash值的一
  • 在区块链上开发可更新的智能合约

    由于区块链不可篡改的特性 智能合约一旦部署在区块链上 其执行的逻辑就无法再更改 长期来看 这个重要的特性反而限制了智能合约的弹性和发展 接下来要介绍如何设计及部署合约才能让合约在需要时可以更新 但这里的更新意思不是修改已经部署的合约 而是部
  • 以太坊源码学习(一)

    转载自 https blog csdn net karizhang article details 79110981 背景 geth源码一直在不断增加 优化 发展到现在已经非常庞大 第一次看geth源码 会有不小的难度 虽然如此 还是可以从
  • 认识一下以太坊、EOS和Hyperledger等不同的区块链

    不同的区块链智能合约和区块链技术现在风靡一时 越来越多的人出于某种原因试图进入这个神奇的世界 如果你是这项技术的新手并正在寻找基于区块链的开发平台的快速入门 那么本指南非常适合你 我们将重点关注和比较的平台是 Ethereum EOS Hy
  • Solidity中引入的SPDX是什么

    Solidity中引入的SPDX是什么 起因 Solidity 0 6 8 要求引入 SPDX 许可证 否则会出现警告 Warning SPDX license identifier not provided in source file
  • 区块链学习笔记16——以太坊中的交易树和收据树

    十六 以太坊中的交易树和收据树 每次发布一个交易的时候 那些交易会组织成一个交易树 也是一颗Merkle tree跟比特币中的情况是类似的 同时以太坊还增加了一个收据树 每个交易执行完之后会形成一个收据 记录这个交易的相关信息 交易树和收据
  • Hyperledger Fabric如何通过虚拟机部署以太坊智能合约

    EVM作为用户链代码安装到Fabric中 然后可以通过它部署智能合约 单个EVM链代码足以在通道上运行多个以太坊智能合约 链码不采用以太坊的共识方法 所有事务仍将遵循Fabric事务流中的执行 订单 验证步骤 确保在不同组织中的足够对等方安
  • 读取本地文件到读出p.node涉及的函数

    这里是读取本地文件的所调用的函数 func ParseNode rawurl string Node error if m incompleteNodeURL FindStringSubmatch rawurl m nil id err H
  • 搭建第一个Dapp应用(4)——搭建SmartDev-Scaffold——2021.5.3

    搭建第一个Dapp应用 4 搭建SmartDev Scaffold 一丶环境配置 Java gt JDK 1 8 Solidity 0 4 25 Git 下载安装包需要使用Git Gradle 大于6 小于7 使用gradle7会报错 二丶
  • 在一台电脑上用不同端口同步以太坊区块链节点

    首先要获取第一个节点的信息 在第一个节点的控制台中输入 gt admin nodeInfo enode 将输出的结果用鼠标操作复制 然后在第二个节点的JS控制台中添加第一个节点为静态节点 输入 gt admin addPeer 例如admi
  • 以太坊私有链搭建教程

    写在前面 写这个主要是为了记录下自己的学习过程 同时如果能帮助到同样想搭建私有链的朋友们 那是再好不过了 Step 1 环境搭建 私链搭建有三宝 环境 终端和钱包 我这里用到的是Geth客户端 所以环境当然就是指Go语言运行环境 Ether
  • 区块链开发之Solidity编程基础(一)

    Solidy是当前编写智能合约的主流语言 概要 sol文件结构 编译开发 引入其他文件 注释 代码注释 文档注释 合约 状态变量 类型 值类型 1 布尔类型 2 整型 3 地址 4 定长字节数组 5 有理数和整型字面量 6 枚举类型 7 函
  • Waffle使用初体验

    一 什么是Waffle Waffle是什么呢 我们直接看其文档上的介绍 Waffle is a library for writing and testing smart contracts Sweeter simpler and fast
  • 区块链技术实战学习路线图

    请大家前往深入浅出区块链主站 获取最新内容 本章的文章越来越多 本文是一个索引帖 方便找到自己感兴趣的文章 你也可以使用左侧的分类 标签及搜索功能 有新文章时会更新本文 建议大家加入收藏夹中 如果你觉得本站不错 欢迎你转发给朋友 引言 给迷
  • 初识区块链

    这篇博客主要从社会和经济层面来直白的向大家讲述区块链是什么 比特币是什么 分享的内容仅限于自己的理解 里面会存在本人的观点 但是希望读者能有自己的独立看法 审慎的阅读本文 甚至能考虑到我的认知不足导致的偏差 不为任何投资电子货币者提供意见

随机推荐

  • spring boot 项目从配置文件中读取maven 的pom.xml 文件标签的内容。

    需求 将pom xml 文件中的版本号读取到配置文件并打印到日志中 第一步 在pom xml 中添加以下标签 第二步 将version 标签的值读取到配置文件中 这里使用 而不是 是因为spring boot 无法识别配置文件中的 符号会导
  • 区块链倪老师:《区块链思维》第一章

    上回我在 区块链思维 序章中提到 从 零维思维 晋升到 一维思维 的过程就像是区块链接成链的过程 区块链由一串使用密码学算法产生的区块连接而成 每一个区块上写满了交易记录 区块按顺序相连形成链状结构 也就是区块链大账本 以比特币为例 矿工在
  • CCF CSP 201803-1 跳一跳 C++ (100分)

    include
  • 机器学习之过拟合欠拟合的理解

    过拟合与欠拟合的理解 一 什么是过拟合 欠拟合 1 过拟合 学习器把训练样本学得 太好了 很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质 这样就会导致泛化能力下降 这就是过拟合 换一种说法就是模型过度拟合 在训练集
  • 什么是JSX?

    JSX JavaScriptXML jsx是一种基于Ecmascript的一种新特性 是一种定义带属性树结构的语法 树结构就是我们的dom结构 属性就是dom节点中的属性 jsx不是xml或者Html 不是一种限制 在react中 我们可以
  • [docker]学习笔记-安装

    1 首先修改yum源为国内源 以阿里云为例 下载速度快 尤其时下载docker镜像的时候默认用国外源会非常慢 删除原有自带的yum源 下载阿里云yum源并移动到 etc yum repo目录下 root localhost etc wget
  • TP5-数据库查询左连接

    左连接 展示主表的所有数据 包括不匹配的哈 右连接 只展示左表匹配得上的数据 Db name test1 gt alias a gt join test2 b a id b id LEFT gt select 以上代码会展示出 test1
  • 5个困难的Python谜题

    5个困难的Python谜题 没有多少人能够解决 我挑战你 证明我是错的 这里有一个挑战 尝试解决以下5个Python编程谜题 而不需要在谷歌上寻找答案 魔术方块 魔术方格是一个包含数字1到9的3x3网格 每3个连续的数字 行 列或对角线 必
  • 【STM32】标准库 菜鸟入门教程(1)初识最小系统

    前言 本教程突出两个字 细 和 简 也就是详细跟简洁 所用知识涉及到的原理会详细讲明 再而 在排版以及描述上会采取简约风格 进行实例讲解的时候 包含图片过程以及文字过程两部分 因此适合小菜鸟入门 本次使用的是stm32f103c8t6也就是
  • VIM 快捷键(转)

    VIM快捷键 ctags 文件名 做索引 光标移动 四个方向 k h 0 l j ctrl f ctrl b 向下翻页 向上翻页 ctrl d ctrl u 向下半翻页 向上半翻页 移动行尾 0 移动行首 w 移动下一个词 b 移动到上一个
  • 树莓派Raspbian系统安装tesseract-ocr实现OCR

    第一步安装依赖 启动终端依次敲入命令 sudo apt get install g or clang presumably sudo apt get install autoconf automake libtool sudo apt ge
  • 基于matlab的dbn算法实现

    下载deeplearningtoolbox或者本人提交的zip文件包即可直接运行 command window运行以下程序 function test example DBN load mnist uint8 train x double
  • java毕业设计开题报告javaweb敬老院管理系统的设计和实现

    文末获取联系 一 项目介绍 javaweb基于Java的敬老院管理系统的设计和实现 该项目采用技术jsp servlet jdbc tomcat服务器 mysql数据库 项目含有源码 论文 配套开发软件 软件安装教程 项目发布教程 一 选题
  • Vue插槽

    Vue插槽 Vue的组件如何接受模板内容呢 在某些场景中 我们可能想要为子组件传递一些模板片段 让子组件在它们的组件中渲染这些片段 这时我们可以使用vue提供的插槽来实现 例子 父元素提供了一个模板
  • USB基本知识

    USB协议版本有USB1 0 USB1 1 USB2 0 USB3 0等 目前用的比较多的是USB2 0和USB3 0 1 USB2 0总线 USB2 0总线采用4芯的屏蔽线 一对差分线 D D 传输信号 另一对 VBUS 电源线 传输 5
  • Spring全家桶知识概括

    Spring全家桶知识概括 Springmvc与JS 拦截器与过滤器的区别 spring容器 spring MVC容器 web容器的区别 Filter与Servlet路径映射问题 Spring与JUnit SpringBoot测试与Mock
  • QCefView + QWebChannel + Vue 项目开发

    看到标题 你大概能猜到这篇我想讲述的是什么了 对的 将要同大家分享的是一种目前PC软件常见的开发方案 前言 1 桌面应用为什么要使用Vue等框架开发 而不再是Qt UI开发 界面开发我们使用java语言 通过Vue框架快速开发 好处不言而喻
  • 使用html2canvas实现HTML页面的echarts图表转成长图片

    import html2canvas from html2canvas downLoad url var oA document createElement a oA download 设置下载的文件名 默认是 下载 oA href url
  • 字符和字符串(4)——C# 截取字符串:简单易懂,小白教程

    几个经常用到的字符串的截取 string str 123abc456 int i 3 取字符串的前i个字符 str str Substring 0 i or str str Remove i str Length i 去掉字符串的前i个字符
  • web3.js

    安装 别按照官网上面 npm install web3 下载 我已经吃过一次亏了 npm init npm install ethereum web3 js save 指令 web3 isConnected 检查结点的连接是否存在 web3