成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

NEO Python編譯器介紹

Vicky / 2812人閱讀

摘要:編譯器介紹編譯器可將文件編譯為格式,在虛擬機(jī)中運(yùn)行。編譯器支持語言子集語言子集與的關(guān)系類似于蟒蛇與蟒屬的關(guān)系。

neo-boa編譯器介紹

neo-boa編譯器可將Python文件編譯為.avm格式,在Neo虛擬機(jī)中運(yùn)行。NEO虛擬機(jī)可在Neo區(qū)塊鏈上執(zhí)行合約。

編譯器支持Python語言子集(python語言子集與python的關(guān)系類似于蟒蛇與蟒屬的關(guān)系)。

目前功能

將Python語言子集編譯成.avm格式,在Neo虛擬機(jī)上運(yùn)行。
適用于Python3.4與3.5

未來功能

編譯更廣泛的Python語言子集
適用于Python3.6

已支持的Python功能

下文為目前支持的Python功能一覽。詳細(xì)介紹請(qǐng)參見boa.tests.src目錄中的案例。

流控制

If、Else、Elif、While、Break、Methodcalls、Lamdbas、for x in

用于整數(shù)運(yùn)算的算數(shù)運(yùn)算符與相等運(yùn)算符

ADD、SUB、MUL、DIV、ABS、LSHIFT、RSHIFT、AND、OR、XOR、MODULO、INVERT、GT、GTE、LT、LTE、EQ、NOTEQ

使用自定義內(nèi)置功能進(jìn)行列表創(chuàng)建。注意列表一經(jīng)創(chuàng)建,其長(zhǎng)度便不可更改。

from boa.code.builtins import list

·

· # this works

· x = list(length=10)

· x[3] = 84

·

· # this also works

· x = [1,3,65,23]

·

· # this does NOT work

· x = [ ]

· x.append(1)

·

支持列表(building slices)操作

· x = [1,2,46,56]

· y = x[1:3]

在可能的情況下,Python的某些__builtins__已經(jīng)根據(jù)NEO虛擬機(jī)的特點(diǎn)以自定義的方式實(shí)現(xiàn)

fromboa.code.builtins import range

·

· xrange = range(1, 30)

·

· # this also works

· fori in range(2, 21):

· i = i + 1

安裝 使用pip
pipinstallneo-boa復(fù)制代碼
手動(dòng)安裝

克隆存儲(chǔ)庫(kù),進(jìn)入項(xiàng)目目錄后創(chuàng)建Python3虛擬環(huán)境,并通過以下指令激活。

python3 -mvenvvenv復(fù)制代碼
sourcevenv/bin/activate復(fù)制代碼

或多帶帶安裝Python3.5

virtualenv -p /usr/local/bin/python3.5venv復(fù)制代碼
sourcevenv/bin/activate復(fù)制代碼

接著,通過以下指令安裝需求

pipinstall -rrequirements.txt復(fù)制代碼
基本用途

編譯器使用指南如下

fromboa.compiler import Compiler復(fù)制代碼
Compiler.load_and_save("path/to/your/file.py")復(fù)制代碼

參見

boa.compiler.Compiler

與其他模塊了解其他高級(jí)用途。

許可證

· 開源MIT (Github地址:/CityOfZion/neo-python/blob/master/LICENSE.md)

