真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中怎么監(jiān)聽以太坊交易

java中怎么監(jiān)聽以太坊交易,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、涿鹿ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的涿鹿網(wǎng)站制作公司

package com.bolenum.util;

import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util...;

import org.web3j.abi.EventEncoder;
import org.web3j.abi...
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol...;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;

import rx.Observable;
import rx.functions.Func1;

...

public final class Erc20TokenWrapper extends Contract {

    private static final String BINARY = "contract binary key";

    private Erc20TokenWrapper(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    private Erc20TokenWrapper(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public List getTransferEvents(TransactionReceipt transactionReceipt) {
        ...
        return responses;
    }

    public Observable transferEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
		...
	}

	...
	
    public Uint256 balanceOf(Address _owner) throws IOException {
        Function function = new Function("balanceOf", 
                Arrays.asList(_owner), 
                Arrays.>asList(new TypeReference() {}));
        return executeCallSingleValueReturn(function);
    }

	...
	
    public TransactionReceipt transfer(Address _to, Uint256 _amount) throws IOException, TransactionException {
        Function function = new Function("transfer", Arrays.asList(_to, _amount), Collections.>emptyList());
        return executeTransaction(function);
    }

    ...
   
    public static Erc20TokenWrapper load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new Erc20TokenWrapper(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static class TransferEventResponse {
        public Address _from;
        public Address _to;
        public Uint256 _value;
        public String _transactionHash;
    }
	
	...
}

現(xiàn)在你必須使用這個類函數(shù)來加載合約然后監(jiān)聽交易。使用下面的代碼加載和監(jiān)聽交易:

Web3j web3j = Web3j.build(new HttpService("url of your ethereum blockchain"))    
ClientTransactionManager transactionManager = new ClientTransactionManager(web3j,
                    "your deployed contract addess");
            Erc20TokenWrapper token = Erc20TokenWrapper.load("your deployed contract addess", web3j, transactionManager,
                    Contract.GAS_PRICE, Contract.GAS_LIMIT);
            token.transferEventObservable(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST)
                    .subscribe(tx -> {
                                   String toAddress = tx._to.getValue();
                                   String fromAddress = tx._from.getValue();
                                   String txHash = tx._transactionHash.getValue();
                               }

如果你已經(jīng)部署了合約,它由第三人部署,那么你可以直接使用我的包裝類,只需更改你可以從https://etherscan.io/tokens很容易獲得的二進制密鑰。

結(jié)論:因此你可以將此代碼用于任何token的監(jiān)聽交易。此代碼為你提供address,fromAddresstransactionHash。所以這些東西你可以根據(jù)你的要求使用,你可以將它們保存在你的數(shù)據(jù)庫中,或者你只保存地址是你的錢包地址的交易。

謝謝,我希望這會有所幫助。

如果希望快速進行web3j、java、以太坊開發(fā),那請看我們精心打造的教程: java以太坊開發(fā)教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j詳解。

這里是原文

完整代碼如下:

package com.bolenum.util;

import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;

import org.web3j.abi.EventEncoder;
import org.web3j.abi.EventValues;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.exceptions.TransactionException;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;

import rx.Observable;
import rx.functions.Func1;

/**
 * Auto generated code.
 * Do not modify!
 * Please use the web3j command line tools, or {@link org.web3j.codegen.SolidityFunctionWrapperGenerator} to update.  *  * 

Generated with web3j version 2.3.1.  */ public final class Erc20TokenWrapper extends Contract {     private static final String BINARY = "contract binary key";     private Erc20TokenWrapper(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {         super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);     }     private Erc20TokenWrapper(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {         super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);     }     public List getTransferEvents(TransactionReceipt transactionReceipt) {         final Event event = new Event("Transfer",                  Arrays.>asList(new TypeReference

() {}, new TypeReference
() {}),                 Arrays.>asList(new TypeReference() {}));         List valueList = extractEventParameters(event, transactionReceipt);         ArrayList responses = new ArrayList(valueList.size());         for (EventValues eventValues : valueList) {             TransferEventResponse typedResponse = new TransferEventResponse();             typedResponse._from = (Address) eventValues.getIndexedValues().get(0);             typedResponse._to = (Address) eventValues.getIndexedValues().get(1);             typedResponse._value = (Uint256) eventValues.getNonIndexedValues().get(0);             responses.add(typedResponse);         }         return responses;     }     public Observable transferEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {         final Event event = new Event("Transfer",                  Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}),                 Arrays.>asList(new TypeReference() {}));         EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());         filter.addSingleTopic(EventEncoder.encode(event));         return web3j.ethLogObservable(filter).map(new Func1() {             @Override             public TransferEventResponse call(Log log) {                 EventValues eventValues = extractEventParameters(event, log);                 TransferEventResponse typedResponse = new TransferEventResponse();                 typedResponse._from = (Address) eventValues.getIndexedValues().get(0);                 typedResponse._to = (Address) eventValues.getIndexedValues().get(1);                 typedResponse._value = (Uint256) eventValues.getNonIndexedValues().get(0);                 typedResponse._transactionHash = log.getTransactionHash();                 return typedResponse;             }         });     }     public List getApprovalEvents(TransactionReceipt transactionReceipt) {         final Event event = new Event("Approval",                  Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}),                 Arrays.>asList(new TypeReference() {}));         List valueList = extractEventParameters(event, transactionReceipt);         ArrayList responses = new ArrayList(valueList.size());         for (EventValues eventValues : valueList) {             ApprovalEventResponse typedResponse = new ApprovalEventResponse();             typedResponse._owner = (Address) eventValues.getIndexedValues().get(0);             typedResponse._spender = (Address) eventValues.getIndexedValues().get(1);             typedResponse._value = (Uint256) eventValues.getNonIndexedValues().get(0);             responses.add(typedResponse);         }         return responses;     }     public Observable approvalEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {         final Event event = new Event("Approval",                  Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}),                 Arrays.>asList(new TypeReference() {}));         EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());         filter.addSingleTopic(EventEncoder.encode(event));         return web3j.ethLogObservable(filter).map(new Func1() {             @Override             public ApprovalEventResponse call(Log log) {                 EventValues eventValues = extractEventParameters(event, log);                 ApprovalEventResponse typedResponse = new ApprovalEventResponse();                 typedResponse._owner = (Address) eventValues.getIndexedValues().get(0);                 typedResponse._spender = (Address) eventValues.getIndexedValues().get(1);                 typedResponse._value = (Uint256) eventValues.getNonIndexedValues().get(0);                 typedResponse._transactionHash = log.getTransactionHash();                 return typedResponse;             }         });     }     public Future name() throws IOException {         Function function = new Function("name",                  Arrays.asList(),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public TransactionReceipt approve(Address _spender, Uint256 _amount) throws IOException, TransactionException {         Function function = new Function("approve", Arrays.asList(_spender, _amount), Collections.>emptyList());         return executeTransaction(function);     }     public Future totalSupply() throws IOException {         Function function = new Function("totalSupply",                  Arrays.asList(),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public TransactionReceipt transferFrom(Address _from, Address _to, Uint256 _amount) throws IOException, TransactionException {         Function function = new Function("transferFrom", Arrays.asList(_from, _to, _amount), Collections.>emptyList());         return  executeTransaction(function);     }     public Uint8 decimals() throws IOException {         Function function = new Function("decimals",                  Arrays.asList(),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public Uint256 balanceOf(Address _owner) throws IOException {         Function function = new Function("balanceOf",                  Arrays.asList(_owner),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public Future
 owner() throws IOException {         Function function = new Function("owner",                  Arrays.asList(),                  Arrays.>asList(new TypeReference
() {}));         return executeCallSingleValueReturn(function);     }     public Future symbol() throws IOException {         Function function = new Function("symbol",                  Arrays.asList(),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public TransactionReceipt transfer(Address _to, Uint256 _amount) throws IOException, TransactionException {         Function function = new Function("transfer", Arrays.asList(_to, _amount), Collections.>emptyList());         return executeTransaction(function);     }     public Future allowance(Address _owner, Address _spender) throws IOException {         Function function = new Function("allowance",                  Arrays.asList(_owner, _spender),                  Arrays.>asList(new TypeReference() {}));         return executeCallSingleValueReturn(function);     }     public static RemoteCall deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue, Uint256 totalSupply, Utf8String tokenName, Uint8 decimalUnits, Utf8String tokenSymbol) {         String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(totalSupply, tokenName, decimalUnits, tokenSymbol));         return deployRemoteCall(Erc20TokenWrapper.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor, initialWeiValue);     }     public static RemoteCall deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue, Uint256 totalSupply, Utf8String tokenName, Uint8 decimalUnits, Utf8String tokenSymbol) {         String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(totalSupply, tokenName, decimalUnits, tokenSymbol));         return deployRemoteCall(Erc20TokenWrapper.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, encodedConstructor, initialWeiValue);     }     public static Erc20TokenWrapper load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {         return new Erc20TokenWrapper(contractAddress, web3j, credentials, gasPrice, gasLimit);     }     public static Erc20TokenWrapper load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {         return new Erc20TokenWrapper(contractAddress, web3j, transactionManager, gasPrice, gasLimit);     }     public static class TransferEventResponse {         public Address _from;         public Address _to;         public Uint256 _value;         public String _transactionHash;     }     public static class ApprovalEventResponse {         public Address _owner;         public Address _spender;         public Uint256 _value;         public String _transactionHash;     } }

關(guān)于java中怎么監(jiān)聽以太坊交易問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


分享文章:java中怎么監(jiān)聽以太坊交易
網(wǎng)頁URL:http://weahome.cn/article/gedpej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部