출처 : https://medium.com/returnvalues/libra-core-설치-및-테스트넷-연결-55d4e92d8319

 

고승원님 포스팅 보고 나도 시작해볼까 했는데

한 3일 정도 걸린거 같다.

 

Mac OS에서는 쉽게 되는거 같은데 docker 에서는 완전 쉽지 않다.

ubuntu 18

root@9bb88386f44f:/etc# cat /etc/issue
Ubuntu 18.04.1 LTS \n \l

root@9bb88386f44f:/etc

 

 

 

내가 Docker를 쓴지가 얼마 안되었다.

위 버전은 안되고 미안하게도 Icon 공모전 중이라 Icon이미지에 libra를 설치 했다.

docker run -it -p 127.0.0.1:9000:9000 -p 127.0.0.1:5000:5000 --rm ubuntu:latest

docker run -it -p 127.0.0.1:9000:9000 -p 127.0.0.1:5000:5000 --rm ibriz/icon-workshop:latest  

위 명령어가 실행 안되면

리스타트를 하고 다 올라 올때까지 3분 정도 기다려야 된다.

 

 

윈도우 Docker에서 램을 6기가 이상으로 잡아야 된다.

나중에 램 용량 모자른다고 메세지 뜨기도 한다.

rm 옵션을 줘서 Docker를 한번 닫으면 처음부터 다시 해야된다.

 

우선 apt 연결을 위해

/etc/apt/sources.list 바꾸기

#+ Ubuntu Main Repos

deb http://mirror.kakao.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirror.kakao.com/ubuntu/ trusty main restricted universe multiverse

 


#+ Ubuntu Update Repos

deb http://mirror.kakao.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirror.kakao.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirror.kakao.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirror.kakao.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirror.kakao.com/ubuntu/ trusty-backports main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ubuntu bionic main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ubuntu bionic-security main restricted universe multiverse

deb http://mirror.kakao.com/ubuntu/ubuntu bionic-updates main restricted universe multiverse

 

 

경로 바꾸었으니 적용을 해야 된다.

 apt-get update

기타 등등 설치

 apt install -y curl
apt install  -y sudo
apt install -y rustc cargo
apt install -y unzip
apt install -y g++
apt install -y wget
apt-get install -y binutils-2.26
apt install zlib1g-dev


apt-get install build-essential libtool autotools-dev automake pkg-config ... qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev

스택 오버플로우 뒤저가면 찾아 온것들이다.

dependency 엄청 타는거 같았다.

 

난 root디렉토리에 머 설치하는걸 좋아한다.

/usr/local/src가 리눅스에서는 라이브러리 공식이긴한데 ㅎ

 

go언어와 make를 설치한다 이것도 버전탄다.

cd /root 

wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz


wget https://cmake.org/files/v3.8/cmake-3.8.0-rc1.tar.gz

cd cmake-3.8.0-rc1
./bootstrap
make
make install

 

환경변수에 넣고 실행 한다.

.profile 아래 부분에 추가

export CMAKE_ROOT=~/cmake-3.8.0-rc1
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin

source .profile
env확인

 

root디렉토리에서 바로 설치 한다.

 

git clone https://github.com/libra/libra.git
./scripts/dev_setup.sh 

Finished installing all dependencies.

You should now be able to build the project by running:

source /root/.cargo/env
cargo build 

 

 

이제 끝이다.

Building and running client in debug mode.# ls
cargo_check_dependencies.sh  cargo_update_outdated.sh  cli  clippy.args  clippy.sh  dev_setup.sh  nightly_features.sh
root@9bb88386f44f:~/libra/scripts# cd cli
root@9bb88386f44f:~/libra/scripts/cli# ls
start_cli_testnet.sh  trusted_peers.config.toml
root@9bb88386f44f:~/libra/scripts/cli# ./start_cli_testnet.sh
Building and running client in debug mode. 

 

 

 

정말 적고 보니  양도 얼마 안되고 허무하다.

삽질 정말 많이 했었는데,,

 

블로그 이미지

iesay

,

아이콘 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

,

개발 환경 : Docker for Windows Installer.exe ,  Visual Studio Code - Insiders

 

 

도커 설치 후  명령어 실행

