SC static and dynamic applicatio

2019-02-03  本文已影响0人  五角场李小白

<h1 align="center">Static and Dynamic Application Call in Smart Contract</h1>
<p align="center" class="version">Version 0.1</p>

1. Introduction

API Return Value Description
RegisterAppCall function call a smart contract statically
DynamicAppCall depend on the calling function call a smart contract dynamically

For more details, you can view the API-doc and the source code here.

2. Static call

The contract A

from boa.interop.System.App import RegisterAppCall
from boa.interop.System.Runtime import Notify

HelloWorld = RegisterAppCall('5e8d6fddb980bd5b118c45d3ebff5c5f220fa2de', 'operation', 'args')

def Main(operation, args):
    if operation == "CallHello":
        msg=args[0]
        return CallHello(msg)
    return False


def CallHello(msg):
    return HelloWorld("Hello", [msg])

The "Hello World " contract B invoked by contract A

from boa.interop.System.Runtime import Notify

def Main(operation, args):
    if operation == 'Hello':
        msg = args[0]
        return Hello(msg)

    return False


def Hello(msg):
    return msg

3. Dynamic call

The contract A

from boa.interop.System.App import RegisterAppCall, DynamicAppCall
from boa.interop.System.Runtime import Log, Notify


CallContract = RegisterAppCall('5e8d6fddb980bd5b118c45d3ebff5c5f220fa2de', 'operation', 'args')
# dea20f225f5cffebd3458c115bbd80b9dd6f8d5e

def Main(operation, args):
    if operation == "DynamicCallContract":
        if len(args) != 3:
            return False
        revesedContractAddress = args[0]
        opt = args[1]
        params = args[2]
        return DynamicCallContract(revesedContractAddress, opt, params)
    if operation == "StaticCallContract":
        opt = args[0]
        params = args[1]
        return StaticCallContract(opt,params)

    return False

def DynamicCallContract(revesedContractAddress, operation, params):
    res = DynamicAppCall(revesedContractAddress, operation, params)
    Notify(["the result of the DynamicCall is: ", res])
    return res

def StaticCallContract(opt, params):
    res=CallContract(opt, params)
    Notify(["the result of the StaticCall is: ", res])
    return res

The "Hello World " contract B invoked by contract A

from boa.interop.System.Runtime import Notify

def Main(operation, args):
    if operation == 'Hello':
        msg = args[0]
        return Hello(msg)

    return False


def Hello(msg):
    return msg
上一篇下一篇

猜你喜欢

热点阅读