Skip to main content

ViolasClient是工具集合,他提供以下两种方式与Violas Network进行交互:
1.violas_shell, 与violas交互的shell程序
2.python api, 客户端访问Violas的api集合。python程序员使用此客户端来与violas network进行交互

安装

$ pip3 install violas-client

violas_shell的使用方式:

搭建一个violas节点,终端输入"violas_shell"命令,如下本地搭建所示:

$ violas_shell -a localhost -p 36723 -s "/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml" -m "/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys"

-a: host -p: port -s: 共识节点的基本信息 -m: mint许可地址的相关信息

连接Violas Network成功后如下:
libra shell
查看关于violas的指令:
libra shell

创建第一笔violas交易

第一步:创建两个账户

violas% account create
>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a
violas% account create
>> Creating/retrieving next account from wallet
Created/retrieved account #1 address bce9dece4f3cb14374993421a5e2095f25552e3528f007cbd91ad214ab752a50

第二步:向两个账户mint平台币

violas% account mint 0 100
>> Minting coins
args =  [<libra.transaction.transaction_argument.TransactionArgument object at 0x7f512ee635c0>, <libra.transaction.transaction_argument.TransactionArgument object at 0x7f512ee63588>]
Mint request submitted
violas% account mint 1 100
>> Minting coins
args =  [<libra.transaction.transaction_argument.TransactionArgument object at 0x7f512ee63d68>, <libra.transaction.transaction_argument.TransactionArgument object at 0x7f512ee63a20>]
Mint request submitted

第三步:一个账户发布稳定币

violas% v p 0 
>> Publishing module
Publish request submitted
violas% q as 0 
>> Getting latest account state
Latest account state is: 
             Account: 6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a
             State: {
  ordered_map: {
    b'\x00\xdai\xc8]\xe1\xd9^\nDz}\xa3\x9e|2X\xa2\xc0\xa7\x02=9\x9d\x9bg=\x96,&8\xb6=': 4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e746f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a00000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102,
    b'\x01!}\xa6\xc6\xb3\xe1\x9f\x18%\xcf\xb2gm\xae\xcc\xe3\xbf=\xe0<\xf2fG\xc7\x8d\xf0\x0b7\x1b%\xcc\x97': 200000006f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a00e1f505000000000000010000000000000020000000799ef8e880dc7e37b1c223d0a84f0dbdba709dcc7a725747b519db33e487fe400000000000000000200000001b70c022d0c185e449f859da24825ae4c67de7675e4a47ec04f7c97cb986f8850100000000000000,
  },
}
Decoded:
{
  authentication_key: 6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a,
  balance: 100000000,
  delegated_key_rotation_capability: False,
  delegated_withdrawal_capability: False,
  received_events: {
    count: 1,
    key: 799ef8e880dc7e37b1c223d0a84f0dbdba709dcc7a725747b519db33e487fe40,
  },
  sent_events: {
    count: 0,
    key: 1b70c022d0c185e449f859da24825ae4c67de7675e4a47ec04f7c97cb986f885,
  },
  sequence_number: 1,
}
             Blockchain Version: 3

第四步:两个账户对该币初始化:

violas% v i 0 0 
>> Initing module
init request submitted
violas% v i 1 0
>> Initing module
init request submitted

第五步:发送mint交易到一账户:

violas% v m 0 100 0
>> Minting coins
Mint request submitted
violas% v b 0 0 
Balance is: 100.0

第六步:发送交易

violas% v t 0 1 20 0 
>> Transferring
Transaction submitted to validator
To query for transaction status, run: query txn_acc_seq 0 0             <fetch_events=true|false>
violas% 
violas% v b 0 0 
Balance is: 80.0
violas% v b 1 0
Balance is: 20.0

python api使用

创建和导入钱包

import libra

# Create a new random wallet
wallet = libra.WalletLibrary.new()

# Create a new wallet from mnemonic words
wallet = libra.WalletLibrary.new_from_mnemonic(mnemonic, child_count)

# Recover wallet from a offical Libra CLI backup file
wallet = libra.WalletLibrary.recover(filename)

创建账户

