본문 바로가기
IT 초보코딩의 세계/블록체인

블록체인 탈중앙화 앱(네트워크 컨트랙트, 메타 마스크 설정) 4장

by 조이럭키7 2023. 8. 16.
반응형

  네트워크에 컨트랙트 배포

네트워크에 컨트랙트 배포 옵션

     ● 이더리움 지갑으로 수동 배포

     ● geth의 대화형 콘솔에서 터미널 명령으로 배포

 배포 과정

     ● 고급 언어로 작성된 컨트랙트는 EVM 바이트코드로 컴파일되고 배포 트랜잭션을 통해 네트워크에 배포

     ● 배포 트랜잭션은 컨트랙트 EVM 바이트코드를 포함하고 네트워크에 있는 로컬 전체 노드는 바이트 코드를 실행

     ● 배포 트랜잭션은 네트워크 전체에 전파되고 채굴 노드는 네트워크 전체에 복제되는 새 블록에 바이트 코드를 포함시킴

     ● 배포 트랜잭션은 다른 트랜잭션과 비슷하지만 이더나 데이터가 아닌 EVM 바이트코드를 블록체인에 저장

 메타 마스크를 통해 노드 없이 배포하기

     ● 메타 마스크

          ● 외부 이더리움 노드에 연결하는 크롬 확장 프로그램입니다.

          ● 이더리움 소프트웨어를 설치하거나 관리하지 않고도 퍼블릭 네트워크에 컨트랙트를 배포하고 활용할 수 있음

          ● 스마트 컨트랙트를 지속적으로 개발하지 않거나 개발을 재개할 때마다 지갑 또는 Go 이더리움 클라이언트를 업데이트하고 블록체인을 다시 동기화해야 하는 불편함을 원하지 않을 때 특히 유용

     ●  메타 마스크 설치: http://mng.bz/8JzB

     ●  메타 마스크 실행

   ●  메타 마스크 네트워크 변경 네크워크를 눌러서 보기/숨기기를 이용해서 테스트 네트워크를 화면에 출력해서 변경

   ●  계정 불러오기

   ●  계정에 이더받기

         ●  faucet.metamask.io/

         ●  Ropsten Ethereum Faucet

         ●  https://faucet.dimensions.network/

 

   ●  배포

         ● Remix IDE 에 코드 작성

pragma solidity ^0.4.0;

contract SimpleCoin {
  mapping (address => uint256) public coinBalance;

  event Transfer(address indexed from, address indexed to, uint256 value);

  constructor(uint256 _initialSupply) public {
    coinBalance[msg.sender] = _initialSupply;  
  }

  function transfer(address _to, uint256 _amount) public {
    require(coinBalance[msg.sender] > _amount);
    require(coinBalance[_to] + _amount >= coinBalance[_to] );
    coinBalance[msg.sender] -= _amount; 
    coinBalance[_to] += _amount;  
    emit Transfer(msg.sender, _to, _amount); 
  }
}

   ●  배포 옵션 변경

반응형

댓글