1. 程式人生 > >區塊鏈程式設計一翻譯篇:web3j準備工作

區塊鏈程式設計一翻譯篇:web3j準備工作

準備工作

將最新版本的web3j加入到專案配置中

Maven

Java 8:

<dependency>
  <groupId>org.web3j</groupId>
  <artifactId>core</artifactId>
  <version>2.2.1</version>
</dependency>

Android:

<dependency>
  <groupId>org.web3j</groupId>
  <artifactId>
core-android</artifactId> <version>2.1.0</version> </dependency>

Gradle

Java 8:

compile ('org.web3j:core:2.2.1')

Android:

compile ('org.web3j:core-android:2.1.0')

啟動客戶端

如果已經啟動客戶端,則不需要再次啟動。
使用geth腳步進行啟動

$ geth --fast --cache=512 --rpcapi personal,db,eth,net,web3
--rpc --testnet

使用Parity啟動

$ parity --chain testnet

使用Infura提供的免費客戶端啟動

Web3j web3 = Web3j.build(new InfuraHttpService("https://morden.infura.io/your-token"));

請求傳送

使用Future傳送非同步請求

Web3j web3 = Web3j.build(new HttpService());  // defaults to http://localhost:8545/
Web3ClientVersion web3ClientVersion = web3.web
3ClientVersion().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();
    ...
});

傳送同步請求

Web3j web3 = Web3j.build(new HttpService());  // defaults to http://localhost:8545/
Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send();
String clientVersion = web3ClientVersion.getWeb3ClientVersion();

Android使用方式

Web3j web3 = Web3jFactory.build(new HttpService()); // defaults to http://localhost:8545/ ...

IPC

web3j同樣支援快速的IPC程序間通訊,可使用檔案套接字在同一個host上執行多個客戶端作為web3j。建立服務時使用相關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通訊在web3j-android中時不可用的。

Filters

web3j的響應式函式能夠很簡單的使觀察者通過事件去通知訂閱者,並記錄在區塊鏈中。
接受所有新的區塊並把它們新增到區塊鏈中。

Subscription subscription = web3j.blockObservable(false).subscribe(block -> {
    ...
});

接受所有新的交易並把它們新增到區塊鏈中。

Subscription subscription = web3j.transactionObservable().subscribe(tx -> {
    ...
});

接受所有已經提交到網路中的等待處理的交易。(它們必須分在同一個區塊中。)

Subscription subscription = web3j.pendingTransactionObservable().subscribe(tx -> {
    ...
});

如果你重置了所有的區塊到最新的,那麼將被隨後新建的區塊通知。

Subscription subscription = catchUpToLatestAndSubscribeToNewBlocksObservable(
        <startBlockNumber>, <fullTxObjects>)
        .subscribe(block -> {
            ...
});

一部分其他的交易和區塊可重置觀察,詳細描述可見 Filters and Events

主題過濾同樣被支援:

EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
        DefaultBlockParameterName.LATEST, <contract-address>)
             .addSingleTopic(...)|.addOptionalTopics(..., ...)|...;
web3j.ethLogObservable(filter).subscribe(log -> {
    ...
});

當訂閱不在需要時,訂閱應該被取消。

subscription.unsubscribe();

注意:filters在Infura中不支援。
需要了解更多有關過濾器和事件的資訊可以檢視Filters and EventsWeb3jRx 的介面

Transactions

相關推薦

區塊程式設計翻譯:web3j準備工作

準備工作 將最新版本的web3j加入到專案配置中 Maven Java 8: <dependency> <groupId>org.web3j</groupId> <artifactId>co

區塊學習基本知識

法律法規 現實社會 的人 blog 本質 驅動 延遲 方式 什麽是 一、什麽是區塊鏈 在符合現實社會法律法規前提下,可治理的,依賴於密碼學算法和博弈經濟性設計,基於共識算法,對發生在主體間的價值創造,價值轉移,價值交換,以及涉及到各個價值主體由機器驅動的業務流程,在多個對

