# ERC20

[회고] 인센티브 기반 커뮤니티
What Service 주요 서비스 유저의 게시글 작성에 대한 ERC20 토큰(SWT, Sweet Token) 보상 posting delete ERC20 토큰으로 유저가 커스텀한 이미지를 가진 NFT 민팅 minting 유저 간 ERC20 토큰 전송 기능 
#36 [서버 프로그래밍] (06.26)
🐨 클레이튼으로 ERC-20(KIP7) 토큰을 발행해보자! 📍 토큰 발행 환경 세팅 (kip7.js) https://www.klaytnapi.com/ 회원가입하기! (클레이튼에서 제공하는 API) >✔️ KAS = Klaytn API Service → 클레이튼 블록체인 네트워크를 API로 제공하는 서비스 $$*$$ KAS는 내장함수의 형태이고 caver-js는 우리가 커스텀해서 함수를 만들어 사용하기 위해서 사용 (web3랑 비슷함) > https://velog.io/@citron03/KASKlaytn-API-Service%EB%9E%80 
approve vs permit
댑에서 ERC20토큰 권한을 요청하는 두 가지 방법 approve함수로 권한 요청 댑에서 ERC20토큰의 approve함수 호출 유저가 트랜잭션을 승인함으로써 함수 실행 댑에서 권한을 가져감 댑에 따라서 최종 스왑 컨트랙트가 실행되기 전에 approve에 대한 시그니쳐를 요청할 수도 있고 안할 수도 있음(유니스왑 요청, 클레이스왑 요청안함) permit의 사인으로 권한 요청 댑과 ERC20토큰 둘 다 permit을 지원한다면 "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"의 사인을 요청 사용자는 해당 내용에 사인을 하고 시그니쳐는 댑이 보관 댑에서는 시그니쳐를 가지고 최종 스왑 컨트랙트가 실행되기 전에 permit함수를 요청하고 사용자의 시그니처를 파라미터로 넘겨 해당 시그니처가 함수 호출자임을 확인하면 a

TIL 39 - ERC-20 발행&소각&블랙리스트 (WEMIX Testnet 배포)
토큰 발행하기 변수 토큰 발행은 컨트랙트를 발행한 owner만 실행할 수 있도록 하기 위함 생성자 컨트랙트 생성 시에 컨트랙트 생성자를 owner로 만들기 위함 함수 mint() : owner로 설정된 사람이 amount만큼 토큰을 추가로 발행한다. 발행 함수는 권한을 가진 사람만 해당 함수를 호출 할 수 있도록 만들어야하기 때문에 modifier를 사용한다. 컨트랙트 소유자의 토큰의 수를 늘려준다. 총 발행량도 함께 늘려준다. modifier onlyOwner() : owner로 설정된 사람만 사용할 수 있도록 하기 위함 mint 기능을 추가한 전체 코드 mint 함수를 적용한 전체 코드 실행 컨트랙트를 WEMIX Testnet에 배포한다.(트랜잭션 발생) 배포한 Account owner의 주소를 확인한다.

TIL 38 - ERC-20 직접 뜯어 소화시키기(WEMIX Testnet 배포)
ERC-20 데이터 조회 name() symbol() decimals() totalSupply() 데이터 이동 처리 transfer() allowance() approve() transferFrom() 변수 사용자의 주소와 잔액 정보 관리를 위한 mapping 사용자가 내 돈을 다른 사용자에게 이동을 할 수 있는 권한을 주기 위한 mapping transfer(to, amount) 내가 to에게 amount만큼 금액을 보내는 함수 transferFrom(from, to, amount) from이 to에게 amount만큼 금액을 보내는 함수 c가 a의 돈을 b에게 이동시킬 때 사용할 수 있다. 받는 사람이 일반적으로 호출한다. 토큰의 전체 발행량 해당 토큰 컨트랙트의 명칭 해당 토큰의 심볼명

