pscdk

Python Smart Contract Development Kit


License
Other
Install
pip install pscdk==0.1.2

Documentation

Python Smart Contracts Development Kit

Documentation

Quick Start

import os
from uuoskit import uuosapi, wallet, config
from uuoskit.exceptions import ChainException

if os.path.exists('mywallet.wallet'):
    os.remove('mywallet.wallet')
psw = wallet.create('mywallet')

wallet.import_key('mywallet', '5Jbb4wuwz8MAzTB9FJNmrVYGXo4ABb7wqPVoWGcZ6x8V2FwNeDo')

uuosapi.set_node('https://testnode.uuos.network:8443')
code = '''
import chain
def apply(a, b, c):
    data = chain.read_action_data()
    print('++++action data:', data)
'''

account = 'helloworld11'
config.python_contract = account
code = uuosapi.mp_compile(account, code)

uuosapi.deploy_python_contract(account, code, b'')

r = uuosapi.push_action(account, 'sayhello', b'hellooo,world', {account:'active'})
console = r['processed']['action_traces'][0]['console']
print(console)

r = uuosapi.push_action(account, 'sayhello', b'goodbye,world', {account:'active'})
console = r['processed']['action_traces'][0]['console']
print(console)

Python Smart Contracts Example

import json
import struct
import chain
import db

class MyDataI64(object):
    def __init__(self, a: int, b: int, c: int, d: float):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.payer = 0

    def pack(self):
        return struct.pack('llld', self.a, self.b, self.c, self.d)

    @classmethod
    def unpack(cls, data):
        data = struct.unpack('llld', data)
        return cls(data[0], data[1], data[2], data[3])

    def get_primary_key(self):
        return self.a

    def __str__(self):
        data = (self.a, self.b, self.c, self.d)
        return json.dumps(data)

def apply(receiver, first_receiver, action):
    code = receiver
    scope = name('scope')
    table = name('table3')
    payer = receiver

    storage = db.ChainDBKey64(code, scope, table, MyDataI64)
    d = MyDataI64(1, 2, 3, 5.0)
    d.payer = payer
    storage.store(d)
    
    primary_key = 1
    data = storage.load(primary_key)
    print(data)

    primary_key = 2
    data = storage.load(primary_key)
    print(data)

License

MIT