def deploy_contract(account_name, contract_name, contracts_path=None):
    if not contracts_path:
        contracts_path = os.path.dirname(__file__)
        contracts_path = os.path.join(contracts_path, 'contracts')

    code_path = os.path.join(contracts_path, f'{contract_name}/{contract_name}.wasm')
    abi_path = os.path.join(contracts_path, f'{contract_name}/{contract_name}.abi')

    logger.info(code_path)
    code = open(code_path, 'rb').read()
    abi = open(abi_path, 'rb').read()

    m = hashlib.sha256()
    m.update(code)
    code_hash = m.hexdigest()

    try:
        r = eosapi.get_code(account_name)
        logger.info((code_hash, r['code_hash']))
        if code_hash != r['code_hash']:
            logger.info(f"++++++++++set contract: {contract_name}")
            r = eosapi.set_contract(account_name, code, abi, 0)
            return True
    except Exception as e:
        print(e)
예제 #2
0
def publish_py_contract(account_name, code, abi, vm_type=1, includes = [], entry='apply'):
    m = hashlib.sha256()
    code = compile(code, "contract", 'exec')
    code = marshal.dumps(code)
    m.update(code)
    code_hash = m.hexdigest()
    r = eosapi.get_code(account_name)
    if code_hash != r['code_hash']:
        eosapi.set_contract(account_name, code, abi, 1)
    return True
예제 #3
0
def publish_cpp_contract(account_name, code, abi='', includes = [], entry='apply'):
    code = compile_cpp_src(account_name, code, includes, entry=entry)
    code = open(f'tmp/{account_name}.wasm', 'rb').read()
    m = hashlib.sha256()
    m.update(code)
    code_hash = m.hexdigest()
    r = eosapi.get_code(account_name)
    if code_hash != r['code_hash']:
        r = eosapi.set_contract(account_name, code, abi, 0)
    return True
예제 #4
0
def publish_cpp_contract_from_file(account_name, file_name, includes = [], entry='apply'):
    code = compile_cpp_file(file_name, includes, entry=entry)
    assert code
    m = hashlib.sha256()
    m.update(code)
    code_hash = m.hexdigest()

    r = eosapi.get_code(account_name)
    if code_hash != r['code_hash']:
        print('update contract')
        abi = open(f'{file_name}.abi', 'r').read()
        r = eosapi.set_contract(account_name, code, abi, 0)
    return True
예제 #5
0
def set_code(account_name, code):
    m = hashlib.sha256()
    code = compile(code, "contract", 'exec')
    code = marshal.dumps(code)
    m.update(code)
    code_hash = m.hexdigest()
    r = eosapi.get_code(account_name)
    if code_hash == r['code_hash']:
        return

    setcode = {"account":account_name,
               "vmtype": 1,
               "vmversion":0,
               "code":code.hex()
               }
    eosapi.push_action('eosio', 'setcode', setcode, {account_name:'active'})
    
    return True
예제 #6
0
info = eosapi.get_info()

if False:
    info = eosapi.get_info()
    print(info)

    block = eosapi.get_block(1)
    print(block)

    state = eosapi.get_block_header_state(info.last_irreversible_block_num)
    print(state)

    account = eosapi.get_account('hello')
    print(account)

    code = eosapi.get_code('hello')
    print(code)

    abi = eosapi.get_abi('hello')
    print(abi)

    abi = eosapi.get_raw_code_and_abi('hello')
    print(abi)

    abi = eosapi.get_raw_abi('hello')
    print(abi)

    info = eosapi.get_producers(True, 0)
    print(info)

    info = eosapi.get_producer_schedule()
예제 #7
0
info = eosapi.get_info()
print(info)

block = eosapi.get_block(1)
print(block)

# state = eosapi.get_block_header_state(info['last_irreversible_block_num'])
# print(state)

contract_name = 'hello'

account = eosapi.get_account(contract_name)
print(account)

code = eosapi.get_code(contract_name)
print(code)

abi = eosapi.get_abi(contract_name)
print(abi)

abi = eosapi.get_raw_code_and_abi(contract_name)
print(abi)

abi = eosapi.get_raw_abi(contract_name)
print(abi)

info = eosapi.get_producers(True, 0)
print(info)

info = eosapi.get_producer_schedule()