print(wallet.child_count)
account1 = wallet.new_account()
print(wallet.child_count)
print(account1.address)
print(account1.public_key)
print(account1.private_key)

客户端连接节点

from libra import Client

client2 = Client.new('localhost', 8000, "validator_file_path")  # Client connecting to a local node

获取地址的账户信息

# An account stores its data in a directory structure, for example:
#   <Alice>/balance:   10
#   <Alice>/a/b/mymap: {"Bob" => "abcd", "Carol" => "efgh"}
#   <Alice>/a/myint:   20
#   <Alice>/c/mylist:  [3, 5, 7, 9]
#
# If someone needs to query the map above and find out what value associated with "Bob" is,
# `address` will be set to Alice and `path` will be set to "/a/b/mymap/Bob".
#
# On the other hand, if you want to query only <Alice>/a/*, `address` will be set to Alice and
# `path` will be set to "/a" and use the `get_prefix()` method from statedb

获取地址的账户状态块

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml")
blob, version = client.get_account_blob("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a")
print(type(version),version)
print(type(blob),blob)

输出

<class 'int'> 7
<class 'account_state_blob_pb2.AccountStateBlob'> blob: "\006\000\000\000!\000\000\000\000\332i\310]\341\331^\nDz}\243\236|2X\242\300\247\002=9\235\233g=\226,&8\266=h\004\000\000LIBRAVM\n\001\000\013\001n\000\000\000\014\000\000\000\002z\000\000\000\031\000\000\000\003\223\000\000\000\036\000\000\000\014\261\000\000\000\022\000\000\000\r\303\000\000\0006\000\000\000\016\371\000\000\000N\000\000\000\005G\001\000\000.\001\000\000\004u\002\000\000@\000\000\000\t\265\002\000\000\024\000\000\000\n\311\002\000\000\030\000\000\000\013\341\002\000\000\207\001\000\000\000\000\001\001\001\002\001\003\001\004\001\005\000\006\001\000\000\007\001\000\000\010\001\000\000\t\002\000\000\n\002\000\002\026\001\001\002\000\013\000\000\014\000\000\r\000\000\016\001\000\017\002\000\020\003\000\021\001\000\022\004\002\033\005\002\034\006\001\002\001\007\005\001\007\003\000\001\007\005\001\007\004\000\001\004\002\000\000\000\002\001\007\001\000\001\002\000\002\001\002\000\000\002\000\002\004\007\001\000\000\002\000\002\004\002\000\002\001\007\005\001\t\000\000\001\002\002\000\002\006\007\005\001\t\000\t\000\001\002\003\001\004\003\000\003\001\007\003\000\003\001\007\004\000\003\002\004\001\003\001\002\003\003\004\005\007\001\000\002\003\005\004\007\001\000\006\007\001\000\002\002\003\004\002\004\006\007\001\000\002\003\n\004\002\007\001\000\004\006\007\002\000\006\007\002\000\007\003\000\007\004\000\002\006\007\002\000\006DToken\004Hash\005Event\007U64Util\013AddressUtil\rBytearrayUtil\005Owner\001T\004Info\020SentPaymentEvent\024ReceivedPaymentEvent\032make_sure_sender_published\007publish\rrequire_owner\004mint\007balance\007deposit\010withdraw\017pay_from_sender\005value\017sequence_number\013sent_events\006Handle\017received_events\005payee\006amount\005payer\020new_event_handle\nemit_evento\t\036p\345\263,L\364s\327\250\375[H\3552$<\'\004- B)\351\354\202=\372bz\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\001\002\001\000\002\002\003\001\003\002\002\004\004\002\002\006\001\023\000\002\024\000\002\025\001\002\027\002\003\030\003\003\031\000\004\032\003\004\031\000\000\001\000\001\000\010\000-\r\000\014\000.\001\001\"\004\007\000\023\001\001\002\001\001\000\007\000\021\000-\r\000\014\000\007\000#\004\010\000\024\000\0012\000\001\006\000\000\000\000\000\000\000\000\024\001\0012\001\001\006\000\000\000\000\000\000\000\000\023\010\002\023\010\003\024\002\0012\002\001\002\002\001\000\001\004\013\000-\r\000\014\000.\000\001\r\001\014\001\"\004\n\000\006\000\000\000\000\000\000\000\000)\002\003\001\000\002\005\004\000\023\002\001\014\000\024\001\001\002\004\001\001\001\001\006\013\000-\r\000\014\0000\001\001\r\001\014\001\021\000\026\r\002\014\002\002\005\001\001\001\002\007\021\000\014\000/\001\001\r\002\013\002\021\000\026\r\003\014\001\025\001\001\r\004\014\003\014\004\030\014\002\020\000\027\002\006\001\001\001\002\010\031\000-\r\001\014\001/\001\001\r\002\013\002\021\000\026\r\003\013\003\013\000(\"\004\020\000\006\001\000\000\000\000\000\000\000)\014\003\013\000\031\014\002\020\000\027\014\000\024\001\001\002\007\001\002\001\002\005\t8\000-\r\003\013\001\023\006\001\r\002\013\000\014\002\023\005\001\t\004\025\000\013\003/\002\001\r\004\013\000\013\001\024\003\001\r\006\014\004\020\002\014\006\023\t\002\t\004\"\000\013\000/\002\001\r\005\013\003\013\001\024\004\001\r\007\014\005\020\003\014\007\023\t\003\t\0041\000\013\003/\002\001\r\t\013\t\020\001\026\r\010\014\010\006\001\000\000\000\000\000\000\000\030\014\t\020\001\027\014\003\001\014\000\001\014\001\001\002!\000\000\000\001\005\271\307X^\034\031w\201\024-\205%sNN.\322\021\207)\337.\017\376\214\3456\177\262\366\274\010\000\000\000\000\264\304\004\000\000\000\000!\000\000\000\001!}\246\306\263\341\237\030%\317\262gm\256\314\343\277=\340<\362fG\307\215\360\0137\033%\314\227\216\000\000\000 \000\000\000o\t\036p\345\263,L\364s\327\250\375[H\3552$<\'\004- B)\351\354\202=\372bz\000\341\365\005\000\000\000\000\000\000\001\000\000\000\000\000\000\000 \000\000\000y\236\370\350\200\334~7\261\302#\320\250O\r\275\272p\235\314zrWG\265\031\3333\344\207\376@\000\000\000\000\000\000\000\000 \000\000\000\033p\300\"\320\301\205\344I\370Y\332$\202Z\344\306}\347g^JG\354\004\367\311|\271\206\370\205\004\000\000\000\000\000\000\000!\000\000\000\001\317\202^\244 /c\322\374\n\253>C-\027\223\306\263\346\260\341\342\007\302\031t\317oq\215\034\246\000\000\000\000!\000\000\000\001\352T\323q\005\014\2662\027\371z\223*\372\017\314R\305\n\314A\353*I\264\032\376\207\300\360\242\363`\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000 \000\000\0005F\350l\221>\342\323|[\351I\332\272/\273\355\346\221b\301\322\210\262\343GJ\2462\212\261\001\000\000\000\000\000\000\000\000 \000\000\000\236\232@\202+O\206\236\240\376\2203\000\203\317\032\361\"\033U\274K\031\026CD\2073v\247\376\275!\000\000\000\001\374|\332\315\261\271\265\373\356\336ak*\240-\254\235\210Uq\371\264\2418H\270\326\031K\201\211#\010\000\000\000\002\000\000\000\000\000\000\000"

