본문 바로가기
Ethereum/부동산 Dapp

부동산Dapp_(4)매물 구입함수 정의

by rooney-l3 2019. 9. 24.

[STEP1]

SmartContract 작성

pragma solidity ^0.4.23;

contract RealEstate {
    //매입자 정보 구조체
    struct Buyer {
        address buyerAddress;
        bytes32 name;
        uint age;
    }
    //매물의 아이디를 key값으로 하여 매입자의 정보를 불러오는 구조
    mapping (uint => Buyer) public buyerInfo;
    
    address public owner;
    address[10] public buyers;
   
    constructor() public {
        owner = msg.sender;
    } 

    function buyRealEstate(uint _id, bytes32 _name, uint _age)public payable {
        //매물 유효성 검사
        require(_id >= 0 && _id <=9);
        //매개변수로 받은 id를 인덱스값으로 써서 구매자의 주소를 배열에 저장
        buyers[_id] = msg.sender;
        //매물의 아이디를 key값으로 하여 매입자의 정보를 구조체의 value값으로 저장
        buyerInfo[_id] = Buyer(msg.sender, _name, _age);
        //eth를 계정과 계정으로 이동할때 transfer함수 사용
        //msg.value는 Wei만 허용, owner에게 eth를 전송
        owner.transfer(msg.value);
   }
}

 

[STEP2]

1. ganache 네트워크에 수정한 컨트랙트를 재배포 합니다. 

truffle migrate --compile-all --reset --network ganache

2. truffle console에 접속합니다. 

truffle console --network ganache

3. 전역변수 app에 instance를 저장합니다.

RealEstate.deployed().then(function(instance) { app = instance; })

4. 새롭게 정의한 매물구입함수를 실행시켜봅니다. 

app.buyRealEstate(0, "Rooney", 28, {from: web3.eth.accounts[1], value: web3.toWei(1.50, "ether")})

 

5. ganache를 열어보면 우리가 사용한 2번째 계정에서 ether가 나가고 첫 번째 계정(owner)으로 ether가 들어온것을 확인 할 수 있습니다. 

댓글