아이콘 DB

아이콘(ICON) 2019. 5. 30. 10:10

 

처음보는 문법들이 많다.

환경 설정은 이제 100% 이해 한거 같고 참 어려운곳에 시간을 너무 많이

허비한 느낌이 들지만..

화살표 함수나 이런 문법도 기존의 python 문법이 아닌 3.5부터

생긴 문법이다.

 

python으로 강의하고 python을 가장 자신 있는 언어라 생각 했는데

공부 새로 다시 해야겠다는 생각만 든다.

출처 :  https://docs.python.org/3/library/typing.html#module-typing

https://medium.com/b-ock-chain/how-to-score-3-cc73dc2e7fba

 

 

 

def greeting(name: str) -> str:
    return 'Hello ' + name

print(greeting("tkpark"))

def func1(arg1: int, arg2: str) -> int:
    return 100
print(func1(1,"tkpark"))

 

결과

root@1deaf713a0c1:/tbears/icon-dice-roll# python3 ex3.py
Hello tkpark
100
root@1deaf713a0c1:/tbears/icon-dice-roll#

 

 

출처

https://medium.com/b-ock-chain/how-to-score-2-104b687edd56

이제 구글의 leve db에 대해서 공부할 차례다.

 

 

 self._total_supply = VarDB(self._TOTAL_SUPPLY, db, value_type=int)
self._decimals = VarDB(self._DECIMALS, db, value_type=int)
self._balances = DictDB(self._BALANCES, db, value_type=int)
 

#############################################################

package.json

{
    "version": "0.0.1",
    "main_file": "appointment_payment",
    "main_score": "AppointmentPayment"
}

 

 

 

 

root@ee255e9c17ba:/tbears/appointment_payment# ls -al
total 16
drwxr-xr-x 2 root root 4096 Jun  7 08:08 .
drwxr-xr-x 1 root root 4096 Jun  7 07:38 ..
-rw-r--r-- 1 root root 1090 Jun  7 08:05 appointment_payment.py
-rw-r--r-- 1 root root    0 Jun  7 07:30 __init__.py
-rw-r--r-- 1 root root  107 Jun  7 07:36 package.json
root@ee255e9c17ba:/tbears/appointment_payment#

from iconservice import *

TAG = 'AppointmentPayment'

class AppointmentPayment(IconScoreBase):

    _BALANCES = 'balances'
    _TOTAL_SUPPLY = 'total_supply'
    _DECIMALS = 'decimals'

    def __init__(self, db: IconScoreDatabase) -> None:
        super().__init__(db)
        self._total_supply = VarDB(self._TOTAL_SUPPLY, db, value_type=int)
        self._decimals = VarDB(self._DECIMALS, db, value_type=int)
        self._balances = DictDB(self._BALANCES, db, value_type=int)

    def on_install(self) -> None:
        super().on_install()

    def on_update(self) -> None:
        super().on_update()

    @external(readonly=True)
    def name(self) -> str:
        return "SampleToken"

    @external(readonly=True)
    def symbol(self) -> str:
        return "ST"

    @external(readonly=True)
    def decimals(self) -> int:
        return self._decimals.get()

    @external(readonly=True)
    def totalSupply(self) -> int:
        return self._total_supply.get()

    @external(readonly=True)
    def balanceOf(self, _owner: Address) -> int:
        return self._balances[_owner]

 

 

 

 

클라우드 소스 가지고와서 실행해 보았다.

샘플  소스 구동은 되는데 이것 저것 신경써야 될게 많은듯 하다.

from iconservice import *
TAG = 'SampleOne'
class SampleOne(IconScoreBase):
    _OWNER_NAME = "owner_name"
    _ARRAY_DB_SAMPLE = "array_db_sample"
    _DICT_DB_SAMPLE = "dict_db_sample"
    def __init__(self, db: IconScoreDatabase) -> None:
        super().__init__(db)
        self._owner_name = VarDB(self._OWNER_NAME, db, str)
        self._dict_db = DictDB(self._DICT_DB_SAMPLE, db, str)
    def on_install(self) -> None:
        super().on_install()
        self._owner_name.set("Life4honor")
        self._dict_db["Jin"] = "Developer"
        self._array_db.put("Jin")
        self._dict_db["nanaones"] = "Developer"
        self._array_db.put("nanaones")
        self._dict_db["ICON"] = "Blockchain"
        self._array_db.put("ICON")
        self._dict_db["SCORE"] = "Smart Contract"
        self._array_db.put("SCORE")
    def on_update(self) -> None:
        super().on_update()
    @property
    def _array_db(self):
        return ArrayDB(self._ARRAY_DB_SAMPLE, self.db, str)
    @payable
    @external
    def deposit(self):
        amount = self.msg.value
        if amount >= 10000000000000000000:
            revert("ICX amount must be lower than 10")           
        self.icx.transfer(self.msg.sender, amount)
        Logger.info(f'Sent winner ({self.msg.sender}) {amount}.', TAG) 

소스코드 다 짰으면 python3로 컴파일 한번 해보고 deploy 하는게

시간을 좀 줄일수 있다.

 

 

 

윗부분은 레벨DB과 아랫부분은  deposit은 송금이 된다.

 

 

 

블로그 이미지

iesay

,