获取地址的账户状态

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml")
amap = client.get_account_state("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a")
print(type(amap))
print(amap.to_json())

输出

<class 'libra.account_resource.AccountState'> 
{
    "ordered_map": {
        "00da69c85de1d95e0a447a7da39e7c3258a2c0a7023d399d9b673d962c2638b63d": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e746f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a00000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "0105b9c7585e1c197781142d8525734e4e2ed2118729df2e0ffe8ce5367fb2f6bc": "00b4c40400000000",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000006f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a00e1f505000000000000010000000000000020000000799ef8e880dc7e37b1c223d0a84f0dbdba709dcc7a725747b519db33e487fe400000000000000000200000001b70c022d0c185e449f859da24825ae4c67de7675e4a47ec04f7c97cb986f8850400000000000000",
        "01cf825ea4202f63d2fc0aab3e432d1793c6b3e6b0e1e207c21974cf6f718d1ca6": "",
        "01ea54d371050cb63217f97a932afa0fcc52c50acc41eb2a49b41afe87c0f0a2f3": "01000000000000000100000000000000200000003546e86c913ee2d37c5be949daba2fbbede69162c1d288b2e3474aa6328ab1010000000000000000200000009e9a40822b4f869ea0fe90330083cf1af1221b55bc4b19164344873376a7febd",
        "01fc7cdacdb1b9b5fbeede616b2aa02dac9d885571f9b4a13848b8d6194b818923": "0200000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a",
        "balance": 100000000,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "799ef8e880dc7e37b1c223d0a84f0dbdba709dcc7a725747b519db33e487fe40"
        },
        "sent_events": {
            "count": 0,
            "key": "1b70c022d0c185e449f859da24825ae4c67de7675e4a47ec04f7c97cb986f885"
        },
        "sequence_number": 4
    }
}