docker run -it -p 127.0.0.1:9000:9000 -p 127.0.0.1:5000:5000 --rm ibriz/icon-workshop:latest 

만약 도커가 실행되지 않는다면 컨테너를 swich 시켜라

 

마켓플레이스에서 remote 검색하여

remote development 설치

 

 

왼쪽 아래 녹색 ><버튼 클릭 

 

attack를 시키면 사용이 가능하다.

그 뒤 도커의 세션을 바로 load하면 된다.

 

해당 기능은 파이참에서 유료로 제공해주는 기능이라고 한다.

nodejs든 python이든 아주 좋은 환경에서 개발이 가능해 보인다.

 

 

 

 

'아이콘(ICON)' 카테고리의 다른 글

Python(파이썬) 웹프레임워크 - Django(장고)  (0) 2019.06.26
아이콘 DB  (0) 2019.05.30
아이콘 스마트컨트렉 분석(dice_roll)  (0) 2019.05.27
클라우드 세일  (0) 2019.05.23
아이콘 스마트컨트렉 도커 설치  (0) 2019.05.20
블로그 이미지

iesay

,

출처 : https://medium.com/@2infiniti/icon-dapp-from-a-z-part-3-icon-dice-roll-dapp-7f0ca72057f5

 

준비물 : 지갑2개(키스토어),  x윈도우 웹브라우저

 

아이콘 도커 접속

docker run -it -p 127.0.0.1:9000:9000 -p 127.0.0.1:5000:5000 --rm ibriz/icon-workshop:latest 

 

icon-dice-roll소스를 다운로드 받아 준다.

git clone https://gitlab.com/ibriz/icon-dice-roll.git

 

중요

tbears의 -k 키스토어 옵션과 -c 컨피그옵션은 deploy할 디렉토리와 동일하게 둔다.

tbears_cli_config.json

{
    "uri": "https://bicon.net.solidwallet.io/api/v3",
    "nid": "0x3",
    "keyStore": null,
    "from": "hx040fe47c7a7827684aa4c0bfcfdbbbdbb3ec3b6a",
    "to": "cx0000000000000000000000000000000000000000",
    "deploy": {
        "stepLimit": "0x59682f00",
        "mode": "install",
        "scoreParams": {}
    },
    "txresult": {},
    "transfer": {
        "stepLimit": "0xf4240"
    }
}
 

uri : 테스트넷 서버주소

from : A지갑주소 (도박을 만든 포주)

stepLimit : ICX 스마트컨트렉 수수료

            ( 16진수로 되어 있는데 약 11 ICX정도 지출된다)

 

 

ICONex 에서 생성한 키스토어를 넣어 준다.  도박장 주인

keystore_test1

 

 

 

icon-dice-roll에 tbears_cli_config.json , keystore_test1  복사 한다.

root@e3c558b878a6:/tbears# cp tbears_cli_config.json icon-dice-roll/
root@e3c558b878a6:/tbears# cp keystore_test1 icon-dice-roll/
root@e3c558b878a6:/tbears# cd icon-dice-roll/
root@e3c558b878a6:/tbears/icon-dice-roll# pwd
/tbears/icon-dice-roll
root@e3c558b878a6:/tbears/icon-dice-roll# ls
 config                     keystores        tbears_cli_config.json
 dice-roll                  keystore_test1   testcmdline
'ICON Workshop Guide.pdf'   README.md        webapp
root@e3c558b878a6:/tbears/icon-dice-roll#
 

 

해당 디렉토리로 이동 후

tbears deploy dice-roll -k keystore_test1 -p 키스토어패스워드

 

Send deploy request successfully.
If you want to check SCORE deployed successfully, execute txresult command
transaction hash: 0x8c46c029a137bc676cc06a3b938a20112981043b086f665151befc3191ee0c11