TIL 36 - 스마트 컨트랙트란?
스마트 컨트랙트를 설명할 수 있다. 블록체인 네트워크에 호스팅되고 실행되는 프로그램이다. 조건을 지정해두고, 해당 조건이 충족되면 미리 정해둔 계약을 이행하는 방식으로 코드를 작성한다. 스마트 컨트랙트의 역사를 알 수 있다. 1994년 닉재보(Nick Szabo)에 의해 만들어졌다. > "계약 조건을 실행하는 전산화된 트랜잭션 프로토콜"은 "일반적인 계약 조건을 만족하고, 악의적이거나 우발적인 예외를 최소화하며, 신뢰할만한 중개자의 필요성을 최소화하는 것"을 목표로 한다. > 닉 재보는 스마트 컨트랙트를 위한 비트 골드를 제안했으나, 기술적 한계로 인해 실제로 구현되지는 못했다. 스마트 컨트랙트를 실제로 지원하기 시작한 첫 화폐는 비트코인이다. 스크립트 언어를 사용하여 화폐 거래와 관련된 특정 로직을 설정할 수 있다. 본질적으로 비트코인은 전자 화폐를 중점으로 둔 시스템이기에 제한적인 프로그래밍만 가능했다. 이후 프로그래밍이 가능한 이더리움이라는 블록체인이 등

TIL 35 - 코인 & 토큰
블록체인에서 채굴이 무엇인지 설명할 수 있다. 블록체인 네트워크에 노드로 트랜잭션을 검증하여 분산원장을 기록하고, 보상으로 암호화폐를 얻는 것을 뜻하며 땅을 파서 광물따위를 캐내는 행위에서 유래 채굴 노드가 무슨 일을 하는지 이해할 수 있다. 비트코인을 예시로. 노드가 비트코인 네트워크에 접속하면 네트워크 동기화 새 노드는 비트코인 네트워크에 합류한 이후, 다른 노드에게 과거의 블록들을 요청해 블록체인을 다운로드 한다. 트랜잭션 검증 새로운 트랜잭션(거래 기록)을 수신한 노드는 반드시 해당 트랜잭션이 올바른 트랜잭션인지 검증하는 과정이 필요 >💡 [비트코인에서 트랜잭션을 검증하는 단계] 1) 원본 데이터를 자신의 개인키로 암호화를 진행하여 디지털 서명을 진행 2) 원본 데이터와 디지털 서명된 데이터를 노드에 전파 3) 트랜잭션을 받은 노드는 해당 트랜잭션이 진짜인지에 대한 검증을 위해 트랜잭션을 **송신한 노드의
DeFi - Token to Token, Token To Coin, Coin to Token(ERC20)
DeFi - Swap Pactory Contract 변수 pool : ERC20 토큰 컨트랙트의 주소에 Liquidity 컨트랙트의 주소를 저장하함 함수 cratePool() : 하나의 풀 인스턴스를 생성한다 getPool() : ERC20 토큰 주소를 통해 생성된 Pool을 확인할 수 있다. Liquidity Contract 변수 IFactory factory : factory 컨트랙트의 인터페이스를 사용하기 위함 IERC20 token : ERC20 컨트랙트의 인터페이스를 사용하기 위함 생성자 Pool을 만들고자 하는 토큰의 주소를 초기값으로 받아 token인스턴스를 생성한다. LP 토큰을 만든다. 함수 addLiquidity() : 토큰과 코인을 받아 유동성을 공급한다. removeLiquidity() : 유동성을 제거하고 수수료를 받는

ERC-20 직접 뜯어 소화시키기(WEMIX Testnet)
ERC-20 데이터 조회 name() symbol() decimals() totalSupply() 데이터 이동 처리 transfer() allowance() approve() transferFrom() 변수 사용자의 주소와 잔액 정보 관리를 위한 mapping 사용자가 내 돈을 다른 사용자에게 이동을 할 수 있는 권한을 주기 위한 mapping transfer(to, amount) 내가 to에게 amount만큼 금액을 보내는 함수 transferFrom(from, to, amount) from이 to에게 amount만큼 금액을 보내는 함수 c가 a의 돈을 b에게 이동시킬 때 사용할 수 있다. 받는 사람이 일반적으로 호출한다. 토큰의 전체 발행량 해당 토큰 컨트랙트의 명칭 해당 토큰의 심볼명