获取地址的平台币资源

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml")
resource = client.get_account_resource("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a")
print(type(resource))
print(resource.to_json())

输出

<class 'libra.account_resource.AccountResource'>
{
    "authentication_key": "6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a",
    "balance": 100000000,
    "delegated_key_rotation_capability": false,
    "delegated_withdrawal_capability": false,
    "received_events": {
        "count": 1,
        "key": "799ef8e880dc7e37b1c223d0a84f0dbdba709dcc7a725747b519db33e487fe40"
    },
    "sent_events": {
        "count": 0,
        "key": "1b70c022d0c185e449f859da24825ae4c67de7675e4a47ec04f7c97cb986f885"
    },
    "sequence_number": 4
}

获取地址的平台币余额

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml")
balance = client.get_balance("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a")
print(type(balance))
print(balance)

输出

<class 'int'>
100000000

获取地址发送交易的序列号

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml")
seq = client.get_sequence_number("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a")
print(type(seq))
print(seq)

输出

<class 'int'>
4

mint平台币

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
print(client.get_balance("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a"))
balance = client.mint_coins("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a",100,True)
print(client.get_balance("6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a"))

输出

100000000
args =  [<libra.transaction.transaction_argument.TransactionArgument object at 0x7f01a0a7b9e8>, <libra.transaction.transaction_argument.TransactionArgument object at 0x7f01a0a7bbe0>]
waiting
transaction is stored!
100000100

发送平台币交易

from libra import Client
from libra import WalletLibrary

wallet = WalletLibrary.new()
a1 = wallet.new_account()
a2 = wallet.new_account()
client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
client.mint_coins(a1.address,100,True)
print("before: a1 balance = ",client.get_balance(a1.address))
print("before: a2 balance = ",client.get_balance(a2.address))
client.transfer_coin(a1,a2.address,20,is_blocking = True)
print("after: a1 balance = ",client.get_balance(a1.address))
print("after: a2 balance = ",client.get_balance(a2.address))

输出

waiting
transaction is stored!
before: a1 balance =  100
before: a2 balance =  0
waiting
transaction is stored!
after: a1 balance =  80
after: a2 balance =  20

发送原始交易

from libra import Client
from libra.proto.admission_control_pb2 import SubmitTransactionRequest
import time

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
request = SubmitTransactionRequest()
print("before: 3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728 balance = ",client.get_balance("3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728"))
print("before: 84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412 balance = ",client.get_balance("84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412"))
request.signed_txn.signed_txn = bytes.fromhex("200000003c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728000000000000000002000000b80000004c49425241564d0a010007014a00000004000000034e000000060000000d54000000060000000e5a0000000600000005600000002900000004890000002000000008a90000000f00000000000001000200010300020002040200030204020300063c53454c463e0c4c696272614163636f756e74046d61696e0f7061795f66726f6d5f73656e6465720000000000000000000000000000000000000000000000000000000000000000000100020004000c000c011301010202000000010000002000000084e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412000000001400000000000000e0220200000000000000000000000000da5db15d000000002000000069e26a3fe50acf1432a349d1051a38eb8ab1a433cda2e1014df63c645fac704940000000b0e63709b76ad19e7b79e395f70be0569b724c9ed7a372442d07cf051d85b93c58b0ce5232774c2e2e93fddcda27dd71e358be888b8cf4a23a93fb98891cd70a")
client.submit_signed_txn(request)
time.sleep(2)
print("after: 3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728 balance = ",client.get_balance("3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728"))
print("after: 84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412 balance = ",client.get_balance("84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412"))

