패스트캠퍼스 블록체인 강의 챌린지

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

단위 및 전역적으로 사용 가능한 변수 – Solidity 0.8.18 문서

단위 및 전역적으로 사용 가능한 변수 GitHub에서 편집 단위 및 전역적으로 사용 가능한 변수 Ether 단위 리터럴 숫자는 접미사 wei, gwei 또는 ether를 사용하여 에테르의 하위 명칭을 나타낼 수 있습니다.

여기서 에테르 숫자는 접미사 없이 허용됩니다.

docs.soliditylang.org

스마트 컨트랙트를 분석하면서 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분..

오늘의 공부 인증샷!


패스트캠퍼스 블록체인 강의 챌린지 1


패스트캠퍼스 블록체인 강의 챌린지 2


https://bit.ly/3Y60J4D

온라인에서 A부터 Z까지 즉시 끝나는 블록체인 개발. | 패스트캠퍼스

블록체인 DApp 개발부터 복제 코딩 실습까지 마스터하세요!

fastcampus.co.kr

#패스트캠퍼스 #패스트캠퍼스 블록체인 #블록체인강의 #블록체인개발

#패스트캠퍼스 리뷰 #패스트캠퍼스 블록체인 개발 특강 #일회성 블록체인 개발 AtoZ

* 본 포스팅은 패스트캠퍼스 환불 챌린지 참여를 위해 작성되었습니다.