일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Vue.js
- ethers typescript
- ambiguous function description
- 러스트기초
- 러스트 기초
- 머신러닝기초
- ethers v6
- 컨트렉트 동일한 함수이름 호출
- rust 기초
- git rebase
- 깃허브명령어
- 체인의정석
- 스마트컨트렉트테스트
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 배포 자동화
- 러스트 기초 학습
- Vue
- 프록시배포구조
- multicall
- vue기초
- ethers type
- nest.js설명
- 스마트컨트렉트프록시
- SBT표준
- 스마트 컨트렉트 함수이름 중복
- nestjs 튜토리얼
- chainlink 설명
- 스마트컨트렉트 함수이름 중복 호출
- ethers websocket
- ethers
- Today
- Total
목록체인의정석 (11)
체인의정석
컨트렉트와 개발할 때는 총 3가지의 단계가 존재한다. 1. DB의 SQL 2. 백엔드의 데이터 처리 3. 스마트컨트렉트의 데이터 처리 무언가 작업을 하거나 계산할 때 1,2,3의 처리를 우리는 모두 다 해주어야 한다. 상황에 따라 다르지만 컨트렉트에서의 처리는 최대한 줄여주고 그 다음으로 백엔드의 처리를 최대한 줄여주고 최대한의 작업을 SQL에서 작업해야 빠른 처리가 가능하다. 1 -> 2의 호출회수를 줄이고 2 -> 3의 호출 회수를 줄이는 것이 우선순위이다. 데이터베이스에서 자료를 가져오면서 복잡한 쿼리를 작성하여 정리해 두고자한다. STEP 1.) 여러 테이블에서 조회를 같이 해와서 최대로 큰 블록을 가져오는 경우의 쿼리는 다음과 같이 작성한다. 먼저 FROM 안에 SELECT를 넣을 때는 AS A..
1. 각 브랜치 간의 차이점을 조회하기 위해서는 다음과 같은 명령어를 사용한다. git diff staging..dev 이러면 staging 브랜치와 dev 브랜치 간의 차이점을 볼 수 있다. 2. merge 명령어 실행 후 vs code에서 확인 스테이징 환경에 들어간 후 merge를 하게 될시 바로 stated change에서 확인이 가능하다. git merge dev 팁 : 만약 내가 짠 코드가 아닌 다른 팀원이 짠 코드가 있다면 이 단계에서 커밋을 누가했는지 보고 스테이지에 반영을 해도 되는지 물어본다. 3. 실제 환경에 배포하기 서버 팀에게 받은 환경으로 접속한다. ssh 명령어를 써서 전달받은 ip로 접속하면된다. 만약 게이트웨이가 설정된 경우 게이트웨이에 먼저 접속을 한 후 거기서 프라이빗 ..
References와 Borrowing fn main() { let s1 = String::from("hello"); let len = calculate_length(&s1); println!("The length of '{}' is {}.", s1, len); } fn calculate_length(s: &String) -> usize { s.len() } calculate_length를 계산하는 방법은 다음과 같다. &를 다음과 같이 사용하게 되면 레퍼런스만 파라미터로 넘겨서 소유권 이전 없이도 사용이 가능하게 된다. 첫째, 튜플의 모든 가변성 있는 변수들과 함수들은 사라진다. 둘째, &s1을 calculate_length로 넘기고 정의를 할 때 &String을 String 대신에 가져간다. 위의 그..
Control Flow 조건이 참일때 코드를 반복적으로 돌리는 행위는 가장 기본적인 프로그래밍 기법으로서 러스트에서는 if와 loop가 가장 대표적이다. IF 표현 if 표현은 조건이 맞으면 코드가 돌아가고 안맞으면 안돌아가는 기초적인 프로그래밍이다. branches라는 경로를 만들고 한번 진행해보도록 하겠다. ➜ functions (master) ✗ cargo new branches Created binary (application) `branches` package 기본적인 if 문은 다음과 같이 만들면 된다. fn main() { let number = 3; if number < 5 { println!("condition was true"); } else { println!("condition wa..
기본 함수 기본 함수는 다음과 같이 정의한다. fn main() { another_function(5); } fn another_function(x: i32) { println!("The value of x is: {x}"); } 이런 식으로 정의를 하게 되면 ➜ functions (master) ✗ cargo run Compiling functions v0.1.0 (/Users/chohk/Desktop/git/rust/functions) Finished dev [unoptimized + debuginfo] target(s) in 0.84s Running `target/debug/functions` The value of x is: 5 이런 결과가 나오게 된다. 여러 변수의 정의는 그냥 일반적인 함수와 ..
branch version 2.8 기준 1. 초기값 설정해주기 function initialize(ComptrollerInterface comptroller_, InterestRateModel interestRateModel_, uint initialExchangeRateMantissa_, string memory name_, string memory symbol_, uint8 decimals_) public { require(msg.sender == admin, "only admin may initialize the market"); require(accrualBlockNumber == 0 && borrowIndex == 0, "market may only be initialized once"); //..
순서대로 다뤄보기 1. 조회하고자 하는 컨트렉트와 연동해준다. const testContract = await ethers.getContractAt("컨트렉트이름", "컨트렉트주소"); 2. 조회를 할 설정값을 넣어서 필터링을 해준다. const filter = { address: "컨트렉트 주소", fromBlock: 0, toBlock: 10000000, topics: [testContract.filters."이벤트이름"().topics] //Transfer().topics 이런식으로 활용 }; const logs = await ethers.provider.getLogs(filter); //filter를 적용한 로그 값을 가져온다. 3. logs를 통해 조회가 가능하지만 해당 값들은 디코딩이 되지 않..
체인링크의 기본 아키텍쳐에 대해서 알아보았다. https://docs.chain.link/docs/architecture-overview/ Data Feeds Architecture | Chainlink Documentation docs.chain.link 크게 3가지로 나누는 거같다. 1. 기본 요청 모델 - 1대 1로 요청에 대해 응답하는 것으로 아래 사이트에서 확인 가능 등록해두면 Id를 받아서 https://docs.chain.link/docs/any-api/get-request/introduction/ Make a GET Request | Chainlink Documentation Learn how to make a GET request to an API from a smart contract,..