Exemplo n.º 1
0
def apply(receiver, code, action):
    if action == N('sayhello'):
        from hello import sayhello
        sayhello.sayHello('mike')
    elif action == N('setcode'):
        data = read_action()
        #        print(struct.unapck)
        code_account, code_name, code_type = struct.unpack('QQB', data[:17])
        src_code = eoslib.unpack_bytes(data[17:])
        eoslib.set_code_ext(code_account, 1, code_name, src_code)
    elif action == N('auth'):
        data = read_action()
        code_owner, code_name, auth_to = struct.unpack('QQQ', data)
        code = N('eosio.code')
        scope = code
        itr = db.find_i64(code, code_owner, auth_to, code_name)
        print(itr)
        if itr >= 0:
            return
        payer = code_owner
        db.store_i64(code_owner, auth_to, payer, code_name, b'1')
    elif action == N('unauth'):
        data = read_action()
        code_owner, code_name, auth_to = struct.unpack('QQQ', data)
        code = N('eosio.code')
        scope = code
        itr = db.find_i64(code, code_owner, auth_to, code_name)
        if itr >= 0:
            db.remove_i64(itr)
    elif action == N('import'):
        from eosio.code import hello
Exemplo n.º 2
0
def deploy(account, src_code):
    code = N('native')
    print('++++++++++++deploy:account', account)
    itr = db.find_i64(code, code, code, account)
    if itr < 0:
        db.store_i64(code, code, code, account, src_code)
    else:
        db.update_i64(itr, code, src_code)
Exemplo n.º 3
0
 def store(self, payer):
     it = db.find_i64(self.code, self.scope, self.table_id,
                      self.get_primary_key())
     if it >= 0:
         db.update_i64(it, payer, self.pack())
     else:
         db.store_i64(self.scope, self.table_id, payer,
                      self.get_primary_key(), self.pack())
Exemplo n.º 4
0
def deploy(scope, table, id, data):
    code = N('vmstore')
    payer = code
    print('++++++++++++deploy:scope', n2s(scope), n2s(table))
    itr = db.find_i64(code, scope, table, id)
    if itr < 0:
        db.store_i64(scope, table, payer, id, data)
    else:
        db.update_i64(itr, payer, data)
Exemplo n.º 5
0
 def update_size(self):
     _value = int.to_bytes(self.list_size, 4, 'little')
     itr = db.find_i64(self.code, self.code, self.table_id,
                       self.list_size_id)
     if itr < 0:
         db.store_i64(self.code, self.table_id, self.code,
                      self.list_size_id, _value)
     else:
         db.update_i64(itr, self.code, _value)
Exemplo n.º 6
0
def store(key, value):
    id = get_hash(key)
    value = to_raw_value(value)
    code = contract_owner
    itr = db.find_i64(receiver, receiver, g_table_id, id)
    if itr >= 0:
        value = db.update_i64(itr, receiver, value)
    else:
        db.store_i64(receiver, g_table_id, receiver, id, value)
Exemplo n.º 7
0
    def setitem(self, index, val):
        id = index
        if self.value_type:
            _value = self.value_type.pack(val)
        else:
            _value = self.pack(val)

        itr = db.find_i64(self.code, self.code, self.table_id, id)
        if itr < 0:
            db.store_i64(self.code, self.table_id, self.code, id, _value)
        else:
            db.update_i64(itr, self.code, _value)
Exemplo n.º 8
0
def deploy(mod_name, src_code):
    code = N('backyard')
    print('++++++++++++deploy:mod_name', mod_name)
    id = hash64(mod_name)
    itr = db.find_i64(code, code, code, id)
    if itr < 0:
        db.store_i64(code, code, code, id, src_code)
    else:
        db.update_i64(itr, code, src_code)

    mod_name = mod_name.decode('utf8')
    if mod_name.endswith('.mpy'):
        __import__('backyard.' + mod_name[:-4])
    elif mod_name.endswith('.py'):
        __import__('backyard.' + mod_name[:-3])
Exemplo n.º 9
0
def count():
    code = N('counter')
    counter_id = N('counter')

    itr = db.find_i64(code, code, code, counter_id)
    if itr >= 0:  # value exists, update it
        counter = db.get_i64(itr)
        #        print('old  counter', int.from_bytes(counter, 'little'))
        counter = int.from_bytes(counter, 'little')
        counter += 1
        counter = int.to_bytes(counter, 4, 'little')
        db.update_i64(itr, code, counter)
    else:
        counter = int.to_bytes(1, 4, 'little')
        db.store_i64(code, code, code, counter_id, counter)
Exemplo n.º 10
0
def deploy(mod_name, src_code):
    code = N('kitties')
    print('++++++++++++deploy:mod_name', mod_name)
    id = hash64(mod_name)
    itr = db.find_i64(code, code, code, id)
    if itr < 0:
        db.store_i64(code, code, code, id, src_code)
    else:
        db.update_i64(itr, code, src_code)

    if mod_name.endswith('.mpy'):
        #try to remove py source to prevent micropython loading the wrong source
        mod_name = mod_name[:-3] + 'py'
        id = hash64(mod_name)
        itr = db.find_i64(code, code, code, id)
        if itr >= 0:
            db.remove_i64(itr)
Exemplo n.º 11
0
def sayHello():
    n = N('hello')
    id = N('name')

    name = read_action()
    print('hello', name)
    code = n
    scope = n
    table = n
    payer = n
    itr = db.find_i64(code, scope, table, id)
    if itr >= 0: # value exist, update it
        old_name = db.get_i64(itr)
        print('hello,', old_name)
        db.update_i64(itr, payer, name)
    else:
        db.store_i64(scope, table, payer, id, name)
Exemplo n.º 12
0
def storage_set(code, table_id, key, value):
    itr = db.find_i64(code, code, table_id, key)
    if itr >= 0:
        db.update_i64(itr, code, value)
    else:
        db.store_i64(code, table_id, code, key, value)
Exemplo n.º 13
0
 def append(self, value):
     print('+++append:', value)
     db.store_i64(self.scope, self.table_id, self.code, self.count,
                  self.pack(value))
     self.count += 1
     print('+++append return:', self.count)