본문 바로가기

분류 전체보기95

머클트리 비트코인에서의 머클트리와 이더리움에서의 머클트리의 구조는 다소 차이가 있다. 우선 머클 트리(Merkle Tree)는 블록체인 기술에서 데이터의 무결성을 검증하는 데 사용되는 데이터 구조이다. 이 구조는 특히 거래 데이터의 무결성을 효율적으로 검증하기 위해 설계되었다. 여기서 "무결성"이란 데이터가 변경되지 않았음을 의미한다. 비트코인 머클트리 머클 트리의 기본 원리 머클 트리는 기본적으로 이진 트리 구조를 가지며, 각 노드는 자식 노드의 해시값을 합친 후, 그 결과를 다시 해시한 값으로 구성된다. 이 과정은 트리의 최상단에 도달할 때까지 반복되며, 최상단에 위치한 노드를 "머클 루트"라고 한다. 거래 해시와 머클 트리 1. 거래 해시화: 블록 내의 각 거래는 해시 함수를 통해 고유한 해시값으로 변환된다.. 2024. 2. 21.
암호학 공개키 이더리움 공개키는 타원곡선에 있는 점으로 타원 곡선 방정식을 만족하는 x와 y좌표의 집합을 의미한다. 더 간단히 이더리움 공개키는 함께 결합된 2개의 숫자. 이 숫자는 개인키로 부터 단 한방향으로만 계산 가능하다. 즉 개인키가 있는 경우 공개키를 계산하기는 쉽지만 공개키에서 개인키를 계산할수는 없다. K = k *G k는 개인키, G는 생성자 점(상수), K = 공개키 단방향 수학 함수이기 때문에 K를 G로 나누어 개인키 k를 계산할수없다. 이더리움은 secp256k1이라는 정확한 타원 곡선을 이용한다. 공개키 생성 무작위로 생성한 숫자 k 형태의 개인키로 시작하여 생성자 점 G라고 하는 곡선의 미리 결정된 점에 개인키를 곱하여 곡선상 다른점, 즉 대응하는 K 공개키를 생성한다 생성자 점 G는 s.. 2024. 2. 19.
빡세디 빡센 인생 블록체인 업계에서 꽤 인지도 있고 큰 기업에 입사를 한지 4개월이 지났다. 업계동료들이 가기전에 조금 우려한 부분이 있었지만 중요한 프로젝트들을 쳐내며 꽤 만족도 있게 다니고 있었다. 첫 급여가 지연되기 전까지... 첫 급여 지연, 4개월차 중 3개월 급여 지연 중... 회사가 안좋은 이슈가 터져 자금 흐름이 좋지 않아 모든 직원 급여가 지연이 됐다. 그래도 동료들도 좋고 일도 재밌어서 버티고 있었지만 좋은 동료들이 하나 둘 떠나가고 2월에 나머지 직원 거의 모두가 퇴사의사를 표했다. 메인넷 프로젝트는 상태가 괜찮아질때까지 팬딩 상태로 남긴다고 한다. 다 떠나가는 마당에 혼자 할게 없다ㅠ 퇴사 결정. 향후 방향 설계 1. eip4337 등 기술적 분석 2. 다시 도메인 지식 회고 및 공부 3. 디파이 분.. 2024. 2. 17.
delegatecall : immutable, constant 예제 이뮤터블, 콘스탄트 들이 어떻게 작동하는지 딜리게이트콜을 아래 테스트를 사용해 알아보자. DelegateCalled.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract DelegateCalled { uint256 public constant CONSTANTVALUES = 400; uint256 public publicValue1 = 600; uint256 public immutable immutableValue = 200; uint256 public publicValue2 = 800; constructor() { } function getValues() external view returns (uint256, uint256, uint.. 2024. 2. 3.
Foundry 학습하기 장점 자바 기반 개발환경 대비 실행속도가 빠르다. 솔리디티만으로 테스트 코드를 작성 가능하다 유용한 테스팅 라이브러리 및 내장도구가 존재한다 하드햇과 호환이 가능하다 단점 러닝커브 업그레이더블 플러그인 하드햇을 구성하여 업그레이드 배포만 하드햇 사용으로 우회 가능 설치 1. curl -L https://foundry.paradigm.xyz | bash 2. foundryup 프로젝트 생성 $ forge init yourProjectName . ├── foundry.toml ├── lib │ └── forge-std │ ├── foundry.toml │ ├── lib │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── package.json │ ├── README.md │ ├─.. 2024. 1. 25.
upgradeable contract 하드햇, 오픈제플린 라이브러리 분석 2 이어서 분석해보자 return async function upgradeProxy(proxy, ImplFactory, opts: UpgradeProxyOptions = {}) { disableDefender(hre, defenderModule, opts, upgradeProxy.name); const proxyAddress = await getContractAddress(proxy); const { impl: nextImpl } = await deployProxyImpl(hre, ImplFactory, opts, proxyAddress); // upgrade kind is inferred above const upgradeTo = await getUpgrader(proxyAddress, opts, getS.. 2024. 1. 21.