초간단 실습 erc20 발행 후 전송
오픈제플린을 이용해 erc20토큰을 초간단하게 발행후 하드헷으로 다른 지갑으로 보내보는 아주아주 간단한 실습 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol 참고 remix에서 파일 생성 후 베포 (당연히 테스트넷으로 베포) 이렇게 베포된걸 볼수있다. (베포할 때 민팅 개수 100개로 설정함) 이제 터미널에서 하드헷을 진행하자 (install 등 세팅은 되어있는 상황) 토큰을 잘 보냈는지 확인 하려면 메타마스크 지갑에 들어가(아까 보낸 주소) 
[ERC20] 토큰만들기 + 문제점
NFT를 다룬 ERC721에 이에서 FT를 다루는 ERC20을 살펴보았다. 거래소에 상장되어 있는 많은 코인들이 이더리움 네트워크상에서 ERC20을 통해 생겨난 것들이다. EIP20을 보면서 구성요소를 살피고 공격당할 수 있는 부분까지 확인해본다. 초록을 보면 토큰 전송 및 제 3자가 사용할 수 있도록 사용을 승인하는 기능을 가지고 있다. 아래는 ERC20 인터페이스다. ERC20 을 구현한 토큰인 SAND를 보면서 확인해보려 한다. 웹사이트에서 보면 symbol, total supply, decimals를 바로 확인할 수 있다. 
Incentive Community 프로젝트
두 번째 프로젝트는 Web2.0에서 블록체인 인센티브를 기반으로, 커뮤니티 사이트를 개발하기이다. 사용자가 게시글을 작성하면 보상으로 토큰을 받고, 받은 토큰으로 NFT 거래 및 다른 사용자와 토큰 교환을 할 수 있다. [github] https://github.com/codestates/BEB-05-Beginners 구현 목표 회원 가입시 서버에서 사용자에게 지갑 주소를 부여하고, 사용자 정보와 지갑 주소를 데이터베이스에 저장한다. Article로 이동하면 커뮤니티에 작성된 게시글들을 볼 수 있다. 커뮤니티에 게시글을 작성하면 보상으로 ERC-20토큰을 10개 지급한다. 해당 게시글을 작성한 사용자만 게시글을 수정 및 삭제를 할 수 있다. Mypage로 이동하면 내 정보를 볼 수 있다.(지갑 주소, 보유 토큰 수, 보유 eth) Mypage에서 eth Faucet 버튼을 누르면 서버에서 1 eth를 지급한다. Mypage에서 다른 지갑으로 내가

ERC 20으로 토큰 발행하기
ERC 20이란? > ERC-20은 이더리움 블록체인 네트워크에서 정한 대체 가능한 자산에 대한 표준 토큰 스펙이다. 이케아에서 탁자를 사와서 조립을 하려고 했는데 나사 하나가 모자라다면? 우리는 동네에 있는 아무 철물점에 가서 같은 사이즈의 나사를 사와서 그걸 사용하면 된다! 이게 가능한 이유는 이런 부품들의 규격을 사람들끼리 미리 정해두었기 때문이다. 지름이 n이라면 나사산의 크기와 간격을 얼마로 하자고 정해두었기 때문에 지름 크기만 맞다면 나사는 무리없이 잘 들어맞게 된다. ERC20은 이더리움 상에서 발행되는 토큰의 규격이라고 할 수가 있다. 이더리움 네트워크의 개선안을 제안하는 EIPs(Ethereum Improvement Proposals)에서 이 규격을 정해두었다. 나사와 마찬가지로 어느 곳에서든 잘 호환이 되게끔 하는 것이 목적이라고 할 수 있다. 이더리움 네트워크를 이용하고 있는 토큰이라면 A토큰과 B토큰은 스왑이 가능하다. 규격에 맞지 않는

