리믹스 솔리디티
온라인 개발 도구인 리믹스 솔리디티를 사용하면 솔리디티 언어를 이용해서 코드를 작성하고 컴파일, 배포 등을 손쉽게 확인해 볼 수 있다.
솔리디티 코드 몇 줄만으로 간단한 트랜잭션 생성 및 잔고 확인 기능을 구현할 수 있다.
위의 경로로 들어가보면 아래와 같은 메인페이지가 나온다.
처음 들어가면 좌측 상단에 default_workspace라는 워크스페이스가 있을 것이다.
내부 폴더 중 contracts 안에 SimpleCoin.sol 이라는 파일을 하나 만들어주자.
SimpleCoin.sol 파일이 생성되면 아래 코드를 작성해보자.
(솔리디티 문법에 대한 것은 나중에 크립토 좀비를 이용해서 공부할 예정)
pragma solidity ^0.4.0;
contract SimpleCoin {
// 멤버 필드
// public int num; 이랑 같음
// mapping("key의 데이터 타입" => "value의 데이터 타입")
// address : 요놈도 하나의 데이터 타입
mapping(address => uint256) public coinBalance;
// 생성자
constructor () public {
coinBalance[msg.sender] = 1000;
}
// 메서드
function transfer(address _to, uint256 _amount) public {
coinBalance[msg.sender] -= _amount;
coinBalance[_to] += _amount;
}
}
위 코드를 deploy하게 되면,
mapping된 변수는 key 값을 입력하면 value를 반환하는 call 버튼이 생성되고,
함수에는 함수를 실행하는 transact 버튼이 생성된다.
조금 있다가 deploy 부분에서 확인해보자.
좌측 사이드바의 두번째 아이콘을 클릭하면 Compiler에 대한 설정창이 나온다.
다른 설정들은 우선 넘어가고 Auto complie 옵션을 체크하자.
좌측 사이드 세번째 메뉴를 클릭하면 배포 및 실행 창이 나온다.
Account 는 현재 채굴 및 잔고를 확인할 지갑의 주소인데, 클릭해보면 샘플 주소가 정말 많다.
이중에 원하는 주소로 이용하자.
그리고 아래에 Deploy 버튼을 누르면 우리가 작성한 Contract가 생성된다.
생성된 컨트랙트를 눌러보면
코드로 작성한 transfer 함수와 coinBalance 매핑 항목이 나온다.
먼저 위에서 선택한 지갑 주소를 입력하고 coinBalance 버튼을 클릭한다.
이 작업이 채굴을 하는 것과 동일하다.
그러면 우리가 생성자함수(constructor)에 기입한 대로, 1000만큼의 balance가 생성된 것을 확인 할 수 있다.
이번엔 transaction을 만들어보자.
transfer 항목을 클릭하면 함수의 파라미터 목록들이 나열된다.
받을 사람의 주소 및 보낼 코인의 개수를 적고 transact 버튼을 누르자.
그런데 트랜잭션 생성만으로는 balance가 안바뀔 것이다.
왜냐하면 transfer 함수자체에는 balance를 출력하는 코드가 없기 때문이다.
따라서 내 주소에 매핑된 잔고를 확인하려면, coinBalance를 다시 한 번 눌러주자.
**** 주의 ****
Account가 다르면 위의 방법대로 하더라도 balance가 변하지 않는다.
여기서 지정한 Account가 현재 사용자의 address이고, 이 값이 코드의 msg.sender 에 들어간다.
정말 간단한 코드지만, 트랜잭션과 채굴을 직접 해볼 수 있어서 개념 이해에는 도움이 될거라 생각합니다.
저도 이제 솔리디티를 공부하기 시작했는데, 크립토 좀비로 차차 공부할 예정입니다.
혹시 해보실 분은 아래 링크를 참고하세요!
'Solidity' 카테고리의 다른 글
솔리디티 OpenZeppelin & Ropsten 테스트넷 배포 (0) | 2022.02.17 |
---|---|
블록체인, 솔리디티 ERC-20 토큰 만들기 (직접 코딩해서) (0) | 2022.02.15 |
블록체인 ERC-20 토큰 만들기(이더리움 테스트넷) (0) | 2022.02.14 |
솔리디티 Truffle 과 이더리움 기본 설정 (0) | 2022.02.11 |
솔리디티 투표앱(Voting App) 만들기(기본 원리) (0) | 2022.02.09 |