NEXT社區小課堂 | 第十四課:NEO Python編譯器介紹(二)

NEXT社區 | 小課堂python

因爲近期NEXT社區加入不少新的小夥伴,有在校大學生,有對區塊鏈感興趣的傳統企業從業者。爲了更方便、更系統的讓NEXT社區的夥伴們瞭解NEO的技術知識,所以咱們開設了小課堂,每週3節,向你們普及NEO相關的知識要點!git

 

 

NEXT社區小課堂 | 第十四課github

NEO Python編譯器介紹(二)算法

 


 

Python文件樣本

 

1、添加

本案例展現瞭如何添加數字,同時這也是一個可接受多個參數的智能合約案例(4)。區塊鏈

 

一、boa.tests.src.AddTest1.Main(a, b, c, d)[source]spa

參數:3d

a –code

b –對象

d –blog

c –

返回值:

 

2、列表

本案例展現瞭如何建立與操做列表

 

一、boa.tests.src.ArrayTest.Main()[source]

返回值:

 

二、boa.tests.src.ArrayTest.get_items_from_range(items, index)[source]

參數:

·  items –

·  index –

返回值:

 

三、boa.tests.src.ArrayTest.get_thing()[source]

返回值:

二元操做符

本案例展現瞭如何使用二元操做符

 

四、boa.tests.src.BinopTest.Main(a, b, c, d)[source]

參數:

a –

b –

d –

c –

返回值:

 

 

NEP-5代幣

 

本案例展現瞭如何生成NEP-5代幣。

 

將該文件編譯爲.avm格式後,需檢查其是否符合NEO區塊鏈上實施的的NEP-5代幣標準。

 

查看代幣標準議案NEP-5代幣標準議案:https://github.com/neo-project/proposals/blob/master/nep-5.mediawiki。

 

可經過如下步驟進行編譯:

fromboa.compiler import CompilerCompiler.load_and_save('./boa/tests/src/NEP5Test.py')

 

下方爲Python的編譯實現

 

一、boa.tests.src.NEP5Test.BalanceOf(account)[source]

某地址當前餘額數值的返回方法

參數:account (bytearray) ——需獲取餘額的帳戶地址

返回值:某地址的當前餘額

返回值類型:int

 

二、boa.tests.src.NEP5Test.CurrentSwapRate()[source]

NEO/NEP-5代幣的當前「費率」或兌換率計算方法

返回值:當前費率

返回值類型:int

 

三、boa.tests.src.NEP5Test.Decimals()[source]

NEP-5代幣小數點返回方法

返回值:NEP-5代幣的小數點

返回值類型:int

 

四、boa.tests.src.NEP5Test.Deploy()[source]

NEP-5代幣持有人將初始代幣部署至本身地址的方法

返回值:部署成功與否

返回值類型:布爾值

 

五、boa.tests.src.NEP5Test.DoTransfer(t_from, t_to, amount)[source]

將必定量的NEP-5代幣從一個帳戶轉至另外一個帳戶的方法

參數:

· t_from (bytearray) —— 轉出地址

· t_to (bytearray) ——轉入地址

· amount (int) ——待轉帳的NEP-5代幣量

 

返回值:轉帳成功與否

返回值類型:布爾值

 

六、boa.tests.src.NEP5Test.Main(operation, args)[source]

此處是智能合約的主要入口點

參數:

· operation (str) —— 待執行的操做 如 mintTokens、transfer等)

· args (list) ——可選自變量列表

返回值:顯示智能合約已成功執行

返回值類型:布爾值

 

七、boa.tests.src.NEP5Test.MintTokens()[source]

某地址將NEO存入NEP-5代幣持有者的帳戶以換取必定量的NEP-5代幣的調用方法

返回值:鑄幣成功與否

返回值類型:布爾值

 

八、boa.tests.src.NEP5Test.Name()[source]

NEP-5代幣名稱返回方法

返回值:代幣名稱

返回值類型:str

 

九、boa.tests.src.NEP5Test.Symbol()[source]

NEP-5代幣符號返回方法

返回值:代幣符號

返回值類型:str

 

十、boa.tests.src.NEP5Test.TotalSupply()[source]

流通中的NEP-5代幣總量數值返回方法