root@e3c558b878a6:/tbears/icon-dice-roll# tbears txresult 0x8c46c029a137bc676cc06a3b938a20112981043b086f665151befc3191ee0c11
Transaction result: {
    "jsonrpc": "2.0",
    "result": {
        "txHash": "0x8c46c029a137bc676cc06a3b938a20112981043b086f665151befc3191ee0c11",
        "blockHeight": "0x740a3",
        "blockHash": "0xf2bd7fdfec266534e668fcd00c6a46342ee04bf6fcb2a6cf412655df5528d643",
        "txIndex": "0x0",
        "to": "cx0000000000000000000000000000000000000000",
        "scoreAddress": "cxeb428634534e073101b6124815175ffe16f82fa8",
        "stepUsed": "0x3e4c5bb0",
        "stepPrice": "0x2540be400",
        "cumulativeStepUsed": "0x3e4c5bb0",
        "eventLogs": [],
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "status": "0x1"
    },
    "id": 1
}
root@e3c558b878a6:/tbears/icon-dice-roll#

 

저 부분이 컨트렉 주소다.

유저가 입금하고 송금 받는곳이다.

자동으로 해준다.

 

 

/tbears/icon-dice-roll/testcmdline

vi send_set_treasury.json

{
  "jsonrpc": "2.0",
  "method": "icx_sendTransaction",
  "params": {
    "version": "0x3",
    "from": "hx040fe47c7a7827684aa4c0bfcfdbbbdbb3ec3b6a",
    "value": "0x6f05b59d3b200000",
    "stepLimit": "0x59682f00",
    "nid": "0x3",
    "nonce": "0x2",
    "to": "cxeb428634534e073101b6124815175ffe16f82fa8",
    "dataType": "call",
    "data": {
      "method": "set_treasury"
      }
  },
  "id": 1
}
 

지갑주소, 수수료, to에 스마트컨트렉 주소를 넣는다.

# pwd
/tbears/icon-dice-roll


root@e3c558b878a6:/tbears/icon-dice-roll# tbears sendtx -k keystore_test1 testcmdline/send_set_treasury.json -p 키스토어패스워드


Send transaction request successfully.
transaction hash: 0x38ba401e1592060b80d2d777033381e1821de92da1c73892dcde7bfadcd41258

root@e3c558b878a6:/tbears/icon-dice-roll#
 

 

cd webapp

main.py

import ast
import json
import threading
import time

from flask import Flask, render_template, jsonify
from iconsdk.builder.call_builder import CallBuilder
from iconsdk.icon_service import IconService
from iconsdk.providers.http_provider import HTTPProvider
from iconsdk.wallet.wallet import KeyWallet
import urllib.request

from repeater import retry

app = Flask(__name__)

default_score = "cxeb428634534e073101b6124815175ffe16f82fa8"
icon_service = IconService(HTTPProvider("https://bicon.net.solidwallet.io/api/v3"))

wallets = {
    'wallet1': KeyWallet.load("../keystore_test1", "키스토어패스워드"),
}


@app.route('/getLatestTx', methods=['GET', 'POST'])
def latest_transactions():
    params = {}
    call = CallBuilder().from_(wallets['wallet1'].get_address()) \
        .to(default_score) \
        .method("get_results") \
        .params(params) \
        .build()
    result = icon_service.call(call)

    transaction_list = []
    for resultVal in result['result']:
        transaction_list.append(ast.literal_eval(resultVal))

    score_balance = icon_service.get_balance(default_score)
    account_balance = icon_service.get_balance(wallets['wallet1'].get_address())

    decending_ordered_transaction = sorted(transaction_list, key=lambda val: int(val['timestamp']), reverse=True)
    latest_transaction = decending_ordered_transaction[0] if len(decending_ordered_transaction) > 0 else []
    response = {
        'transaction_list': decending_ordered_transaction,
        'score_balance': score_balance,
        'account_balance': account_balance,
        'latest_transaction': latest_transaction
    }
    return jsonify(response)


@app.route('/getTransaction', methods=['GET', 'POST'])
def testnet_transactions():
    tx_list = urllib.request.urlopen(
        "https://bicon.tracker.solidwallet.io/v3/contract/txList?addr=cx9d10d63edc8225b7fbbecb335a099d97d0ee19d8&page=1&count=10").read()
    jsonTransaction = json.loads(tx_list)
    return render_template('flip.html', context=jsonTransaction['data'])


def occasional_update(first_time=False):
    app.config['updated'] = not first_time
    threading.Timer(10, occasional_update).start()


@app.route("/updated")
def updated():
    while not app.config['updated']:
        time.sleep(0.5)
    app.config['updated'] = False
    return "Updated"


@app.route("/")
def main():
    return render_template("index.html")


