본문 바로가기

솔리디티16

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.
노드 RPC Call을 Infura를 통해 제어해보기 💡 노드 RPC Call을 Infura를 통해 제어해보기 Ganache를 이용해 로컬 네트워크 환경에 있는 스마트 컨트랙트를 Web3.js로 제어할 수 있다. 이 외에도 테스트넷 또는 메인넷에 있는 노드 RPC Call을 Infura라는 플랫폼을 통해 스마트 컨트랙트를 Web3.js로 제어할 수도 있다. 아래와 같이 진행하면 된다. 1. 먼저 Infura 프로젝트에서 ENDPOINTS를 ROPSTEN으로 설정한다. 2. Ropsten Network로 변경 후 Endpoints를 복사한다. 테스트를 위해 Remix를 통해 Ropsten Network에 Hello World를 배포한다. 3. 아래와 같이 ABI와 배포된 Contract Address를 복사해 다음과 같은 코드를 만든다. const expre.. 2022. 8. 3.
Ropsten 테스트넷에 컨트랙트 배포하기 💡 Ropsten 테스트넷에 컨트랙트 배포하기 1. Remix 에는 MetaMask를 통해 Ropsten 테스트넷에 연동되어 있는 상태이다. 연동이 잘 되어 있다면 Deploy 버튼을 누른다. Remix에 Metamask 연결하는 방법 2. 다음과 같은 팝업창이 뜨는데, 예상되는 gas 수수료를 확인할 수 있다. 여기서 주의할 점은 메인넷이 아닌 테스트 네트워크가 맞는지 꼭 확인해야한다. 3. 확인을 누르면 Ropsten 테스트 네트워크에 스마트 컨트랙트를 배포하는 트랜잭션이 실행되고, 트랜잭션 정보가 터미널에 출력된다. 배포 끝! ✓ 이더스캔에서 컨트랙트 검증 및 등록하기 1. 트랜잭션 정보 중 transaction hash값으로 우리가 컨트랙트를 배포한 트랜잭션을 식별할 수 있다. 이더스캔에 접속해 .. 2022. 7. 12.
Remix에 메타마스크(MetaMask) 연결하기 💡 Remix에 MetaMask 연결하기 Remix에 MetaMask 를 연결하여, 웹 브라우저로 스마트 컨트랙트를 빌드하고 배포할 수 있다. Remix에 Metamask를 연결해보자. 메타마스크를 연결하기 위해서는 메타마스크 확장 프로그램에 로그인된 상태여야 한다. Step 1. 리믹스에 접속한 다음, 왼쪽 탭에서 Deploy & run transactions 탭을 선택한다. Step 2. 왼쪽 상단의 ENVIRONMENT를 선택하고, Injected Web3를 선택한다. Step 3. 팝업창으로 실행된 MetaMask에서 연결하려는 지갑을 선택하고 다음을 누르고 연결을 누른다. Step 4. Remix의 계좌와 연결하려는 계좌가 같다면 성공적으로 연결된 것이다. 2022. 7. 12.
로컬 컴퓨터에 Remix 코드 저장하기 - Remixd 💡 Remixd Remix IDE는 웹 브라우저에서 동작하는 IDE이기 때문에, 브라우저 캐시가 지워지는 경우 작성된 파일도 함께 삭제될 수 있습니다. Remixd는 이러한 불편함을 해소시켜줍니다. Remixd는 로컬 컴퓨터에 저장되어 있는 소스 코드 파일 또는 폴더를 Remix IDE와 로컬호스트에서 웹소켓 통신으로 연결합니다. Remix IDE에서 연결된 파일 또는 폴더가 변경될 경우, 로컬 컴퓨터에도 자동으로 저장합니다. Remixd를 이용해서 편리하게 코드를 백업할 수 있게 됩니다. ➤ Remixd Github : https://github.com/ethereum/remix-project/tree/master/libs/remixd 💻 Remixd 사용법 Step 1. Visual Studio Co.. 2022. 7. 12.
이더리움 개발 환경 구성하기 - Remix, 스마트 컨트랙트 코드 작성해서 컴파일해보고 배포까지 해보자! 💡 Remix - 이더리움 개발 환경 구성하기 이더리움 스마트 컨트랙트 코드를 작성하는 데는 다양한 IDE가 있습니다. 우리가 지금까지 사용한 VSCode는 데스크톱 IDE로, solidity 언어 익스텐션을 설치하여 컴파일을 할 수 있습니다. 하지만, VSCode를 비롯한 Atom, IntelliJ 등은 자체적으로 솔리디티 코드를 디버깅하거나 컴파일하는 기능이 없기 때문에 솔리디티 코드를 컴파일, 배포, 테스트, 디버깅 해주는 Truffle과 로컬 환경에 블록체인 테스트넷을 사용할 수 있게 해주는 Ganache를 함께 사용해야 합니다. Remix를 이용하면 이러한 불편함을 해소시킬 수 있습니다. 웹 기반 IDE인 Remix는 솔리디티 개발을 위한 IDE입니다. 자체적으로 솔리디티 개발을 위한 컴파일,.. 2022. 7. 12.
솔리디티 컴파일러(solc) 설치하고 컴파일해보기 💡솔리디티 컴파일러 설치하기 이더리움에서 스마트 컨트랙트를 실행하기 위해서는 솔리디티 코드를 작성하고, solc 라는 솔리디티 컴파일러로 컴파일하여 이더리움 블ㄹ록체인에 배포해야 합니다. 솔리디티 컴파일러(solc)를 설치해보고, 코드를 컴파일 해보도록 하겠습니다. 아래 명령어를 입력하여 솔리디티 컴파일러를 설치해주시면 됩니다. 저는 현재 MAC OS를 사용하고 있으니, 이 점 유의해서 봐주시면 좋을 것 같습니다. 💻 우분투 OS sudo add-apt-repository ppa:ethereum/ethereum sudo apt update sudp apt install solc 💻 맥 OS brew update brew tap ethereum/ethereum brew install solidity 설치가.. 2022. 7. 12.
솔리디티 기본 문법 - 반복문 💡솔리디티 기본 문법 - 반복문 (loop) 반복문은 특정한 작업을 계속해서 수행해야 할 때 사용한다. ✓ while문 while 문은 가장 기본적인 반복문이다. 조건식이 참일 때 중괄호 안의 코드를 반복적으로 시행하고, 조건식이 거짓이 되면 박복문을 종료한다. while (조건식){ 조건식이 참이면 여기있는 코드 수행 } // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.14; import "./UIntFuncstions.sol"; contract WhileLoop { uint[] data; uint8 j = 0; function loop() public returns (uint[] memory) { while (j 2022. 7. 11.
솔리디티 기본 문법 - 조건문 💡솔리디티 기본 문법 - 조건문 "조건문과 반복문 두 개면 뭐든지 만들 수 있다." 는 말이 과언이 아닐 정도로 이 둘은 중요한 문법이다. 프로그램은 주어진 조건에 따라 반복하면서 다양한 작업을 수행하기 때문이다. 그럼 조건문에 대해 알아보자! ✓ 조건문 (conditional statements) if 문의 사용법은 다음과 같다. (조건식)과 같이 괄호 안에 특정한 조건을 정의하고, 그 조건이 참이라면 {코드} 를 수행한다. 1. 첫 번째 if 문은 괄호 안에 있는 조건식 A 가 참일 경우 해당 내용을 수행하고 아닐 경우는 수행하지 않는다. 2. 두 번째 if / else 문은 if 문 안의 조건식 A가 참일 경우네는 해당 내용을 수행하고 아닐 경우 else 문의 내용을 수행한다. 3. 세 번째 if .. 2022. 7. 11.
솔리디티 기본 문법 - 상속 및 라이브러리 💡솔리디티 기본 문법 - 상속 및 라이브러리 ✓ 상속 솔리디티의 contract 객체는 상속을 지원한다. 상속을 통해 컨트랙트에 기능을 추가하고 확장할 수 있다. 상속을 사용하려면 부모 컨트랙트에 is 키워드를 지정해준다. contract ChildContract is ParentContract { // ... } 솔리디티는 다중 상속도 지원한다. contract ChildContract is ParentContract1, ParentContract2, ParentContract3 { // ... } ✓ 라이브러리 라이브러리의 목적은 "코드를 공유" 하기 위함이다. 컨트랙트 간에 코드를 공유하거나 공통적인 기능을 재사용하고자 할 때 우리는 라이브러리를 활용한다. 외부 라이브러리를 호출할 시에는 기존 컨트.. 2022. 7. 8.
솔리디티 기본 문법 - 이벤트 및 에러 핸들링 💡솔리디티 기본 문법 - 이벤트 및 에러 핸들링 ✓ 이벤트 이벤트는 어떤 결과가 발생했을 때 해당 컨트랙트에서 dApp 클라이언트 또는 다른 컨트랙트에게 전달한다. 컨트랙트는 event 키워드를 사용해 이벤트를 설정하고, 경우에 따라 emit 키워드를 사용해 이벤트를 실행한다. 이벤트가 실행된 경우, 트랜잭션에 기록된다. contract coinTransfer { // event 이벤트명(파라미터 유형1 파라미터1, 파라미터 유형2 파라미터2, ...) event Transfer(address from, address to, uint256 value); function transfer(address to, address amount) { // ... // emit 이벤트명(인자1, 인자2, ...) em.. 2022. 7. 8.
솔리디티 기본 문법 - 함수 제어자 💡솔리디티 기본 문법 - 함수 제어자(modifier) 비슷한 역할을 하는 코드를 모아서 만든 특별한 형태의 함수이다. 함수 선언에 modifier를 추가형 함수에 변경자를 적용할 수 있다. * 변경자: 함수를 실행하기 전, 요구 조건을 만족하는 지 확인하는 작업 변경자를 작성할 때는 _;를 사용한다. _;는 함수를 실행하는 시점을 나타내며, 변경자 코드는 _; 코드를 기준으로 실행 시점이 달라진다. _;이전의 코드는 함수가 실행되기 전에 실행되고 _; 이후의 코드는 함수 실행이 종료되고 실행된다. 다음의 changeNum 변경자는 함수를 실행하기 전, num 상태 변수의 값을 1 올리고, 함수의 실행이 완료되면 num 상태 변수의 값을 1 내린다. int public num = 0; modifier c.. 2022. 7. 8.