输出

before: 3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728 balance =  200
before: 84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412 balance =  200
after: 3c6e62667ab1fe77a360023f2298fc0b74b16673f35de56f949cae51437b0728 balance =  180
after: 84e44483d4ca55cdedb8dd609116b63a3d59f1c9e66327944ed37a580980f412 balance =  220

查询交易

通过版本查询交易:

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
tr = client.get_transaction(1)
print(type(tr))
print(tr.to_json())

输出

<class 'libra.transaction.signed_transaction.SignedTransaction'>
{
    "raw_txn": {
        "sender": "000000000000000000000000000000000000000000000000000000000a550c18",
        "sequence_number": 1,
        "payload": {
            "Script": {
                "code": "4c49425241564d0a010007014a000000060000000350000000060000000d56000000060000000e5c0000000600000005620000003300000004950000002000000008b50000000f000000000000010002000300010400020002040200030204020300063c53454c463e0c4c696272614163636f756e74094c69627261436f696e046d61696e0f6d696e745f746f5f616464726573730000000000000000000000000000000000000000000000000000000000000000000100020004000c000c0113010102",
                "args": [
                    {
                        "Address": "6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a"
                    },
                    {
                        "U64": 100000000
                    }
                ]
            }
        },
        "max_gas_amount": 140000,
        "gas_unit_price": 0,
        "expiration_time": 1571896599
    },
    "public_key": "664f6e8f36eacb1770fa879d86c2c1d0fafea145e84fa7d671ab7a011a54d509",
    "signature": "e2c71ccb24d00e1e01795346084f62e6c7de409ce6fc9bd2226ca6c0ab531e25ec15c4d78d25344158f63500f42c75f9afefe82e36716c7cbcd635fc5e76ea00"
}

获取一系列交易:

from libra import Client

client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
trs = client.get_transactions(1,3)
print(len(trs))
for tr in trs:
    print(type(tr))
    print(tr.to_json())

输出

