본문 바로가기

블록체인140

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.
[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.
Klaytn IDE로 스마트 컨트랙트 배포하기 💡클레이튼 스마트 컨트랙트 배포하기 나는 지금까지 모든 프로젝트를 이더리움 체인에서만 했었다. 수수료가 비싸고 TPS가 낮다는 단점이 있지만 아무래도 가장 많이 사용하는 체인이기도 하고 POS로 전환 후 속도도 빨라지고 수수료도 인하된다면 이더리움의 경쟁력은 점점 더 좋아지지 않을까 생각했다. 그러던 와중 네 번째 프로젝트로 NFT 거래소를 다시 만들어보기로 했고, 이번 거래소 프로젝트는 이더리움 뿐만 아니라 다양한 체인을 모두 거래할 수 있게 만들어보기로했다. 클레이튼과 이더리움은 개념은 거의 비슷하지만 사용하는 툴/라이브러리/표준이 조금 달랐다. Remix IDE -> Klaytn IDE Metamask -> Kaikas Web3.js -> Caver.js ERC-20은 KIP7과 유사 ERC-721.. 2022. 10. 24.
오픈씨 NFT 거래소, 레이지 민팅(Lazy Minting) 그리고 와이번 프로토콜 (Wyvern Protocol) / 시포트 프로토콜 (Seaport Protocol) NFT 거래소 프로젝트를 재진행하면서 오픈씨가 어떻게 작동하는지 공부하는 시간을 가지고 있다. 오픈씨는 자체적으로 nft를 발행할 수 있는 서비스를 제공한다. 오픈씨에서 자체적으로 제공하는 민팅 툴을 사용해서 nft를 민팅하는 경우엔 ERC1155를 통해서 발행한다. ERC1155 아무래도 멀티 토큰을 지원하는 만큼 비용은 적게 들지만, 개별 토큰에 대한 자유도는 떨어진다는 단점이 있다. 오픈씨는 자체적으로 배포한 ERC721 컨트랙트의 nft들을 별도의 절차 없이 알아서 가져와 마켓에서 보여준다. 오픈씨에서 NFT를 발행하면 리스팅까지는 가스비가 발생하지 않는다. 가스비가 처음으로 부과되는 시점은 NFT 거래가 발생하는 순간이다. 그렇기 때문에, NFT를 발행하는 작가들이 부담하는 가스비는 생각보다 많.. 2022. 10. 21.
클레이튼 caver-js 지갑 연결하기 webpack error Kaikas 연결을 위해 caver-js 설치후 파일을 실행하니 아래와 같은 에러가 발생했다. can't resolve 'fs' in '/users/eunjaeyoon/desktop/project4/beb-cc3-project-04/client/node_modules/caver-js/packages/caver-ipfs/src' 이는 webpack 5 이상 버전부터 caver-js에서 호환성 에러가 있어 발생하는 에러라고 한다. 나는 다음과 같이 방법으로 이슈를 해결했다. rm package-lock.json rm -r node_modules npm install webpack@4.44.2 위와 같은 방법으로 webpack@4.44.2 를 설치 후, webpack.config.js 파일에 아래와 같이 코드.. 2022. 10. 19.
ERC1155 란 무엇일까?! 스마트 컨트랙트 코드로 이해해보기. 💡ERC1155 프로젝트에서 ERC1155를 기반으로 한 서비스를 제작하기로 했고, 이와 관련해서 계속해서 공부 중이다. 검색하다 보면 이런 말을 찾을 수 있다. ERC20 그리고 ERC721의 장점을 결합하여 만든 것이 ERC1155이다. 이게 말이 쉽지, 뭔가 명확하게 머릿속에 박히지는 않는다. https://docs.openzeppelin.com/contracts/4.x/erc1155 ERC1155 - OpenZeppelin Docs We’ll use ERC1155 to track multiple items in our game, which will each have their own unique attributes. We mint all items to the deployer of the cont.. 2022. 9. 12.