if __name__ == '__main__':
    occasional_update(first_time=True)
    app.run(debug=True, host='0.0.0.0', port=5000)

 

 

root@e3c558b878a6:/tbears/icon-dice-roll/testcmdline# pwd
/tbears/icon-dice-roll/testcmdline

vi send_bet.json

{
  "jsonrpc": "2.0",
  "method": "icx_sendTransaction",
  "params": {
    "version": "0x3",
    "from": "hxe7af5fcfd8dfc67530a01a0e403882687528dfcb",
    "value": "0xde0b6b3a7640000",
    "stepLimit": "0x59682f00",
    "nid": "0x3",
    "nonce": "0x1",
    "to": "cxeb428634534e073101b6124815175ffe16f82fa8",
    "dataType": "call"
  },
  "id": 1
}
 

수수료부분만과 to만 컨트렉주소로 바꾸어 준다.

from 키스토어를 로드 할때 그 주소가 들어 가는거 같다.

 


 

 

 root@e3c558b878a6:/tbears/icon-dice-roll/webapp# python3 main.py &
  * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 280-257-458

백그라운드로 & 실행 시킨다. 해당 커멘드로 베팅도 해야 되기 때문이다.

 

cd..

 

1.json 유저 키스토어를 넣는다.

 

tbears sendtx -k 1.json testcmdline/send_bet.json -p 패스워드 

 

 

 

 

 

 

asdas

 

 

'아이콘(ICON)' 카테고리의 다른 글

Python(파이썬) 웹프레임워크 - Django(장고)  (0) 2019.06.26
아이콘 DB  (0) 2019.05.30
아이콘 개발환경(윈도우)  (0) 2019.05.29
클라우드 세일  (0) 2019.05.23
아이콘 스마트컨트렉 도커 설치  (0) 2019.05.20
블로그 이미지

iesay

,

불편함을 무릎쓰고 토큰 발행 샘픔을 한번 돌려 보기로 한다.

솔리디티는 그냥 바로 코드를 직관적으로 볼수 있지만 ,,,, 아이콘은 python 부분인데

zip파일로 압축되어서 deploy되어 다운로드 받아서 열어 볼수 있다.

 

솔리디티 제작이 꽤나 어려워서 그런지,,, 결국 WASM을 컴파일?! 되어서 올라가지 싶

싶은 왜 이렇게 개발자가 불편하게 제작하였는지 모르겠다.

 

여튼 token소스로 한번 POC해보고 샘픔을 하나 하나 뜯어볼 생각이다.

블로그 이미지

iesay

,

https://www.icondev.io/docs/part-1-helloworld-on-local-emulated-environment

 

Part 1. HelloWorld on local emulated environment

## Install T-Bears (Docker) - Install Docker [[Get Started with Docker](https://www.docker.com/get-started)] - Install T-Bears and run the container. Below command will download tbears docker image, create a container, start the container, and attach your

www.icondev.io

 

snap install docker

docker run -it -p 127.0.0.1:9000:9000 -p 127.0.0.1:5000:5000 --rm ibriz/icon-workshop:latest

 

아이콘 테스트넷(여이도)를 버추얼박스에 구동한 것이다.

 

지갑은 알아서 잘 설치 하시고 ㅎㅎ  ICONex  크롬 플러그인 형태로 되어 있다.

여이도로 테스트넷도 잘 변경 하시고,,

10분 마다 20ICX식 코인을 준다 .

http://52.88.70.222/

 

구글 통해서 메일을 보내면 100 ICX를 보내 준다.

구글에서 생성한 키스토어는 잘 백업을 해놓아야 된다. 나중에 docker 내부에서 deploy 할떄 사용 된다.

 

이더리움은 MetaMask와 remix에서 ropstone테스트넷을 편하게 작업 할수 있는데 ,,

더 최신으로 나온 메인넷이 더 불편하다.

파란색 부분이 tx이고   u 뒷부분은 테스트넷을 가르친다. 매번 해주는게 속편하다.

config에서 파일 내용을 수정했음에도 불그구고 반영이 잘 안되는거 같다.

