- 스마트 계약은 이더리움 EVM에서 실행되는 프로그램으로, 중개자 없이 계약을 자동화합니다.
- Remix, Truffle, Ganache 및 MetaMask는 테스트넷과 메인넷에서 컨트랙트의 개발, 테스트 및 배포를 간소화합니다.
- DApp과 스크립트가 스마트 계약과 상호 작용하려면 ABI, 바이트코드, 그리고 (소유 또는 관리되는) 이더리움 노드가 필수적입니다.
- 이더스캔과 같은 브라우저에서의 검증은 투명성을 제공하고 스마트 계약의 감사 및 사용을 용이하게 합니다.
이더리움과 스마트 계약의 등장은 디지털 계약, 조건부 결제, 그리고 온라인 환경에서의 신뢰에 대한 우리의 이해를 근본적으로 바꿔놓았습니다. 이전에는 중개자, 서류 작업, 수동 처리가 필요했던 것들이 이제는 공개 블록체인 상에서 탈중앙화 방식으로 실행되는 코드를 통해 자동화될 수 있게 되었습니다.
복잡하거나 전문가만 할 수 있는 것처럼 들린다면 걱정하지 마세요 . 스마트 컨트랙트를 직접 만들고 배포하는 것은 생각보다 훨씬 쉽습니다. Remix, Truffle, Ganache, MetaMask, 클라우드 노드 등의 최신 도구를 사용하면 몇 가지 명확한 단계를 따라 스마트 컨트랙트를 처음부터 만들어 테스트넷이나 이더리움 메인넷에서 작동시킬 수 있습니다.
이더리움에서 스마트 컨트랙트란 정확히 무엇인가요?
스마트 계약은 기본적으로 블록체인 상에서 실행되는 프로그램입니다 . 이더리움의 경우, 이 프로그램은 네트워크의 모든 노드에 복제된 이더리움 가상 머신(EVM) 내에서 실행됩니다. 계약은 규칙, 조건 및 동작을 정의하며, 이러한 요건이 충족되면 제3자의 개입 없이 자동으로 실행됩니다.
이는 "X가 발생하면 Y를 수행하라"는 식의 디지털 계약으로 볼 수 있습니다 . 예를 들어, "사용자 A가 'Z'일 이전에 'M' 주소로 'n' 이상의 금액을 송금하면, 송장을 결제 완료로 표시하라"와 같은 것입니다. 블록체인이 등장하기 전에는 신뢰할 수 있는 중개자 없이는 이러한 종류의 규칙을 자동으로 시행할 방법이 없었습니다.
이더리움은 매우 유연한 환경, 거대한 커뮤니티, 방대한 문서, 그리고 성숙한 개발 도구를 제공하기 때문에 스마트 계약에 가장 인기 있는 플랫폼입니다 . 이러한 모든 요소 덕분에 초보 개발자부터 숙련된 개발자까지 누구나 쉽게 탈중앙화 애플리케이션(DApp)과 복잡한 스마트 계약을 만들 수 있습니다.
스마트 계약은 기본적으로 특정 언어(Solidity 또는 Vyper 등)로 작성된 소스 코드이며, 이 코드는 바이트코드로 컴파일되어 네트워크상의 계약 주소에 배포됩니다. 이후 사용자 또는 애플리케이션은 해당 계약의 공개 함수를 호출하여 계약과 상호 작용할 수 있습니다.
솔리디티, EVM 및 기타 계약 언어

