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

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

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

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์˜จํ†จ๋กœ์ง€ ์Šค๋งˆํŠธ ๊ณ„์•ฝ API์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Ontology ์Šค๋งˆํŠธ ๊ณ„์•ฝ API๋Š” 7๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. ๋ธ”๋ก์ฒด์ธ ๋ฐ ๋ธ”๋ก API,
  2. ๋Ÿฐํƒ€์ž„ API,
  3. ์Šคํ† ๋ฆฌ์ง€ API,
  4. ๋„ค์ดํ‹ฐ๋ธŒ API,
  5. ์—…๊ทธ๋ ˆ์ด๋“œ API,
  6. ์‹คํ–‰ ์—”์ง„ API ๋ฐ
  7. ์ •์  ๋ฐ ๋™์  ํ˜ธ์ถœ API.

๋ธ”๋ก์ฒด์ธ ๋ฐ ๋ธ”๋ก API๋Š” ์˜จํ†จ๋กœ์ง€ ์Šค๋งˆํŠธ ๊ณ„์•ฝ ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. Blockchain API๋Š” ํ˜„์žฌ ๋ธ”๋ก ๋†’์ด ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ธ”๋ก์ฒด์ธ ์ฟผ๋ฆฌ ์ž‘์—…์„ ์ง€์›ํ•˜๋Š” ๋ฐ˜๋ฉด, Block API๋Š” ์ฃผ์–ด์ง„ ๋ธ”๋ก์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ธ”๋ก ์ฟผ๋ฆฌ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜์ž!

๋จผ์ € ์ƒˆ ๊ณ„์•ฝ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. SmartX๊ทธ๋Ÿฐ ๋‹ค์Œ ์•„๋ž˜ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

1. ๋ธ”๋ก์ฒด์ธ API ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์Šค๋งˆํŠธ ๊ณ„์•ฝ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋งํฌ๋Š” Python ๋งํฌ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ฌธ์€ ํ˜„์žฌ ๋ธ”๋ก ๋†’์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” GetHeight ํ•จ์ˆ˜์™€ ๋ธ”๋ก ํ—ค๋”๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” GetHeader ํ•จ์ˆ˜๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetHeight, GetHeader

GetHeight

GetHeight๋Š” ์•„๋ž˜ ์˜ˆ์™€ ๊ฐ™์ด ๋ธ”๋ก์ฒด์ธ์˜ ๋งˆ์ง€๋ง‰ ๋ธ”๋ก ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์˜ˆ์ œ์—์„œ๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด Main ํ•จ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜์ง€๋งŒ ํ•„์š”์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeight
def Main(operation):
    if operation == 'demo':
        return demo()
    return False

def demo():
    height=GetHeight()
    Notify(height) # print height
    return height #return height after running the function

ํ—ค๋” ๊ฐ€์ ธ์˜ค๊ธฐ

GetHeader๋Š” ๋ธ”๋ก ํ—ค๋”๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก์ฒด์ธ์— ์žˆ๋Š” ๋ธ”๋ก์˜ ์ผ๋ จ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์˜ˆ:

from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeader
def demo():
    block_height=10
    header=GetHeader(block_height) 
    Notify(header)
return header

GetTransactionByHash

GetTransactionByHash๋Š” ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋ฅผ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋Š” ๋‹ค์Œ ์ฃผ์†Œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. GetTransactionByHash bytearray ํ˜•์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ. ์ด ํ•จ์ˆ˜์˜ ํ•ต์‹ฌ์€ hex ํ˜•์‹์˜ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋ฅผ bytearray ํ˜•์‹์˜ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ค‘์š”ํ•œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ๋ธ”๋ก ํ•ด์‹œ๊ฐ€ ์žˆ๋Š” ๋ธ”๋ก์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. bytearray ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ˆ๋กœ XNUMX์ง„์ˆ˜ ํ˜•์‹์˜ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

๋จผ์ € ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋ฅผ ๋’ค์ง‘์Šต๋‹ˆ๋‹ค.

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

