買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > TRX > Info

DATA:Rust 和 Elixir 如何讀取以太坊和其他 EVM 智能合約:函數式編程和區塊鏈_ETH下載安裝

Author:

Time:1900/1/1 0:00:00

本系列將重點介紹兩種函數式編程語言:Rust&Elixir。本篇分享函數式編程的思想和實踐。

在這篇文章中將展示Elixir&Rust讀取以太坊智能合約的功能。重要的是,該程序不僅在以太坊上工作,而且還在任何支持EVM的區塊鏈上工作,例如,Polkadot上的Moonbeam!

Ethereumex&ExABI

我更喜歡Elixir的兩個存儲庫是Ethereumex:用于以太坊區塊鏈的ElixirJSON-RPC客戶端。

ExABI:Solidity的應用程序二進制接口(ABI)描述了如何將二進制數據轉換為Solidity編程語言能夠理解的類型。

ABI小貼士:

ABI(應用程序二進制接口)是計算機科學中兩個程序模塊之間的接口。

它與API(應用程序接口)非常相似,API是代碼接口的可讀表示形式。ABI定義了用于與二進制合約交互的方法和結構,就像API那樣,只是在更低的層次上。

.abi文件包含了json格式的函數接口和事件的描述。

這是HelloWorld.sol的示例ABI:

BitGo已與Prime Trust達成初步收購協議:金色財經報道,據知情人士透露,加密貨幣托管公司BitGo已與加密貨幣托管專家 Prime Trust達成初步收購協議。[2023/6/9 21:25:08]

,"name":"get","outputs":,"payable":false,"stateMutability":"view","type":"function"}]Ethereumex的配置

首先,讓我們將Ethereumex添加到mix.exs中的depsand應用領域!

#mix.exs:defapplicationdo},extra_applications:]end……defpdepsdoend然后,在config/config.exs中。將以太坊協議主機參數添加到配置文件中:

#config.exsconfig:ethereumex,url:"http://localhost:8545"#nodeurlTx結構

在Elixir中顯示

通過代碼很容易理解Elixir中的Struct。

以太坊的tx在Elixir中顯示:

