JAvaクラスライブラリweb 3 j開発以太坊インテリジェント契約快速入門
9284 ワード
web 3 jの概要
web 3 jは、軽量レベル、高度なモジュール化、応答性、タイプの安全なJavaおよびAndroidクラスライブラリであり、イーサ坊スマート契約の処理、およびイーサ坊ネットワーク上のクライアント(ノード)との統合に使用される豊富なAPIを提供します.
Javaアプリケーションプラットフォームの統合コードを記述することなく、太坊ブロックチェーンの開発を行うことができます.
クイックスタート
迅速に起動するには、Web 3 j demoのサンプルプロジェクトがあります.Web 3 jによってイーサー坊を開発した多くのコアフィーチャーを示しています.イーサネットネットワークに接続するノード イーサー坊財布ファイル をロードは、1つのアドレスから別のアドレス にイーサドルを送信する.インテリジェント契約 をネットワークに導入導入されたインテリジェント契約から値 を読み出すは、導入されたスマート契約の値 を更新します.スマート契約によって記録されたイベントを表示する web 3 j入門
まず、最新バージョンのweb 3 jをプロジェクトにインストールします.
Maven
Java 8:
Android:
Gradle
Java 8:
Android:
クライアントの起動
イーサー坊クライアントを起動する必要があります.もちろん、起動したら再起動する必要はありません.
gethの場合はこのように起動します.
Parity起動の場合:
Infuraクライアントが提供する無料のクラウドサービスを使用する場合は、次のように起動します.
infuraをさらに知りたい場合は、Using Infura with web 3 jを参照してください.
ネット上でどのようにエーテル貨幣の関連ドキュメントを獲得するかは、testnet section of the docsを見ることができます.
Web 3 jインスタンスを必要としない場合、
リクエストの送信
同期要求の送信
CompletableFuture(Future on Android)を使用して非同期リクエストを送信
*RxJavaのObservableを使用
Androidの使い方に注意
IPC
Web 3 jはまた、ファイルソケットによるプロセス間通信(IPC)の高速実行をサポートし、クライアントが同じホスト上でWeb 3 jを同時に実行することをサポートする.サービスを作成する際には、
注意:IPC通信はweb 3 j-androidでは使用できません.
Javaパッケージによるイーサ坊インテリジェント契約
Web 3 jは、スマート契約コードを自動的にパッケージ化し、JVMから離れずにイーサ坊スマート契約の導入とインタラクションを行うことができます.
コードをパッケージ化するには、まずスマート契約をコンパイルする必要があります.
Web 3 jのコマンドラインツールでコードをパッケージ化します.
次に、スマート契約の新規作成と導入を行います.
または既存のスマート契約を使用します.
インテリジェント契約のインタラクションが可能になります.
インテリジェント契約の呼び出し:
パッケージに関する詳細はこちら:Solidity smart contract wrappers
Filters
web 3 jの応答関数は、観察者がイベントを介してメッセージ購読者に通知することを容易にし、ブロックチェーンに記録することができる.新しいブロックをすべて受信し、ブロックチェーンに追加します.
すべての新しいトランザクションを受信し、ブロックチェーンに追加します.
ネットワークにコミットされた処理待ちのすべてのトランザクションを受信します.△彼らはブロックの前に統一的に割り当てられた.
あるいは、すべてのブロックを最新の位置にリセットすると、新しいブロックがあるときに通知されます.
トピックフィルタリングもサポートされています.
必要がなくなった場合は、購読もキャンセルする必要があります.
注意:Infuraではfiltersはサポートされていません.
フィルタとイベントの詳細については、Filters and EventsとWeb 3 jRxのインタフェースを参照してください.
取引
Web 3 jは、イーサ坊財布ファイル(推奨)とトランザクションを送信するためのイーサ坊クライアント管理コマンドをサポートします.
イーサ財布ファイルを使用して、他の人にイーサコインを送信します.
あるいは、自分でカスタマイズした取引をしたいと思っています.
Web 3 jのTransferを使用してエーテル取引を行うのはずっと簡単です.
イーサー坊クライアントの管理コマンドを使用します(財布の鍵がクライアントに格納されている場合):
Parity’s PersonalまたはTrace機能、またはGeth’s PersonalクライアントAPIsを使用する場合は、
コマンドラインツール
web 3 jのjarパッケージは、各バージョンにコマンドラインツールを提供します.コマンドラインツールを使用すると、いくつかのコマンドでweb 3 jの機能を直接使用できます.ウォレット作成 財布パスワード管理 資金は財布から別の に移転した. solidityが作成したインテリジェント契約機能パッケージ コマンドラインに関する詳細については、ドキュメントを参照してください.
その他の詳細
java8 bulid: Web 3 jは、すべての応答タイプに対する安全なアクセスを提供する.オプションまたはnull応答java 8がサポートされています. 非同期要求パッケージはjava 8のCompletableFuturesにあります.Web 3 jは、すべての非同期要求を囲むパッケージングツールを提供し、実行中に廃棄するだけでなく、異常をキャプチャできることを保証する.完全検査ではサポートされていない異常が多いため、これらの異常は通常、検出されていない異常と判断され、検出プロセスに問題が発生します.詳細については、Async.run()とその関連testを参照してください.
Java 8のAndroidバージョンでは:パケット数はBigIntegersとして返されます.単純な結果については、 はまた、HttpServiceクラスおよびIpcServiceクラスに存在する
Web 3 jsは太坊インテリジェント契約を開発し、迅速に入門します.
エーテル坊の開発に興味がある場合は、いくつかのチュートリアルをインストールします.
1.ブロックチェーン初心者に適したイーサー坊DApp開発:イーサー坊dapp入門実戦2.ブロックチェーン、星間ファイルシステム(IPFS)、Node.jsとMongoDBでイーサー坊DApp電子商取引プラットフォームを構築:イーサー坊開発電子商取引プラットフォーム3.web 3 jチュートリアル、javaとAndroid Appでイーサー坊ブロックチェーンを開発するチュートリアル、web 3 j開発詳細解.
web 3 jは、軽量レベル、高度なモジュール化、応答性、タイプの安全なJavaおよびAndroidクラスライブラリであり、イーサ坊スマート契約の処理、およびイーサ坊ネットワーク上のクライアント(ノード)との統合に使用される豊富なAPIを提供します.
Javaアプリケーションプラットフォームの統合コードを記述することなく、太坊ブロックチェーンの開発を行うことができます.
クイックスタート
迅速に起動するには、Web 3 j demoのサンプルプロジェクトがあります.Web 3 jによってイーサー坊を開発した多くのコアフィーチャーを示しています.
まず、最新バージョンのweb 3 jをプロジェクトにインストールします.
Maven
Java 8:
org.web3j
core
3.4.0
Android:
org.web3j
core
3.3.1-android
Gradle
Java 8:
compile ('org.web3j:core:3.4.0')
Android:
compile ('org.web3j:core:3.3.1-android')
クライアントの起動
イーサー坊クライアントを起動する必要があります.もちろん、起動したら再起動する必要はありません.
gethの場合はこのように起動します.
$ geth --rpcapi personal,db,eth,net,web3 --rpc --rinkeby
Parity起動の場合:
$ parity --chain testnet
Infuraクライアントが提供する無料のクラウドサービスを使用する場合は、次のように起動します.
Web3j web3 = Web3j.build(new HttpService("https://morden.infura.io/your-token"));
infuraをさらに知りたい場合は、Using Infura with web 3 jを参照してください.
ネット上でどのようにエーテル貨幣の関連ドキュメントを獲得するかは、testnet section of the docsを見ることができます.
Web 3 jインスタンスを必要としない場合、
shutdown
メソッドを呼び出して使用するリソースを解放する必要がある.web3.shutdown()
リクエストの送信
同期要求の送信
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send();
String clientVersion = web3ClientVersion.getWeb3ClientVersion();
CompletableFuture(Future on Android)を使用して非同期リクエストを送信
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().sendAsync().get();
String clientVersion = web3ClientVersion.getWeb3ClientVersion();
*RxJavaのObservableを使用
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
web3.web3ClientVersion().observable().subscribe(x -> {
String clientVersion = x.getWeb3ClientVersion();
...
});
Androidの使い方に注意
Web3j web3 = Web3jFactory.build(new HttpService()); // defaults to http://localhost:8545/
...
IPC
Web 3 jはまた、ファイルソケットによるプロセス間通信(IPC)の高速実行をサポートし、クライアントが同じホスト上でWeb 3 jを同時に実行することをサポートする.サービスを作成する際には、
IPCService
を介さずに、関連するHTTPService
を使用することができる.// OS X/Linux/Unix:
Web3j web3 = Web3j.build(new UnixIpcService("/path/to/socketfile"));
...
// Windows
Web3j web3 = Web3j.build(new WindowsIpcService("/path/to/namedpipefile"));
...
注意:IPC通信はweb 3 j-androidでは使用できません.
Javaパッケージによるイーサ坊インテリジェント契約
Web 3 jは、スマート契約コードを自動的にパッケージ化し、JVMから離れずにイーサ坊スマート契約の導入とインタラクションを行うことができます.
コードをパッケージ化するには、まずスマート契約をコンパイルする必要があります.
$ solc .sol --bin --abi --optimize -o /
Web 3 jのコマンドラインツールでコードをパッケージ化します.
web3j solidity generate /path/to/.bin /path/to/.abi -o /path/to/src/main/java -p com.your.organisation.name
次に、スマート契約の新規作成と導入を行います.
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
Credentials credentials = WalletUtils.loadCredentials("password", "/path/to/walletfile");
YourSmartContract contract = YourSmartContract.deploy(
, ,
GAS_PRICE, GAS_LIMIT,
, ..., ).send(); // constructor params
または既存のスマート契約を使用します.
YourSmartContract contract = YourSmartContract.load(
"0x|", , , GAS_PRICE, GAS_LIMIT);
インテリジェント契約のインタラクションが可能になります.
TransactionReceipt transactionReceipt = contract.someMethod(
,
...).send();
インテリジェント契約の呼び出し:
Type result = contract.someMethod(, ...).send();
パッケージに関する詳細はこちら:Solidity smart contract wrappers
Filters
web 3 jの応答関数は、観察者がイベントを介してメッセージ購読者に通知することを容易にし、ブロックチェーンに記録することができる.新しいブロックをすべて受信し、ブロックチェーンに追加します.
Subscription subscription = web3j.blockObservable(false).subscribe(block -> {
...
});
すべての新しいトランザクションを受信し、ブロックチェーンに追加します.
Subscription subscription = web3j.transactionObservable().subscribe(tx -> {
...
});
ネットワークにコミットされた処理待ちのすべてのトランザクションを受信します.△彼らはブロックの前に統一的に割り当てられた.
Subscription subscription = web3j.pendingTransactionObservable().subscribe(tx -> {
...
});
あるいは、すべてのブロックを最新の位置にリセットすると、新しいブロックがあるときに通知されます.
Subscription subscription = catchUpToLatestAndSubscribeToNewBlocksObservable(
, )
.subscribe(block -> {
...
});
トピックフィルタリングもサポートされています.
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
DefaultBlockParameterName.LATEST, )
.addSingleTopic(...)|.addOptionalTopics(..., ...)|...;
web3j.ethLogObservable(filter).subscribe(log -> {
...
});
必要がなくなった場合は、購読もキャンセルする必要があります.
subscription.unsubscribe();
注意:Infuraではfiltersはサポートされていません.
フィルタとイベントの詳細については、Filters and EventsとWeb 3 jRxのインタフェースを参照してください.
取引
Web 3 jは、イーサ坊財布ファイル(推奨)とトランザクションを送信するためのイーサ坊クライアント管理コマンドをサポートします.
イーサ財布ファイルを使用して、他の人にイーサコインを送信します.
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
Credentials credentials = WalletUtils.loadCredentials("password", "/path/to/walletfile");
TransactionReceipt transactionReceipt = Transfer.sendFunds(
web3, credentials, "0x|",
BigDecimal.valueOf(1.0), Convert.Unit.ETHER)
.send();
あるいは、自分でカスタマイズした取引をしたいと思っています.
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
Credentials credentials = WalletUtils.loadCredentials("password", "/path/to/walletfile");
// get the next available nonce
EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(
address, DefaultBlockParameterName.LATEST).send();
BigInteger nonce = ethGetTransactionCount.getTransactionCount();
// create our transaction
RawTransaction rawTransaction = RawTransaction.createEtherTransaction(
nonce, , , , );
// sign & send our transaction
byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
String hexValue = Numeric.toHexString(signedMessage);
EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).send();
// ...
Web 3 jのTransferを使用してエーテル取引を行うのはずっと簡単です.
イーサー坊クライアントの管理コマンドを使用します(財布の鍵がクライアントに格納されている場合):
Admin web3j = Admin.build(new HttpService()); // defaults to http://localhost:8545/
PersonalUnlockAccount personalUnlockAccount = web3j.personalUnlockAccount("0x000...", "a password").sendAsync().get();
if (personalUnlockAccount.accountUnlocked()) {
// send a transaction
}
Parity’s PersonalまたはTrace機能、またはGeth’s PersonalクライアントAPIsを使用する場合は、
org.web3j:parity
およびorg.web3j:geth
モジュールを使用します.コマンドラインツール
web 3 jのjarパッケージは、各バージョンにコマンドラインツールを提供します.コマンドラインツールを使用すると、いくつかのコマンドでweb 3 jの機能を直接使用できます.
その他の詳細
java8 bulid:
Java 8のAndroidバージョンでは:
Response.getResult()
によって文字列タイプの数の結果を取得することができる.includeRawResponse
パラメータによって、生のJSONパケットを応答に配置することもできる.Web 3 jsは太坊インテリジェント契約を開発し、迅速に入門します.
エーテル坊の開発に興味がある場合は、いくつかのチュートリアルをインストールします.
1.ブロックチェーン初心者に適したイーサー坊DApp開発:イーサー坊dapp入門実戦2.ブロックチェーン、星間ファイルシステム(IPFS)、Node.jsとMongoDBでイーサー坊DApp電子商取引プラットフォームを構築:イーサー坊開発電子商取引プラットフォーム3.web 3 jチュートリアル、javaとAndroid Appでイーサー坊ブロックチェーンを開発するチュートリアル、web 3 j開発詳細解.