返回值:流通中的代幣總量

返回值類型:int

 

 

【交互操做】NEO區塊鏈

 

下列各操做的目的在於收集區塊鏈中包含的狀態數據。由於下列各項均是在NEO虛擬機中實現的,所以這裏沒法查找其源。

 

1、區塊鏈

 

一、boa.blockchain.vm.Neo.Blockchain.GetAccount(script_hash) →boa.blockchain.vm.Neo.Account.Account[source]

參數:script_hash -

 

二、boa.blockchain.vm.Neo.Blockchain.GetAsset(asset_id) →boa.blockchain.vm.Neo.Asset.Asset[source]

參數:asset_id -

 

三、boa.blockchain.vm.Neo.Blockchain.GetBlock(height_or_hash) →boa.blockchain.vm.Neo.Block.Block[source]

參數:height_or_hash -

 

四、boa.blockchain.vm.Neo.Blockchain.GetContract(script_hash) →boa.blockchain.vm.Neo.Contract.Contract[source]

參數:script_hash -

 

五、boa.blockchain.vm.Neo.Blockchain.GetHeader(height_or_hash) →boa.blockchain.vm.Neo.Header.Header[source]

參數:height_or_hash -

 

六、boa.blockchain.vm.Neo.Blockchain.GetHeight() → int[source]

無參

 

七、boa.blockchain.vm.Neo.Blockchain.GetTransaction(hash) →boa.blockchain.vm.Neo.Transaction.Transaction[source]

參數:hash -

 

八、boa.blockchain.vm.Neo.Blockchain.GetValidators() → [][source]

無參

 

2、區塊頭

區塊頭對象包含了全部區塊信息,但不包含交易數據。

 

一、boa.blockchain.vm.Neo.Header.GetConsensusData(header: boa.blockchain.vm.Neo.Header.Header) →bytearray[source]

獲取共識地址

 

二、boa.blockchain.vm.Neo.Header.GetHash(header: boa.blockchain.vm.Neo.Header.Header) →bytearray[source]

獲取區塊頭哈希值

 

三、boa.blockchain.vm.Neo.Header.GetMerkleRoot(header: boa.blockchain.vm.Neo.Header.Header) →bytearray[source]

獲取區塊中交易信息的默克爾根值

 

四、boa.blockchain.vm.Neo.Header.GetNextConsensus(header: boa.blockchain.vm.Neo.Header.Header) →bytearray[source]

獲取下一個共識發生的地址

 

五、boa.blockchain.vm.Neo.Header.GetPrevHash(header:boa.blockchain.vm.Neo.Header.Header) → bytearray[source]

獲取區塊鏈中上一個區塊頭的哈希值

 

六、boa.blockchain.vm.Neo.Header.GetTimestamp(header: boa.blockchain.vm.Neo.Header.Header) →int[source]

獲取區塊頭建立時間戳

 

七、boa.blockchain.vm.Neo.Header.GetVersion(header: boa.blockchain.vm.Neo.Header.Header) →int[source]

獲取區塊頭的版本號

 

3、區塊

區塊對象包含區塊中的交易數據

 

一、boa.blockchain.vm.Neo.Block.GetTransaction(block:boa.blockchain.vm.Neo.Block.Block, index:int)→ boa.blockchain.vm.Neo.Transaction.Transaction[source]

參數:

· block——包含該交易的區塊

· index——區塊中交易的指數

 

二、boa.blockchain.vm.Neo.Block.GetTransactionCount(block: boa.blockchain.vm.Neo.Block.Block) →int[source]

返回區塊中的交易數

 

三、boa.blockchain.vm.Neo.Block.GetTransactions(block:boa.blockchain.vm.Neo.Block.Block) → list[source]

返回區塊中包含的交易列表

 

4、帳戶

帳戶對象表明區塊上的地址

 

一、boa.blockchain.vm.Neo.Account.GetBalance(account, asset_id)[source]

參數:

· account –

· asset_id –

 

二、boa.blockchain.vm.Neo.Account.GetScriptHash(account)[source]

參數:account –

 

三、boa.blockchain.vm.Neo.Account.GetVotes(account)[source]

參數:account –

 

四、boa.blockchain.vm.Neo.Account.SetVotes(account, votes)[source]