3
<class 'libra.transaction.signed_transaction.SignedTransaction'>
{
    "raw_txn": {
        "sender": "000000000000000000000000000000000000000000000000000000000a550c18",
        "sequence_number": 1,
        "payload": {
            "Script": {
                "code": "4c49425241564d0a010007014a000000060000000350000000060000000d56000000060000000e5c0000000600000005620000003300000004950000002000000008b50000000f000000000000010002000300010400020002040200030204020300063c53454c463e0c4c696272614163636f756e74094c69627261436f696e046d61696e0f6d696e745f746f5f616464726573730000000000000000000000000000000000000000000000000000000000000000000100020004000c000c0113010102",
                "args": [
                    {
                        "Address": "6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a"
                    },
                    {
                        "U64": 100000000
                    }
                ]
            }
        },
        "max_gas_amount": 140000,
        "gas_unit_price": 0,
        "expiration_time": 1571896599
    },
    "public_key": "664f6e8f36eacb1770fa879d86c2c1d0fafea145e84fa7d671ab7a011a54d509",
    "signature": "e2c71ccb24d00e1e01795346084f62e6c7de409ce6fc9bd2226ca6c0ab531e25ec15c4d78d25344158f63500f42c75f9afefe82e36716c7cbcd635fc5e76ea00"
}
<class 'libra.transaction.signed_transaction.SignedTransaction'>
{
    "raw_txn": {
        "sender": "000000000000000000000000000000000000000000000000000000000a550c18",
        "sequence_number": 2,
        "payload": {
            "Script": {
                "code": "4c49425241564d0a010007014a000000060000000350000000060000000d56000000060000000e5c0000000600000005620000003300000004950000002000000008b50000000f000000000000010002000300010400020002040200030204020300063c53454c463e0c4c696272614163636f756e74094c69627261436f696e046d61696e0f6d696e745f746f5f616464726573730000000000000000000000000000000000000000000000000000000000000000000100020004000c000c0113010102",
                "args": [
                    {
                        "Address": "bce9dece4f3cb14374993421a5e2095f25552e3528f007cbd91ad214ab752a50"
                    },
                    {
                        "U64": 100000000
                    }
                ]
            }
        },
        "max_gas_amount": 140000,
        "gas_unit_price": 0,
        "expiration_time": 1571896602
    },
    "public_key": "664f6e8f36eacb1770fa879d86c2c1d0fafea145e84fa7d671ab7a011a54d509",
    "signature": "da8e4da1578f2840d25377ab07380a2a8e9a8e338b3112cd6a701308fdd54a37c17f83518c0746fa033c1b04ec79287c062155f22c9ab3529535faf8a874ff06"
}
<class 'libra.transaction.signed_transaction.SignedTransaction'>
{
    "raw_txn": {
        "sender": "6f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a",
        "sequence_number": 0,
        "payload": {
            "Module": {
                "code": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e746f091e70e5b32c4cf473d7a8fd5b48ed32243c27042d204229e9ec823dfa627a00000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102"
            }
        },
        "max_gas_amount": 140000,
        "gas_unit_price": 0,
        "expiration_time": 1571896722
    },
    "public_key": "495f9df06e9abad96e7a90c034ecc242f9caf349dbfdeb45e475ee2cc8eb5c2a",
    "signature": "42b2b13ed6e93cd5f3f268dc3c92f9983245c5a1bdb53de1c3fa4bfb8a15be0f1da1014b50b198000d08f91f2b458107d6f6a025306025139c7426d70e71e50c"
}

稳定币

发布合约

from libra import Client
from libra import WalletLibrary


wallet = WalletLibrary.new()
ac = wallet.new_account()
client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
client.mint_coins(ac.address,100,True)
print("before: state = ",client.get_account_state(ac.address).to_json())
client.publish_violas_coin(ac,True)
print("after: state = ",client.get_account_state(ac.address).to_json())
wallet.write_recovery(".wallet/module")

输出

waiting
transaction is stored!
before: state =  {
    "ordered_map": {
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b0000000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 0
    }
}
waiting
transaction is stored!
no events emitted
after: state =  {
    "ordered_map": {
        "0090dc055eeba74a7c832ed4f72b6ee9ccf80db743408b7b4641b00ea2e7fab853": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e742ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd000000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b0100000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 1
    }
}

初始化

账户在使用每个稳定币的时候都需要这个过程

from libra import Client
from libra import WalletLibrary


module_account = WalletLibrary.recover(".wallet/module").accounts[0]
client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
print("before: state = ",client.get_account_state(module_account.address).to_json())
client.init_violas_coin(module_account, module_account.address, True)
print("after: state = ",client.get_account_state(module_account.address).to_json())

输出

before: state =  {
    "ordered_map": {
        "0090dc055eeba74a7c832ed4f72b6ee9ccf80db743408b7b4641b00ea2e7fab853": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e742ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd000000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b0100000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 1
    }
}
waiting
transaction is stored!
no events emitted
after: state =  {
    "ordered_map": {
        "0090dc055eeba74a7c832ed4f72b6ee9ccf80db743408b7b4641b00ea2e7fab853": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e742ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd000000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "0117396040a90aa651a09762b97478f0b31aaf8df5845e1c4097137facc3a25c15": "",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b0200000000000000",
        "0137200349bc88eb3d4689856a93a2c11fa4d85402bdeafb0bd962b957e1a4be7d": "00000000000000000000000000000000200000001e8125f1d73ee5c0ef51a3570ebfe37a452ff8255785801ff33474351ef96a9b0000000000000000200000008e78101a64339c2df951effe6e47324ba59037965b0452c3bdeade57aaf600ae",
        "016e598c3746edfe81d7a3bdb690b6dce90f02a392357f530ceb40a947df42017a": "0000000000000000",
        "01fc7cdacdb1b9b5fbeede616b2aa02dac9d885571f9b4a13848b8d6194b818923": "0200000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 2
    }
}

