본문 바로가기

전체 글95

transaction 이해하기 1. 트랜잭션 해시란 Transaction Hash, TXID 는 해당 트랜잭션의 고유 ID 값을 의미한다. 다른 블로그에서 거래소 예시를 드는것을 참조하자면 이렇다. 고객 A가 거래소의 지갑으로 100ETH를 보냈는데 거래소에서 반영이 안될 시 고객 A는 거래소에 전화해 자신이 보낸 트랜잭션 고유 ID를 말해주며 문의를한다. 거래소 측에서는 마찬가지로 트랜잭션의 고유 ID가 실제 네트워크에 존재하는지 확인하고 confrimation 횟수를 확인하여 언제쯤 입금처리가 되는지에 대해 말해 줄수 있다. 고객이 트랜잭션 ID를 제시한다 거래소가 트랜잭션 ID를 블록체인 네트워크에서 확인한다 해당 트랜잭션의 confrimation 횟수를 확인 한 후 고객에게 답변해준다. confrimation이 40을 넘겼을때.. 2023. 1. 15.
web3.js 기본 틀 우리는 컨트랙트 작성을 끝냈으면 이를 플랫폼에서 사용할수 있게끔 만들어줘야한다. 보통 프론트에서 메타마스크를 통해 트랜잭션을 날리는 방법을 쓰지만 유저들에게 접근성이 좋아야하기 때문에 이해하기 힘든 지갑 부분을 제외하는 방법, 백엔드에서 처리를 하는 방식을 주로 택한다. 이에 따른 문제점은 확실히 존재하지만 현재로써 지갑을 이해하지못하는 유저들이 사용하기에 가장 좋은 방법 인것 같다. 1. 이더리움 통신 연결 ////이더리움 테스트넷 goeril 사용//// const Web3= require('web3'); const web3 = new Web3( new Web3.providers.HttpProvider("https://ethereum-goerli-rpc.allthatnode.com") ); 2. 컨트.. 2023. 1. 15.
2023년의 시작과 조각 2023.01.04 2022년 나태하게 1년을 소모했다. 1년 기간 동안 얻은 것이 없진 않지만 길고 넓게 봤을 때 크게 조각하지 못했다 나를. 대신 나라는 사람의 인성에 대해서 다시 생각해보는 시간이 되었고, 사람을 대함에 있어 더 깊이있게 생각해보는 한 해가 되었다. 나태해진 모습을 보고 22.12에 운동을 다시 시작하였고 독서를 다시 시작했다. 어떻게 보면 내가 나태해졌기에 지금 다시돌아볼수있지 않을까 생각 하게된다. 요즘 나의 일과는 8시 기상, 식사, 준비, 출근 점심시간에 카페에서 독서를 하고 퇴근 후 운동을 다녀와 하루를 정리하고 피부관리를하다가 잠이든다. 새로 읽기 시작한 도서는 "타이탄의 도구들" 이라는 책이다. 성공한 사람들의 습관들을 소개해주는데 인상이 깊어 더 나은 사람이 되기 위해.. 2023. 1. 4.
call vs delegate call 알아보기 회사 일에 바쁘게 치이다보니 블로그 작성을 할 힘이 남아있지않다 공부한 것도 정리해야되는데 이걸 언제하나 싶다. 시간은 남지만 체력과 정신이 나약하다. 우선 콜과 딜리게이트 콜에 대하여 알아보자 call 기존의 call은 스마트컨트랙트 1 안에있는 콜 함수를 통해 컨트랙트 2의 함수를 부른다고 했을때 컨트랙트 1과 2의 msg.sender가 다르게 된다. poo라는 주체가 컨트랙1을 불렀기 때문에 컨트랙1의 msg.sender는 poo가 되고 컨트랙1이 컨트랙2를 호출했기 때문에 컨트랙 2의 msg.sender는 컨트랙 1 이 된다. 또한 컨트랙 1이 부른 컨트랙2의 함수가 num 이라는 변수의 값을 1 => 3 변경 시 num은 3이 되고 컨트랙 2에 저장이 된다. 요약 컨트랙트 1을 통해 2의 함수 .. 2023. 1. 4.
genesis Block 생성 package main import ( "crypto/sha256" "fmt" ) type block struct { data string hash string prevHash string } func main() { genesisBlock := block{"Genesis Block", "", ""} hash := sha256.Sum256([]byte(genesisBlock.data + genesisBlock.prevHash)) hexHash := fmt.Sprintf("%x", hash) genesisBlock.hash = hexHash fmt.Println(genesisBlock) } 블럭 구조체 설정하고 제네시스 블럭에는 데이터, 해쉬값, 직전 해쉬값이 들어가는데 제네시스이기에 직전 해쉬가 없다. .. 2022. 7. 21.
go test sample study package main import "fmt" func plus(a, b int, name string) (int, string) { return a + b, name } func main() { result, name := plus(2, 2, "gunwoo") fmt.Println(result, name) } package main import "fmt" func plus(a ... int) (int) { var total int // == total := 0 for _, item := range a { total += item } return total //_ => 무시 //index = int //item => main, 2, 3, 4, 5,6,7 //range는 반복가능한 것들을 반복하게 해준다 .. 2022. 7. 21.
DID란 무엇인가? DID , decentralized Identity, 탈중앙 신원증명 데이터의 주권이 개개인에게 있고 필요한 때 그 데이터를 중앙화된 시스템을 거치지 않고 증명할 수 있는 기술 분산원장기술을 기반으로 사용자 정보를 저장하여 안전하고 편리한 인증이 가능하도록 한다. DID 기술은 중앙화된 레지스트레, 데이터제공자, 인증기관 들을 분리 할 수 있고 중앙화 된 방식이 탈중앙화 방식으로 동작 할 수 있도록 설계되었다. 자기 자신이 시원증명에 대한 권한을 갖도록 하겠다는 SSI 개념을 현실화 하기 위해 사용된다. 데이터 주권과 DID (W3C, DID) W3C 탈중앙 운동 웹에서 상호 공유하고 이를 통해 자유롭게 데이터를 사용자들끼리 주고받게 하기 위한 것 2000년대 이후 데이터의 주권은 사용자 개인이 아닌 플.. 2022. 6. 3.
코드스테이츠 인터뷰 코드스테이츠에서 했던 인터뷰가 정리되어 올라왔다. 글을 긁어올수 없어 링크 첨부로 대신... https://blog.naver.com/codestates/222705118563 2022. 4. 21.
유니스왑 V2 해체하기 Factory Contract 한 토큰 페어 당 유일한 하나의 컨트렉트를 만드는 역할을 한다. pool을 만드는 컨트렉트이다 우선 UniswapV2Factory가 상속하고 있는 인터페이스인 IUniswapV2Factory 인터페이스에 대해 알아보자 import './interfaces/IUniswapV2Factory.sol'; pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); //pool을 사용하는 유저가 수수료를 지불하는 주소 function .. 2022. 4. 14.
유니스왑 V2 해체하기 ERC-20 Contract UniswapV2ERC20.sol pragma solidity =0.5.16; import './interfaces/IUniswapV2ERC20.sol'; import './libraries/SafeMath.sol'; //유니스왑은 인터페이스를 자체 제작하여 ERC-20 인터페이스를 끌고오고있으며 // safemath 를 사용하여 언더플로우 오버플로우를 예방하고 있다 contract UniswapV2ERC20 is IUniswapV2ERC20 { using SafeMath for uint; // uint 자료형 오버플로우 방지 string public constant name = 'Uniswap V2'; string public constant symbol = 'UNI-V2'; uint8 public c.. 2022. 4. 11.