❶ 以太坊如何使用web3.js或者rpc介面獲取交易數據交易時間與確認數
如果要查詢主網上的交易記錄,可以使用etherscan。但是,如果是你自己搭建的私鏈,應該如何查詢交易記錄呢?
答案是你需要自己監聽鏈上的日誌,存到資料庫里,然後在這個資料庫中查詢。例如:
varaddr=""
varfilter=web3.eth.filter({fromBlock:0,toBlock:'latest',address:addr});
filter.get(function(err,transactions){
transactions.forEach(function(tx){
vartxInfo=web3.eth.getTransaction(tx.transactionHash);
//這時可以將交易信息txInfo存入資料庫
});
});
web3.eth.filter()用來監聽鏈上的日誌,web3.eth.getTransaction()用來提取指定交易的信息,一旦獲得交易信息,就可以存入資料庫供查詢用了。
推薦一個實戰入門,你可以看看:以太坊教程
❷ 以太坊stratum協議原理
參照比特幣的 stratum協議 和 NiceHash的stratum協議規范 編寫了一版以太坊版本的stratum協議說明.
stratum協議是目前最常用的礦機和礦池之間的TCP通訊協議。
以太坊是一個去中心化的網路架構,通過安裝Mist客戶端的節點來轉發新交易和新區塊。而礦機、礦池也同時形成了另一個網路,我們稱之為礦工網路。
礦工網路分成礦機、礦池、錢包等幾個主要部分,有時礦池軟體與錢包安裝在一起,可合稱為礦池。
礦機與礦池軟體之間的通訊協議是 stratum ,而礦池軟體與錢包之間的通訊是 bitcoinrpc 介面。
stratum是 JSON 為數據格式.
礦機啟動,首先以 mining.subscribe 方法向礦池連接,用來訂閱工作。
礦池以 mining.notify 返回訂閱號、ExtraNonce1和ExtraNonce2_size。
Client:
Server:
其中:
是 訂閱號 ;
080c是 extranonce ,Extranonce可能最大3位元組;
礦機以 mining.authorize 方法,用某個帳號和密碼登錄到礦池,密碼可空,礦池返回 true 登錄成功。該方法必須是在初始化連接之後馬上進行,否則礦機得不到礦池任務。
Client:
Server:
難度調整由礦池下發給礦機,以 mining.set_difficulty 方法調整難度, params 中是難度值。
Server:
礦機會在下一個任務時採用新難度,礦池有時會馬上下發一個新任務並且把清理任務設為true,以便礦機馬上以新難度工作。
該命令由礦池定期發給礦機,當礦機以 mining.subscribe 方法登記後,礦池應該馬上以 mining.notify 返回該任務。
Server:
任務ID : bf0488aa ;
seedhash : 。每一個任務都發送一個seedhash來支持盡可能多的礦池,這可能會很快地在貨幣之間交換。
headerhash : 。
boolean cleanjobs : true 。如果設為true,那麼礦工需要清理任務隊列,並立即開始從事新提供的任務,因為所有舊的任務分享都將導致陳舊的分享錯誤。如果是 false 則等當前任務結束才開始新任務。
礦工使用seedhash識別DAG,然後帶著headerhash,extranonce和自己的minernonce尋找低於目標的share(這是由提供的難度而產生的)。
礦機找到合法share時,就以」 mining.submit 「方法向礦池提交任務。礦池返回true即提交成功,如果失敗則error中有具體原因。
Client:
任務ID : bf0488aa
minernonce : 6a909d9bbc0f 。注意minernonce是6個位元組,因為提供的extranonce是2個位元組。如果礦池提供3位元組的extranonce,那麼minernonce必須是5位元組
Server:
一般的礦機與礦池通訊過程就如下所示:
❸ 如何開發數字貨幣
謝邀~
為何要開發數字貨幣?從中央銀行的角度來看有6個好處:
第一、提升經濟交易活動的便利性和透明度
第二、降低傳統紙幣發行、流通的高昂成本
第三、更好地支持經濟和社會發展
第四、助力普惠金融的全面實現
第五、 減少洗錢、逃漏稅等違法犯罪行為
第六、提升央行對貨幣供給和貨幣流通的控制力
數字貨幣開發步驟:
第一步、
首先我們要從git 上下載某套區塊鏈體系的源碼,比如選擇比特幣的主幹代碼下載好
相關源碼。
同時准備好對應的編譯環境(C + +的建議在Linux)和安裝好對應開發環境和工具。
第二步、
代碼都是需要編譯的,因此需要准備編譯環境和工具,需要下載環境編譯工具、配
好系統環境變數, qt環境等文件,編譯命令在Itc源代碼里的文件里有詳細說明。
不過系統和開發環境的搭建、程序編譯等過程都比較繁瑣,不建議普通用戶自己製作。對於開發人員,第一次可能要預計2-3天的安裝配置時間。
第三步、
拿比特幣開發來說,他是Q的開發環境,下載好源碼並配置好環境後,在QtCreator內打開該比特幣核心的源碼,配置相關文件和編譯器,開始嘗試編譯比特幣核心的客戶端。
第四步、
改造成自己的數字貨幣,打開各個源文件,找到對應的地方調整參數即可,如調整
每個區塊出幣數,總產量,調整難度等等,然後就到最關鍵的點,就是改名為自己的幣名。
想怎麼取名就怎麼取名,別忘記在資源文件夾里替換掉相關圖標。如果一切順利,經過重新
編譯,你的新幣就順利發明了。
對於這個數字貨幣的開發,還是屬於技術比較專業的,因此最好有-個專業的團隊協助。
數字貨幣開發大致需要學習的框架:
1、搭建以太坊私鏈測試環境以及公鏈節點環境配置
2、以太坊中以太幣的交易、確認原理
3、以太坊中json rpc介面
4、以太幣轉賬與提現原理
5、伺服器對接以太坊公鏈介面,自有伺服器存儲業務數據,公鏈存儲交易可匿名數據
6、私鑰的安全處理
以下是開發的代碼示例:
舉例下市場上常用的數字貨幣錢包有:
APP類:kcash、imtokenweb:myEthereumWalletgoogle 瀏覽器插件:metaMask
其中最常用的就是imToken
區塊鏈交易技術概念:
讓我們來看看區塊鏈交易是如何以比特幣為例進行處理的。為了將一定數量的比特幣發送到另一個錢包,您需要以下信息:將資金發送到您的錢包的地址,您想要發送的加密貨幣數量
接收者的錢包的ID。
每筆交易都使用唯一的機密私人密鑰進行簽名。一旦付款由發件人簽署,它就變為公開可用。交易仍需要確認,以便收款人可以得到這筆錢為了確認交易,有必要生成一個新的鏈條塊。
這些塊是通過進行復雜的數學計算來找到唯一的密鑰而生成的。創建一個新塊需要10分鍾,找到該密鑰的人獲得一定數量的硬幣作為獎勵。一旦創建了鏈的新塊,就不可能將其從資料庫中刪除或以某種方式更改信息。因此,區塊鏈交易是最終且不可逆的。
數字貨幣的三大核心優點:
第一點、數字貨幣是公平的貨幣
數字貨幣沒有特定的發行機構,不是由某一國家發行的,僅僅是依靠特定演算法產生的,這就意味著無法通過操縱發行數量來操縱數字貨幣,因此數字貨幣是一種自由的、非國家的貨幣。
我們可以看到現在有許多國家是直接認可了虛擬貨幣,那麼有需求,就需要交易的平台。
我們現在許多想搭建虛擬貨幣交易平台的投資者,為什麼不能去這些地區搭建交易平台呢?搭建虛擬貨幣交易平台,這不就是一個很好的商機嗎?
第二點、數字貨幣的安全系數更高
紙幣的出現雖然方便了我們日常生活中的交易,但是會有被偷盜以及收到的風險。電子貨幣雖然可以避免這些風險,但是會出現諸如被盜刷、等新的問題。
數字貨幣則可以避免以上問題。並且將每一筆交易記錄在網路上進行廣播,是的所有節點都保存全部貨幣的流通信息,這樣任意一個節點在交易之前就可以輕易地發現貨幣的流通。
第三點、數字貨幣的交易可以實現匿名交易
由於沒有傳統銀行開戶和身份認證的過程,數字貨幣是純匿名的。雖然可以根據本地完整的交易記錄查詢到每個賬號的流水信息。
但卻無法知道這個賬號的主人是誰,同樣也沒有任何人有能力操縱他人賬號上的數字貨幣,這樣很好的保護了使用人的隱私。
如果您也在持有交易數字貨幣、外匯黃金原油、合約期貨: