리믹스 (5) 썸네일형 리스트형 [이더넛] 레벨4 'Telephone' 풀기 [이더넛] 레벨4 'Telephone' 풀기 [목표] 스마트컨트랙트 Telephone의 owner에 대입된 주소를 내 주소로 바꿔보자. 이를 통해 tx.origin와 msg.sender의 차이를 알아보자. Contract 'Telephone' Full Code // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract Telephone { address public owner; constructor() public { owner = msg.sender; } function changeOwner(address _owner) public { if (tx.origin != msg.sender) { owner = _owner; } } } owner가 되려.. 이더스캔 만들기 이더스캔 만들기 [목표] 이더스캔에서는 블록넘버, 트랜잭션해시, 어카운트 주소를 통해 데이터를 조회할 수 있다. 가나슈에서 테스트 환경의 블록체인을 만들고 브라우저에서 UI 환경을 구축하여 내가 만든 블록체인의 블록넘버, 트랜잭션해시 값을 넣고 해당 데이터를 조회할 수 있는 웹을 구축한다. npm install -g ganache-cli 가나슈가 설치되어있지 않다면 위 명령어로 프로젝트 어디서나 가나슈를 사용할 수 있도록 전역으로 설치한다. ganache-cli 가나슈 설치가 끝나면 위 명령어로 가나슈를 실행한다. 가나슈가 정상적으로 실행되면 위와 같이 10개의 계정이 생성된다. 리믹스 > Deploy & Run Transactions 탭에서 환경을 Web3 Provider로 설정한뒤 가나슈와 연동한다... uint 자료형의 허점을 노린 스마트컨트랙트 해킹 uint 자료형의 허점을 노린 스마트컨트랙트 해킹 [요약] 내가 다른 사람에게 돈을 입금하려면 나의 은행 잔고는 당연히 입금하려는 돈 보다 많아야한다. 동일한 의도로 타겟 스마트컨트랙트 내에 내가 보내려는 토큰이 나의 토큰 잔고 보다 많을 경우 전송을 할 수 있게 만든 코드가 있다. uint의 특성인 언더플로우를 이용해서 나의 토큰 잔고가 보내려는 토큰보다 적더라도 전송이 실행되도록 해킹해보고 이를 통해 스마트컨트랙트 코드 작성시 uint 자료형 변수의 특징과 보안 취약점을 알아보자. 타겟 스마트컨트랙트 'Token' 전체 코드 pragma solidity 0.6.0; contract Token { mapping(address => uint) balances; uint public num; constru.. 스마트컨트랙트에서 코인 훔치기 #2 스마트컨트랙트에서 코인 훔치기 #2 [요약] 잔고가 일정 범위 이상이어야 인출할 수 있는 스마트컨트랙트가 있다. 현재 스마트컨트랙트의 잔고는 0.5 eth 인출 조건은 잔고가 1.0 eth 이상이 되어야 하는데 이 스마트컨트랙트에는 메타마스크로는 이더리움을 전송할 수 없다. 이 스마트 컨트랙트의 이더를 인출해보자. 타켓 스마트컨트랙트 코드 pragma solidity 0.8.6; contract Test7 { constructor() payable { } function withdraw() public { require(address(this).balance >= 1 ether); payable(msg.sender).transfer(address(this).balance); } } 스마트 컨트랙트 Tes.. 스마트컨트랙트 배포 스마트컨트랙트 배포 [요약] Remix에서 솔리디티로 간단하게 스마트컨트랙트를 작성하여 테스트넷환경 'Ropsten'에서 스마트컨트랙트 배포하기. 1. 리믹스 접속 https://remix.ethereum.org/ Remix - Ethereum IDE remix.ethereum.org 퍼런색 외계인 같은 녀석이 나온다. 2. 리믹스와 메타마스크 연결 2. 메타마스크(랍스텐 테스트 네트워크)와 리믹스를 연결한다. 메타마스크 - 우측 상단 땡땡땡(설정) 클릭 - 연결된 사이트 - "현재 사이트에 수동으로 연결" 클릭 그럼 리믹스와 메타마스크와 연결이된다. 3. 리믹스 개발환경 설정 왼쪽 탭에서 3번째 이더리움 모양의 아이콘을 누르고 ENVIRONMENT를 Injected Web3로 변경하여 메타마스크의 내 .. 이전 1 다음