solidity0.5.x 노트(4) - 단위 및 글로벌 변수

5848 단어 solidity
화폐 단위
접미사 wei,finney,szabo,ether를 사용하여 서로 다른 액면가에서 변환할 수 있는 상수 숫자예를 들어 2 ether = 2000finney의 결과는true입니다.
  • 1 ether==10^3 finney
  • 1 ether==10^6 szabo
  • 1 ether==10^18 wei

  • 주의: 접미사를 포함하지 않는 기본 단위는wei입니다
    시간 단위
    seconds,minutes,hours,days,weeks,years는 모두 접미사로 서로 변환할 수 있습니다.
  • 1 == 1 seconds
  • 1 minutes == 60 seconds
  • 1 hours == 60 minutes
  • 1 days == 24 hours
  • 1 weeks == 7 days
  • 1 years == 365 days

  • 주의
  • 접미사가 없는 기본 단위는seconds
  • 만약에 이 단위를 사용하여 날짜를 계산해야 한다면 특히 조심해야 한다. 왜냐하면 매년 365일이 아니라 매일 24시간이 있는 것이 아니라 윤초가 있기 때문이다.
  • years 접미사는 0.5.0 버전부터 지원하지 않기 때문에 사용을 추천하지 않습니다.

  • 예제
    접미사는 변수에 사용할 수 없습니다.만약 입력한 변수에 대해 다른 단위를 설명하고 싶다면 아래의 방식을 사용할 수 있다
    pragma solidity ^0.5.0;
    
    contract DeleteExample{
        
        function nowInSeconds() public returns (uint256){
    
            return now;
        }
        
        function f(uint start, uint daysAfter) public {
    
            if (now >= start + daysAfter * 1 days) { 
                
            }
        }
    }
    
    

    특수 변수 및 함수
    전역 이름 공간에 특수한 변수와 함수가 존재합니다. 그들은 주로 블록체인에 대한 정보나 일반적인 도구 함수를 제공합니다.
    청크 및 트랜잭션 속성
  • block.Blockhash(uint BlockNumber)returns(bytes32): 지정한 블록의 해시 - 최신 256개 블록에만 사용할 수 있고 현재 블록은 포함되지 않습니다.Blocks는 0.4.22 버전부터 사용을 권장하지 않으며 Blockhash(uint BlockNumber)로 대체
  • block.coinbase(address): 현재 블록의 광부 주소를 발굴
  • block.difficulty(uint): 현재 블록 난이도
  • block.gaslimit(uint): 현재 블록gas 한도액
  • block.number(uint): 현재 청크 번호
  • block.timestamp (uint): 유닉스 epoch에서 현재 블록의 시간 스탬프
  • 를 시작합니다.
  • gasleft()returns(uint256): 남은 가스
  • msg.데이터(bytes): 온전한calldata
  • msg.sender(address): 메시지 발송자(현재 호출)
  • msg.sig(bytes4):calldata의 앞 4바이트(즉 함수 식별자)
  • msg.value(uint): 메시지와 함께wei의 수량
  • now(uint): 현재 블록 시간 스탬프(block.timestamp)
  • tx.gasprice(uint): 거래의gas가격
  • tx.origin(address): 거래 발기자(완전한 호출체인)
  • 블록체인 거래 속성 설명
  • 같은 체인에 연속된 블록에 대해 현재 블록의 시간 스탬프는 항상 이전 블록의 시간 스탬프보다 크다.
  • 가장 최근 256개 블록만 검색할 수 있으며 다른 모든 블록은 0
  • 으로 반환됩니다.
  • msg의 모든 구성원의 값은 msg를 포함한다.sender 및 msg.value는 모든 external 함수 호출에서 변경됩니다.

  • 오류 처리
    오류 처리란 프로그램에 오류가 발생했을 때의 처리 방식을 가리킨다.Solidity 처리 오류는 우리가 흔히 볼 수 있는 언어와 다르다. 이것은 반환 상태를 통해 오류를 처리하고 이상이 발생했을 때 현재 호출(그리고 모든 하위 호출)이 바뀐 상태를 취소하며 호출자에게 오류 표식을 되돌려준다.(try catch가 없으면 예외를 포착할 수 없음)
    assert(bool condition)
    조건이 충족되지 않으면 현재 거래가 효과가 없습니다. 내부 오류를 검사하는 데 사용됩니다.
    특징:모든 가스 소모
    다음 장면에서 assert 유형의 예외가 자동으로 발생합니다.
  • 액세스 그룹의 인덱스가 너무 크거나 음수(예를 들어 x[i]에서 i>=x.length 또는 i<0)입니다.
  • 정해진 바이트 그룹에 접근하는 인덱스가 너무 크거나 마이너스입니다.
  • 0을 제수로 나누거나 모드 연산(예를 들어 5/0 또는 23% 0)을 한다.
  • 이위음수위.
  • 너무 크거나 마이너스 수치를 매거 형식으로 변환합니다.
  • assert의 매개 변수(표현식)를 호출하여false로 최종 결산합니다.

  • require(bool condition)
    조건이 충족되지 않으면 상태 변경을 취소합니다. 입력이나 외부 구성 요소로 인한 오류를 검사하는 데 사용됩니다.
    특징: 모든 가스 소모 없음
    다음 장면에서 require 유형의 예외가 자동으로 발생합니다.
  • throw를 호출합니다.
  • require의 매개 변수(표현식)를 호출하여false로 최종 결산합니다.
  • 메시지 호출을 통해 어떤 함수를 호출했지만 이 함수는 정확하게 끝나지 않았습니다. (가스가 소모되었거나 일치하는 함수가 없거나 이상이 발생했습니다.) 상기 함수는 낮은 단계의 조작call,send,delegatecall 또는callcode를 포함하지 않습니다.저급 작업은 이상을 던지지 않으며false를 되돌려 실패를 표시합니다.
  • new 키워드로 계약을 만들었지만 계약이 제대로 만들어지지 않았습니다
  • 코드가 포함되지 않은 계약에 대해 외부 함수를 호출합니다.
  • 계약은payable 수식자가 없는 공유 함수 (구조 함수와fallback 함수 포함) 를 통해Ether를 수신한다.
  • 계약은 공유getter 함수를 통해 이더를 수신한다.
  • transfer()가 실패했습니다.

  • require(bool condition, string message)
    조건이 충족되지 않으면 상태 변경을 취소합니다. 입력이나 외부 구성 요소로 인한 오류를 검사하는 데 사용되며, 오류 메시지를 동시에 제공할 수 있습니다.
    revert()
    실행을 중지하고 상태 변경을 취소합니다.특징: 남은 가스 반환
    revert(string reason)
    실행을 중지하고 상태 변경을 취소하면 해석적인 문자열을 제공할 수 있습니다.
    수학 및 암호화 함수
  • addmod(uint x, uint y, uint k)returns(uint) 계산(x + y)%k의 값을 계산하고 그 중에서 덧셈은 지정된 정밀도로 실행하며 2** 256을 초과하지 않습니다.버전 0.5.0부터 단언 k!=0.
  • mulmod(uint x, uint y, uint k)returns(uint) 계산(x * y)%k의 값을 곱셈으로 지정한 정밀도로 실행하고 2** 256을 초과하지 않습니다.버전 0.5.0부터 단언 k!=0
  • keccak256(...)returns(bytes32) 계산(촘촘하게 배열된) 매개 변수의 이더리움-SHA-3의Hash값
  • sha256(...)returns(bytes32) 계산(촘촘하게 배열된) 파라미터의 SHA-256의Hash값
  • sha3(...)returns(bytes32)keccak256의 별명
  • ripemd160(...)returns(bytes20) 계산(촘촘하게 배열된) 매개 변수의 RIPEMD-160의Hash값
  • ecrecover(bytes32 hash, uint8 v,bytes32r,bytes32s)returns(address)는 타원 곡선 서명에서 공공 키와 관련된 주소를 복원하거나 오류 시 0
  • 을 되돌려줍니다.
    계약 관련
  • selfdestruct(address recipt): 현재 계약을 폐기하고 모든 자금을 지정한 주소로 보냅니다. (계약 주소라면payable의fallback 함수가 없어도 태화를 받을 수 있습니다.)
  • 좋은 웹페이지 즐겨찾기