본문 바로가기

분류 전체보기95

브릿지 브릿지 요약 유저가 브릿지 컨트랙트에 스왑 트랜잭션 전송 브릿지 컨트렉트가 트랜잭션을 검증한다(validator가 검증) 스왑 함수가 실행 될 때 유저의 어느 데이터를 이벤트값으로 저장 검증단계에서 이벤트값 체크 validaotr가 검증(multi-sig) 다중 서명 방식 등을 이용해 검증한다. 검증이 완료가 되면 operator가 다른 체인에 이미 배포되어 있는 브릿지 컨트렉트에 민팅 트랜잭션을 전송 다른 체인에서 기존 체인의 코인을 래핑하여 민팅해주고 민팅된 코인을 유저에게 전송해한다 브릿지의 대략적 길은 이렇다. 주말에 자세하게 코드 분석까지 해야겠다. 2023. 1. 26.
java web3j 컴파일 및 wrappers 컨트렉트 작성이 끝난 상태에서 우리는 프로젝트에서 컴파일 및 배포를 해주려고 한다. 하여 그에 대한 구성을 기록한다. solc 우선 컴파일을 해주기 위해 solc를 설치해준다 brew tap ethereum/ethereum brew install solidity abi, bin 파일이 저장될 경로를 정해준 뒤 out 폴더를 하나 만들어준다 sol 파일이 저장되어 있는 경로를 처음 지정해주고 --optimize -o 뒷부분에 out폴더의 경로를 써놓아주자. solc ./src/main/yourSolidityContractPath/yourContract.sol --bin --abi --optimize -o ./src/main/abi,bin파일이 저장될 경로/out 이렇게 하면 sol 파일을 컴파일하여 abi.. 2023. 1. 25.
mac os web3j 설치하기 1. brew install jq 2. curl -L get.web3j.io | sh && source ~/.web3j/source.sh 이 쉬운걸 못찾아서 한참을 난리를 부려서 혹시나 같은 어려움에 처하신 분이 있을까 하여... 2023. 1. 25.
트랜잭션 서명 이해하기 앞선 글에서 트랜잭션을 한번 까보았다. 까다보니 서명에 관해 정리를 해야할 필요성을 느껴 정리를 해본다. 타원 곡선 블록체인에서 타원곡선의 역할은 디지털 서명이다. 디지털 서명이란 a 라는 사람이 개인 키를 이용해 내가 보내려는 데이터에 서명을 하고 받은 사람은 a의 공개 키를 이용해 그 서명이 진짜 a의 서명인지 확인하는 기술을 의미한다. 디지털 서명은 트랜잭션 때문에 필요한데 이는 이전 글에서 설명했으니 생략한다. 트랜잭션에 쓰일 서명은 어떤 형태를 띄어야하는가? 송신자 만이 가지고 있는 고유값으로 서명을 만들어 낼 수 있어야 한다. 수신자가 이 서명이 송신자의 것이 맞다는 것을 확인 할 수 있어야 한다. 두 가지 조건을 만족하며 이를 만들 수 있는 기술이 타원 곡선이다. 타원곡선 방정식 : fuck.. 2023. 1. 15.
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.