· 主作者為localhuman(Github地址:https://github.com/localhuman)

boa.compiler.Compiler

下文將介紹Compiler的具體實(shí)現(xiàn)細(xì)則。

classboa.compiler.Compiler[source]

主編譯器接口類

通過下列程序加載python文件,編譯為.avm格式,并與python文件存儲(chǔ)在一個(gè)地方。

fromboa.compiler import Compiler

Compiler.load_and_save("path/to/your/file.py")

#return the compiler object for inspection

compiler = Compiler.load("path/to/your/file.py")

#retrieve the default module for inpection

default_module = compiler.default

#retreive the default/entry method for the smartcontract

entry_method = default_module.main

default

取回默認(rèn)或“入口”模塊。

返回值:默認(rèn)反回值為boa.code.Module對(duì)象,異常時(shí)無返回值

staticinstance()[source]

取回當(dāng)前編譯器對(duì)象的實(shí)例(如有),否則創(chuàng)建一個(gè)實(shí)例

返回值:編譯器對(duì)象的單個(gè)實(shí)例

staticload(path)[source]

調(diào)用load來加載需編譯但無需寫為.avm格式的Python文件

參數(shù):path--Python文件的編譯路徑

返回值:編譯器實(shí)例

用途:通過下述程序返回編譯器對(duì)象進(jìn)行檢查

fromboa.compiler import Compiler

compiler = Compiler.load("path/to/your/file.py")

staticload_and_save(path, output_path=None)[source]

調(diào)用load_and_save來加載需編譯為.avm格式的Python文件,并保存結(jié)果。默認(rèn)情況下,最終生成的.avm文件將與源文件存儲(chǔ)在一個(gè)地方。

參數(shù)

· path——Python文件的編譯路徑

· output_path——已編譯的.avm文件的可選保存路徑

返回值:返回編譯器實(shí)例

用途:通過下述代碼返回編譯器對(duì)象進(jìn)行檢查

fromboa.compiler import Compiler

Compiler.load_and_save("path/to/your/file.py")

write()[source]

返回值:已編譯的Python程序的字節(jié)串

staticwrite_file(data, path)[source]

通過指定路徑將輸出數(shù)據(jù)存儲(chǔ)至文件系統(tǒng)

參數(shù)

· data——待寫入磁盤的數(shù)據(jù)字節(jié)串

· path——文件寫入路徑

boa.code.module.Module

下文將介紹Module的具體實(shí)現(xiàn)細(xì)則。

classboa.code.module.Module

(path, module_name="", is_sys_module=False, items_to_import=None)

[source]

模塊是包含代碼對(duì)象的頂層組件。例如,在path/to/my/file.py的編譯過程中,file.py中包含的項(xiàng)目即為模塊。一個(gè)可執(zhí)行項(xiàng)可包含多個(gè)模塊。上述案例中的“默認(rèn)”或“入口”模塊即為file.py。

調(diào)用Compiler.load_and_save("path/to/file.py")時(shí)會(huì)專門為file.py創(chuàng)建一個(gè)模塊。若

file.py

導(dǎo)入了其他任何功能,那些模塊也會(huì)被添加至可執(zhí)行項(xiàng)中,并置于Module.loaded_modules屬性中。

在模塊被當(dāng)做方法處理,方法被當(dāng)做基本塊處理,基本塊被處理為標(biāo)記后,主模塊或default模塊的write()方法即被調(diào)用,將可執(zhí)行項(xiàng)寫為字節(jié)串,返回磁盤并存儲(chǔ)。

如果您想檢查模塊內(nèi)容,可使用Compiler.load("path/to/file.py"),該功能將返回一個(gè)編譯器實(shí)例。獲取該實(shí)例后,您便可以訪問編譯器的default模塊,從而訪問該默認(rèn)模塊中裝入的其他模塊。

各模塊(以及各方法對(duì)象)均包含byteplay3對(duì)象bp的引用,該對(duì)象包含可在Python解釋器中顯示的指令集。

您可對(duì)具備bp屬性的任意對(duì)象調(diào)用print(module.bp.code),結(jié)果將輸出一段Python解釋器代碼。

>>> fromboa.compiler import Compiler
>>> module = Compiler.load("./boa/tests/src/AddTest1.py").default
>>> print(module.bp.code)

2 1 LOAD_CONST

2 LOAD_CONST "Main"

3 MAKE_FUNCTION 0

4 STORE_NAME Main

5 LOAD_CONST None

6 RETURN_VALUE

對(duì)可執(zhí)行項(xiàng)進(jìn)行處理與標(biāo)記化后,便會(huì)生成虛擬機(jī)標(biāo)記集,虛擬機(jī)標(biāo)記雖與byteplay3標(biāo)記相類似,但仍存在顯著區(qū)別。這些標(biāo)記均包含在該模塊的all_vm_tokens屬性中。

您可調(diào)用module.to_s()來查看該程序,因?yàn)樵摮绦蛞迅鶕?jù)NEO虛擬機(jī)的特點(diǎn)進(jìn)行了標(biāo)記化。