发币

只有owner账户才可以发币

from libra import Client
from libra import WalletLibrary

module_account = WalletLibrary.recover(".wallet/module").accounts[0]
client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
print("before: state = ",client.get_account_state(module_account.address).to_json())
print("before: balance = ",client.get_violas_balance(module_account.address,module_account.address))
client.mint_violas_coins(module_account.address, 100, module_account, True)
print("after: state = ",client.get_account_state(module_account.address).to_json())
print("after: balance = ",client.get_violas_balance(module_account.address,module_account.address))

输出

before: state =  {
    "ordered_map": {
        "0090dc055eeba74a7c832ed4f72b6ee9ccf80db743408b7b4641b00ea2e7fab853": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e742ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd000000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "0117396040a90aa651a09762b97478f0b31aaf8df5845e1c4097137facc3a25c15": "",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b1100000000000000",
        "0137200349bc88eb3d4689856a93a2c11fa4d85402bdeafb0bd962b957e1a4be7d": "00000000000000000000000000000000200000001e8125f1d73ee5c0ef51a3570ebfe37a452ff8255785801ff33474351ef96a9b0000000000000000200000008e78101a64339c2df951effe6e47324ba59037965b0452c3bdeade57aaf600ae",
        "016e598c3746edfe81d7a3bdb690b6dce90f02a392357f530ceb40a947df42017a": "dc05000000000000",
        "01fc7cdacdb1b9b5fbeede616b2aa02dac9d885571f9b4a13848b8d6194b818923": "0200000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 17
    }
}
before: balance =  1500
waiting
transaction is stored!
no events emitted
after: state =  {
    "ordered_map": {
        "0090dc055eeba74a7c832ed4f72b6ee9ccf80db743408b7b4641b00ea2e7fab853": "4c49425241564d0a01000b016e0000000c000000027a0000001900000003930000001e0000000cb1000000120000000dc3000000360000000ef90000004e00000005470100002e01000004750200004000000009b5020000140000000ac9020000180000000be10200008701000000000101010201030104010500060100000701000008010000090200000a02000216010102000b00000c00000d00000e01000f02001003001101001204021b05021c06010201070501070300010705010704000104020000000201070100010200020102000002000204070100000200020402000201070501090000010202000206070501090009000102030104030003010703000301070400030204010301020303040507010002030504070100060701000202030402040607010002030a040207010004060702000607020007030007040002060702000644546f6b656e0448617368054576656e74075536345574696c0b416464726573735574696c0d4279746561727261795574696c054f776e6572015404496e666f1053656e745061796d656e744576656e741452656365697665645061796d656e744576656e741a6d616b655f737572655f73656e6465725f7075626c6973686564077075626c6973680d726571756972655f6f776e6572046d696e740762616c616e6365076465706f7369740877697468647261770f7061795f66726f6d5f73656e6465720576616c75650f73657175656e63655f6e756d6265720b73656e745f6576656e74730648616e646c650f72656365697665645f6576656e747305706179656506616d6f756e74057061796572106e65775f6576656e745f68616e646c650a656d69745f6576656e742ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd000000000000000000000000000000000000000000000000000000000000000000002000001020100020203010302020404020206011300021400021501021702031803031900041a03041900000100010008002d0d000c002e01012204070013010102010100070011002d0d000c000700230408001400013200010600000000000000001401013201010600000000000000001308021308031402013202010202010001040b002d0d000c002e00010d010c0122040a000600000000000000002902030100020504001302010c00140101020401010101060b002d0d000c003001010d010c011100160d020c020205010101020711000c002f01010d020b021100160d030c011501010d040c030c04180c021000170206010101020819002d0d010c012f01010d020b021100160d030b030b002822041000060100000000000000290c030b00190c021000170c00140101020701020102050938002d0d030b011306010d020b000c02130501090415000b032f02010d040b000b011403010d060c0410020c06130902090422000b002f02010d050b030b011404010d070c0510030c07130903090431000b032f02010d090b091001160d080c08060100000000000000180c091001170c03010c00010c010102",
        "0117396040a90aa651a09762b97478f0b31aaf8df5845e1c4097137facc3a25c15": "",
        "01217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97": "200000002ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0640000000000000000000100000000000000200000002a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e690000000000000000200000001ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b1200000000000000",
        "0137200349bc88eb3d4689856a93a2c11fa4d85402bdeafb0bd962b957e1a4be7d": "00000000000000000000000000000000200000001e8125f1d73ee5c0ef51a3570ebfe37a452ff8255785801ff33474351ef96a9b0000000000000000200000008e78101a64339c2df951effe6e47324ba59037965b0452c3bdeade57aaf600ae",
        "016e598c3746edfe81d7a3bdb690b6dce90f02a392357f530ceb40a947df42017a": "4006000000000000",
        "01fc7cdacdb1b9b5fbeede616b2aa02dac9d885571f9b4a13848b8d6194b818923": "0200000000000000"
    },
    "Decoded_resource": {
        "authentication_key": "2ef00c60174ae8fbfd5db2920fabdde0349aab56e3b45a4e873e11401303afd0",
        "balance": 100,
        "delegated_key_rotation_capability": false,
        "delegated_withdrawal_capability": false,
        "received_events": {
            "count": 1,
            "key": "2a18b30138fc36f7eb8e311b0a8559fb97aced8530cb675d760286af01348e69"
        },
        "sent_events": {
            "count": 0,
            "key": "1ab028d81656e724fdad8e540513020b0e130b5d0ff5979576be1ec1887e228b"
        },
        "sequence_number": 18
    }
}
after: balance =  1600

