使用web3.js和infura开发以太坊智能合约

Infura来连接以太坊网络 阅读详情

Infura 提供公开的 Ethereum 主网和测试网络节点。到 Infura 官网申请,只要输入一点基本资料和 Email,就可以收到 API-key。

如果你希望立刻开始学习以太坊DApp开发,推荐这个教程:以太坊DApp实战开发入门。

查询合约状态

最常需要查询的状态就是 Token 的余额啦。我就用 EOS Token 合约做为范例试看看。

取得合约信息

可以透过 Etherscan,大部分知名的合约可以直接搜寻到:

etherscan

要呼叫合约,至少需要:

  • 合约地址,例如:0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0
  • 要呼叫的合约方法签名,例如以 ERC 20 Token 合约来说,查询余额要呼叫的 function 是 balanceOf(address) ,其对应的 function signature 是 70a08231 。

如何取得 function signature 呢? 以 balanceOf(address) 为例:

i. 把 balanceOf(address) 经过 sha3

0x70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be 
ii. 取除了 0x 外,前面的 8 位

70a08231 
以上流程可以用任何工具完成,以 web3.js 为例:

var functionSig = we3.sha3("balanceOf(address)").substr(2,8)

另外也可以把 contract code 贴到 Remix(编者注:可见文末链接)。在合约的 Details 中可以看到完整的合约接口和对应的 function signature。

function signature

使用 RPC

可以透过一个简单的 POST 用 Infura 提供的节点呼叫一个 RPC。有哪些 RPC method 可以看 Ethereum RPC doc。

Infura 简介 Infura 是一个 区块链基础设施即服务(BaaS, Blockchain as a Service),提供高可用性的 以太坊(Ethereum)节点和 IPFS 存储访问,让开发者可以轻松连接区块链网络,而无需自己运行和维护全节点。它由 ConsenSys 公司开发,广泛用于 DApp 开发、智能合约交互、交易广播 以及 去中心化存储。Infura 支持 Web3.js、ethers.js 以及 MetaMask,是 Web3 应用最常用的 RPC 提供商之一。 阅读详情

相关推荐

13、Web3开发:从智能合约安全到开发工具与节点服务

本文深入探讨了Web3开发的核心内容,涵盖智能合约的安全准则、最佳实践与常见漏洞防范,介绍了主流的Web3开发工具与技术栈,包括前端、中间层、后端及区块链API等。文章详细分析了以太坊客户端Geth的使用方法、运行节点的挑战与优势,并对比了Infura和Alchemy等节点即服务方案的优劣。最后总结了Web3开发的关键要点、未来趋势及学习建议,帮助开发者构建安全高效的去中心化应用。

jjj34的博客 72

Web3.js 与 Ethers.js 对比实战:如何优雅调用智能合约方法?

本文对比了Web3.js和Ethers.js两种主流JavaScript库在调用智能合约方法时的差异。Web3.js功能全面但体积较大,API较复杂,适合需要全面支持的开发者;Ethers.js则更轻量简洁,设计现代化,适合前端DApp开发。通过Storage合约示例,文章展示了两种库的安装、节点连接、合约调用方法(get读取和set写入),并对比了它们的优缺点。总体而言,Web3.js更适合传统复杂项目,而Ethers.js凭借其高效简洁正成为开发者的新选择。

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

web3-infura:使用Web3.js通过Infura.io与以太坊的Ropsten网络接口并调用智能合约方法

使用Web3.js和Infura的智能合约 Web3.js是一个库的集合,这些库使您可以使用HTTP或IPC连接与本地或远程以太坊节点进行交互。 在本练习中,我们将使用web3.js在以太坊Ropsten测试网上部署合约并进行使用。 我们将首先编译合同,进行部署,最后调用合同的某些功能。 为了使web3连接到Ropsten测试网,我们将使用Infura.io API作为我们的提供程序。 要求 节点v13.5.0 NPM v6.13.4 Solc v0.6.4 Web3 v1.2.6 安装 首先,在您的首选目录上创建一个新项目。 在目录中,打开一个终端并初始化NodeJS项目: $ npm init –y 之后,安装solc-js : $ npm install solc@0.6.4 最后但并非最不重要的, web3.js : $ npm install web3@1.2.6

walletconnect-test-wallet:测试钱包(网络)

钱包连接测试钱包 测试钱包(网络) 设置INFURA项目ID 要运行此项目,需要INFURA项目ID。 。 获得项目ID后,请按照以下步骤在文件.env.local设置环境变量。 REACT_APP_INFURA_PROJECT_ID=<your> 开发 npm run start 测试 npm run test 建造 npm run build