>>> module.to_s()復(fù)制代碼
4   31  LOAD_FAST       a       [data]復(fù)制代碼
    36  LOAD_CONST      2       [data]復(fù)制代碼
    37  BINARY_MULTIPL          [data]復(fù)制代碼
    38  STORE_FAST      a2      [data]復(fù)制代碼
6   45  LOAD_FAST       b       [data]復(fù)制代碼
    50  LOAD_CONST      1       [data]復(fù)制代碼
    51  BINARY_ADD              [data]復(fù)制代碼
    52  STORE_FAST      b2      [data]復(fù)制代碼
8   59  LOAD_FAST       c       [data]復(fù)制代碼
    64  LOAD_CONST      2       [data]復(fù)制代碼
    65  BINARY_TRUE_DIVIDE      [data]復(fù)制代碼
    66  STORE_FAST      c2      [data]復(fù)制代碼
10  73  LOAD_FAST       d       [data]復(fù)制代碼
    78  LOAD_CONST      1       [data]復(fù)制代碼
    79  BINARY_SUBTRACT         [data]復(fù)制代碼
    80  STORE_FAST      d2      [data]復(fù)制代碼
13  87  243             b""     [data] 
3   90  LOAD_FAST       a2      [data]復(fù)制代碼
    95  LOAD_FAST       b2      [data]復(fù)制代碼
    100 BINARY_ADD              [data]復(fù)制代碼
    101 LOAD_FAST       c2      [data]復(fù)制代碼
    106 BINARY_ADD              [data]復(fù)制代碼
    107 LOAD_FAST       d2      [data]復(fù)制代碼
    113 NOP                     [data]復(fù)制代碼
    113 NOP                     [data]復(fù)制代碼
    114 241                     [data]復(fù)制代碼
    115 242                     [data]復(fù)制代碼
    116 RETURN_VALUE            [data]
    復(fù)制代碼

add_method(method)[source]

在模塊中添加方法如下:

Parameters: method (boa.code.method.Method) ——模塊中待添加的方法對(duì)象

返回值:顯示是否已添加該方法

返回值類型:布爾值

build()[source]

將bp.code對(duì)象拆分成行,并合并多行,生成不同的項(xiàng)目。

link_methods()[source]

關(guān)聯(lián)各方法地址

main

返回該模塊的默認(rèn)方法

返回值:該模塊的默認(rèn)方法

返回值類型:boa.code.method.Method

method_by_name(method_name)[source]

在模塊的methods列表中查找方法名稱:param method_name:

待查找的方法名稱:typemethod_name: str

返回值:方法(如有)

返回值類型:boa.code.method.Method

module_path

返回該模塊的文件路徑

返回值:模塊路徑

返回值類型:str

orderered_methods

方法序列表

返回值:該模塊中的方法序列表

返回值類型:列表

process_action(lineset)[source]

處理模塊中的動(dòng)作,樣本如下,其目的類似于創(chuàng)建下列事件:

fromboa.blockchain.vm.Neo.Action import RegisterAction

#Register the action.

onRefund = RegisterAction("refund","to_address","amount")

#Dispatch an action.

onRefund(my_address,100)

參數(shù):lineset (list) – 包含應(yīng)用程序調(diào)用注冊(cè)功能的行集

process_import(import_item)[source]

處理該模塊中的導(dǎo)入語句

Parameters: import_item (boa.code.items.Import subclass) –

process_method(lineset)[source]

處理包含byteplay3代碼對(duì)象的行集

參數(shù):lineset (list) – 需處理與添加的行集

process_smart_contract_app_registration(lineset)[source]

在智能合約中調(diào)用另一個(gè)智能合約時(shí)處理智能合約應(yīng)用程序注冊(cè)事宜:

fromboa.blockchain.vm.Neo.App import RegisterAppCall

#register the contract

otherContract = RegisterAppCall("contract_hash","param1","param2")

#call the contract

result = otherContract(a,b )

參數(shù):lineset (list) – 包含應(yīng)用程序調(diào)用注冊(cè)功能的行集

split_lines()[source]

