量化合約系統開發 (參考版),量化合約開發策略原始碼方案
“合約ABI是以太坊生態系統中與合約互動的標準方式,不論是外部客戶端與合約的互動還是合約與合約之間的互動。”上述是以太坊官方文件給出的定義,更通俗的理解,包含兩方面內容:
ABI是合約介面的說明。
ABI定義與合約進行互動資料編碼規則
測試合約前提 - 合約系統開發:wwqqyy420
1、熟悉專案業務層邏輯
2、開發提供智慧合約介面文件
(1)、確認我們要在那個鏈上測試,讓開發提供對應的測試幣
(2)、提供測試地址(類似於web2的url)
(3)、提供最新合約地址(這個地址開發每次部署到鏈上都會變更)
(4)、提供ABI(合約介面的說明)如果開發不給可以在eth區塊鏈瀏覽器上獲得
(5)、我們自己測試錢包的秘鑰
智慧合約轉賬(單元指令碼)
from web3 import Web3, HTTPProvider
import json, os
rpc = "HTTP合約通訊地址(http url)"
address1 = "個人合約地址"
address2 = "智慧合約地址"
test_key = "個人錢包秘鑰地址"
連線錢包地址
web3 = Web3(HTTPProvider(rpc))
結果為true表示連線成功
connect = web3.isConnected()
print(connect)
轉賬
def transfer_eth(amount, gas_price=20, gas_limit=21000):
# 帶簽名的合約寫操作
params = {
# 傳送代幣地址 'from': address1,
# 接收代幣的地址 'to': address2,
# 代幣數量,以wei為單位,可以是字串和int型別 web3.toWei(數值,代幣單位)
# 為了方便調通程式碼,我們這裡用wei來做單位,正常都是用ether。
# 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei 'value': web3.toWei(amount, 'wei'),
# 每個在鏈上可以執行的命令都設定了一個消耗的gas值,例:PUSH操作需要消耗3個gas,一次轉賬一般要消耗21000 gas,gas使用ether來支付
# 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei, 無論您執行的命令是成功還是失敗,都需要支付計算費用
# 簡易理解:gas_limit 是一次交易中gas的可用上限 'gas': gas_limit,
# 透過gasPrice可以節省礦工費用,但也會減慢礦工打包的速度。因為,礦工會優先打包gas price設定高的交易,如果您想加快轉賬,您可以把gas price設定得更高,這樣您就可以插隊靠前
# 一次轉賬一般要消耗21000 gas,如果你設定的gas Price = 1000000000wei = 1Gwei,則此次轉賬的交易手續費為:TxFee = 21000 Gwei = 0.000021 ether
# A賬戶欲向B賬戶轉賬4 ether,則要求A賬戶至少要有 4 + 0.000021 = 4. 000021 ethrer
# 簡易理解:gasPrice就是你想用多少氣費進行交易,為什麼設定20,是因為當前市場價20就夠了。如果你有錢,想更快也可以設定成25甚至更高 'gasPrice': web3.toWei(gas_price, 'gwei'),
# 'nonce': web3.eth.getTransactionCount(主錢包地址),主要標記當前最新的交易號是多少,算是記錄在交易佇列中的位置 'nonce': web3.eth.getTransactionCount(address1),}# web3.eth.account.signTransaction用賬戶對交易簽名(轉賬需要的引數,from錢包地址的秘鑰)
signed_tx = web3.eth.account.signTransaction(params, private_key=test_key)# 交易傳送並獲取交易hash
tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction)return tx_hash
複製
print("執行轉賬後的交易hash值:", transfer_eth(100))
編寫單元測試指令碼
from web3 import Web3, HTTPProvider
import json, os
rpc = "HTTP合約通訊地址(http url)"
address = "智慧合約地址"
連線錢包地址
web3 = Web3(HTTPProvider(rpc))
結果為true表示連線成功
connect = web3.isConnected()
print(connect)
獲取ABI存放地址
filePath = os.path.dirname(__file__) + '/abi.json'
這裡是讀取我們們的abi合約介面規範,方便後面使用
with open(filePath, 'r') as f:
abi = json.load(f)
複製
官方文件:建立一個新的契約例項及其在json介面物件中定義的所有方法和事件
官方文件:該web3.eth.Contract物件可以輕鬆地與以太坊區塊鏈上的智慧合約進行互動。
個人理解:建立與合約互動的物件,連線完通訊地址後,我們對這地址簽訂合同,合同裡面有合約地址和介面規範(ABI)
web3.eth.contract(介面文件的合約地址, ABI介面規範)
contract = web3.eth.contract(address=address, abi=abi)
透過合約.功能.呼叫介面方法(傳引數).獲取返回值
contract.functions.介面方法名(引數1,引數2,引數3).call()
res = contract.functions.getLastMintInfo(10).call()
print("getLastMintInfo:", res)
獲取結果
mint智慧合約介面資料(單元指令碼)
from web3 import Web3, HTTPProvider
import json, os
rpc = "HTTP合約通訊地址(http url)"
address1 = "個人合約地址"
address2 = "智慧合約地址"
test_key = "個人錢包秘鑰地址"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029396/viewspace-2951375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 量化合約開發(專案)丨量化合約系統開發(方案詳細)丨量化合約系統原始碼版原始碼
- 量化合約開發功能版丨量化合約系統開發(策略詳細)丨量化合約跟單原始碼成熟原始碼
- 量化合約開發說明丨量化合約系統開發(方案及策略)及案例原始碼原始碼
- 量化合約開發(原始碼)丨量化合約系統開發(海外版)丨量化合約系統開發(多語言)原始碼
- 股票量化合約系統開發(方案設計)| 股票量化合約系統開發原始碼原始碼
- 量化合約開發運營版丨量化合約系統開發技術方案及原始碼原始碼
- 量化合約開發需求版丨量化合約系統開發(開發方案及邏輯)丨量化合約原始碼及功能分析原始碼
- 量化合約開發程式丨量化合約系統開發(方案及邏輯)丨量化合約成品原始碼部署原始碼
- 量化合約系統開發策略及規則丨量化合約現成原始碼案例版原始碼
- 合約量化/量化合約開發原始碼功能,量化合約/合約量化系統開發(開發策略)及案例詳情原始碼
- 量化合約及合約量化機器人系統開發(開發策略)丨量化合約原始碼部署機器人原始碼
- 量化合約系統開發(策略及規則)丨量化合約系統開發(詳情及原始碼)原始碼
- 量化合約丨合約量化開發原始碼版,合約量化丨量化合約系統開發(成熟案例)及詳細策略原始碼
- 量化合約開發原始碼丨量化合約系統開發(開發穩定版)及案例詳細原始碼
- YYDS量化合約系統開發《原始碼》部署方案原始碼
- 量化合約系統開發穩定版,量合約系統開發(成熟及案例)
- 量化合約系統開發(方案模式)|合約量化系統開發(原始碼搭建)模式原始碼
- 量化合約系統開發(原始碼)合約量化系統開發(技術方案)原始碼
- 量化合約策略系統開發/合約量化系統開發技術方案講解(成熟原始碼)原始碼
- Yes量化合約交易系統技術開發/原始碼/量化合約開發技術原始碼
- 量化合約系統開發(功能詳細)丨量化合約系統開發(策略及分析)
- 量化合約開發專案丨量化合約系統開發(開發案例)及原始碼邏輯原始碼
- 量化合約系統開發(專案方案),合約量化系統開發(原始碼技術)原始碼
- 量化合約跟單系統開發(開發平臺)丨量化合約跟單開發原始碼功能原始碼
- 量化合約系統開發(原始碼)合約量化系統開發(技術)原始碼
- 量化合約開發丨量化合約原始碼丨JAVA系統開發程式設計程式碼示例原始碼Java程式設計
- 數字貨幣量化合約/合約量化系統開發(開發策略)及案例原始碼原始碼
- 合約量化系統開發(開發策略及詳細)丨量化合約系統開發(開發原始碼及說明)原始碼
- Python量化合約系統開發技術,合約量化原始碼系統開發技術方案Python原始碼
- 量化合約交易系統開發
- 量化合約/合約量化/合約跟單系統開發(策略及詳細)案例原始碼原始碼
- 量化合約系統開發/現貨量化技術開發/量化合約系統開發功能詳情
- 量化合約系統開發技術案例(原始碼)丨合約量化系統開發解決方案(搭建)原始碼
- 量化合約跟單交易系統開發說明分析,量化合約跟單交易原始碼平臺開發原始碼
- 合約量化系統開發原始碼部署(功能版)量化合約系統開發技術流程詳細原始碼
- 量化合約系統開發丨合約量化系統開發原始碼丨合約量化系統開發技術Demo原始碼
- 量化合約原始碼開發技術/合約量化系統開發技術原始碼搭建程式原始碼
- 詳細分析:量化合約系統開發邏輯(Demo演示)合約量化原始碼系統開發功能方案原始碼