交易

from libra import Client
from libra import WalletLibrary

module_account = WalletLibrary.recover(".wallet/module").accounts[0]
wallet = WalletLibrary.new()
a1 = wallet.new_account()
a2 = wallet.new_account()
client = Client.new('localhost',36723,"/tmp/bf17da3786467620a4aa3f3082ecff91/0/consensus_peers.config.toml","/tmp/a3929e4a2b99505e00fa8385a4fe8b18/temp_faucet_keys")
client.mint_coins(a1.address, 100, True)
client.mint_coins(a2.address, 100, True)
client.init_violas_coin(a1, module_account.address, True)
client.init_violas_coin(a2, module_account.address, True)
client.mint_violas_coins(a1.address, 100, module_account, True)
print("before: a1 violas balance = ", client.get_violas_balance(a1.address, module_account.address))
print("before: a2 violas balance = ", client.get_violas_balance(a2.address, module_account.address))
client.transfer_violas_coin(a1, a2.address, 20, module_account.address, is_blocking=True)
print("after: a1 violas balance = ", client.get_violas_balance(a1.address, module_account.address))
print("after: a2 violas balance = ", client.get_violas_balance(a2.address, module_account.address))

输出

waiting
transaction is stored!
waiting
transaction is stored!
waiting
transaction is stored!
no events emitted
waiting
transaction is stored!
no events emitted
waiting
transaction is stored!
no events emitted
before: a1 violas balance =  100
before: a2 violas balance =  0
waiting
transaction is stored!
after: a1 violas balance =  80
after: a2 violas balance =  20

Metadata

Release files for violas-client 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for violas-client 0.0.2
File Size Uploaded
violas-client-0.0.2.tar.gz 99.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for violas-client 0.0.2
File Interpreter ABI Platform
violas_client-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 219.2 kB

Release files / violas-client-0.0.2.tar.gz

Download URL violas-client-0.0.2.tar.gz
Size 99.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4eee23bd13d4a81452e811adf19f0b0472857e8736a0e4135bc0dd0aee4dab54
BLAKE2b-256 checksum
How to use checksums
2f8113cb7ce04fc69cdb3da098c77e52b297aa7241a09dc578397db848f584fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

Release files / violas_client-0.0.2-py3-none-any.whl

Download URL violas_client-0.0.2-py3-none-any.whl
Size 120.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dcbcb6852af80db0c9b069c66d90e984069594ece8d3870b05353224efa2178f
BLAKE2b-256 checksum
How to use checksums
cae06846d9e0bb0ef7640abef8aebdcf12a0b2751d5a8fc508c88074a8f4fcd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page