솔리디티는 이더리움 네트워크에서 스마트 계약을 개발하는 데 가장 널리 사용되는 프로그래밍 언어입니다 . 자바스크립트, C++, 자바와 유사한 구문을 가진 고수준 언어로, 이더리움 가상 머신(EVM)이 이해할 수 있는 바이트코드로 컴파일되도록 특별히 설계되었습니다.
이더리움 가상 머신(EVM)은 네트워크의 모든 노드에서 스마트 계약을 실행하는 가상 머신입니다 . 개념적으로는 자바 가상 머신(JVM)과 유사하지만, 이더리움에서는 각 노드가 동일한 바이트코드를 실행하여 트랜잭션을 검증하고 블록체인 전체 상태를 동기화한다는 점이 가장 큰 차이점입니다.
솔리디티 컨트랙트를 컴파일하면 바이트코드와 ABI (애플리케이션 바이너리 인터페이스)가 생성됩니다. 바이트코드는 EVM(전자 가상 머신)이 실행할 수 있는 바이너리 표현이며, ABI는 외부에서 호출할 수 있는 함수, 매개변수 및 데이터 유형을 설명합니다. 컨트랙트와 통신하려는 모든 DApp 또는 스크립트는 이 ABI와 컨트랙트 주소가 필요합니다.
다른 언어와 래퍼도 존재합니다 . 솔리디티가 사실상의 표준이지만, 자바나 파이썬 같은 언어로 구현된 바인딩도 있고 , 더 간단한 구문과 오류 및 취약점 방지를 위한 제약 조건을 채택한 바이퍼(Vyper)와 같은 대안 언어도 있습니다.
스마트 계약 개발을 위한 기본 도구

