견고성 도론

지난 글에서 우리는 스마트 계약과 기호화폐에 대해 논의했다.본고에서 나는solidity를 소개할 것이다. 이것은 프로그래밍 스마트 계약의 언어이다.Solidity는 스마트 계약을 실현하기 위한 고급 프로그래밍 언어이다.그것은 정적 유형의 대상 (계약) 언어이다.Solidity는 이더리움 가상 기기 (EVM) 에서 실행되는 파이톤, c++, 자바스크립트의 영향을 많이 받는다.본문에서 우리는solidity 언어를 소개할 것이다.
우리가 필요로 하는 첫 번째 일은 튼튼한 IDE를 만드는 것이다.Remix IDE는 가장 유행하는 안정적인 프로그래밍 개발 환경 중 하나로, 이 자습서에서 사용할 것입니다.다행히도 우리는 온라인으로 그것을 방문할 수 있었다. here

솔 씨


Solidity 파일이 와 함께 저장됩니다.sol 확장자,solidity 파일임을 표시합니다.

프라하마

  • -solidity 파일의 첫 줄은pragma 문장입니다.그것은 사용 중인 견고한 버전을 표시한다.그것은 코드 파일의 호환성을 확보하는 데 도움이 된다.
  • pragma solidity ^0.8.2;
    

    계약


    이 키워드는 스마트 계약을 만드는 데 사용됩니다.관례에 따르면 계약의 명칭은 통상적으로 실체 문서의 명칭이다.파일의 모든 함수와 변수 성명은 스마트 계약에 봉인됩니다.
    contract Test{ 
     Functions and Data 
    }
    

    변량


    변수는 메모리 값을 저장하는 메모리 위치입니다.
    문자, 와이드 문자, 정수, 부동, 더블 부동, 부울 등 다양한 데이터 유형의 정보를 저장하는 것을 좋아할 수 있습니다. 운영체제는 변수의 데이터 형식에 따라 메모리를 분배하고 메모리에 저장할 내용을 결정합니다.
    변수의 예는 정수, 문자열, 볼이다.

    소재지


    이 변수는 이더리움 주소 크기를 나타내는 20바이트 값을 포함하는 변수 형식입니다.
     address x = 0x212;
    

    매핑 -


    맵은 값에 대한 인용을 포함합니다.다음은 문법입니다.그것들은 키 형식과 상응하는 값 유형으로 구성된 해시 테이블을 충당한다.
    mapping(_KeyType => _ValueType)
    
    mapping(address => uint) public balances;
    
    이것은 주소 변수를 정수 변수의 키로 비추고, 비추는balances라는 공공 변수에 분배합니다.

    https://medium.com/upstate-interactive/mappings-in-solidity-explained-in-under-two-minutes-ecba88aff96e
    우리는 이런 키 주소에 값을 부여할 수 있다
    balances[keyAddress] =  value;
    
    견고하게 지탱하다.상태, 로컬 및 글로벌 변수
  • 상태 변수− 그 값은 계약 저장소에 영구적으로 저장된 변수이다.
  • contract SolidityTest {
       uint storedData;      // State variable
       constructor() public {
          storedData = 10;   // Using State variable
       }
    }
    
    여기에서 우리는 storedData라는 정수 변수를 성명했다.우리는 계약의 구조에서 그것에 가치를 부여한다.이 값은 전체 계약 컨텍스트에서 사용할 수 있습니다.
  • 국부 변수− 그 값은 함수에 있는 변수에만 존재합니다.
  • 글로벌 변수− 블록체인 정보를 가져오는 글로벌 네임스페이스에 특수 변수가 있습니다.일반적인 예는 다음과 같습니다.
    동네coinbase (대처 주소), 현재 블록 광부의 주소를 되돌려줍니다.변수 목록 참조
  • 이미지 소스 [튜토리얼 포인트](https://www.tutorialspoint.com/solidity/solidity_variables.htm)

    기능


    함수는 복구 가능한 코드 그룹으로 프로그램의 어느 곳에서든 사용할 수 있습니다.그들은 특정한 임무를 집행한다.함수를 정의하는 가장 일반적인 방법은function 키워드를 사용한 다음에 유일한 함수 이름, 파라미터 목록 (비어 있을 수 있음), 그리고 큰 괄호로 묶은 문장 블록을 사용하는 것이다.
    함수는 외부 함수, 공공 함수, 내부 함수 또는 사유 함수로 지정할 수 있으며 기본값은public이다.
  • 공공: 공공 함수는 계약 인터페이스의 일부로 내부에서 호출할 수도 있고 메시지를 통해 호출할 수도 있다.
  • 내부: 이러한 함수와 상태 변수는 내부에서만 접근할 수 있다(즉 현재 계약이나 파생된 계약에서만 접근할 수 있다).
  • Private: 개인 함수와 상태 변수는 정의된 계약에서만 볼 수 있고 파생 계약에서는 볼 수 없습니다.
  • 함수는 보기로 성명할 수 있으며, 이러한 상황에서 상태를 수정하지 않겠다고 약속합니다.읽기 전용 함수
  • function function-name(parameter-list) scope returns() {
       //statements
    }
    

    예.


    contract BlogDemo {
       function addNumbers() public view returns(uint){
          uint a = 1; // local variable
          uint b = 2;
          uint result = a + b;
          return result;
       }
    }
    
    이 예에서 함수는addNumbers로 명명되며,public view로 명명됩니다. 이것은 계약 상태를 수정하지 않고, 두 숫자만 덧붙인다는 것을 의미합니다.매개 변수를 받아들이지 않고 정수를 되돌려줍니다.
  • 여러 개의 반환 매개 변수를 가진 함수.
  • contract BlogDemo {
       function addNumbers() public view returns(uint sum, uint product){
          uint a = 1; // local variable
          uint b = 2;
          sum = a + b;
          product = a * b;    
       }
    }
    
    이 함수는 곱셈과 합을 되돌려줍니다.
  • require 키워드.
    Solidity 함수의 Require 키워드는 실행 전에 감지할 수 없는 조건의 유효성을 보장합니다.그것은 입력, 계약 상태 변수, 외부 계약 호출의 반환 값을 검사합니다.만약 내가 특정 조건을 충족시키는 상황에서만 함수를 집행하고 싶다면, 나는 필요한 키워드를 추가할 것이다.
  • contract BlogDemo {
    uint value1 = 5;
    uint value2 = 4;
    
    function addNumbers() public view returns(uint sum, uint product){
        require(  value1 > value2 ,'5 is not greater than 4')
          uint a = 1; // local variable
          uint b = 2;
          sum = a + b;
          product = a * b;    
       }
     }
    }
    
    이 함수는 value1이 Value2보다 큰 경우에만 수행됩니다.조건이 충족되지 않으면 오류 메시지가 반환됩니다("5는 4보다 크지 않습니다").

    수식어


    수식자는 함수의 행동을 제어할 수 있습니다.다양한 장면에서 사용할 수 있습니다.예를 들어 어떤 함수를 실행하기 전에 누가 이 함수에 접근할 권리가 있는지 검사한다.
    contract Test {
      address testAddress;
      constructor() {
        testAddress = msg.sender;
      }
    
      // Check if the function is called by the owner of the contract
      modifier onlyOwner() {
          if (msg.sender == testAddress) {
             _;
          }
    }
    
    함수체에 특수 기호 삽입하기"수정자 정의에 나타납니다.따라서 이 함수를 호출할 때 수식자의 조건을 충족시키면 이 함수를 실행합니다. 그렇지 않으면 이상을 일으킬 수 있습니다.
    그리고 우리는 다른 함수에서 이 함수 수식자를 조건 검사기로 사용할 수 있다.예를 들어 발송자가 함수를 호출할 때만 이 함수를 실행합니다.
      // Can only be called by the owner cause I am using the onlyOwner modifier
      function test() public onlyOwner {
      }
    

    건설자


    구조 함수는 constructor 키워드로 설명할 수 있는 선택 함수로 계약을 만들 때만 실행됩니다.구조 함수는 공공일 수도 있고 내부일 수도 있다.만약 구조 함수가 없다면 계약은 기본 구조 함수를 채택할 것이다.
    contructor() public {}
    contract SolidityTest {
       uint storedData;      // State variable
       constructor() public {
          storedData = 10;   // Using State variable
       }
    }
    

    사건.


    이벤트는 해당 이벤트에 전달되는 매개 변수를 블록체인의 거래 로그에 저장합니다.정보를 저장하고 싶으면너는 하나의 사건을 통해 실현할 수 있다.

    이벤트 구문


    event Transfer(address indexed from, address indexed to, uint _value);
    
    사건에 편지를 쓰다.너는 그 사건을 보냈다.이벤트 전송을 기록합니다.나는 아래의 문법을 사용하여 그것을 보냈다.
    //Emit an event
    emit Transfer(msg.sender, receiverAddress, msg.value);
    
    본고에서 우리는solidity 언어 중의 흔히 볼 수 있는 문법과 용어를 설명했다.이 시리즈의 다음 글에서 우리는solidity를 사용하여 우리의 스마트 계약을 구축하고 Binance 스마트 체인에 배치할 것이다.
    여기서 나와 나의 소셜 미디어에서 나를 주목하고 비슷한 내용을 더 많이 알게 된다

    좋은 웹페이지 즐겨찾기