이더리움 16

[Remix IDE] Opensea 마켓에 NFT 토큰 생성해서 올려보기

목차 - NFT토큰과 그냥 토큰과의 차이점 - remix IDE로 NFT 토큰 생성해보기 - Opensea 마켓에 등록해보기 NFT토큰과 그냥 토큰과의 차이점 ERC 20 - Token fungible Token ERC-721 - Token Non-funfible Token fingible Token : 토큰을 값어치로 표현한다. 1개에 천원이면 2장 이천원 NFT - 토큰마다 가치가 다른 것. code로 구현하자면 어떤 느낌일까? 토큰이 생성될 때마다 고유키 값을 부여해주면 된다.(민팅) mint(msg.sender, 1) address) public owned; 가 존재한다. 키 값을 넣으면 계정주가 나옴. 영화관에 돈 넣으면 나오는 티켓처럼. 가치가 달라질 수 있음 (암표라던가.) 그래서 오늘 할 ..

[스마트 컨트랙트, open-zeppelin] 토큰 <-> 이더리움 스왑 구현해보기

목차 - ERC20 - open zeppelin - ERC20 변수타입, 메서드, 함수 - 직접 구현해보기 - 테스트 코드(jest) ERC20 이더리움에는 이더리움의 표준안을 만들기 위해 유저들이 의견을 내는 게시판같은 장소가 있다. 바로 Ethereum Improvement Proposals, EIPs이다.(EIPs 링크) 이 EIPs에는 Core/Networking/Interface/ERC의 네가지 카테고리가 있다. ERC는 Ethereum Request for Comment의 준말이다. 이 ERC20은 ERC 카테고리의 20번 글이다.(ERC20 링크) 이더리움의 창시자, 비탈릭이 제안한 코인 표준안이다. 인터페이스 규약이 정의되어있는 글이라 보면 된다. OpenZeppelin 이더리움 공식 문서..

[스마트 컨트랙트] 물건 사고, 환불하는 dApp 간단히 구현

사과를 구매하고, 환불할 수 있는 아주아주 간단한 dApp을 구현해보겠다. 목차 - 디렉토리 구조 - truffle 백 - 프론트 - 메타마스크 연결 - 물건 사고, 환불해보기 디렉토리 구조 Truffle 배포하기 터미널 열고 npx ganache-cli 다른 터미널에 mkdir truffle cd truffle truffle init truffle/contracts/AppleShop.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract AppleShop{ mapping (address => uint) myApple; //address를 넣어주면 uint(정수)값이 튀어나온다. function buyApple() public paya..

[스마트 컨트랙트] 투표 dApp 만들어 보기

트러플을 활용해서 투표 기능이 있는 간단한 dApp 코드를 간단하게 작성하고 jest로 테스트 해보겠다. 목차 - sol코드 - jest코드 mkdir truffle cd truffle truffle init 터미널 새로열고 npx ganache-cli trffle-config.js development 부분 주석해제 truffle/contracts/Voting.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract Voting { string[] public candidateList; //배열 정의 mapping(string=>uint8) public votesReceived; // 키값에 string을 넣으면 uint8으로 valu..

[truffle, 스마트 컨트랙트] 토큰 생성해보기

mkdir truffle cd truffle truffle init contracts/SimpleStore.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract SimpleStore{ uint256 private value; address public owner; constructor(uint256 _value){ //배포됐을 때 생성 value=_value; owner = msg.sender; //스마트컨트랜트 발동한 사람의 주소 : 누구일까? 배포자의 공개키. } //contructor의 인스턴스는 CA 이전에 생성된다. function getAddress() public view returns (address){ return m..

[ truffle, 스마트 컨트랙트 ] 솔리디티 event 사용해서 dApp 간단하게 구현해보기

목차 - 솔리디티 event - dApp 구현 - 디렉토리구조 - 코드 구현 오늘은 솔리디티 event에 대해서 알아 보겠다. event 라는 것은 블록체인 네트워크의 블록에 특정값을 기록하는 것을 말한다. 예를들어서, 송금하기 라는 함수가 있다고 가정하였을때, 송금하기 버튼을 누르면, 누른 사람의 계좌와 금액이 이벤트로 출력이 되어서 블록체인 네트워크 안에 기록이 된다. 이렇게 로그를 사용하여, 블록에 각인시키는것은 일반적으로 string 이나 다른 값들을 스마트컨트랙에 저장하는것보다 효율적이다. 이전 글(바로가기)에 이어서 코드를 조금 수정하는 방향으로 event를 사용해서 dApp을 구현하겠다. 디렉토리 구조 이제 카운터만 되는... dApp 구현을 위한 코드를 작성해보겠다. 초기설정하기 터미널을 ..

[truffle] 트러플 사용 방법 알아보기.

목차 - 트러플 설치 및, 설정 - 트러플 컨파일 - 트러플 배포 - 트러플 사용하기 이더리움 dapp을 작성하고 사용하려면 컴파일하고 네트워크에 배포하고 배포된 컨트랙트와 연결해야하는 과정을 거치게 된다. 대략 solc를 사용해서 컴파일, 컴파일 된 파일에서 ABI 정보를 가져와서 geth에서 배포하고, 후에 컨트랙트 주소를 저장해두고 후에 사용할 때 주소를 통해서 접근한다. 실제로 개발을 해보면 보통 복잡한 게 아니다. 그래서 이러한 걸 해결해주는 프레임워크가 있다. 바로 트러플[truffle]이다. 트러플은 컴파일, 배포, 디버그, 테스트 기능을 제공한다. 이제 사용법을 알아보자. 1. 트러플 설치 및 설정 npm install -g truffle 설치가 끝나면 truffle version 버전이 ..

[이더리움] 스마트 컨트랙트 구현해보기

목차 - 솔리디티 언어란? - 컴파일러? - EOA, CA 차이 - 스마트 컨트랙트 구현을 위한 코드작성 솔리디티 언어란? What is Solidity? 솔리디티는 기존에 있던 언어가 아닌 이더리움의 스마트 컨트랙트를 구현하기 위해서 만들어진 이더리움 전용 언어입니다. 솔리디티는 Python, C++, Javascript같은 널리 알려진 언어와 사용법이 유사하며, EVM(Ethereum Virtual Machine)에서 구동되어 집니다. 이더리움은 기본적으로 무작정 솔리디티 코드를 짜는 것보다는 검증된 모범사례를 참고해서 작성되는 것을 권유하고 있습니다. 코인이 전달되는 코드이기 때문에, 잘못 짠 소스는 악의적인 해커(Hacker)들의 먹잇감이 될 수 있기 때문에 검증된 모범사례(Best Practic..

[web3] web3 연결 테스트

이전 글과 이어집니다. 전 글의 테스트 코드입니다. explorer 디렉토리 생성해서 npm install jest web3 block.test.js const Web3 = require("web3"); describe("Block", () => { let web3; it("web 연결 테스트", async () => { web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:9000")); const block_number = await web3.eth.getBlockNumber(); console.log(block_number); // for (let i = 1; i { const tx = web3.eth.getTransaction( "0..

블록체인 2022.07.01