區塊學習

次數 因此 技術 gpo 很多 進行 做了 怎麽辦 min 一、區塊鏈的本質 區塊鏈是什麽?一句話,它是一種特殊的分布式數據庫。 首先,區塊鏈的主要作用是儲存信息。任何需要保存的信息,都可以寫入區塊鏈,也可以從裏面讀取,所以它是數據庫。 其次,任何人都可以架設服務器,加入區

基於Java語言構建區塊)—— 基本原型

java 分布式 程序員 後端引言 區塊鏈技術是一項比人工智能更具革命性的技術,人工智能只是提高了人類的生產力,而區塊鏈則將改變人類社會的生產關系,它將會顛覆我們人類社會現有的協作方式。了解和掌握區塊鏈相關知識和技術,是我們每位開發人員必須要去做的事情,這樣我們才能把握住這波時代趨勢的紅利。 本文將基於Jav

什麽是區塊種新興的網絡傳輸體系;

分布式 特點 基於 ash 選擇 之間 合約 AS 其他 本人於三月底有幸入職區塊鏈公司;在這近三個月的學習中,對自身成長較大;也了解了關於區塊鏈的一些淺薄的知識,並且涉足web安全領域,總體來說這三個月還是比較充實和快樂的;區塊鏈(Blackchain)技術的生產發展離不

中國正攜區塊步新金融的大棋,深圳極可能成為落子的第一步

當眾人還在為加密貨幣的漲跌而喋喋不休時,中國已悄然攜區塊鏈下一盤關乎中國新金融新經濟的大棋,而深圳極有可能成為落子的第一步。   金融業務一直被視為區塊鏈技術的第一大應用,8月中旬以來,儘管監管層接連收緊了對加密貨幣的監管,但對區塊鏈在金融創新上的推動卻始終低調而急促,國

周歡:區塊波的牛市機會

今晚周歡受TB財經、token book和星鑑網的邀請在群裡進行了主題為《區塊鏈下一波的牛市機會》的分享。 雖然周歡本人不是特別在意牛熊的交替,也經常跟圈子裡的朋友說要珍惜熊市的機會抓緊時間多做事情。但是人終究是情緒的、利益的,很多人嘴上說著穿越牛熊、無問西東,身體卻在這漫漫熊市人困馬乏

區塊行業場不容錯過的年度評選 邀你一起尋找“全球改優秀專案”!

2018 年,極有可能成為區塊鏈應用落地元年。區塊鏈作為一項具有革命性的底層技術,在國家政策不斷支援的前提下,8月5日由中國通訊工業協會區塊鏈專業委員會發起的區塊鏈改革(鏈改)行動計劃,深獲區塊鏈企業、行業專家、學者、媒體等行業群體的認可。 “鏈改行動”計劃實施一個月以來,

10分鐘瞭解區塊程式設計

談起這幾年最熱的技術,一定少不了區塊鏈。按說新技術的出現本是稀鬆平常的事情,但區塊鏈的出現和發展,卻有那麼一點讓人不淡定:其一,區塊鏈的代表應用比特幣,其價格在這七八年間翻了上百萬倍。2010年有人花10000個比特幣買了兩塊披薩,在比特幣最高價位時,這兩塊披薩相當於近兩億美元。其二,因為區塊鏈專案的大熱,相

什麼是區塊文看懂區塊架構設計(附知識圖譜)

轉載:https://blog.csdn.net/u011961421/article/details/79098309 前言 區塊鏈作為一種架構設計的實現,與基礎語言或平臺等差別較大。區塊鏈是加密貨幣背後的技術,是當下與VR虛擬現實等比肩的熱門技術之一,

君叔區塊日記第61:搬磚,一個比特幣13萬

每天不管多忙都要抽出一個小時時間寫區塊鏈日記,我的文筆很爛,所以寫不出花言巧語的風采,用最土的寫作方式,記錄著每天所發生的。 這幾天沒有操作,說實話我的子彈已經打完了,這樣我就安心冬眠了,來年春天來臨的時候,我才會醒來,哈哈,這只是說說而已,哪有那麼安心啊,這個

