본문 바로가기

분류 전체보기143

Hardhat으로 컨트랙트 개발 시작하기 Hardhat으로 컨트랙트 개발 시작하기evm 기반에서 작동하는 스마트 컨트랙트 개발을 위해 하드햇을 사용하고 있다. 컨트랙트 개발을 시작하는 과정을 한 번 정리해보기 초기에 해둬야 할 설정에 대해도 정리해보자. 1. Node.js 설치하기대부분의 Ethereum 라이브러리와 도구는 JavaScript로 작성되었으며 Hardhat도 마찬가지입니다. 그렇기 때문에 node.js 가 설치되어 있어야하며 이 과정은 아래 링크를 참고하면 된다.https://hardhat.org/tutorial/setting-up-the-environment Hardhat | Ethereum development environment for professionals by Nomic FoundationHardhat is an Et.. 2024. 5. 16.
[Tact] Bools https://tact-by-example.org/02-bools Bools이전에 정수에 대해 살펴봤었는데, 이제는 bools 이다. The bools 는 다른 언어와 마찬가지로 true나 false 의 값을 가질 수 있다. Bool 은 boolean 혹은 logical 연산에 편리하며, 플래그를 저장하는데도 효율적이다.boolean 으로 지원되는 연산은 && || !  이다. bools 는 1 bit 밖에 차지하지 않기 때문에 굉장히 공간 효율적이며, 1000 bools 를 저장하는데 일년에 필요한 비용은 0.00072 TON 정도이다. import "@stdlib/deploy";contract Bools with Deployable { // contract persistent state var.. 2024. 5. 15.
[Tact] Integer Opertaions https://tact-by-example.org/02-integer-ops정수 연산Tact는 정수를 사용한 모든 런타임 계산을 257 비트에서 수행한다. 이 비트의 크기는 큰 수를 다룰 수 있지만, 수학 연산의 결과가 너무 커서 맞지 않으면 오버플로우가 발생할 수 있다. 하지만, 결과가 이 범위를 벗어나게 되면 시스템은 예외를 발생시키고 트랜잭션을 실패시킨다. 이것이 Tact가 안전한 수학 연산을 보장하는 방식이다. 또한, Tact는 서로 다른 크기의 변수를 혼합하여 사용해도 문제가 없도록 설계되었다. 모든 변수는 런타임 시 동일한 유형으로 처리되며, 이는 항상 부호가 있는 257 정수이다. 예를 들어, 달러를 사용한 산술에는 소수점 이하 두 자리가 필요하다. 하지만, 달러를 다룰 때에는 소수점 이하 .. 2024. 5. 15.
2024 DEV 더보기💡2024년에 공부한 내용, 성장한 내용 기록하기1월클린코드 스터디2월클린코드 스터디3월클린코드 스터디4월클린코드 스터디Web3OJ 풀기5월HTTP 완벽 가이드 스터디Web3OJ 풀기Tact 스터디 2024. 5. 15.
[Tact] Integers 💡 Integershttps://tact-by-example.org/02-integers 정수 (Integers)Tact도 Solidity 와 마찬가지로 int 타입만 지원하고 float 타입은 지원하지 않는다. 컨트랙트에서 사용되는 타입은 Solidity 와 마찬가지로 int이며, 부동 소수점의 불확실성을 피하기 위해 float 가 아닌 integer로 계산이 항상 이루어지게된다. int 의 런타임 타입은 항상 257 비트로, 모든 런타임 계산은 257 비트내에서 수행된다. 이는 우주의 원자수를 모두 포함할 수 있을만큼 충분히 크다. 상태 관리 비용 (Integers)상태 변수는 인라인 혹은 init() 내부에서 초기화되는데, 상태 변수를 초기화하지 않으면 코드가 컴파일이 되지 않는다. int를 인코.. 2024. 5. 15.
[Tact] Simple 카운터 💡 심플 카운터https://tact-by-example.org/01-a-simple-counter 사용자 요청에 따라 값을 1씩 증가시키는 카운터를 아래와 같이 구현했다.get fun 이 getter 함수였다면, receive 가 tact에서는 setter 함수인 듯하다. 처음에 눈으로 훑었을 땐, 솔리디티의 event 를 recieve 로 표현하나 싶었는데 그게 아니였다.contract Counter { // persistent state variable of type Int to hold the counter value val: Int as uint32; // initialize the state variable when contract is deployed init() .. 2024. 5. 7.
[Tact] getter 함수 Hello Worldhttps://tact-by-example.org/00-hello-world모든 언어의 시작은 Hello Wolrd 이듯 tact도 동일하다. 아래와 같은 컨트랙트를 배포해 getter() 함수를 실행해보자.contract HelloWorld { get fun greeting(): String { return "hello world"; }} 결과는 아래와 같다.Return value: "hello world"  솔리디티로 변경하면 아래 정도로 변경 가능할 듯. contract HelloWorld { function greeting() public pure returns (string memory) { return "Hello world"; }}con.. 2024. 5. 7.
[TACT] TON 블록체인 개발을 위한 언어 💡 Tact?Tact는 효율성과 단순성에 초점을 맞춘 TON 블록체인을 위한 프로그래밍 언어이다. Tact를 공부하려다 보니 Solidity 와는 다르게 정보가 가 많이 없다. 최대한 여러 다큐먼트들을 찾아보면서 정리해볼 계획. https://tact-lang.org/ 일단, Tact는 개발자들이 많이 사용하는 Javascript, Typescript, Rust, Swift 와 비슷해 다른 언어를 사용하는 개발자들이 배우기에 어렵지는 않은편으로 일단은 보인다. 아래 예시를 보면, 문법은 모르지만 코드가 이해는 간다.receive("increment") { self.val = self.val + 1; } get fun value(input: Int): Int { return input + se.. 2024. 5. 7.
web3oj 문제 1.덧셈 Web3 OJ 문제 1. 덧셈Problemhttps://app.web3oj.com/app/problem/1덧셈 기능을 하는 plus 함수를 구현하시오IPlusCalculator를 상속받아 본인만의 계산기를 만들고 PlusCalculatorProblem에 plusCalculator를 등록하고 제출하세요.// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IPlusCalculator { function plus(uint256, uint256) external pure returns (uint256);}contract PlusCalculatorProblem{ IPlusCalculator public plusCalculator; fu.. 2024. 5. 7.
시스템 트레이딩 - 이평선으로 추세 구분하기 (레인보우 트레이딩) 🌈 레인보우 트레이딩 이평선만으로 매수 / 매도 포지션 잡기 다시 도전. 무조건 추세에 따라 매수 포지션 / 매도 포지션을 잡는 전략이다. 1일 차트 기준으로 완벽한 레인보우가 형성되면 매수 포지션으로 갈아 타고, 완벽한 역 레인보우가 형성되면 매도 포지션을 잡는 전략. 나머지 조건에는 기존 전략을 유지하는 방법을 구현하려 한다. 이 방법은 간단하다. 각 이평선을 구하고, 값을 비교해서 RAINBOW & REVERSE RAINBOW 를 아래와 같이 찾아낸다. df = GetOhlcv(binanceX, ticker, timeframe) ma5 = GetMA(df, 5, 499) ma10 = GetMA(df, 10, 499) ma20 = GetMA(df, 20, 499) ma50 = GetMA(df, 50,.. 2023. 12. 6.
시스템 트레이딩 기본 설정하기, ccxt 설치 및 티커 조회하기 🚀 다시 시작하는 시스템 트레이딩 한동안 열심히 하다가 바쁘다는 핑계로 놓아두었던 시스템 트레이딩 개발을 다시 시작하려 한다. 오랜만에 하려 하니 많은 것이 바뀌어 있어서 차근차근 하나씩 정리해보면서 진행하려고 한다. 1) 기본적인 매수 / 매도 2) 매수 시점 알림 / 매도 시점 분할 매매 3) 수익률 자동으로 UTC+0 시에 입력 및 알림 4) 해당 시점 차트도 같이 알림으로 보내기 일단 이렇게 4가지를 목표로 정리해보자. 𝟭. 일단 ccxt 를 설치해서, 모든 티커의 현재 가격 정보를 가져와 보자. 아래와 같이 binance 객체 생성해서 프린트해보면 현재 정보를 확인할 수 있다. import ccxt access = "" secret = "" # binance 객체 생성 binanceX = ccx.. 2023. 12. 5.
Klaytn IDE로 스마트 컨트랙트 배포하기 💡클레이튼 스마트 컨트랙트 배포하기 나는 지금까지 모든 프로젝트를 이더리움 체인에서만 했었다. 수수료가 비싸고 TPS가 낮다는 단점이 있지만 아무래도 가장 많이 사용하는 체인이기도 하고 POS로 전환 후 속도도 빨라지고 수수료도 인하된다면 이더리움의 경쟁력은 점점 더 좋아지지 않을까 생각했다. 그러던 와중 네 번째 프로젝트로 NFT 거래소를 다시 만들어보기로 했고, 이번 거래소 프로젝트는 이더리움 뿐만 아니라 다양한 체인을 모두 거래할 수 있게 만들어보기로했다. 클레이튼과 이더리움은 개념은 거의 비슷하지만 사용하는 툴/라이브러리/표준이 조금 달랐다. Remix IDE -> Klaytn IDE Metamask -> Kaikas Web3.js -> Caver.js ERC-20은 KIP7과 유사 ERC-721.. 2022. 10. 24.