參數:

· account -

· votes -

 

5、動做

動做對象用於在區塊鏈上註冊動做/事件監聽器

 

一、boa.blockchain.vm.Neo.Action.RegisterAction(event_name, *args)[source]

參數:

· event_name –

· args –

 

6、應用程序

應用程序對象用於調用區塊鏈上的其餘合約

 

一、boa.blockchain.vm.Neo.App.RegisterAppCall(smart_contract_hash, *args, **kwargs)[source]

參數:

· smart_contract_hash –

· args –

· kwargs –

 

7、資產

資產對象用於檢索NEO或GAS等本地資產信息

 

一、boa.blockchain.vm.Neo.Asset.Create(asset_type, name, amount, precision, owner, admin, issuer)[source]

參數:

· asset_type –

· name –

· amount –

· precision –

· owner –

· admin –

· issuer –

 

二、boa.blockchain.vm.Neo.Asset.GetAdmin(asset)[source]

參數:asset –

 

三、boa.blockchain.vm.Neo.Asset.GetAmount(asset)[source]

參數:asset –

 

四、boa.blockchain.vm.Neo.Asset.GetAssetId(asset)[source]

參數:asset –

 

五、boa.blockchain.vm.Neo.Asset.GetAssetType(asset)[source]

參數:asset –

 

六、boa.blockchain.vm.Neo.Asset.GetAvailable(asset)[source]

參數:asset –

 

七、boa.blockchain.vm.Neo.Asset.GetIssuer(asset)[source]

參數:asset –

 

八、boa.blockchain.vm.Neo.Asset.GetOwner(asset)[source]

參數:asset –

 

九、boa.blockchain.vm.Neo.Asset.GetPrecision(asset)[source]

參數:asset –

 

十、boa.blockchain.vm.Neo.Asset.Renew(asset, years)[source]

參數:

· asset –

· years –

 

 

【交互操做】執行引擎

 

下列各操做的目的在於收集NEO虛擬機當前運行狀態的參考數據。由於下列各項均是在NEO虛擬機中實現的,所以這裏沒法查找其出處。若欲瞭解具體實現方法,請參考neo-python項目。

 

1、方法

 

一、classboa.blockchain.vm.System.ExecutionEngine.ExecutionEngine[source]

未使用

 

二、boa.blockchain.vm.System.ExecutionEngine.GetCallingScriptHash()[source]

獲取腳本(智能合約)的哈希值,開始執行當前腳本

返回值:腳本(智能合約)的哈希值,開始執行當前腳本

返回值類型:bytearray

 

三、boa.blockchain.vm.System.ExecutionEngine.GetEntryScriptHash()[source]

獲取腳本(智能合約)的哈希值,開始執行智能合約

返回值:腳本(智能合約)的哈希值,開始執行智能合約

返回值類型:bytearray

 

四、boa.blockchain.vm.System.ExecutionEngine.GetExecutingScriptHash()[source]

獲取執行中的腳本(智能合約)的哈希值

· 該方法在NEO虛擬機內部實現

返回值:執行中的腳本(智能合約)的哈希值

返回值類型:bytearray

 

五、boa.blockchain.vm.System.ExecutionEngine.GetScriptContainer()[source]

返回當前執行智能合約的Script Container,它是boa.blockchain.vm.Neo.Transaction對象

返回值:當前執行智能合約的Script Container

返回值類型:boa.blockchain.vm.Neo.Transaction

 

 

原文出處:https://github.com/localhuman/neo-python

 

 

往期精彩內容

 

NEXT社區小課堂 | 第五課:NEO-共識算法dBFT源碼解析

NEXT社區小課堂 | 第八課:若是往錯誤的NEO地址轉帳會發生什麼

NEXT社區小課堂 | 第十課:如何正確理解NEO平臺上的GAS(NeoGas)

NEXT社區小課堂 | 第十一課:NEO中數字的表達和運算

 

 

  聯繫咱們  

微博:https://weibo.com/u/6724929880

官網:https://neonext.club/

QQ羣:612334080

電報:https://t.me/neonextop

twitter:https://twitter.com/NE0NEXT

 

掃碼關注NEO NEXT官方公衆號

獲取更多一手社區資訊

相關文章
相關標籤/搜索