BlockChain
(BlockChain) Solidity 문법(1)
JJeongHyun
2023. 3. 6. 16:09
반응형
https://developerjjh.tistory.com/169
Solidity
자료형 (타입)
- int : 부호가 있는 정수
- uint : 부호가 없다 (양수)
- string : 문자열
- ***[] : 배열
- address : 주소 관련 정보를 제공
- 20 크기의 이더리움 어드레스
- 지갑 계정 주소 | CA
- 종류
- address.balance : 잔액을 보여준다
- address.transfer(amount) : gas를 소비해서 해당 주소로 amount만큼 ether를 보낸다, 실패 시 에러를 반환한다
- address.send(amount) : transfer처럼 ether를 보내는데 성공여부가 boolean값을 반환한다
- address.call()
- address.callcode()
- address.delegatecall()
- tx : 트랜잭션 관련 정보를 제공
- tx.price : 현재 트랜잭션의 gas 비용을 알려준다
- tx.origin : 트랜잭션의 시작하는 외부(external) 계정 주소를 알려준다
- msg : 컨트랙트는 외부 컨트랙트에서 호출하거나 다른 컨트랙트에서 message call을 하면 실행하는데, 이때 컨트랙트에게 전달된 메시지 정보를 msg object를 통해서 읽을 수 있다.
- msg.sender : contract를 호출한 계정의 주소가 들어있다
- msg.value : 메세지를 통해 전달된 ether가 wei uint로 담겨 있다
- msg.data : contract로 넘겨진 data가 담겨 있다
- msg.sig : data의 첫 4바이트가 담겨 있다. 우리는 그걸로 어떤 메서드가 불리는지 알 수 있다
배포한 지갑 주소 확인하는 간단한 예제 구현
// Test.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Test {
int public num;
string public text;
int[] public numArr;
string[] public textArr;
address public owner;
mapping(string => uint) public balance;
constructor(string memory _text) {
num = 1;
text = "testing";
owner = msg.sender;
text = _text;
}
}
- Truffle을 ganache에 배포하여 instance의 owner메서드를 실행해서 나오는 계정 주소는 따로 설정하지 않았다면 ganache의 첫 번째 계정으로 기본으로 잡혀 있다
- 따라서 그 계정 주소가 맞는지 확인하기 위해 getTransactionReceipt 메서드를 통해 나온 결과에서의 from값을 확인하여 같은지 알 수 있다