美文网首页
How to Use List and Map in Smart

How to Use List and Map in Smart

作者: 五角场李小白 | 来源:发表于2018-12-29 15:55 被阅读0次

    <h1 align="center">How to Use List and Map in Smart Contract</h1>
    <p align="center" class="version">Version 0.1</p>

    List: The most basic data structure in Python is the sequence.

    Contract about list operation

    from ontology.interop.System.Storage import Put, Get, GetContext
    from ontology.interop.System.Runtime import Notify, Serialize, Deserialize
    from ontology.builtins import append, remove, range, len, print
    
    LISTKEY = "List"
    
    def Main(operation, args):
        if operation == "init":
            return init()
        if operation == "add_list":
            elements = args[0]
            return add_list(elements)
        if operation == "remove_list":
            element = args[0]
            return remove_list(element)
        
    def init():
        # init list
        list1 = [1,2,3]
        list1Info = Serialize(list1)
        # save data 
        Put(GetContext(), LISTKEY, list1Info)
        
        Notify(["init list is ",list1])
        
        return True
    
    def add_list(elements):
        # get data from persistent storage area
        list1Info = Get(GetContext(), LISTKEY)
        list1 = Deserialize(list1Info)
        
        Notify(["before add, list is ", list1])
    
        for element in elements:
            list1.append(element)
        list1Info = Serialize(list1)
        Put(GetContext(), LISTKEY, list1Info)
        Notify(["after add, list is ", list1])
    
        return list1
    
    def remove_list(element):
        # get data from persistent storage area
        list1Info = Get(GetContext(), LISTKEY)
        list1 = Deserialize(list1Info)
        
        Notify(["before add, list is ", list1])
    
        list1.remove(element)
        list1Info = Serialize(list1)
        Put(GetContext(), LISTKEY, list1Info)
        Notify(["after remove, list is ", list1])
        return list1
    

    Contract about map operation

    from ontology.interop.System.Storage import Put, Get, GetContext
    from ontology.interop.System.Runtime import Notify, Serialize, Deserialize
    from ontology.builtins import append, remove
    
    MAPKEY = "Map"
    
    def Main(operation, args):
        if operation == "init":
            return init()
        if operation == "add_map":
            key = args[0]
            value = args[1]
            return add_map(key, value)
        if operation == "remove_map":
            key = args[0]
            return remove_map(key)
        return False
    
    def init():
        # init map
        map1 = {
            "key1":1,
            "key2":2
        }
        map1Info = Serialize(map1)
        Put(GetContext(), MAPKEY, map1Info)
        # return result
        Notify(["init map is ", map1["key1"], map1["key2"]])
    
        return True
    
    
    def add_map(key, value):
        map1Info = Get(GetContext(), MAPKEY)
        map1 = Deserialize(map1Info)
    
        Notify(["before add, map is ", map1["key1"], map1["key2"]])
        # add data 
        map1[key] = value
        map1Info = Serialize(map1)
        Put(GetContext(), MAPKEY, map1Info)
        Notify(["after add, map is ", map1["key1"], map1["key2"], map1[key]])
    
        return True
        
    def remove_map(key):
        map1Info = Get(GetContext(), MAPKEY)
        map1 = Deserialize(map1Info)
        Notify(["before remove, map is ", map1["key1"], map1["key2"], map1[key]])
        map1.remove(key)
        map1Info = Serialize(map1)
        Put(GetContext(), MAPKEY, map1Info)
        Notify(["after remove, map is ", map1["key1"], map1["key2"]])
    
        return True
    

    相关文章

      网友评论

          本文标题:How to Use List and Map in Smart

          本文链接:https://www.haomeiwen.com/subject/fkyulqtx.html