君叔區塊日記第62:清華大學開始了法定數字貨幣實驗

我最喜歡的事不是別的,而是每天寫日記。寫日記不是寫文章,文章不是每天都要寫的,但是日記不一樣,每天都要寫,相比寫文章,更高了一個維度。 昨天晚上吃過飯,回到房子,已經是晚上11點多,沒來的及寫日記,一晚上都在心潮澎湃憧憬美好未來,今天我的內心非常平靜也非常開心,

君叔區塊日記第65:中關村搞區塊

炒幣這個事情,就像一門生意一樣。 所有的生意,表面上是生意。 其實背後就是人性。 和生意一點關係沒有。 你把人性搞懂了,基本上所有的生意你都不會做的太差,炒幣更不會差,因為我從不畫K線,這個圈賺大錢的哪個畫K線圖了。 很多新手看著“大咖”們畫著K線,興奮不已,殊

君叔區塊日記第64:冒險要冒值得冒險的幣

日記好比幣圈的新聞聯播,每天直播我一天的動態,包括工作,生活,感悟,最重要的當然還有幣圈賺錢。除了賺錢,我沒有別的愛好,但是我並不愛錢,我喜歡賺錢這個過程。 因為從無到有,能體現我的價值,我的能力,我的屌樣必須通過大量的金錢加以佐證,這樣可以證明我很牛逼。為什麼

區塊場始料未及的革命

  “當主流媒體還在忙於猜測加密貨幣價格及其黑市陰謀時,他們已經遺漏了這一切的本質事實。那就是,密碼學家們悄然發明了一套全新的技術原型。”   Unitimes特約作者Haseeb Qureshi在其文章《區塊鏈:一場始料未及的革命(Blockchain: the revolution

Golang實現區塊)—簡單區塊

隨著比特幣、以太坊等虛擬貨幣的越來越火,作為這些虛擬貨幣背後支撐的區塊鏈技術,也被越來越多的人提及。下面我們將使用go語言對區塊鏈進行探討,並實現一個簡易的區塊鏈,本文暫不涉及poW、poS等共識演算法。 通過本文,你可以做到: 瞭解區塊 Hash演算法

學習區塊)--我為什麼要學習區塊

2017年真的是概念頻發的一年,上半年人工智慧剛剛站穩腳跟,阿爾法狗擊敗各路圍棋高手更是將人工智慧送上了天,導致一直平靜的演算法界也出現了深度學習,但還不過幾個月,比特幣以一路飆升至2w美元將區塊鏈帶向了人們,作為程式設計師的我們自然是對它最敏感的,有很多朋友問

回顧區塊年 Bit-Z

十年畫江湖。還記得08年的中本聰比特幣白皮書發表,時至今日,竟也過了十個年頭。 2018年,區塊鏈跌宕起伏,幣圈從盛世狂歡再到砥礪前行,加密數字貨幣市場,正以最原始的方式進行著混亂向有序的洗牌和進化。 區塊鏈被稱為網際網路的第二次革命,在這個共享資源的時代,去中心化,將會是解決信用問

區塊程式設計開發初學者入門指南

我有很多問題需要了解區塊鏈Blockchain的工作原理。重要的是“我如何在其上構建應用程式dapp?”。花了幾個星期的時間挖掘,閱讀和試驗才最終了解。我找不到簡短而全面的指南。現在,我有一些不錯的理解,我想寫一個可以幫助別人的。這是一個快速指南,我只保留了重要的部分,以減少學習曲線。

區塊實戰

請問下 fabric 賬本 是不是分為idStore,BlockStore,VersionedDB,HistoryDB四種不同的DB,都是儲存在不同的blockfile中? 如果是的,後面的同步賬本是不是四個DB都要同步啊? 答:只有blockstore存在blockfile中,bloc