將模塊中的行集拆分成可編譯的對(duì)象集

to_s()[source]

該方法的目的在于以可讀/標(biāo)記化的格式打印可執(zhí)行項(xiàng)的輸出值,樣本如下:

>>> from boa.compiler import Compiler復(fù)制代碼
>>> module = Compiler.load("./boa/tests/src/LambdaTest.py").default復(fù)制代碼
>>> module.write()復(fù)制代碼
>>> module.to_s()復(fù)制代碼
12  3   LOAD_CONST  9   [data]復(fù)制代碼
    4   STORE_FAST  j   [data]復(fù)制代碼
22  11  LOAD_FAST   j   [data]復(fù)制代碼
    17  CALL_FUNCTION  Main..q_1[]                       [data] 復(fù)制代碼
     22   20  STORE_FAST  m   [data]復(fù)制代碼
24  27  243         b"" [data] 復(fù)制代碼
3   30  LOAD_FAST   m   [data]復(fù)制代碼
    35  NOP             [data]復(fù)制代碼
    36  241             [data]復(fù)制代碼
    37  242             [data]復(fù)制代碼
    38  RETURN_VALUE    [data]復(fù)制代碼
20  49  243         b"" [data] 復(fù)制代碼
3   52  LOAD_FAST   x   [data]復(fù)制代碼
    57  LOAD_CONST  1   [data]復(fù)制代碼
    58  BINARY_ADD      [data]復(fù)制代碼
    59  NOP             [data]復(fù)制代碼
    60  241             [data]復(fù)制代碼
    61  242             [data]復(fù)制代碼
 62  RETURN_VALUE    [data]復(fù)制代碼

write()[source]

將當(dāng)前模塊寫入字節(jié)串

:如果您使用的是Compiler.load("path/to/file.py"),執(zhí)行module.write()調(diào)用后方可對(duì)模塊進(jìn)行檢查。

返回值:代表當(dāng)前模塊的字節(jié)串

返回值類型:字節(jié)

write_methods()[source]

將當(dāng)前模塊的所有方法寫入字節(jié)串

返回值:該模塊中當(dāng)前存在的所有方法的字節(jié)串

返回值類型:字節(jié)

boa.code.method.Method

下文為Method的具體實(shí)現(xiàn)細(xì)則。

classboa.code.method.Method(code_object, parent, make_func_name=None)[source]

方法是主功能單元。

任何方法均可給多個(gè)自變量賦予0值,并返回1。

各方法包含的行數(shù)不同, boa.code.block.Block對(duì)象數(shù)也不同,意味著功能單元是互不相關(guān)的。

每行可被拆分為獨(dú)立的boa.code.pytoken.PyToken對(duì)象,這些對(duì)象即為Python解釋器使用的標(biāo)記。

之后,每行便可形成一個(gè)區(qū)塊。一個(gè)完整的區(qū)塊生成后,將經(jīng)歷一系列的處理進(jìn)程,最終將轉(zhuǎn)化為可被NEO虛擬機(jī)理解的語言。

區(qū)塊處理完畢后,我們可將其串聯(lián)在一起,并發(fā)送給VMTokenizer。

VMTokenizer負(fù)責(zé)將PyToken對(duì)象轉(zhuǎn)化為VMToken對(duì)象。

對(duì)方法進(jìn)行標(biāo)記化后,各標(biāo)記將在該方法內(nèi)生成地址。生成完整的地址后,將調(diào)用convert_jumps方法來判斷需跳轉(zhuǎn)的流控制操作(地址)。

args

返回該方法中的自變量列表

返回值:該方法的自變量列表

返回值類型:列表

code

返回byteplay3代碼對(duì)象

返回值:該方法的byteplay3代碼對(duì)象

返回值類型:byteplay3.Code

convert_jumps()[source]

轉(zhuǎn)換流控制項(xiàng)目中發(fā)生的跳轉(zhuǎn),如if、else、forloops、while loops及for breaks

firstlineno

獲取該方法的起始行號(hào)

返回值:起始行號(hào)

返回值類型:int

full_name

獲取該方法的全稱

返回值:該方法模塊的命名空間名稱

