NEXT社區 | 小課堂python
因爲近期NEXT社區加入不少新的小夥伴,有在校大學生,有對區塊鏈感興趣的傳統企業從業者。爲了更方便、更系統的讓NEXT社區的夥伴們瞭解NEO的技術知識,所以咱們開設了小課堂,每週3節,向你們普及NEO相關的知識要點!git
NEXT社區小課堂 | 第十四課github
NEO Python編譯器介紹(二)算法
本案例展現瞭如何添加數字,同時這也是一個可接受多個參數的智能合約案例(4)。區塊鏈
一、boa.tests.src.AddTest1.Main(a, b, c, d)[source]spa
參數:3d
a –code
b –對象
d –blog
c –
返回值:
本案例展現瞭如何建立與操做列表
一、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代幣。
將該文件編譯爲.avm格式後,需檢查其是否符合NEO區塊鏈上實施的的NEP-5代幣標準。
查看代幣標準議案NEP-5代幣標準議案:https://github.com/neo-project/proposals/blob/master/nep-5.mediawiki。
可經過如下步驟進行編譯:
fromboa.compiler import Compiler
Compiler.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虛擬機中實現的,所以這裏沒法查找其源。
一、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]
無參
區塊頭對象包含了全部區塊信息,但不包含交易數據。
一、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]
獲取區塊頭的版本號
區塊對象包含區塊中的交易數據
一、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]
返回區塊中包含的交易列表
帳戶對象表明區塊上的地址
一、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 -
動做對象用於在區塊鏈上註冊動做/事件監聽器
一、boa.blockchain.vm.Neo.Action.RegisterAction(event_name, *args)[source]
參數:
· event_name –
· args –
應用程序對象用於調用區塊鏈上的其餘合約
一、boa.blockchain.vm.Neo.App.RegisterAppCall(smart_contract_hash, *args, **kwargs)[source]
參數:
· smart_contract_hash –
· args –
· kwargs –
資產對象用於檢索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項目。
一、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)
聯繫咱們
微博:https://weibo.com/u/6724929880
官網:https://neonext.club/
QQ羣:612334080
電報:https://t.me/neonextop
twitter:https://twitter.com/NE0NEXT
掃碼關注NEO NEXT官方公衆號
獲取更多一手社區資訊
▼