root@e3c558b878a6:/tbears# tbears deploy hello_world -k keystore_test1 -p 패스워드
Send deploy request successfully.
If you want to check SCORE deployed successfully, execute txresult command
transaction hash: 0x05eb7c6a2896dd663ae9b1b7dcfa000302408ef6a5deb0030dec589d1bbfdf72

 

 

 

root@e58bee10c63d:/tbears/icon-dice-roll# tbears txresult 0xb61f94a8f4edde2929eb 6d4909a7a2689eebca418f8549ca84057bedb0f8a9ee -u https://bicon.net.solidwallet.io /api/v3

 


Transaction result: {
"jsonrpc": "2.0",
"result": {
"txHash": "0xb61f94a8f4edde2929eb6d4909a7a2689eebca418f8549ca84057bedb0f 8a9ee",
"blockHeight": "0x6ffbb",
"blockHash": "0x8c7a1b8afdb3aa45e5770ee536e7de54e0465047cde1462854d1d438 30d5d32b",
"txIndex": "0x0",
"to": "cx0000000000000000000000000000000000000000",
"scoreAddress": "cx03ae895604c327a423db7c6b479bf7df3f2ad65d",
"stepUsed": "0x3ebd4208",
"stepPrice": "0x2540be400",
"cumulativeStepUsed": "0x3ebd4208",
"eventLogs": [],
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000",
"status": "0x1"
},
"id": 1
}

 

 

https://bicon.tracker.solidwallet.io/transaction/0xb61f94a8f4edde2929eb6d4909a7a2689eebca418f8549ca84057bedb0f8a9ee

 

 

 

 

 

scoreAddress가 스마트컨트렉 주소에 해당 되는걸 알수 있다.

https://bicon.tracker.solidwallet.io/contract/cx03ae895604c327a423db7c6b479bf7df3f2ad65d

 

잔액 조회

tbears balance hx040fe47c7a7827684aa4c0bfcfdbbbdbb3ec3b6a -u https://bicon.net.solidwallet.io/api/v3
balance in hex: 0x56bc75e2d63100000
balance in decimal: 100   000000000000000000
root@52ff571eb880:/tbears/icon-dice-roll/keystores#

소수점은 18자리 까지 있다. 너무 좀 과도 한거 같기도 하다.

 

icon-dice -roll에 hello_world 출력하는 구문을 작성해 보았다.

/tbears/icon-dice-roll에

keystore_test1

tbears_cli_config.json

가져다 놓고

 

packge.json


"version": "0.0.1",
"main_file": "diceroll",
"main_score": "diceroll"
}

diceroll.py

from iconservice import *

class diceroll(IconScoreBase):

def __init__(self, db: IconScoreDatabase) -> None:
super().__init__(db)

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

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

@external(readonly=True)
def hello(self) -> str:
return "Hello"

dice_roll로 디렉토리를 두고 실행은

tbears deploy dice_roll -k keystore_test1 -p 패스워드

실행하면 된다.

처음 디플로이 할때 디렉토리를 디플로이 해주는 형태인거 같다.

 

 

 

 

 

 

 

 

 

'아이콘(ICON)' 카테고리의 다른 글

Python(파이썬) 웹프레임워크 - Django(장고)  (0) 2019.06.26
아이콘 DB  (0) 2019.05.30
아이콘 개발환경(윈도우)  (0) 2019.05.29
아이콘 스마트컨트렉 분석(dice_roll)  (0) 2019.05.27
클라우드 세일  (0) 2019.05.23
블로그 이미지

iesay

,

시놀리지 NAS 구매한 사람은 시놀리지 쓰고

해놀리지라도 쓰고 싶은분은 빈 PC에 해놀리지 구축 하면 된다.

https://blog.djjproject.com/202

 

 

설치가 다 끝나면 아래와 같은 모습을 볼수 있다.

http://192.168.0.146:5000/

admin // 패스워드

 

 

putty로 ROOT권한을 받을러면

admin // 패스워드

sudo su -

admin패스워드와 동일하게 입력한다.

 

 

 

1] ckeditor 설치

https://github.com/a-ono/redmine_ckeditor

 

레드마인은 시놀리지에서 패키지에서 설치하면 된다.

http://192.168.0.146:30002/  접속이 가능하다 초기 패스워드는 admin // admin 이다.

 

 

버전에 맞는걸 설치하고

 

 