返回值類型:str

module

取回包含該方法的模塊

返回值:包含該方法的模塊

返回值類型:boa.code.module.Module

name

獲取該方法的名稱

返回值:該方法的名稱

返回值類型:str

print()[source]

打印該方法的byteplay3對(duì)象在python解釋器中的輸出值,并與boa.code.method.Method.to_dis()輸出值對(duì)比,您會(huì)發(fā)現(xiàn)兩者間微妙的區(qū)別。

輸出樣本

>>> method.print()復(fù)制代碼
      2   STORE_FAST    j復(fù)制代碼
      12  1 LOAD_CONST  9復(fù)制代碼
      14  4 LOAD_CONST  復(fù)制代碼
        5 LOAD_CONST  "Main..q"復(fù)制代碼
          6 MAKE_FUNCTION   0復(fù)制代碼
          7 STORE_FAST      q復(fù)制代碼
      22  9 LOAD_FAST       q復(fù)制代碼
          10 LOAD_FAST      j復(fù)制代碼
          11 CALL_FUNCTION  1復(fù)制代碼
          12 STORE_FAST     m復(fù)制代碼
      24  14 LOAD_FAST      m復(fù)制代碼
          15 RETURN_VALUE復(fù)制代碼

process_block_groups()[source]

獲取并處理當(dāng)前區(qū)塊(類似于方法中的行),以便區(qū)塊能被適當(dāng)?shù)貥?biāo)記化

read_initial_tokens()[source]

從byteplay3代碼對(duì)象中獲取初始標(biāo)記集,并將其轉(zhuǎn)化為區(qū)塊

read_module_variables()[source]

獲取所有模塊的global變量,并允許該方法訪問這些變量。

to_dis()[source]

打印該方法在python編譯器中的輸出值,并與boa.code.method.Method.print()的輸出值對(duì)比,您會(huì)發(fā)現(xiàn)兩者間微妙的區(qū)別。

>>> method.to_dis()復(fù)制代碼
  3       STORE_FAST    0 (j)復(fù)制代碼
 12     0 LOAD_CONST    1 (9)復(fù)制代碼
 14     6 LOAD_CONST    2 ()復(fù)制代碼
        9 LOAD_CONST    3 ("Main..q")復(fù)制代碼
        12 MAKE_FUNCTION   0復(fù)制代碼
        15 STORE_FAST      1 (q)復(fù)制代碼
 22     18 LOAD_FAST       1 (q)復(fù)制代碼
        21 LOAD_FAST       0 (j)復(fù)制代碼
        24 CALL_FUNCTION   1 (1 positional, 0 keyword pair)復(fù)制代碼
        27 STORE_FAST      2 (m)復(fù)制代碼
 24     30 LOAD_FAST       2 (m)復(fù)制代碼
        33 RETURN_VALUE復(fù)制代碼

tokenize()[source]

將boa.code.pytoken.PyToken對(duì)象集轉(zhuǎn)化為boa.code.vmtoken.VMToken對(duì)象。

total_lines

獲取該方法的總行(即區(qū)塊)數(shù)

返回值:總行數(shù)

返回值類型:int

total_module_variables

獲取局部變量總數(shù)

返回值:該模塊中的變量總數(shù)

返回值類型:int

vm_tokens

返回該方法中的虛擬機(jī)標(biāo)記列表

返回值:該方法中的虛擬機(jī)標(biāo)記列表

返回值類型:列表

write()[source]

將標(biāo)記器當(dāng)前的狀態(tài)寫為字節(jié)串

返回值:當(dāng)前標(biāo)記器的字節(jié)串

返回值類型:字節(jié)

Python文件樣本

添加
本案例展示了如何添加數(shù)字,同時(shí)這也是一個(gè)可接受多個(gè)參數(shù)的智能合約案例(4)。

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

參數(shù)

· a –

· b –

· c –

· d –

返回值:

列表
本案例展示了如何創(chuàng)建與操作列表

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

返回值

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

參數(shù)

· items –

· index –

返回值

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

返回值

二元操作符

本案例展示了如何使用二元操作符

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

參數(shù)

· a –

· b –

· c –

· d –

返回值

