没有凭据的Web3j呼叫合同方法

时间:2018-11-28 11:21:27

标签: ethereum web3-java

已经在javascript(web3js)和c#(nethereum)中实现了相同的解决方案,并且它们都允许使用abi和已部署的合同地址加载智能合同。现在,我正在Java环境(web3j)中工作,并且要加载智能合约,我需要提供凭据。 我只想从合同中调用一些静态方法,而这些方法不需要凭据。如果没有合同,是否有任何解决方法来加载合同?这样,如果不提供凭据,我将无法向用户显示合同数据。

        MyContract contract = MyContract.load(
        "0x32b0138BD1b9527E95f141319ECF9B2765e06C00,
        web3,
        credentials,
        new BigInteger("22000000000"),
        new BigInteger("510000"));

1 个答案:

答案 0 :(得分:1)

由于您要执行的操作不需要任何Eth来执行,因此使用什么凭据都无关紧要。这样您就可以生成一个新的密钥对,并使用它。

Credentials dummyCredentials = Credentials.create(Keys.createEcKeyPair());

MyContract contract = MyContract.load(
    "0x32b0138BD1b9527E95f141319ECF9B2765e06C00",
    web3,
    dummyCredentials,
    new BigInteger("22000000000"),
    new BigInteger("510000")
);