使用PHP开发以太坊代币与合约——使用公共节点

作者: 有丫 | 来源:发表于2019-08-23 23:09 被阅读0次

    前三篇写完后,因为公司变动,我顺势也就辞职了,然后出去逛了一个多月,现在终于有精力和时间继续完成本系列文章。
    为什么使用公共节点在第一篇中已经说明,现在常用的以太坊公共节点API有两个:

    1. ETHERSCAN
    2. INFURA

    一个是著名的,甚至能说是官方的以太坊区块浏览器,另一个是著名的以太坊API服务,metamask就是使用其API服务。

    具体文档分别可以查看https://etherscan.io/apishttps://infura.io/docs

    最常用的是Proxy API,几乎本地客户端提供的函数,这里都有对应的代理。

    具体的调用和封装我这里做的很简陋,github有etherscan较好的PHP实现API封装,大家可以参考,由于没有infura的实现,所以我这里并没有使用其他类库。

    简单的查询类API我这里就不一一说明,我只说eth_calleth_sendRawTransaction

    1. eth_call

    eth_call之所以调用麻烦,是因为这里需要对以太坊基础有点认识,调用合约函数和我们编程直接调用函数没有太大区别,至少需要传入函数名和对应的参数,这里需要对于函数名和参数进行编码,具体编码规则如下:

    1. 对于函数名按ABI格式做sha3,然后截取前十位,伪代码:
    substr(sha3('balanceOf(address))', 0, 10)
    
    1. 对于不同类型的参数,根据位置编码
    2. 拼接编码

    其实传入参数的编码在etherscan的交易页面是可以看到的:


    交易详情中对于参数的编码
    1. eth_sendRawTransaction

    eth_sendRawTransaction就是做交易了,只要需要支付以太坊手续费的调用,都需要使用eth_sendRawTransaction
    这里需要引入Transaction,索性github上有php的实现,这里引入就好。

    以太坊交易这里有不少坑,准备接下来一篇来说明,这里就不继续说下去。

    使用公共节点有不少好处,最大的好处应该是直接可以不使用服务端,私钥不过第三方应该是最保险的了。

    相关文章

      网友评论

        本文标题:使用PHP开发以太坊代币与合约——使用公共节点

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