소개 및 스마트 계약 작성: 파트 (1/4)



우리는 어떤 프로젝트를 만들고 있습니까?



우리는 사람들이 암호 지갑을 사용하여 이더를 입금하고 인출할 수 있는 간단한 뱅킹 애플리케이션을 구축하고 있습니다.
이 프로젝트의 목표는 다음을 포함하는 블록체인에서 풀 스택 분산 응용 프로그램을 개발하는 기본 개념을 다루는 것입니다.
  • 스마트 계약 작성.
  • 스마트 계약을 테스트 네트워크에 배포합니다.
  • 프런트엔드 반응 애플리케이션 생성.
  • 마지막으로 heroku에서 응용 프로그램을 호스팅합니다.

  • 왜 이 프로젝트와 블로그인가요?



    얼마 전에 비슷한 프로젝트를 만들고 싶었는데 리소스가 부족하거나 프로세스에 대한 명확한 가이드가 있음을 알았습니다. 그것을 알아내는 데 약간의 파고 시행 착오가 필요했습니다. 그래서 저는 이 블로그 시리즈를 통해 누군가가 이러한 개념을 조금 더 쉽게 이해하도록 도울 수 있었습니다.

    This project is hosted here.
    Link to Github Repo of the project here. This will serve as a reference for you, if at some point you are not able to follow the tutorial.


    스마트 계약 작성


    스마트 계약이란 무엇입니까?



    "스마트 계약"은 단순히 이더리움 블록체인에서 실행되는 프로그램입니다. 이더리움 블록체인의 특정 주소에 상주하는 코드(기능)와 데이터(상태)의 모음입니다.

    스마트 계약은 Solidity라는 언어로 대중적으로 작성되고 있습니다. 동일한 내용here에 대해 자세히 알아볼 수 있습니다.

    브라우저에서 바로 Solidity 계약을 작성하는 데 도움이 되는 오픈 소스 도구인 Remix에서 스마트 계약을 작성하고 테스트할 수 있습니다.

    뱅크솔



    // SPDX-License-Identifier: MIT
    pragma solidity ^0.7.0;
    
    contract Bank {
    
        // Mapping of user address to their balance
        mapping(address => uint256) private balance;
    
    
        // Deposit function (payable)
        function deposit() public payable {
            require(msg.value > 0);
    
            if (balance[msg.sender] > 0) {
                balance[msg.sender] = balance[msg.sender] + msg.value;
            }else{
                balance[msg.sender] = msg.value;
            }
        }
    
        // Withdraw function (payable)
        function withdraw(uint256 amount) public payable {
            address payable client = msg.sender;
            require(balance[msg.sender] >= amount);
            client.transfer(amount);
            balance[msg.sender] = balance[msg.sender] - amount;
        }
    
        // Check balance function (view)
        function getBalance() public view returns(uint256){
            return (balance[msg.sender]);
        }
    }
    

    이 모든 데이터 구조와 함수가 무엇을 위한 것이며 무엇을 하는지 이해합시다.

    mapping(address => uint256) private balance;
    


    매핑balance은 주소별로 다른 사용자의 잔액을 추적하는 데 사용됩니다.

    function deposit() public payable {
            require(msg.value > 0);
    
            if (balance[msg.sender] > 0) {
                balance[msg.sender] = balance[msg.sender] + msg.value;
            }else{
                balance[msg.sender] = msg.value;
            }
        }
    

    deposit 함수는 이름에서 알 수 있듯이 금액을 입금할 때 사용하는 함수입니다. 값(입금할 금액)이 0보다 큰지 먼저 확인합니다. 긍정이면 사용자 잔액을 업데이트합니다.

    function withdraw(uint256 amount) public payable {
            address payable client = msg.sender;
            require(balance[msg.sender] >= amount);
            client.transfer(amount);
            balance[msg.sender] = balance[msg.sender] - amount;
        }
    

    withdraw 기능은 사용자가 돈을 인출하기 위한 것으로, 사용자의 자금이 충분한지 확인하고, 그렇다면 금액이 사용자의 지갑으로 이체됩니다.

     function getBalance() public view returns(uint256){
            return (balance[msg.sender]);
        }
    

    getBalance 함수는 호출자의 계정 잔액을 가져오는 데 사용됩니다.

    이 스마트 계약은 Remix IDE에서 컴파일, 테스트 및 배포할 수 있습니다. 다음은 참조용documentation입니다.


    다음 부분에서는 로컬 프로젝트를 생성하고 스마트 계약을 테스트 네트워크에 배포하는 방법을 살펴보겠습니다. 을 클릭합니다.

    좋은 웹페이지 즐겨찾기