NEP-5代幣

本案例展示了如何生成NEP-5代幣。

將該文件編譯為.avm格式后,需檢查其是否符合NEO區(qū)塊鏈上實(shí)施的的NEP-5代幣標(biāo)準(zhǔn)。

查看代幣標(biāo)準(zhǔn)議案NEP-5代幣標(biāo)準(zhǔn)議案:https://github.com/neo-projec...。

可通過以下步驟進(jìn)行編譯

>>> fromboa.compiler import Compiler復(fù)制代碼
>>> Compiler.load_and_save("./boa/tests/src/NEP5Test.py")復(fù)制代碼

下方為Python的編譯實(shí)現(xiàn)

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

某地址當(dāng)前余額數(shù)值的返回方法

參數(shù):account (bytearray) ——需獲取余額的賬戶地址

返回值:某地址的當(dāng)前余額

返回值類型:int

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

NEO/NEP-5代幣的當(dāng)前“費(fèi)率”或兌換率計(jì)算方法

返回值:當(dāng)前費(fèi)率

返回值類型:int

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

NEP-5代幣小數(shù)點(diǎn)返回方法

返回值:NEP-5代幣的小數(shù)點(diǎn)

返回值類型:int

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

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

返回值:部署成功與否

返回值類型:布爾值

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

將一定量的NEP-5代幣從一個(gè)賬戶轉(zhuǎn)至另一個(gè)賬戶的方法

參數(shù)

· t_from (bytearray) —— 轉(zhuǎn)出地址

· t_to (bytearray) ——轉(zhuǎn)入地址

· amount (int) ——待轉(zhuǎn)賬的NEP-5代幣量

返回值:轉(zhuǎn)賬成功與否

返回值類型:布爾值

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

此處是智能合約的主要入口點(diǎn)

參數(shù)

· operation (str) —— 待執(zhí)行的操作 如

mintTokens

transfer

等)

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

返回值:顯示智能合約已成功執(zhí)行

返回值類型:布爾值

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

某地址將NEO存入NEP-5代幣持有者的賬戶以換取一定量的NEP-5代幣的調(diào)用方法

返回值:鑄幣成功與否

返回值類型:布爾值

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

NEP-5代幣名稱返回方法

返回值:代幣名稱

返回值類型:str

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

NEP-5代幣符號(hào)返回方法

返回值:代幣符號(hào)

返回值類型:str

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

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

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

返回值類型:int

【交互操作】NEO區(qū)塊鏈

下列各操作的目的在于收集區(qū)塊鏈中包含的狀態(tài)數(shù)據(jù)。因?yàn)橄铝懈黜?xiàng)均是在NEO虛擬機(jī)中實(shí)現(xiàn)的,因此這里無法查找其源。若欲了解具體實(shí)現(xiàn)方法,請(qǐng)參考neo-python項(xiàng)目。

項(xiàng)目地址:github.com/CityOfZion/…

區(qū)塊鏈

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

參數(shù):script_hash –

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

參數(shù):asset_id –

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

參數(shù):height_or_hash –

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

參數(shù):script_hash –

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

參數(shù):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]

參數(shù):hash –

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

區(qū)塊頭

區(qū)塊頭對(duì)象包含了所有區(qū)塊信息,但不包含交易數(shù)據(jù)。

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

獲取共識(shí)地址

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

獲取區(qū)塊頭哈希值

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

獲取區(qū)塊中交易信息的默克爾根值

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

獲取下一個(gè)共識(shí)發(fā)生的地址

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

獲取區(qū)塊鏈中上一個(gè)區(qū)塊頭的哈希值

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

獲取區(qū)塊頭創(chuàng)建時(shí)間戳

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

獲取區(qū)塊頭的版本號(hào)

區(qū)塊

區(qū)塊對(duì)象包含區(qū)塊中的交易數(shù)據(jù)

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

參數(shù)

· block——包含該交易的區(qū)塊

· index——區(qū)塊中交易的指數(shù)

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

返回區(qū)塊中的交易數(shù)

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

返回區(qū)塊中包含的交易列表

賬戶

賬戶對(duì)象代表區(qū)塊上的地址

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