Transaction{nonce:nonce,#countertoensurethesequenceoftxsgas_price:我們剛剛讀取了以太坊中的數據,因此隨機數是沒有用的。只有在我們把數據寫進合約的時候才需要更改隨機數。

Web3游戲公司Ambrus Studio獲得數百萬美元融資,估值高達6500萬美元:7月29日,據官方消息,Web3游戲初創公司Ambrus Studio宣布,其代幣融資已達數百萬美元,估值高達6500萬美元。這些資金將用于促進產品開發。此輪融資由Spartan Group、M13領投,CVP NLH、6th Man Ventures、Axia8、Krypital、Red Building Capital、Cobo、Bas1s Ventures等參投。另外,娛樂圈具影響力的明星Paris Hilton 參投,期望與Ambrus Studio共創可持續性的游戲生態。

據悉,Ambrus Studio由前拳頭游戲Riot Games亞太區 CEO-Johnson Yeh于2021年12月創立 ,旨在創建一個Free-to-play及強電競屬性的游戲及可持續的元宇宙生態系統。首款游戲《E4C:Final Salvation》希望打造成Web3游戲領域第一個融合電競元素的MOBA手游。[2022/7/29 2:45:10]

eth_call

立即執行一個新的消息調用,而不需要在區塊鏈上創建交易。

參數

Object-交易調用對象

from:DATA,20Bytes-(可選)交易發送的地址

to:DATA,20Bytes-交易被指向到的地址

MetaMask集成Gnosis Safe、Hex Trust、GK8和Parfin,以滿足DAO的加密托管需求:4月13日消息,Meta Mask機構部門Meta Mask Institutional(MMI)宣布將GnosisSafe、HexTrust、GK8和Parfin整合到其平臺上,以滿足DAO的加密托管需求。通過此次新的集成,MMI將擁有七名針對不同司法管轄區的DAO托管人。

2021年10月,MMI已添加BitGo、Qredo和Cactus Custody作為機構DeFi用戶的托管人,以幫助公司滿足合規要求。(coindesk)[2022/4/13 14:23:00]

gas:QUANTITY-(可選)為交易執行提供的gas整數。eth_call消耗零gas,但某些執行可能需要這個參數

gasPrice:QUANTITY-(可選)每一種付費gas使用的gasPrice的整數

value:QUANTITY-(可選)與該交易一起發送的值的整數

data:DATA-(可選)方法簽名和編碼參數的哈希值

QUANTITY|TAG-整數區塊號,或字符串"latest","earliest"或"pending",參見默認區塊參數

返回

DATA-已執行合約的返回值。

Crust網站升級,并正式推出Crust Grants:4月7日消息,Crust新版網站對內容板塊、風格設計等進行了優化升級,更好地提升用戶體驗。其中新增“Crust Grants(資助計劃)”板塊,鼓勵廣大開發者申請Crust Grants,共建Web3.0分布式云生態。Crust Grants為每位受助者提供最高價值30000美元的資助,以支持開發者在技術棧的細分領域進行開發,并獲得除資金外的技術和生態的支持。[2021/4/7 19:55:35]

例子

//Requestcurl-XPOST--data'{"jsonrpc":"2.0","method":"eth_call","params":,"id":1}'//Result{"id":1,"jsonrpc":"2.0","result":"0x"}gas的機制對新人不友好,所以我們現在可以設置gas_price和gas_limit為一個特定的數字:

在Rust中顯示

它是Rust中的一個類似結構:

///from:https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/lettx=TransactionRequest{from:accounts,to:Some(accounts),gas:None,//gaslimitgas_price:None,value:Some(U256::from(10000)),data:None,nonce:None,condition:None};現在我們應該處理tx的兩個參數:

動態 | Ethfinex Trustless成交量升至ETH DApp第一位:據DappRadar數據,當前ETH dapp共有1270個;EOS dapp共有197個;Tron dapp共有19個。

過去24小時成交量排名前三的ETH dapp分別為:Ethfinex Trustless(交易所,成交量4827個ETH,用戶10個);Etheroll(,成交量4370個ETH,用戶33個);IDEX(交易所,成交量3506個ETH,用戶848個)。

過去24小時成交量排名前三的EOS dapp分別為:BetDice(,成交量19208762個EOS,用戶2882個);Royal Online Vegas(,成交量1737297個EOS,用戶654個);Newdex(交易所,成交量1312256個EOS,用戶1331個)。[2018/12/9]

to&data。

地址的字符串到二進制

區塊鏈中使用的地址(如0x769699506f972A992fc8950C766F0C7256Df601f)可以在Elixir程序中轉換為二進制:

eth函數的字符串樣式抽象為"function_name(param_type1,param_type2,…)"

深入了解encode函數的實現是很好的!

defencode(function_signature,data,data_type\\:input)#stringtypeoffunctiontofunction_selector#thencallencodefunctionagainwithfunction_selectordefencode(function_signature,data,data_type)whenis_binary(function_signature)dofunction_signature|>Parser.parse!()|>encode(data,data_type)enddefencode(%FunctionSelector{}=function_selector,data,data_type)doTypeEncoder.encode(data,function_selector,data_type)endFunctionSelector的結構:

iex(5)>ABI.Parser.parse!("baz(uint8)")%ABI.FunctionSelector{function:"baz",input_names:,inputs_indexed:nil,method_id:nil,returns:,type:nil,types:}TypeEncoder.encode的工作是編譯數據,function_selector和data_type轉換為數據。

智能合約響應的翻譯器

在Elixir中編寫一個TypeTransalator將十六進制數據更改為普通數據用于智能合約的響應是好的:

defmoduleUtils.TypeTranslatordo……defdata_to_int(raw)doraw|>hex_to_bin()|>ABI.TypeDecoder.decode_raw()|>List.first()enddefdata_to_str(raw)doraw|>hex_to_bin()|>ABI.TypeDecoder.decode_raw()|>List.first()enddefdata_to_addr(raw)doaddr_bin=raw|>hex_to_bin()|>ABI.TypeDecoder.decode_raw()|>List.first()"0x"<>Base.encode16(addr_bin,case::lower)end……end我們要選擇的函數是基于響應的類型,我們可以在ABI中獲取它:

{"constant":true,"inputs":,"name":"get","outputs":,"payable":false,"stateMutability":"view","type":"function"}Elixir中的調用者

這是最后一步!只要把上面的功能混合在一起,智能合約的數據讀取就可以工作了!

例如:讀取ERC20代幣的余額:

=TypeTranslator.hex_to_bytes(addr_str)data=get_data("balanceOf(address)",){:ok,balance_hex}=Ethereumex.HttpClient.eth_call(%{#thetxisencapsulatedbyethereumex.data:data,to:contract_addr})TypeTranslator.data_to_int(balance_hex)endRust中的調用者

最后一個是調用以太坊的例子

externcratehex;usehex_literal::hex;useweb3::{contract::{Contract,Options},types::{U256,H160,Bytes},};#asyncfnmain()->web3::contract::Result<()>{let_=env_logger::try_init();lethttp=web3::transports::Http::new("https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161")?;letweb3=web3::Web3::new(http);letaddr_u8=hex::decode("7Ad11de6d4C3DA366BC929377EE2CaFEcC412A10").expect("Decodingfailed");letaddr_h160=H160::from_slice(&addr_u8);letcontra=Contract::from_json(web3.eth(),addr_h160,include_bytes!("../contracts/hello_world.json"),)?;//letacct:=hex!("f24ff3a9cf04c71dbc94d0b566f7a27b94566cac").into();letresult=contra.query::("get",(),None,Options::default(),None).await?;println!("{}",result);Ok(()。Source:https://hackernoon.com/how-rust-and-elixir-read-ethereum-and-other-evm-smart-contracts-functional-programming-and-blockchain

Tags:IONETHDATAATABrazil National Fan TokenETH下載安裝Streamr DATAcoindatabasex

TRX
WEB:觀點:Web3.0將為游戲世界帶來新的潮流_web3幣種

近年來,各種形式的游戲內部購買和微交易已經成為許多游戲的標準。從這些收益來源中獲得收入的免費游戲也越來越受歡迎,但許多玩家仍然對此持懷疑態度.

1900/1/1 0:00:00
虛擬幣:證券時報:盲目炒作已將 NFT 的真正價值帶偏_閃電比特幣LBTC為何不漲

9月11日,證券時報昨日發表題目為《盲目炒作已將NFT的真正價值帶偏》的文章稱,作為“元宇宙”的重要組成要素,NFT有獨特的價值,但目前各種花樣百出的炒作,已經將對NFT價值的關注方向帶偏.

1900/1/1 0:00:00
ENS:OpenSea八月Polygon鏈上交易額達到5170萬,創歷史新高_達普幣能存polygon錢包

據NiftyTabIe9月14日報道,OpenSea自年初在Polygon區塊鏈上完成NFT市場部署后交易額一直在上升,據最新數據顯示,八月份Polygon鏈上交易額達到5170萬美元.

1900/1/1 0:00:00
UNL:融資新聞丨區塊鏈公司Unlock完成400萬美元融資,由Betaworks等領投_blockchaininfo登不上

9月29日消息,區塊鏈創業公司Unlock宣布已經為創作者、開發者和在線社區的區塊鏈訂閱籌集了400萬美元。與其他區塊鏈公司一樣,Unlock使用NFT來驗證獨一無二的數字項目.

1900/1/1 0:00:00
USD:一文講透AC的元宇宙游戲Rarity(含教程)_INT

注:本文發表于9月6日 來源:微博@DFarm 近日,AC發布了他在Fantom上的游戲Rarity,昨晚熬夜奮戰到1點多,扒出來了游戲中不少的內容,這里跟大家分享一下.

1900/1/1 0:00:00
TIME:1分鐘售罄的《時代》雜志NFT銷售將Gas價格推高至近萬gwei,“先到先得”NFT鑄造模式再受爭議_PRIME

9月23日,美國《時代雜志》宣布了他們的NFT系列銷售計劃,名為TIMEPiece。該系列收藏了來自40位藝術家的4,676件作品.

1900/1/1 0:00:00
ads