您正在查看: Ethereum-开源推荐 分类下的文章

web3j.ethCall 测试

package com.example.demo.test;

import com.example.demo.util.Constants;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.FunctionReturnDecoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.request.Transaction;
import org.web3j.protocol.core.methods.response.EthCall;
import org.web3j.protocol.http.HttpService;

import java.util.Arrays;
import java.util.List;

public class TransactionGetTest {

    public static void main(String[] args) throws Exception {
        Web3j web3j = Web3j.build(new HttpService()); // defaults to http://localhost:8545/

        /*
         * String name 函数名字
         * List<Type> inputParameters 入口参数
         * List<TypeReference<?>> outputParameters 出口参数
         */
        Function function = new Function("get",
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {
                }));

        // encode the function
        String encodedFunction = FunctionEncoder.encode(function);

        /*
         * String from null(optional)
         * String to 合约地址
         * String data ABI
         */
        EthCall response = web3j.ethCall(Transaction.createEthCallTransaction(null, Constants.ADDRESS, encodedFunction), DefaultBlockParameterName.LATEST).send();

        // get result
        List<Type> result = FunctionReturnDecoder.decode(response.getValue(), function.getOutputParameters());
        int data = Integer.parseInt(result.get(0).getValue().toString());
        System.out.println("data = " + data);
    }
}

https://github.com/zhangbincheng1997/Ethereum/blob/dda4509fca76157b28465b8449d8aae9a1ac9ef6/helloworld/src/main/java/com/example/demo/test/TransactionGetTest.java

以太坊观察者

https://github.com/HydroProtocol/ethereum-watcher

ethereum-watcher是用Golang编写的以太坊区块链的事件监听器。使用以太坊观察器,您可以监视和跟踪以太坊区块链上发生的当前或历史事件。

背景

与以太坊区块链交互的许多应用程序需要知道链上何时发生特定动作,但无法直接访问链上数据。ethereum-watcher充当应用程序和链之间的接口:从区块链收集指定的数据,以便应用程序可以与链上事件进行更无缝的交互。

特征

插件友好。您可以轻松地向以太坊观察者添加一个插件,以侦听任何类型的链上事件。
叉公差。如果发生派生,则将一条还原消息发送给订户。