[블록체인] Solidity-address 유형

2780 단어
address 유형은 20바이트로 구성되어 있으며, address 유형은 구성원이 있어 모든 계약의 기초가 된다.
address 구성원:
  • balancetransfer
  • balance: 주소를 조회하는 데 사용되는 잔액입니다. 단위는wei입니다.
    transfer: 한 주소에 이더리움 화폐를 보냅니다. 단위는wei입니다.발송에 실패하면 이상을 던지고 이더리움 화폐로 되돌아옵니다.
    참고: 1ETH=1018wei.
    예:
    pragma solidity ^0.4.21;
    contract  AddressDemo{
        address public a;
        function AddressDemo() public{
            a =msg.sender;
        }
        function getBalance() public returns (uint256 bal){
            return a.balance;
        }
        function pay() public {
            a.transfer(100);
        }
    }
    
  • sendsend의 주요 역할은 이더리움 화폐를 발송하는데 send 함수는 transfer 함수보다 밑바닥이다.send가 집행 과정에서 실패하면 집행 중인 계약이 중단되거나 이상이 발생하지 않지만 되돌아온다fasle.
    주의: 호출 창고의 깊이가 1024를 초과하거나 가스가 부족하면 이체 작업이 실패할 수 있습니다.이더리움 화폐 이체의 안전을 확보하기 위해 send를 사용하면 매번 반환치를 검사해야 한다.사용transfer 이상이 발생할 수 있으므로 검사할 필요가 없습니다.
  • call,callcode anddeledatecallcall 함수의 주요 역할: ABI와의 계약에 의존하지 않고 상호작용을 하기 위해 이 함수는 임의의 유형의 임의의 수량의 매개 변수를 받아들인다.매개 변수가 32바이트로 채워져 연결되면 예외가 있습니다. 첫 번째 매개 변수가 4바이트로 암호화되면 call 방법을 사용할 수 없습니다.call 함수가 브리 값을 되돌려줍니다.정상 종료 반환true, 한 차례의 종료 반환fasle으로 실제 반환된 데이터를 얻을 수 없음(따라서 우리는 데이터 인코딩 방식과 데이터 크기를 미리 알아야 함) 사용.gas() 수식기 조정gas:
    namReg.call.gas(1000000)("register", "MyName");
    
    마찬가지로 사용.value() 수식기 제어Ether:
    nameReg.call.value(1 ether)("register", "MyName");
    
    수식기는 혼합하여 사용할 수 있음,수식기 호출 순서는 상관없다.
    nameReg.call.gas(1000000).value(1 ether)("register", "MyName");
    
    같은 방식으로 delegatecall 함수를 사용하고call 함수와 달리 지정된 주소를 호출할 수 있는 코드로 모든 다른 부분(저장, 잔액 등)은 현재 계약에서 얻는다.delegatecall의 목적은 다른 계약에 저장된 라이브러리 코드를 호출하는 데 쓰인다.그래서 개발자는 두 계약의 저장 디자인이 모두 적합delegatecall 호출될 수 있도록 보장해야 한다.homestead 단계 이전에는 하나의callcode만 사용할 수 있었지만,callcode는 msg.sendermsg.value에 대한 접근 권한을 제공하지 않았습니다.call,delegatecallcode는 비상 하부 함수로 이 함수들은Solidity의 유형 안전을 파괴하기 때문에 부득이한 경우에만 사용할 수 있다..gas() 모두 상기 3가지 방법으로 사용할 수 있으나 .value() 사용할 수 없음deletecall.

  • 주석: 모든 계약은address의 구성원을 계승하고 현재 계약 잔액 금액을 조회하여 사용한다this.balance.callcode 사용을 권장하지 않으며 나중에 이 방법을 제거합니다.
    경고:call,delegatecallcode는 모두 하부 함수이니 조심해서 사용하세요.특히 알 수 없는 계약은 악의적인 공격이 존재할 수 있습니다. 만약 알 수 없는 계약을 호출한다면, 제어권을 계약에서 호출한 계약에 맡기고, 반환 파라미터를 호출하면 상태 변수를 수정합니다.
    참조 자료:https://solidity.readthedocs.io/en/develop/types.html

    좋은 웹페이지 즐겨찾기