ERC-20 토큰 만들기 및 전송
이더리움 Ropsten 네트워크에서 ERC20 토큰 생성하기 1. ERC20 토큰 생성 코드는 이전 글을 활용 2. remix.ethereum.org에 코드를 입력, 컴파일한다. 3. 컴파일 후 배포(Deploy)한다. 컨트랙트는 SimpleToken으로, getname = MysimpleToken getsymbol = MST로 설정 (자유롭게 해도됨) 
[Spark It] (3) 토큰 발행 및 전송
유저 인센티브 시나리오 이번 프로젝트의 목표는 유저의 활동에 따른 인센티브 부여 앱이다. 그러므로 유저의 앱 이용 시 토큰 관련 시나리오를 정리했다. 사용자가 회원 가입을 하면 스팀잇에서 사용할 address를 생성하여 사용자 정보와 함께 저장한다. 사용자가 글을 작성하면 사용자의 address로 일정량의 토큰을 전송한다. 사용자A가 다른 사용자B가 작성한 글에 좋아요를 누르면 A가 가진 토큰 중 일부를 B의 address로 전송한다. 사용자는 마이 페이지에서 자신이 가진 토큰의 갯수를 조회할 수 있다. address 생성 사용자가 회원 가입을 하면 입력한 비밀번호를 기반으로 하여 새 니모닉 지갑을 생성한다. 생성한 지갑의 private key는 AES256으로 암호화 해 DB에 저장한다. 토큰 발행 이번 프로젝트에서 사용한 토큰 관련 스마트 컨트랙트는 다음과 같다. remix를 사용하여 ropsten 테스트 네트워크에 배포하였다. 이더스캔
[openzepplin] ERC20 개발
👉 ERC20 ERC20은 대체 가능한 토큰(fungible token)으로 이더리움 블록체인 네트워크에서 정한 표준 토큰이다. 한 토큰은 다른 토큰과 정확하게 동일하며, 토큰에 특별한 권리나 행동이 관련되어있지 않다. 👉 구현 openzepplin을 활용하면 간단하게 ERC20을 구현해볼 수 있다. openzepplin docs에 truffle과 hardhat 사용 예제가 모두 있으니 원하는 framework를 이용하여 개발을 진행해볼 수 있다. 개발을 위한 환경 세팅(truffle이나 hardhat을 이용해서) openzeppline을 사용하여 ERC20을 구현하기 위해 일단 openzeppline contract를 설치해준다. 설치가

ERC20 나만의 토큰 만들기
ERC20 토큰만드는 방법 1. 리믹스에 접속한다. 주소: https://remix.ethereum.org/ 2. default_workspace에서 contracts폴더에 mytoken.sol파일을 생성한다. 3. 아래의 코드를 붙여넣어준다. 솔리디티 공부 = https://solidity-by-example.org/ 4. 컴파일 탭에가서

솔리디티 도입
인프런 [솔리디티 깨부수기]를 기초하여 시행착오를 겪으며 작성되었습니다. https://inf.run/HqLV 목차 솔리디티 이해 data type Ether/GWei/wei/Geth Function 함수 정의 4-1. Function 1 4-2. Function 2 - public, private, internal, external 4-3. Function 3 - view, pure 4-4. Function 4 - string Instance 5-1. instance 정의 5-2. instance - constructor Inheritance 상속 6-1. inheritance 정의 6-2. inheritance - Overriding 오버라이딩 6-3. inheritance - 두개 이상의 상속 6-4. inheritance - super 6-5. inheritance - 상속의 순서 e

ERC-20
들어가며 NFT, 스마트 계약, ICO(Initial Coin Offering) 등에 많은 관심이 쏟아지고 있다. 이처럼 토큰을 배포하는 행위가 어떻게 가능할까? 이더리움은 자체 블록체인을 기반으로 다양한 탈중앙화된 애플리케이션들이 작동할 수 있도록 고안된 하나의 플랫폼 네트워크이다. dapp은 이러한 이더리움 플랫폼 상에서 스마트 계약을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다. 이더리움 블록체인에서는 이더(ETH)가 사용되고, 이더리움 블록체인 상의 댑은 또 다른 다양한 분야에 적용될 수 있는 각각의 솔루션으로 그에 맞는 토큰을 발행한다. 여기서 발행된 토큰은 독자적인 토큰인 듯 하지만 실제로는 이더리움 생태계에서 호환 및 사용 가능하다. 여기서, 다양한 댑의 토큰들에 대한 표준으로써 ERC 20 토큰 표준이 만들어졌다. ERC 20 Ethereum Request for Comments 20의 약자로 이더리움 네트워크 상에서 유통할 수 있