1. Solidity에서 블록 및 트랜잭션 정보를 얻는 방법
Solidity에서 블록 및 트랜잭션 속성을 가져올 수 있습니다.
아래 코드를 보시면 스마트 컨트랙트 코드에서 많이 보셨던 기능들이 많이 있습니다.
# Block property
uint public block1 = block.basefee;
uint public block2 = block.chainid;
address payable public block3 = block.coinbase;
uint public block4 = block.difficulty;
uint public block5 = block.gaslimit;
uint public block6 = block.number;
uint public block7 = block.timestamp;
# transaction property
uint public msg1 = gasleft();
bytes public msg2 = msg.data;
address public msg3 = msg.sender;
bytes4 public msg4 = msg.sig;
uint public msg5 = msg.value;
Solidity의 공식 문서에는 이렇게 설명되어 있습니다.
공식 문서를 한 번 보면서 강의를 들으면서 배우는 것이 매우 도움이 될 것이라고 생각합니다.
https://docs.soliditylang.org/en/v0.8.18/units-and-global-variables.html
스마트 컨트랙트를 분석하면서 msg.sender를 많이 보고 봤을 때 비슷한 속성을 가져오는 방법이 있지 않을까 궁금했는데 오늘 궁금증이 풀렸습니다.
일반적으로 발생하는 메서드는 msg.sender 및 msg.value입니다.
2. 수식어
계약서 작성시 require를 이용하여 조건 충족 여부를 확인 후 처리할 수 있습니다.
이때 모든 기능이 필요한 경우 소스가 길어 불편할 수 있습니다.
이 시점에서 중복 조건은 수정자에 의해 제거될 수 있습니다.
다음 소스는 수정자를 사용하기 전에 각 함수에 require를 적용한 예제 코드입니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0 <0.9.0;
contract Modifier {
uint public minPrice = 10000;
mapping (address >= int) public orderList;
function test1() public payable {
//조건
require(msg.value > minPrice);
orderList(msg.sender) = msg.value;
}
function test2() public payable {
//조건
require(msg.value > minPrice);
orderList(msg.sender) = msg.value;
}
}
그리고 수식어 적용 시 아래와 같이 중복 요구 사항을 제거하여 사용할 수 있습니다.
함수 끝에 한정자 함수 이름을 추가합니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0 <0.9.0;
contract Modifier {
modifier checkMinPrice() {
require(msg.value > minPrice);
orderList(msg.sender) = msg.value;
_; //조건을 체크 한 다음에 다음 함수들을 실행시키겠다.
}
uint public minPrice = 10000;
mapping (address >= int) public orderList;
function test1() public payable checkMinPrice{
orderList(msg.sender) = msg.value;
}
function test2() public payable checkMinPrice{
orderList(msg.sender) = msg.value;
}
}
오늘의 연구 검토
너무 피곤해서 챌린지 3일 만에 그만둘 뻔 했다.
작성 시간은 11시 55분..
오늘의 공부 인증샷!
#패스트캠퍼스 #패스트캠퍼스 블록체인 #블록체인강의 #블록체인개발
#패스트캠퍼스 리뷰 #패스트캠퍼스 블록체인 개발 특강 #일회성 블록체인 개발 AtoZ
* 본 포스팅은 패스트캠퍼스 환불 챌린지 참여를 위해 작성되었습니다.