๊ฐœ๋ฐœ์ž๋Š” SmartX์—์„œ ์ œ๊ณตํ•˜๋Š” Hex Number(little endian)Number ๋ณ€ํ™˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ bytearray ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}

์ด๊ฒƒ์€ SmartX์—์„œ ์ œ๊ณตํ•˜๋Š” String Byte Array ๋ณ€ํ™˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ bytearray๋ฅผ ์œ ์‚ฌํ•œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

๋‹ค์Œ์€ ํŠธ๋žœ์žญ์…˜์˜ ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ ธ์˜ค๋Š” GetTransactionByHash ํ•จ์ˆ˜์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
    # tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    tx=GetTransactionByHash(tx_hash)
    return tx

GetTransactionHeight

GetTransactionHeight๋Š” ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ๋ฅผ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜ ๋†’์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ ํ•ด์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import  GetTransactionHeight
def demo():
    #   tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    height=GetTransactionHeight(tx_hash)
    return height

๊ณ„์•ฝ ๋ฐ›๊ธฐ

๊ฐœ๋ฐœ์ž๋Š” GetContract ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์•ฝ์˜ ํ•ด์‹œ๋ฅผ ํ†ตํ•ด ๊ณ„์•ฝ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์•ฝ ํ•ด์‹œ ๋ณ€ํ™˜ ํ”„๋กœ์„ธ์Šค๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ ๋ณ€ํ™˜ ํ”„๋กœ์„ธ์Šค์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetContract
def demo():
    # contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"    
    contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
    contract=GetContract(contract_hash)
    return contract

GetBlock

GetBlock์€ ๋ธ”๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋ธ”๋ก์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋ธ”๋ก ๋†’์ด๋กœ ๋ธ”๋ก ๊ฐ€์ ธ์˜ค๊ธฐ:

from ontology.interop.System.Blockchain import GetBlock
def demo():
    block=GetBlock(1408)
    return block

2. ๋ธ”๋ก ํ•ด์‹œ๋กœ ๋ธ”๋ก์„ ์–ป์Šต๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetBlock
def demo():    
    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
    block=GetBlock(block_hash)

2. ๋ธ”๋ก API ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

Block API์—๋Š” ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜ ๊ฐ€์ ธ์˜ค๊ธฐ, GetTransactionCount๊ณผ GetTransactionByIndex. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์”ฉ ๋ถ„ํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GetTransactionCount

GetTransactionCount๋Š” ์ฃผ์–ด์ง„ ๋ธ”๋ก์— ๋Œ€ํ•œ ํŠธ๋žœ์žญ์…˜ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
    block=GetBlock(1408)
    count=GetTransactionCount(block)
    return count

๊ฑฐ๋ž˜ ๊ฐ€์ ธ์˜ค๊ธฐ

๊ฐœ๋ฐœ์ž๋Š” GetTransactions ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ธ”๋ก์˜ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions 
def demo():
    block=GetBlock(1408)
    txs=GetTransactions(block)
    return txs

GetTransactionByIndex

GetTransactionByIndex๋Š” ์ฃผ์–ด์ง„ ๋ธ”๋ก์—์„œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
    block=GetBlock(1408)
    tx=GetTransactionByIndex(block,0) # index starts from 0.
    return tx

์ „์ฒด ๊ฐ€์ด๋“œ๋Š” ๋‹น์‚ฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜.

์‚ฌํ›„

๋ธ”๋ก์ฒด์ธ ๋ฐ ๋ธ”๋ก API๋Š” ๋ธ”๋ก์ฒด์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์Šค๋งˆํŠธ ๊ณ„์•ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์Šค๋งˆํŠธ ๊ณ„์•ฝ์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ–ฅํ›„ ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‚˜๋จธ์ง€ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋“ค์ด ์˜จํ†จ๋กœ์ง€ ๋ธ”๋ก์ฒด์ธ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ํŠนํžˆ OntologyRussia๋ฅผ ์œ„ํ•ด Hashrate&Shares ํŽธ์ง‘์ž๊ฐ€ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆญ

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

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

์ถœ์ฒ˜ : habr.com

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