์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ Python์œผ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. 3๋ถ€: ๋Ÿฐํƒ€์ž„ API

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ Python์œผ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. 3๋ถ€: ๋Ÿฐํƒ€์ž„ API

์ด๊ฒƒ์€ ์˜จํ†จ๋กœ์ง€ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ Python์œผ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ต์œก ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์˜ ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š”

  1. ๋ธ”๋ก์ฒด์ธ ๋ฐ ๋ธ”๋ก API
  2. ์Šคํ† ๋ฆฌ์ง€ API.

์ด์ œ ์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ Python์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ ์ ˆํ•œ ์˜๊ตฌ ์ €์žฅ์†Œ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป์—ˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ API (๊ณ„์•ฝ ์‹คํ–‰ API). ๋Ÿฐํƒ€์ž„ API์—๋Š” ๊ณ„์•ฝ ์‹คํ–‰์„ ์œ„ํ•œ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ๋ณ€ํ™˜ ๋ฐ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” 8๊ฐœ์˜ ๊ด€๋ จ API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 8๊ฐœ์˜ API ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ Python์œผ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. 3๋ถ€: ๋Ÿฐํƒ€์ž„ API

8๊ฐœ์˜ API ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ „์— ์˜จํ†จ๋กœ์ง€ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ์ƒˆ ๊ณ„์•ฝ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SmartX ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š”.

๋Ÿฐํƒ€์ž„ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์ˆ˜์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ XNUMX๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ๋Ÿฐํƒ€์ž„ API: ontology.interop.System.Runtime ะธ ์˜จํ†จ๋กœ์ง€.interop.์˜จํ†จ๋กœ์ง€.๋Ÿฐํƒ€์ž„. ์˜จํ†จ๋กœ์ง€ ๊ฒฝ๋กœ์—๋Š” ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ API๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ค„์€ API ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

์•Œ๋ฆผ API

์•Œ๋ฆผ ๊ธฐ๋Šฅ์€ ๋„คํŠธ์›Œํฌ ์ „์ฒด์— ์ด๋ฒคํŠธ๋ฅผ ๋ฐฉ์†กํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์—์„œ Notify ํ•จ์ˆ˜๋Š” XNUMX์ง„์ˆ˜ ๋ฌธ์ž์—ด "hello word"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด๋ฅผ ๋„คํŠธ์›Œํฌ ์ „์ฒด์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

๋กœ๊ทธ์—์„œ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ Python์œผ๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. 3๋ถ€: ๋Ÿฐํƒ€์ž„ API

GetTime API

GetTime ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ Unix ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ธก์ • ๋‹จ์œ„๋Š” ์ดˆ์ž…๋‹ˆ๋‹ค.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

GetCurrentBlockHash ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ๋ธ”๋ก์˜ ํ•ด์‹œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”

์ด๋Š” ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ํ•จ์ˆ˜ ์Œ์ž…๋‹ˆ๋‹ค. Serialize ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ bytearray ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  Deserialize ํ•จ์ˆ˜๋Š” bytearray๋ฅผ ์›๋ณธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ์€ ๋“ค์–ด์˜ค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ณ„์•ฝ์˜ ์˜๊ตฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ณ„์•ฝ์˜ ์˜๊ตฌ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์›๋ณธ ๊ฐœ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext

def Main(operation, args):
    if operation == 'serialize_to_bytearray':
        data = args[0]
        return serialize_to_bytearray(data)
    if operation == 'deserialize_from_bytearray':
        key = args[0]
        return deserialize_from_bytearray(key)
    return False


def serialize_to_bytearray(data):
    sc = GetContext()
    key = "1"
    byte_data = Serialize(data)
    Put(sc, key, byte_data)


def deserialize_from_bytearray(key):
    sc = GetContext()
    byte_data = Get(sc, key)
    data = Deserialize(byte_data)
    return data

Base58ToAddress ๋ฐ AddressToBase58

์ด ์ฃผ์†Œ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ ์Œ. Base58ToAddress ํ•จ์ˆ˜๋Š” base58๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ฃผ์†Œ๋ฅผ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , AddressToBase58์€ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ์ฃผ์†Œ๋ฅผ base58๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

์ฆ์ธ ํ™•์ธ

CheckWitness(fromAcct) ํ•จ์ˆ˜์—๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ž๊ฐ€ fromAcct์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด(์ฆ‰, ์„œ๋ช… ํ™•์ธ์ด ํ†ต๊ณผ๋œ ๊ฒฝ์šฐ) ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์ปจํŠธ๋ž™ํŠธ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ณ„์•ฝ์ด๊ณ  โ€‹โ€‹๊ณ„์•ฝ์—์„œ ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜๋ฉด ๊ฒ€์ฆ์ด ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, fromAcct๊ฐ€ GetCallingScriptHash()์˜ ๋ฐ˜ํ™˜ ๊ฐ’์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. GetCallingScriptHash() ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ๊ณ„์•ฝ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GetCallingScriptHash()๏ผš

๋”์— ๊ตฌํ—™

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ตฌํ—™. ๋‹ค์Œ ๊ธ€์—์„œ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ API์˜จํ†จ๋กœ์ง€ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์—์„œ ์ž์‚ฐ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

๊ธฐ์‚ฌ๋Š” ํŽธ์ง‘์ž๋“ค์— ์˜ํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ์œจ ๋ฐ ๊ณต์œ  ํŠนํžˆ OntologyRussia์˜ ๊ฒฝ์šฐ.

๋‹น์‹ ์€ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๊นŒ? ๊ธฐ์ˆ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฐ€์ž…ํ•˜์„ธ์š”. ๋””์Šค์ฝ”๋“œ. ๋˜ํ•œ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ ์˜จํ†จ๋กœ์ง€์—์„œ๋Š” ๋” ๋งŽ์€ ๋„๊ตฌ, ๋ฌธ์„œ ๋“ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ณต๊ฐœ ์ž‘์—…. ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  ๋ณด์ƒ์„ ๋ฐ›์œผ์„ธ์š”.

์ ์šฉํ•˜๋‹ค ์˜จํ†จ๋กœ์ง€ ํ•™์ƒ๋“ค์„ ์œ„ํ•œ ์ธ์žฌ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด

์˜จํ†จ๋กœ์ง€

์˜จํ†จ๋กœ์ง€ ์›น์‚ฌ์ดํŠธ - GitHub์˜ - ๋””์Šค์ฝ”๋“œ - ์ „๋ณด ๋Ÿฌ์‹œ์•„์–ด - ํŠธ์œ„ํ„ฐ - ๋ ˆ๋”ง

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€