ClaudeCode 通过 CC Switch 配置 Ollama 本地大模型

本文介绍了如何让Claude Code使用本地免费模型qwen3.5:9b而无需Anthropic API Key的方法。主要内容包括:1)安装Claude Code、CC Switch代理工具和Ollama本地模型运行时;2)配置环境变量和设置文件将请求转发到本地服务;3)详细说明了系统架构和工作原理,展示请求如何从Claude Code经CC Switch代理到Ollama本地模型。该方案通过代理拦截和转发机制,实现了使用免费开源模型替代官方API的功能。

稚枭天卓 3222

车企常用架构、通信设计、需求管理工具全汇总

车辆技术是个系统工程,比较大,需要多人协作。“协作”往往需要工具参与,才能保证协作过程的高效、有条不紊。 【文章系转载,出处见图片水印】 今天我们就来捋一捋汽车行业常用的架构、网络开发工具~ Preevision 大名鼎鼎的Preevision,来自大名鼎鼎的Vector。 个人觉得,它是Vector公司最牛逼、最神秘、最高高在上的产品,犹如空谷回响、千里传音,但是很少看到它真正落地。 它最引以为傲的,或许是在给客户做介绍的时候,说“我们甚至能够精确到每一根线束的长度”,但是反观.

MaveDiao的博客 3491

PyCharm启动报错急救指南:3步定位.vmoptions文件位置(Win/Mac路径详解)

本文针对PyCharm启动失败问题,提供了一份详细的急救指南。核心在于精准定位并修复关键的.vmoptions配置文件。文章通过三步法详解了在Windows和macOS系统上查找该文件的具体路径,并分析了因新旧版本冲突、破解补丁残留或参数设置错误导致启动失败的常见场景及解决办法,帮助开发者快速恢复IDE的正常工作。

weixin_28835789的博客 702

TDISP(TEE Device Interface Security Protocol)软件操作流程

/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。

inquisiter 1436

第六章 汇川技术InoProShop入门之modbusTCP从站协议解读

摘要:ModbusTCP从站协议是Modbus协议在TCP/IP网络上的扩展,作为服务器端被动响应主站请求。它采用MBAP+PDU帧结构,通过IP地址和502端口实现网络通信,支持标准功能码(如读/写寄存器、线圈)。相比传统串行Modbus,具有高速传输、远距离通信优势。从站需解析请求、执行操作并返回响应,同时处理错误校验和并发连接。该协议广泛应用于智能传感器、PLC等工业设备,实现高效可靠的主从数据交互。

zyfucking2010的博客 1438

13、7自由度机械臂混合逆运动学算法解析

本文介绍了一种针对7自由度机械臂的混合逆运动学算法,通过引入额外参数Φ解决冗余自由度问题,并实现了避障、避免关节超限和扩大工作空间。该方法采用解析逆运动学求解策略,克服了机械臂在奇异位姿时的配置不连续性问题。通过对比实验验证了该算法在腕部关节角度连续性和位姿可达性方面的优越性,同时结合躯干逆运动学显著扩展了机械臂的工作空间。

rgv23456789的博客 237

Linux内核编程(十三)Input输入子系统

Input 子系统是 Linux 内核中专门为输入设备设计的一个子系统,它提供了一个通用的框架来管理各种输入设备,如键盘、鼠标、触摸屏、游戏手柄等。这个子系统的主要目的是简化和规范化输入设备驱动的开发,同时提高驱动的通用性和兼容性。(1)输入设备:如键盘、鼠标、触摸屏、游戏手柄等,它们是用户与计算机进行交互的主要方式。(2)输入设备驱动的复杂性:传统上,为每种输入设备编写驱动都需要创建文件、进行硬件初始化、实现文件操作函数集和处理中断等。每种设备的驱动可能都有许多重复性的工作。

qq_1033275663的博客 2866

【教程4>第3章>第1节】通信系统高阶调制解调概述

高阶调制(High Order Modulation)是一种先进的数字调制技术,旨在通过增加每个符号携带的信息比特数来提高无线通信系统的数据传输速率和频谱效率。这种技术特别适用于具有较高信噪比(Signal-to-Noise Ratio, SNR)的通信环境,例如卫星通信、光纤通信以及一些高质量的无线通信链路。在数字通信中,调制是将数字信号(比特流)转换为适合在物理信道上传输的模拟信号的过程。高阶调制通过使用更多的信号状态或星座点来表示不同的比特组合,从而在一个符号周期内传输更多的信息。

FPGA/MATLAB学习教程/源码/项目合作开发 1704

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台
下一篇: 以太坊私有链DApp开发环境搭建(二)
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值