이더리움 개발을 시작하려면 인프라 구축에 크게 신경 쓰지 않고도 스마트 계약을 작성, 테스트 및 배포하는 데 필요한 모든 것을 제공하는 간단한 툴킷만 있으면 됩니다.
Node.js와 npm은 의존성 관리 및 개발 스크립트 실행의 기반이 됩니다. 이를 바탕으로 다양한 프레임워크와 라이브러리가 컴파일, 마이그레이션, 테스트 및 배포를 포함한 전체 워크플로우를 지원합니다.
트러플 스위트 스마트 계약 개발을 위한 가장 오래된 프레임워크 중 하나입니다. 이를 사용하면 다음과 같은 프로젝트를 생성할 수 있습니다. truffle init계약서를 폴더에 정리하세요. contracts이 도구를 사용하면 마이그레이션 스크립트를 정의하고 자동화된 테스트를 실행할 수 있습니다. 또한 Ganache와 완벽하게 통합됩니다.
Ganache는 테스트용 로컬 블록체인입니다 . 사용자의 컴퓨터에서 이더리움 네트워크를 에뮬레이션하여 "가짜" 이더를 가진 여러 계정을 생성하므로 실제 돈을 쓰거나 실제 채굴자를 기다릴 필요 없이 계약을 배포하고, 거래를 수행하고, 디버깅할 수 있습니다.
MetaMask는 브라우저와 블록체인을 연결하는 다리 역할을 합니다 . 브라우저 확장 프로그램으로 통합되는 지갑으로, DApp 연결, 거래 서명, 네트워크(테스트넷, 메인넷, 사이드체인) 전환, 계정 관리 등을 매우 간편하게 할 수 있도록 해줍니다.
Remix IDE: 가장 쉽게 시작할 수 있는 환경
이제 막 시작하는 단계라면, 리믹스는 아마도 첫 계약을 성사시키는 가장 빠른 방법일 것입니다.Remix는 브라우저 기반 IDE로, 웹 브라우저에서 바로 접속할 수 있습니다. https://remix.ethereum.org 또는 편집기, 컴파일러, 배포 도구 및 상호 작용 패널을 포함하여 자체 서버에 배포할 수 있습니다.
Remix 인터페이스는 몇 가지 주요 탭으로 구성되어 있습니다.파일 탐색기, 솔리디티 컴파일러, 그리고 "트랜잭션 배포 및 실행" 패널이 있습니다. 탐색기에서 다음과 같은 파일을 생성할 수 있습니다. FirstContract.sol o HelloWorld.sol 계약 목록 내에서.
"솔리디티 컴파일러" 탭에서 컴파일러 버전을 선택합니다. (지침에 명시된 값과 같거나 그 이상이어야 합니다.) pragma solidity (계약서에서) 내용을 입력하고 "컴파일..." 버튼을 눌러 컴파일을 시작하세요. 모든 내용이 올바르면 계약서 옆에 녹색 체크 표시 아이콘이 나타납니다.
컴파일 후, Remix는 바이트코드와 ABI가 포함된 JSON과 같은 산출물을 생성합니다.파일 패널에서 다음과 같은 항목을 볼 수 있습니다. FirstContract.json여기에는 다음과 같은 매우 중요한 분야가 포함되어 있습니다. bytecode 과 abi이 데이터는 나중에 Web3.js 또는 Web3.py와 같은 라이브러리에서 백엔드 또는 외부 스크립트에서 계약을 배포하고 상호 작용하는 데 사용됩니다.
"트랜잭션 배포 및 실행" 탭에서는 컨트랙트를 배포할 실행 환경을 선택합니다. 여기에는 여러 옵션이 있으므로 실제 네트워크에 접속하기 전에 이러한 옵션을 잘 이해해야 합니다.
런타임 환경 재구성: 로컬 네트워크에서 공용 네트워크까지
Remix의 "환경" 모듈은 트랜잭션이 전송되는 위치 와 스마트 계약이 배포될 정확한 위치를 제어합니다. 메모리에서 빠른 테스트를 실행하는 것과 메인넷에 배포하는 것은 완전히 다른 문제입니다.
London과 같은 JavaScript VM은 완전히 로컬 메모리 환경에서 작동합니다. Remix는 100 ETH를 보유한 여러 테스트 계정을 생성하고, 블록을 즉시 생성하며, 페이지를 새로고침하면 모든 데이터를 삭제합니다. 학습, 로직 테스트, 그리고 실수를 해도 큰 문제가 발생하지 않는 환경에 적합합니다.
Injected Web3는 일반적으로 MetaMask와 같은 브라우저 주입 제공업체를 사용합니다 . 즉, 거래는 지갑에서 선택한 네트워크로 전송됩니다. 선택한 네트워크는 Sepolia와 같은 테스트넷, Ethereum Mainnet과 같은 메인넷, 또는 Polygon과 같은 사이드체인일 수 있습니다.
Web3 Provider를 사용하면 원격 노드에 직접 연결할 수 있습니다. 예를 들어 자체 인프라에서 실행되는 프라이빗 노드와 같이 HTTP URL을 지정합니다.http://192.168.41.88:8041또는 제3자 제공업체가 제공하는 엔드포인트입니다. Remix는 Web3를 사용하여 해당 노드로 트랜잭션을 전송합니다.
환경을 선택한 후에는 계약을 배포할 계정을 선택합니다 . 로컬 VM의 경우 시뮬레이션된 잔액이 표시된 주소 목록이 나타나고, MetaMask 또는 원격 노드의 경우 해당 공급자가 구성한 계정이 표시됩니다. 배포 시에는 항상 "가스" 비용이 발생하지만, 이는 온프레미스 환경에서는 실제 비용이 아닙니다.
다음으로 "계약" 드롭다운 메뉴에서 계약을 선택하고 "배포"를 클릭합니다 . 계약 생성기가 매개변수(예: 소유자 주소 또는 초기 메시지)를 수신하는 경우, Remix는 배포 트랜잭션을 전송하기 전에 입력해야 할 입력란을 표시합니다.
실제 예시: 솔리디티를 이용한 간단한 계약
블록체인의 작동 방식을 완전히 이해하려면 값을 저장하고 검색하거나 메시지를 업데이트할 수 있는 간단한 계약부터 시작하는 것이 도움이 됩니다 . 이는 블록체인 버전의 고전적인 "Hello World"와 같습니다.
최근의 예로는 HelloWorld 컨트랙트를 들 수 있습니다. 상태 변수를 사용하여 message객체를 초기화하는 생성자와 객체를 업데이트하는 함수. 이 모든 것을 최신 버전의 Solidity로 구현했습니다.^0.8.0) 그리고 효과적인 가시성 확보 방안.
좀 더 자세한 예로는 계약이 있습니다. FirstContract이는 다음과 같은 변수를 도입합니다. owner, ownerName, ownerAge 및 목록 posts (예: URL). 또한 다음과 같은 사용자 지정 접근 제한자를 정의합니다. onlyOwner, existsUrl y notExistsUrl 권한 확인 및 데이터 일관성을 중앙 집중화하기 위해.
이러한 사용자 지정 액세스 수정자를 사용하면 동일한 로직을 반복하는 것을 방지할 수 있습니다. 매 공연마다 계속해서 반복됩니다. 예를 들어, onlyOwner 확인 require(msg.sender == owner) 해당 함수를 실행하는 계정이 계약의 소유자이고 심볼이 _; 해당 조건이 충족될 경우 실행이 계속될 지점을 나타냅니다.
읽기 기능에는 일반적으로 수정자가 함께 사용됩니다. view이는 해당 메서드가 계약 상태를 수정하지 않음을 의미합니다. 즉, 블록체인에 아무것도 기록하지 않으므로 사용자 입장에서는 가스 비용 없이 "호출"로 실행될 수 있습니다. 더 엄밀히 말하면, pure 이는 해당 함수가 상태를 읽거나 쓰지 않음을 나타냅니다.
현지에서 계약을 테스트하고 가스에 대해 알아보세요.
Remix JavaScript VM에 컨트랙트를 배포하면 IDE에서 시뮬레이션된 가스를 소모하는 트랜잭션을 생성합니다. 이 가스 비용은 실제로 사용자에게 청구되지 않지만, 실제 환경에서는 모든 배포 및 상태를 변경하는 모든 기능에 비용이 발생한다는 점을 이해하는 데 도움이 됩니다.
배포 후 로컬 VM에서 발급 계정 잔액이 100 ETH에서 99.x ETH로 감소하는 것을 확인할 수 있습니다 . 이는 계약의 바이트코드를 저장하고 블록체인 상에서 생성자를 실행하는 데 드는 비용을 반영한 것입니다. 테스트넷 또는 메인넷에서는 이 비용이 실제 지갑 잔액에서 차감됩니다.
가스, 수수료, 웨이(wei), 이더(ether)는 여기서 핵심 개념입니다 . 가스는 연산 실행에 필요한 계산량을 나타내며, 가스 가격(웨이, 이더의 소수점 단위)은 가스 단위당 지불하고자 하는 금액입니다. 총 수수료는 사용한 가스량에 가스 가격을 곱한 값입니다. 계정 잔액은 내부적으로 웨이(wei) 단위로 관리됩니다(10^18 웨이 = 1 이더).
Remix에서 계약서를 열면 모든 상호 작용 요소가 포함된 패널이 표시됩니다.주황색 버튼은 트랜잭션을 전송(쓰기)하는 기능을 위한 것이고, 파란색 버튼은 읽기 전용 기능을 위한 것입니다. 해당 필드에 데이터를 입력하고 다음과 같은 함수를 호출할 수 있습니다. addPostUrl o setOwnerState 그리고 상태가 어떻게 변하는지 관찰하십시오.
Remix의 "계정" 패널에서 계정을 변경하면 권한이 변경되는 것을 확인할 수 있습니다.보호되는 기능 onlyOwner 현재 계약 소유자가 아닌 다른 계정으로 실행하면 실패하므로 액세스 수정자가 제대로 작동하는지 확인할 수 있습니다.
공개 테스트넷 배포: Sepolia, Rinkeby 및 기타 업체
로컬 환경에 익숙해지면 다음 단계는 테스트넷으로 넘어가는 것입니다 . 과거에는 링케비(Rinkeby)가 많이 사용되었지만, 현재는 세폴리아(Sepolia)나 괴를리(Goerli)와 같은 네트워크가 훨씬 더 널리 사용됩니다. 기본 아이디어는 동일합니다. 메인넷의 동작을 그대로 재현하되, 수도꼭지(faucet)에서 무료로 얻을 수 있는 테스트용 이더를 사용하는 것입니다.
Remix에서 테스트넷으로 배포하려면 환경을 "Injected Web3"로 선택하고 사용할 테스트 네트워크에 지갑(예: MetaMask)을 구성하기만 하면 됩니다. "배포"를 클릭하면 MetaMask에서 거래 내역, 예상 가스 비용을 표시하고 확인을 요청합니다.
거래가 채굴되면 해당 컨트랙트는 테스트넷에서 고유한 주소(컨트랙트 계정)를 얻게 됩니다. 이 주소는 Remix 또는 지갑 확인 창에서 복사하여 해당 블록 탐색기(예: Sepolia Etherscan)에 붙여넣을 수 있습니다.
브라우저에서 계약 계정, 바이트코드 및 관련 트랜잭션을 볼 수 있습니다 . 처음에는 생성 트랜잭션만 표시되지만, 이후에는 해당 계약과 상호 작용하는 사용자 또는 DApp이 수행한 읽기 및 쓰기 호출이 표시됩니다.
많은 브라우저에서는 소스 코드가 검증되고 게시되면 "계약 읽기" 및 "계약 쓰기" 탭에서 계약과 직접 상호 작용할 수 있도록 지원하므로 자체 웹 인터페이스를 설정하지 않고도 빠르게 테스트하기에 매우 편리합니다.
이더스캔에서 계약 코드를 검증하고 게시하세요.
이더스캔(또는 이와 유사한 익스플로러)에서 컨트랙트를 검증하는 것은 중요한 투명성 확보 단계입니다 . 소스 코드를 업로드하고 컴파일러 버전과 사용 옵션을 지정하면 익스플로러가 다시 컴파일하여 바이트코드가 배포된 코드와 일치하는지 검증합니다.
Sepolia와 같은 네트워크에서 일반적인 프로세스는 다음과 같습니다.계약 주소 페이지로 이동하여 "확인 및 게시" 링크를 클릭하고 주소를 입력한 다음 특정 Solidity 컴파일러를 선택하고 라이선스를 지정한 후 다음 화면에서 파일 내용을 붙여넣습니다. .sol.
캡차를 통과하고 양식을 제출하면 탐색기가 코드를 다시 컴파일 하고 그 결과를 블록체인에 저장된 바이트코드와 비교합니다. 일치하면 "계약" 버튼 옆에 녹색 체크 표시를 하여 계약이 검증되었음을 나타냅니다.
그 시점부터 탐색기는 소스 코드, ABI, 그리고 읽기("Read Contract") 및 쓰기("Write Contract") 기능을 실행할 수 있는 그래픽 인터페이스를 표시하며, 필요한 경우 지갑을 사용하여 트랜잭션에 서명할 수 있습니다. 누구나 편리하게 계약을 검토하거나 테스트할 수 있는 방법입니다.
대표적인 예로는 계약이 있습니다. Register01.sol 테스트넷에서이를 통해 텍스트를 변수에 저장할 수 있습니다. storedInfo 기능 setInfo 그리고 다음을 통해 복구하세요 getInfo"계약 쓰기"에서 "Hello World"를 작성한 다음 "계약 읽기"에서 값을 확인할 수 있습니다.
DApp 및 스크립트와의 상호 작용: Web3.js, Node.js 및 데이터베이스
Remix와 브라우저를 넘어, 스마트 계약의 진정한 생명은 DApp이 이를 사용할 때 시작됩니다 . DApp은 일반적으로 세 가지 기본 구성 요소로 이루어져 있습니다. 바로 계약 자체, 백엔드(예: Node.js), 그리고 읽기 캐싱 및 성능 향상을 위한 MongoDB와 같은 지원 데이터베이스입니다.
백엔드에서는 일반적으로 Web3.js(Node.js 기반) 또는 Web3.py(Python 기반)를 사용하여 HTTP 또는 WebSocket 엔드포인트를 통해 이더리움 노드(공개, 비공개 또는 관리형)에 연결합니다. 이를 위해서는 노드의 URL, 컨트랙트 주소 및 ABI가 필요합니다.
일반적인 Node 스크립트는 다음과 같은 Web3 인스턴스를 생성할 수 있습니다. new Web3(new Web3.providers.HttpProvider("http://localhost:8042"))ABI를 파싱합니다. JSON.parse 사용 web3.eth.contract(interface) 와 결합 .at("0xDirecciónDelContrato") 배포된 계약에 대한 참조를 얻기 위해.
백엔드에서 거래를 전송하려면 계정을 잠금 해제해야 합니다. 누가 그 거래에 서명할 것인가, 또는 web3.personal.unlockAccount 노드에서 허용하는 경우 또는 개인 키로 로컬에서 트랜잭션에 서명하는 방법(보안 및 보관 측면에서 훨씬 더 신중해야 함)을 사용할 수 있습니다.
실제 운영 환경에서는 개인 키를 저장하는 저장소, 엄격한 접근 정책, 프런트엔드와 백엔드의 분리, MetaMask, Infura 또는 관리형 노드와 같은 제공업체 사용을 통해 중요 인프라를 직접 노출하지 않도록 하는 등 추가적인 보안 계층이 거의 항상 추가됩니다.
AWS 관리형 블록체인을 사용한 관리형 노드 및 고급 배포
프로젝트 규모가 커질수록 이더리움 노드를 위한 관리형 인프라에 의존하는 것이 합리적입니다 . 예를 들어 아마존 관리형 블록체인(Amazon Managed Blockchain)을 사용하면 노드 소프트웨어의 설치, 동기화 및 유지 관리에 신경 쓰지 않고도 이더리움 노드(예: 메인넷)를 배포할 수 있습니다.
AWS 콘솔에서 이더리움 퍼블릭 네트워크에 참여하고 , 네트워크(예: 이더리움 메인넷), 인스턴스 유형, 가용 영역을 선택한 다음, 고가용성을 위해 하나 이상의 노드를 생성할 수 있습니다. 몇 분 후 노드는 "사용 가능" 상태가 됩니다.
이러한 노드에 대한 접근은 Sigv4 서명 또는 토큰을 사용하여 이루어질 수 있습니다 . 토큰 기반 접근 방식은 AWS에 대한 지식 없이도 직접적인 RPC 엔드포인트를 기대하는 표준 이더리움 생태계 도구(Ethers.js, Hardhat, MetaMask, The Graph, Chainlink 등)와의 통합을 크게 간소화합니다.
일반적인 HTTP 엔드포인트는 다음과 같은 형식을 갖습니다. https://id-del-nodo.t.ethereum.managedblockchain.us-east-1.amazonaws.com/<ruta>?billingtoken=token해당 엔드포인트를 사용하면 예를 들어 Python에서 Web3 인스턴스를 생성하고 다음과 같은 메서드를 호출할 수 있습니다. w3.is_connected() o w3.eth.syncing 노드가 동기화되었는지 확인하기 위해.
연결이 확인되면 다음과 같은 측정값을 얻을 수 있습니다. w3.eth.get_block("latest") 마지막 블록을 채굴한 사람을 알아내려면, 또는 w3.eth.get_balance(address) 계좌 잔액을 확인하려면 (단위: wei, 이더리움으로 환산 가능) Web3.from_wei).
계정 관리, 키 및 코드 기반 배포
코드에서 계약을 배포하려면 개인 키를 다뤄야 합니다.예를 들어 파이썬에서는 라이브러리를 사용하여 새 개인 키를 생성할 수 있습니다. secrets계정을 만드세요 w3.eth.account.from_key(private_key) 그리고 공개 주소를 알아내세요.
해당 주소의 계좌는 잔액이 0이므로 할부 구매가 필요합니다. 이더리움(ETH)은 한 지갑을 통해 구매하거나 다른 지갑을 통해 입금받을 수 있습니다. 사용 중인 노드가 완전히 동기화될 때까지 잔액에 입금 내역이 반영되지 않을 수 있으므로 주기적으로 확인하는 것이 좋습니다. w3.eth.syncing.
Web3.py에서 컨트랙트를 배포하려면 바이트코드와 ABI가 필요합니다.예를 들어 Vyper로 계약서를 작성했다면 다음 명령으로 컴파일할 수 있습니다. vyper safe-remote-purchase.vy > bytecode.bin y vyper -f abi safe-remote-purchase.vy > abi.json그런 다음 스크립트에서 두 파일을 모두 읽으십시오.
해당 데이터를 사용하여 계약 객체를 생성합니다. w3.eth.contract(abi=abi, bytecode=bytecode)현재 가스 가격은 다음을 통해 확인할 수 있습니다. w3.eth.gas_price그리고 배포 트랜잭션을 준비합니다. .constructor().build_transaction({...}) 다음과 같은 필드를 나타냅니다. from, nonce, gas 그리고 선택적으로 value 건축업자가 저장 탱크가 필요한 경우.
해당 거래는 개인 키로 서명되어 전송됩니다. w3.eth.send_raw_transaction그런 다음 영수증을 기다리시면 됩니다. w3.eth.wait_for_transaction_receipt승인이 완료되면 영수증에는 계약서에 표시된 주소가 포함됩니다. contractAddress.
고급 예시: Vyper를 이용한 안전한 원격 쇼핑
보다 복잡하면서도 매우 명확한 사례는 Vyper의 예시에서 볼 수 있는 "안전한 원격 구매" 계약입니다. 이 계약의 목적은 판매자와 구매자 간의 거래를 규제하고, 보증금을 통해 양 당사자의 정직한 거래를 보장하는 것입니다.
일반적인 거래 과정은 다음과 같습니다 . 판매자는 상품 가격의 두 배에 해당하는 금액을 계약금으로 지불하여 계약을 시작합니다. 구매자가 없는 경우, 판매자는 계약을 취소하고 환불받을 수 있습니다. 구매자가 상품 구매를 결정하면, 상품 가격에 동일한 금액(상품 가격의 두 배)을 더한 금액을 구매자에게 송금합니다.
구매자가 제품을 받으면 해당 함수를 호출합니다. (예를 들어 received이로 인해 보증금의 일부가 판매자에게 반환되어 판매자는 제품 가격과 초기 보증금을 모두 받게 됩니다. 이러한 방식으로 양측은 경제적 동기가 일치하게 됩니다.
Vyper와 계약을 체결한 후에는 해당 계약을 얻게 됩니다. bytecode y ABIWeb3를 사용하여 배포할 때 사용할 것입니다. 배포가 완료되면 다음을 통해 인스턴스를 얻을 수 있습니다. w3.eth.contract(address=contractAddress, abi=abi) 그리고 다음과 같은 메서드를 호출합니다. abort(), purchase() o received() 관련 계정(판매자 또는 구매자)에서.
이러한 유형의 예시는 스마트 계약이 기존 시스템에서 신뢰할 수 있는 제3자, 에스크로 서비스 또는 법적 계약이 필요했던 복잡한 계약을 자동화할 수 있도록 해주는 방식을 보여줍니다. 블록체인에서는 계약의 논리가 코드 자체에 내장되어 모든 노드에서 검토 및 실행됩니다.
위에서 설명한 내용을 통해 스마트 계약의 기본 이론과 EVM에서의 실행 방식부터 Solidity 또는 Vyper를 사용한 작성, Remix 및 Ganache를 사용한 테스트, 테스트넷 및 메인넷 배포, Etherscan을 통한 검증, DApp과의 상호 작용, 그리고 클라우드의 관리형 노드를 통한 운영에 이르기까지 스마트 계약의 전체 수명 주기를 완벽하게 이해하게 되었습니다. 이제 다음 단계는 고급 패턴(프록시, 업그레이드 가능성, 상속, 보안)을 심층적으로 살펴보고 NFT, DeFi, 온체인 거버넌스와 같은 사용 사례를 탐구하여 이더리움을 중심으로 구축된 방대한 생태계를 활용하는 것입니다.
바이트와 기술 전반에 관한 세계에 대한 열정적인 작가입니다. 나는 글쓰기를 통해 내 지식을 공유하는 것을 좋아하며 이것이 바로 이 블로그에서 할 일이며 가젯, 소프트웨어, 하드웨어, 기술 동향 등에 관한 가장 흥미로운 모든 것을 보여 드리겠습니다. 제 목표는 여러분이 간단하고 재미있는 방식으로 디지털 세계를 탐색할 수 있도록 돕는 것입니다.
