ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Solidity Donation Ex
    Search: Blockchain Blockchain 2023. 1. 8. 13:46

     

    Smart contract를 solidity언어로 개발하여 Ganache에 올리고 metamask로 기부하는 예제

     

    준비

    Remix Environment

    Metamask Ganache 연결

    Remix Ganache 연결

     

    코드

    // SPDX-License-Identifier: GPL-3.0
    
    pragma solidity >=0.8.0 < 0.9.0;
    
    contract Donation1 {
    
        event EvtDonateFrom(address indexed addr, uint256 val1);
        event EvtDonateTo(address indexed addr, uint256 val1);
    	event EvtRecv(address indexed addr, uint256 val1);
    
        address public donateTg;
        address public owner;
        
        //constructor(string memory _key1, uint _key2) {
    	constructor(address payable _donateTarget) {
            owner = msg.sender;
            donateTg = _donateTarget;
        }
    
        receive() external payable {
    		emit EvtRecv(msg.sender, msg.value);
            (bool bDonate,)= donateTg.call{value:msg.value}("");
            require(bDonate, "Failed, donateTg.call Donate");
            emit EvtDonateFrom(msg.sender, msg.value);
            emit EvtDonateTo(donateTg, msg.value);
        }
    	
        //for test
        event EvtCallAddress(address indexed _addr, uint256 payment, bool bRst);
    	function callV1(address _to) public payable{
    		(bool success,) = _to.call{value:msg.value}("");
    		require(success,"failed to callV1");
            emit EvtCallAddress(_to, msg.value, success);
    	}
    }

     

    Remix에서 Compile

     

    Remix에서 배포

     

    기부 받을 대상의 address 확인.

     

    기부 대상을 입력하고 배포

     

    배포자: 0x346B73aD471823c824D5c3b48c6a70914e1b6125
    기부대상: 0xD0796c3dcF6C622b5a42D2Bc3B65B273cFd12B2D
    Contract 주소: 0xd33D3f6197B492519bB459AC539Ab80C8105516D

    creation of Donation1 pending...
    [block:1 txIndex:0]from: 0x346...b6125to: Donation1.(constructor)value: 0 weidata: 0x608...12b2dlogs: 0hash: 0xebe...9c652
    status	true Transaction mined and execution succeed
    transaction hash	0x68efb8855ff56d92f4cf1a17cabf3fe21feaa814e8405fa654a09886ac3febfa
    from	0x346B73aD471823c824D5c3b48c6a70914e1b6125
    to	Donation1.(constructor)
    gas	454993 gas
    transaction cost	454993 gas 
    input	0x608...12b2d
    decoded input	{
    	"address _donateTarget": "0xD0796c3dcF6C622b5a42D2Bc3B65B273cFd12B2D"
    }
    decoded output	 - 
    logs	[]
    val	0 wei

     

    Remix에서 Contract 주소 확인

     

    배포 후 Ether

     

    Metamask에서 기부

     

    테스트를 위해 3번 account 사용

     

    Contract 주소를 입력하면 금액을 입력할 수 있다.

     

    예상 가스 요금
    0.00105428
    0.001054MONEY1
    최대 요금
    0.00105428MONEY1
    합계
    10.00105428
    10.00105428MONEY1
    금액 + 가스 요금
    최대 금액: 10.00105428MONEY1

    확인을 누르면 Contract로 돈을 보내고 Contract에서 기부 대상에게 다시 보낸다.

     

    기부 결과 확인

     

     

     

    'Blockchain' 카테고리의 다른 글

    Remix Ganache 연결  (0) 2023.01.08
    Metamask 계정 다시 만들기(지갑 초기화)  (0) 2023.01.08
    Metamask Ganache 연결  (0) 2023.01.08
    Metamask Network 삭제  (0) 2023.01.08
    Solidity Call, Fallback, Receive Ex  (1) 2023.01.08
    Solidity What does _ (underscore)  (0) 2023.01.08
    Geth Ethereum client  (0) 2023.01.07
    ERC721 관련  (0) 2023.01.07

    댓글