본문 바로가기

전체 글95

ERC-4337 , Account Abstraction ERC-4337 , Account Abstraction 주요 개념 UserOperation 객체 도입 : 기존의 트랜잭션 구조와 다른 새로운 객체 유형, 사용자 작업 개체는 스마트 게약을 사용하여 처리되며 이를 통해 트랜잭션 처리 방식에 대한 유연성이 향상된다. 별도의 메모리 풀 : useroperation 객체는 일반 트랜잭션과 분리되어 별도의 메모리풀에 저장된다. 이를 통해 기존의 트랜잭션 처리에 영향을 주지 않으면서 사용자 작업 객체를 관리가능하다. 번들러 : 번들러는 사용자 작업 객체를 수집하고 이를 처리할수있는 번들로 만들어 주는 역할을 한다. 번들러가 번들을 처리하는 특수 계약을 호출하여 번들 내의 사용자 작업 객체들이 블록에 포함할수 있게 한다. UserOperation struct User.. 2023. 4. 4.
EIP-4337 이해하기 eip 4337은 합의 규칙을수정하지 않고 이더리움 메인넷에 계정 추상화 기능을 추가하기 위한 사양이다. 계정 추상화란 무엇인가? 계정 추상화란 사용자가 eoa 대신 스마트 컨트랙트 지갑을 사용할수 있도록 하는 제안이다. 사용 사례의 예 권한 제어 트랜잭션 일괄 처리 계정 복구 거래 중지 용어 정리 UserOperation 사용자 대신 보낼 트랜잭션을 설명하는 구조, 혼동을 피하기 위해 트랜잭션이라는 이름은 지정 되지 않음 트랜잭션과 마찬가지로 "sender", "to", "calldata", "maxFeePerGas", "maxPriorityFee", "signature", "nonce"가 포함된다 트랜잭션과 달리 아래에 설명된 몇 가지 다른 필드가 포함되어 있다 또한 "nonce" 및 "signatu.. 2023. 3. 22.
maxFeePerGas, maxPriorityFeePerGas 추정기 메인넷을 지원하는 gas tracker api들은 여러 종류가 있더라. 이 api를 써서 사용하면 될거 같은데. 테스트넷을 지원하는 api는 찾기가 힘들다 그래서 만들어보려한다. 트랜잭션이 처리되는 원리를 생각해보면 유저가 트랜잭션을 전송하고 채굴자가 채굴을 해가야하는데 채굴 우선순위는 최종 가스프라이스가 높은 순이다. 그렇다는 말은 팬딩 트랜잭션을 봐야한단 말이다. 팬딩 트랜잭션들을 조회하여 그들의 maxFeePerGas, maxPriorityFeePerGas 값을 가져와야겠다. 팬딩 트랜잭션을 조회하는 방법은 두가지 정도가 존재한다 1번: JSON-RPC 요청을 직접 사용하여 팬딩 트랜잭션 정보를 얻는 방법 2번: 외부 API를 사용하여 팬딩 트랜잭션 정보를 얻는법 네트워크 전반 사용률 확인 최근 블.. 2023. 3. 18.
transaction 모듈화 rawTransaction을 하나 하나 만들어서 쓰려니까 너무 비효율적이라 느껴 모듈화를 해보았다. rawTransaction, EIP-1559를 사용한 방법이고 txHash를 반환한다. 현재 쓰고있는 로직은 하나의 트랜잭션이 성공하면 다음 트랜잭션으로 넘어가는 형식이기 때문에 이렇게 작성하였다. package com.example.demo.controller.test.moduel; import org.web3j.crypto.Credentials; import org.web3j.crypto.RawTransaction; import org.web3j.crypto.TransactionEncoder; import org.web3j.protocol.Web3j; import org.web3j.protocol.co.. 2023. 3. 15.
가스에 대하여 가스 Gas는 Ethereum 네트워크에서 특정 작업을 실행하는 데 필요한 계산 노력의 양을 측정하는 단위 단위 1 gwei => 0.000000001Eth => 1,000,000,000 wei 런던 업그레이드 이전 TotalFee = GasLimit * GasPrice 런던 업그레이드 이후 EIP-1559 TotalFee 계산법 : units of gas used(GasLimit) * (baseFee + priorityFee) baseFee : protocol에서 설정한 값 priorityFee: 사용자가 채굴자에 대한 tip을 설정한 값 baseFee • EIP-1559는 네트워크 조건에 따라 결정되는 기본 요금 매개 변수를 도입 • 모든 트랜잭션이 블록에 포함되기 위해 지불해야 하는 최소 가스 가격.. 2023. 3. 15.
유니스왑 v2 백서 분석 AMM 자동화 마켓 메이커 기존 중앙화 거래소는 유동성 공급자가 원하는 가격을 정해서 호가를 올린다. AMM은 유동성 공급을 유저가 아니라 공식을 따르게 만든다. 토큰 A와 토큰 B의 교환 비율이 자동적으로 정해지게한다. 유니스왑은 AMM 중 CPMM을 사용한다 CPMM : x*y = k k는 변하지 않는 상수, x와 y는 특정 거래 쌍에서 사용 가능한 토큰의 수량 x와 y는 반비례를 하기 때문에 다음과 같은 그래프 형태를 따른다. 예시] 이더리움과 오미세고 교환 많은 예시로 나와있는 예시문을 가져와보자면 유니스왑에 이더리움 10개와 오미세고 500개가 있었고 이 두개의 곱 k가 5000인 컨트렉트가 있다 유저가 1이더를 오미세고로 교환하려고 한다. 1이더를 넣을 시 컨트렉트에는 11이더가 되고 11* .. 2023. 2. 28.
브릿지 브릿지 요약 유저가 브릿지 컨트랙트에 스왑 트랜잭션 전송 브릿지 컨트렉트가 트랜잭션을 검증한다(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.