主页 > 苹果如何下载imtoken钱包 > 以太坊java_Java调用以太坊智能合约

以太坊java_Java调用以太坊智能合约

苹果如何下载imtoken钱包 2023-03-08 07:37:22

Web3j 允许 Java 开发人员轻松访问以太坊区块链并调用区块链上的智能合约。 今天我们将学习如何创建一个简单的命令行应用程序来访问区块链上的合约。

1.什么是web3j

Web3j 是一个开发工具包。 您可以使用该开发包快速实现对以太坊/Quorum节点的访问。 同时,您也可以使用它为智能合约文件生成相应的java包类,以便在Java应用程序中调用。

系统学习web3j开发,推荐汇知网在线互动教程:《Web3j以太坊开发详解》

2. 节点安装和智能合约部署

首先,我们需要搭建一个以太坊网络并部署智能合约。 您可以参考此 repo 并按照 README 说明来构建和部署智能合约。

要调用以太坊链上的合约,我们需要两个东西: 钱包私钥

合约地址

在区块链领域以太坊私钥怎么用,账户通常被称为钱包以太坊私钥怎么用,但这是一个容易混淆的名词。 有时钱包是指单个地址,有时是指包含多个地址的容器。 在本文中,钱包是指单个以太坊地址,

sitebihu.com 以太以太坊价格_以太坊私钥怎么用_以太坊私钥生成过程

ganache启动时会列出10个钱包地址及其对应的私钥。 示例:(0)11af9e9f87c53beedfe7eb3f1e9b6e2592b382ab3ecd83a92a6c20cb0c885f63

(1) 7cb8f9f70eac9aca70b514a9a8ebd36a3c2c4a9d28dc9534d6042914ed814161

(…)

在本教程中,我们将使用 0# 地址,即:11af9e9f87c53beedfe7eb3f1e9b6e2592b382ab3ecd83a92a6c20cb0c885f63

部署的合约也类似:2_deploy_contracts.js

=======================

部署“SimpleStorage”

————————->transactionhash:0x18f4dffba426a2cd63bddf5b8741f0708729515d178d59df0b2a43c5aa85e646>Blocks:0Seconds:0>contractaddress:0x3C4c39bd5a928bc19A981c85A00543EEB9f7C795>account:0x169C8C361e1CC394C3FFefa52FcaB91704cde2b2>balance:99.99147618(…)

以太坊私钥怎么用_sitebihu.com 以太以太坊价格_以太坊私钥生成过程

上面输出中,注意contract address部分,表示合约的部署地址,即:contract-address:0x3C4c39bd5a928bc19A981c85A00543EEB9f7C795

3. 智能合约相关工具安装

我们首先需要安装 solidity 智能合约编译器:$ npminstall-gsolc

然后从这里下载web3j命令行工具,解压并设置PATH环境变量,这样就可以在任意目录下调用了。

4.合约Java封装类

首先编译合约,生成java包类:$solc.sol–bin–abi–optimize-o/$web3jsoliditygenerate-b/path/to/.bin\

-a /path/to/.abi\

-o /path/to/src/main/java\

以太坊私钥生成过程_以太坊私钥怎么用_sitebihu.com 以太以太坊价格

-pcom.your.organisation.name

5.用Java代码调用合约

现在我们可以调用合约:publicclassApp{//changecontract-address

privatestaticStringcontractAddress=contract-address;//mainmethod

publicstaticvoidmain(String[]args){//实例化web3j

Web3jweb3=Web3j.build(新建

HttpService("http://localhost:9545/"));

Credentialscredentials=Credentials.create(wallet-address);//实例化合约

sitebihu.com 以太以太坊价格_以太坊私钥生成过程_以太坊私钥怎么用

SimpleStoragecontract = SimpleStorage.load(

contractAddress、web3、凭据、newDefaultGasProvider()

);//问好

System.out.println("Welcome"+credentials.getAddress());//与合约交互

尝试 {

BigIntegercurrentValue;//获取值

当前值 = 合同。 得到()。 发送();

System.out.println(currentValue.toString());//改变值

以太坊私钥生成过程_以太坊私钥怎么用_sitebihu.com 以太以太坊价格

contract.set(newBigInteger("1")).send();//获取值

当前值 = 合同。 得到()。 发送();

System.out.println(currentValue.toString());

}赶上(异常){

e.printStackTrace();

}

}

}

上述代码首先使用节点URL初始化Web3j实例,然后使用钱包地址私钥创建账户身份凭证对象,使用合约地址初始化合约,最后调用合约的方法。