使用脚本与以太坊交互

作者: 流芳不待人 | 来源:发表于2018-04-03 22:19 被阅读133次

除了控制台外,以太坊还支持用脚本与geth交互。除了JS外,还支持Python、PHP Java等。

以太坊的交互方式

与以太坊的交互有好几种:

  • geth控制台
  • mist钱包
  • node命令行
  • node运行js脚本
  • php 、Python and so on

然而归根到底就分两种:在geth控制台中交互 或者 通过其他方式与geth交互。

geth集成了node的控制台,并且封装了web3.js的类库,用于操作本地的以太坊节点或与远程节点通信。因此js开发可以直接引用web3的类库。然后又陆续开发了其他语言的web3类库,相当于开放的sdk或者类库,只要引用就能用之与以太坊节点交互,交互对象就是geth提供的rpc服务。

geth本身支持rpcwebsocket等通讯方式,本文介绍的js使用的是rpc方式。

web3寓意web3.0,旨在为互联网更新换代,实现价值互联……真是雄心壮志

JS与geth交互

JS交互需要搭建node环境,尤其是环境变量的设置.参考 node环境搭建

geth内部集成了node的控制台,在以太坊上的操作大多数操作都是通过web3模块来进行的,按理说js与node的交互应当是水到渠成的。然而node的web3安装却磨难重重。

geth内部集成的web3是0.2版,但是npm 默认安装的是1.0版本的。1.0还没有release 所以不指定版本安装可能会出现各种各样的问题!

鉴于1.0各种安装出错,并且跟geth不一致,还是装0.2版本比较好。mac和win下都能正常安装,唯独linxu下麻烦不断。

最终发现linux下的web3要用普通用户进行全局安装,不能用root。 如果权限受限,要执行chmod 777 $NODE_PATH

#安装web3
npm intall -g web3@^0.20.1

#运行一个geth孤点 开启rpc和控制台
#如果不适用metamask部署而是直接部署,启动geth要去掉--nodiscover参数
geth --nodiscover console --rpc --rpcapi 'web3,eth,debug' --rpcport 8545 --rpccorsdomain '*'

web3成功的标志是:进入node控制台,能require到web3

编写 interact.js

//获取web3对象 
var web3 = require('web3')
web3 = new web3()
web3.setProvider( new web3.providers.HttpProvider('http://127.0.0.1:8545') )
var eth = web3.eth

//geth中自动操作了上面的步骤,所以如果在geth中直接可以使用web3和eth
//以下步骤在geth中操作和使用node执行js效果是一样的

var myAcc = eth.accounts[0] //用于部署合约的账户

//然后就可以使用 abi + bytecode 部署合约了
var abi = [{....}]
var bytecode = '0xsssssssssss'
var contractParam1,  contractParam2 //智能合约构造函数的参数

//可以生成部署的操作码 在用metamask广播部署
var contractCode = eth.contract(abi).new.getData(contractParam1, contractParam2, {
    from:myAcc, 
    data:bytecode
)

//有条件的可以直接部署。(有条件是指可以使用eth.getBalance()可以查到足够的余额)
var contract = eth.contract(abi).new(contractParam1, contractParam2, {
    from:myAcc, 
    data:bytecode
)

使用node执行该文件

$ node interact.js

更多API参考见 0.2版本文档

PHP与geth交互

php要7.1

Github:https://github.com/sc0Vu/web3.php

原文链接

相关文章

  • 使用脚本与以太坊交互

    除了控制台外,以太坊还支持用脚本与geth交互。除了JS外,还支持Python、PHP Java等。 以太坊的交互...

  • Web3与智能合约交互实战(附代码)

    在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程...

  • 以太坊开发(二十)Web3与智能合约交互实战

    写在前面 在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽...

  • Web3与智能合约交互实战

    写在前面 在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽...

  • NodeJs01

    一:DAPP 基于以太坊 开发语言:solidity 前台界面与用户进行交互,前台界面与以太坊进行,交互的语言是n...

  • 通过Web3.py和Infura在Windows中设置托管以太坊

    如果你想与以太坊区块链进行交互以获取最新区块的详细信息,可以使用以太网节点、本地节点或托管节点连接到以太坊区块链的...

  • 第三章 以太坊区块链交互机制

    第三章 以太坊区块链交互机制 本章主要介绍的内容是如何与以太坊区块链进行交互,包括JSONRPC与web3的介绍。...

  • 以太坊是什么?

    【以太坊】以太坊是一种包含图灵完备脚本语言的区块链。以太坊是一台区块链上的虚拟计算机,只要支付以太坊代币并编写脚本...

  • 以太坊交易的生命周期

    了解以太坊交易是如何生成并在网络中广播的 交易是以太坊区块链(或任何类似的区块链)的核心。在与以太坊区块链进行交互...

  • 以太坊的编程接口

    三种方式与区块链交互: JavaScript Console:在geth控制台与以太坊交互。 JSON-RPC:一...

网友评论

本文标题:使用脚本与以太坊交互

本文链接:https://www.haomeiwen.com/subject/ztchhftx.html