參數(shù)

· account –

· asset_id –

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

參數(shù)

account –

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

參數(shù)

account –

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

參數(shù)

**· account –
· votes –**

動(dòng)作

動(dòng)作對(duì)象用于在區(qū)塊鏈上注冊(cè)動(dòng)作/事件監(jiān)聽器

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

參數(shù)

· event_name –

· args –

應(yīng)用程序

應(yīng)用程序?qū)ο笥糜谡{(diào)用區(qū)塊鏈上的其他合約

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

參數(shù)

· smart_contract_hash –

· args –

· kwargs –

資產(chǎn)

資產(chǎn)對(duì)象用于檢索NEO或GAS等本地資產(chǎn)信息

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

參數(shù)

· asset_type –

· name –

· amount –

· precision –

· owner –

· admin –

· issuer –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

asset –

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

參數(shù)

· asset –

· years –

【交互操作】執(zhí)行引擎

下列各操作的目的在于收集NEO虛擬機(jī)當(dāng)前運(yùn)行狀態(tài)的參考數(shù)據(jù)。因?yàn)橄铝懈黜?xiàng)均是在NEO虛擬機(jī)中實(shí)現(xiàn)的,因此這里無法查找其出處。若欲了解具體實(shí)現(xiàn)方法,請(qǐng)參考neo-python項(xiàng)目。

方法

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

未使用

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

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

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

返回值類型:bytearray

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

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

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

返回值類型:bytearray

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

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

· 該方法在NEO虛擬機(jī)內(nèi)部實(shí)現(xiàn)

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

返回值類型:bytearray

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

返回當(dāng)前執(zhí)行智能合約的Script Container,它是boa.blockchain.vm.Neo.Transaction對(duì)象

返回值:當(dāng)前執(zhí)行智能合約的Script Container

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

原文出處:https://github.com/localhuman...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42799.html

相關(guān)文章

  • 開發(fā)NEO智能合約的步驟流程

    摘要:在社區(qū)開發(fā)的一些最新工具集的幫助下,出現(xiàn)了四步流程法,從而進(jìn)一步加快了開發(fā)效率。兩步流程法傳統(tǒng)上來說,智能合約開發(fā)有兩步開發(fā)流程編碼和測(cè)試。四步工作流程法開發(fā)智能合約對(duì)于編輯和調(diào)試階段,我建議使用兩種方法和。 摘要:開發(fā)NEO智能合約的典型開發(fā)流程有兩個(gè)實(shí)際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測(cè)試(在測(cè)試網(wǎng)上部署、調(diào)用、檢查結(jié)果)。這個(gè)工作流需要編譯和部署來調(diào)試任...

    I_Am 評(píng)論0 收藏0
  • 開發(fā)NEO智能合約的步驟流程

    摘要:在社區(qū)開發(fā)的一些最新工具集的幫助下,出現(xiàn)了四步流程法,從而進(jìn)一步加快了開發(fā)效率。兩步流程法傳統(tǒng)上來說,智能合約開發(fā)有兩步開發(fā)流程編碼和測(cè)試。四步工作流程法開發(fā)智能合約對(duì)于編輯和調(diào)試階段,我建議使用兩種方法和。 摘要:開發(fā)NEO智能合約的典型開發(fā)流程有兩個(gè)實(shí)際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測(cè)試(在測(cè)試網(wǎng)上部署、調(diào)用、檢查結(jié)果)。這個(gè)工作流需要編譯和部署來調(diào)試任...

    zhou_you 評(píng)論0 收藏0
  • Neo4j入門之中國(guó)電影票房排行淺析

    摘要:下面,讓我們進(jìn)入本次的之旅項(xiàng)目展示由于流浪地球的大熱以及筆者對(duì)此的欣賞,因此,此次的項(xiàng)目為分析中國(guó)電影票房排行。在中國(guó)電影票房排行榜的前名中,吳京主演了戰(zhàn)狼與流浪地球,且兩者沒有其他更多的相同主演。 什么是Neo4j? showImg(https://segmentfault.com/img/remote/1460000018262759); ??Neo4j是一個(gè)高性能的NoSQL圖形...

    Atom 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<