没有凭据的Web3j调用合同方法
Web3j call contract method without credentials
已经在 javascript(web3js) 和 c#(nethereum) 中实现了相同的解决方案,它们都允许使用 abi 和已部署的合约地址加载智能合约。现在我在 java 环境 (web3j) 中工作,要加载智能合约,我需要提供凭据。
我只想从合同中调用一些不需要凭据的静态方法。如果没有它,是否有任何解决方法来加载合同?这样我就无法在不提供凭据的情况下向用户显示合同数据。
MyContract contract = MyContract.load(
"0x32b0138BD1b9527E95f141319ECF9B2765e06C00",
web3,
credentials,
new BigInteger("22000000000"),
new BigInteger("510000")
);
由于您要执行的操作不需要任何 Eth 来执行,因此您使用什么凭据来执行此操作并不重要。所以你可以生成一个新的密钥对,然后使用它。
Credentials dummyCredentials = Credentials.create(Keys.createEcKeyPair());
MyContract contract = MyContract.load(
"0x32b0138BD1b9527E95f141319ECF9B2765e06C00",
web3,
dummyCredentials,
new BigInteger("22000000000"),
new BigInteger("510000")
);
已经在 javascript(web3js) 和 c#(nethereum) 中实现了相同的解决方案,它们都允许使用 abi 和已部署的合约地址加载智能合约。现在我在 java 环境 (web3j) 中工作,要加载智能合约,我需要提供凭据。 我只想从合同中调用一些不需要凭据的静态方法。如果没有它,是否有任何解决方法来加载合同?这样我就无法在不提供凭据的情况下向用户显示合同数据。
MyContract contract = MyContract.load(
"0x32b0138BD1b9527E95f141319ECF9B2765e06C00",
web3,
credentials,
new BigInteger("22000000000"),
new BigInteger("510000")
);
由于您要执行的操作不需要任何 Eth 来执行,因此您使用什么凭据来执行此操作并不重要。所以你可以生成一个新的密钥对,然后使用它。
Credentials dummyCredentials = Credentials.create(Keys.createEcKeyPair());
MyContract contract = MyContract.load(
"0x32b0138BD1b9527E95f141319ECF9B2765e06C00",
web3,
dummyCredentials,
new BigInteger("22000000000"),
new BigInteger("510000")
);