데스크탑에서 경로

/home/redmine/data/plugins

 

 

레드마인 플러그인이 설치될 경로

/home/redmine/redmine/plugins

아래 경로에 git clone에서 받아도 된다.

 

cd .. 한단계 위로 와서

 

bundle install --without development test


rake redmine:plugins:migrate RAILS_ENV=production

두개의 명령어를 설치 해주고

 

레드마인을 재실행 하면 된다.

 

가끔 nginx 에러라고 보는데 브라우저 쿠키를 삭제하고 재시작 하면 된다.

 

 

 


클립보드 이미지를 곧바로 첨부하기                                      
https://github.com/peclik/clipboard_image_paste
git clone https://github.com/peclik/clipboard_image_paste.gitplugins/clipboard_image_paste

애자일 : http://www.redmine.org/plugins/redmine_agile   

체크리스트 : http://www.redmine.org/plugins/redmine_checklists     O

ckeditor https://github.com/a-ono/redmine_ckeditor/releases/tag/1.1.7

일감 닫기 버튼 : http://www.redmine.org/plugins/redmine_close_button

 

문서 화면 심플하게 표시 : http://www.redmine.org/plugins/redmine_documents_short

 

관리 로그                                                              
https://github.com/haru/redmine_logs

 

모든 설치시 저 위에 명령어 두개를 치고

레드마인 restart 하면 된다.

 

 mv redmine_checklists-3_1_15-l ight.zip ../../redmine/plugins/
 

 

 

 

'시스템' 카테고리의 다른 글

vscode , 버추얼박스  (0) 2019.11.05
버추얼박스 VT-x is not available 오류  (1) 2019.07.18
pm2  (0) 2019.03.28
nodejs - form submit  (0) 2019.01.22
nodejs + mariadb 연동  (0) 2019.01.14
블로그 이미지

iesay

,

express + morgan

2019. 4. 1. 11:00

var express = require('express');
var morgan = require('morgan');

var app = express();


app.use(morgan('combined'));
app.use(morgan('common'));
app.use(morgan(':method + :date'));
app.use(morgan(':status + :url'));
app.use((request, Response) => {
    Response.send('express morgan');
});

app.listen(3000, () => {
    console.log('Server is running port 3000!');
});

 

'' 카테고리의 다른 글

라디오 버튼 제이쿼리  (0) 2020.08.24
GS인증(보안성)  (7) 2020.04.13
promise  (0) 2019.03.28
정규식 표현 정리  (0) 2019.03.28
DB에 웹쉘코드 삽입 POC  (0) 2018.12.06
블로그 이미지

iesay

,

pm2

시스템 2019. 3. 28. 16:36

npm install pm2 -g

 

pm2 start app.js --name 'app'

 

require('http').createServer((request, response) => {
    response.writeHead(200, { 'Content-Type': 'text/html' });
    response.end('Hello World');
}).listen(50000, () => {

    console.log('Serer  is start');
   
    });

'시스템' 카테고리의 다른 글

버추얼박스 VT-x is not available 오류  (1) 2019.07.18
시놀리지 나스 synology nas(redmine plugin)설치  (2) 2019.04.29
nodejs - form submit  (0) 2019.01.22
nodejs + mariadb 연동  (0) 2019.01.14
nodejs json파일 MongDB에 입력  (0) 2018.12.04
블로그 이미지

iesay

,

promise

2019. 3. 28. 16:13

 

 

여러개의 비동기 처리가 끝난 후

특정 로직을 실행하고 싶은 경우 발행

const promiseFirst = new Promise(resolve => resolve(1))
.then(result => `${result + 10}`);

const promiseSecend = new Promise(resolve => resolve(2))
.then(result => `${result + 20}`);

Promise.all([promiseFirst, promiseSecend]).then((result) => {
console.log('result :', result);
console.log('sum :', Number(result[0]) + Number(result[1]));
}
)

 

 

 

'' 카테고리의 다른 글

GS인증(보안성)  (7) 2020.04.13
express + morgan  (0) 2019.04.01
정규식 표현 정리  (0) 2019.03.28
DB에 웹쉘코드 삽입 POC  (0) 2018.12.06
워드프레스 서버 이관  (0) 2018.09.03
블로그 이미지

iesay

,