일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 스마트 컨트랙트
- ethers
- geth
- solidity
- Docker
- MySQL
- blockchain
- truffle
- 트랜잭션
- ERC165
- web
- 제어의역전
- JavaScript
- erc721
- git
- Programming
- 솔리디티
- Ethereum
- Python
- 이더리움
- server
- 블록체인
- ERC20
- erc
- web3
- tcp
- NFT
- github
- web3.js
- 네트워크
- Today
- Total
멍개의 연구소
[ethereum] transaction에 데이터를 포함하여 영원히 데이터 남기기 본문
transaction에서 input data를 포함하여 전송하는 방법을 알아보겠습니다. input data가 머냐 하시는 분들이 있을텐데 다음 링크를 접속하면 다음과 같이 보실 수 있습니다.
· 예시
![](https://blog.kakaocdn.net/dn/wdsP3/btrKF03gJQ9/KKkZk0Mk9SD0awFLaRvlu1/img.png)
만약 해당 이미지처럼 안 나오면 view input As 버튼에서 UTF-8로 선택하면 됩니다.
· 계정 준비하기
![](https://blog.kakaocdn.net/dn/dkYDIh/btrKIziQIz9/e7R14QiTAyiL1G9ld4j1P0/img.png)
테스트이기 때문에 ropsten 네트워크에서 진행합니다.
해당 계정의 private key를 이용하여 myetherwallet에서 정상적으로 읽어지는지 확인해보겠습니다.
![](https://blog.kakaocdn.net/dn/c43gHV/btrKHT2VGYT/j3b9YKP1DlU8aXWkjrt1R0/img.png)
잘 읽어와집니다. 이제 여기서 input data를 포함하여 전송하는 방법을 알아보겠습니다.
1. + 고급: 데이터 추가 버튼 누르기
![](https://blog.kakaocdn.net/dn/9Gs6k/btrKHaD65tu/P8cvGvlxl2Iw4ck4Tz35gk/img.png)
빨간색으로 표시해둔 부분을 눌러주면 다음과 같이 나타납니다.
![](https://blog.kakaocdn.net/dn/dHUCmj/btrKJ4plGZu/bPG3NXSzKRUaXH7xT9BMO0/img.png)
데이터에 데이터를 넣으면 됩니다. 근데 그냥 키보드로 입력한 값을 넣으면 안됩니다. 인코딩된 데이터를 넣어야 정상적으로 transaction이 발생됩니다.
· 데이터 인코딩
해당 사이트에 들어가면 데이터 인코딩을 할 수 있습니다.
![](https://blog.kakaocdn.net/dn/8Qglu/btrKGPUslt2/DGYxsozQGZThAZcgU3iVl1/img.png)
입력란에 데이터를 입력한 후 URL Encode! 버튼을 눌러주면 인코딩된 결과를 볼 수 있습니다.
![](https://blog.kakaocdn.net/dn/DgGef/btrKJ5PnCGp/kKLjgwaXS0rbx3B09EPhTK/img.png)
앞의 결과는 '안녕하세요'를 입력한 후 이코딩을 한 결과입니다. 여기서 %를 지웁니다.
· %지우기 전
· % 지운 후
%를 지운 결과를 복사한 후 앞의 고급: 데이터 추가를 눌었을 때 생긴 입력란에 넣어줍니다.
· transaction 발생
![](https://blog.kakaocdn.net/dn/bqgwD1/btrKGQlBTeR/qV6K1vv0ldeXjexYskRGh0/img.png)
데이터를 넣어줄 땐 0x를 붙여서 넣어줍니다. 0x는 16진수를 의미합니다. 받는 주소는 본인으로 한 후 0이더를 보내줍니다. 소량의 수수료만 지불하면 됩니다. 이제 트랜잭션을 생성해줍니다.
![](https://blog.kakaocdn.net/dn/3fxDv/btrKHw1gBdX/dDeDnNg3SdujhJUvSz6MYk/img.png)
트랜잭션 생성 버튼을 누르면 트랜잭션 전송하기 버튼이 나옵니다 여기서 트랜잭션 전송하기 버튼을 눌러줍니다.
![](https://blog.kakaocdn.net/dn/dWii49/btrKK9qqSR7/TMg69Nb8X2cFtH2YVRaxZ0/img.png)
트랜잭션 전송하기 버튼을 누르면 앞의 이미지처럼 모달창이 뜹니다. 여기서 네. 맞습니다! 전송합니다. 버튼을 눌러줍니다.
![](https://blog.kakaocdn.net/dn/byWfei/btrKFSLeOYG/aQm44Eh2Gm9F9jHkg7Yn1k/img.png)
하단에 transaction이 정상적으로 발생했다고 알림을 띄워줍니다. 여기서 verify Transaction 버튼을 누르면 이더스캔에서 바로 확인가능 합니다.
![](https://blog.kakaocdn.net/dn/3nGdL/btrKJ6AIfKc/VXoL4IUdwKgrLK8puqBEh0/img.png)
input data에 트랜잭션 발생시 포함한 데이터가 들어있습니다. View Input As 버튼을 눌러서 UTF-8을 눌러줍니다.
![](https://blog.kakaocdn.net/dn/2quK8/btrKF7BoPbT/4vq8IxIhHYoTKqcnceFk90/img.png)
디코딩 된 결과가 잘 표시됩니다.
하지만 앞의 사이트에서 인코딩을 할 때 주의할 점은 한글이외의 영어, 숫자, 특수문자는 인코딩이 잘 되지 않습니다.
· 한글이외의 영문, 숫자, 특수문자 인코딩 방법
한글 이외의 문자는 아스키코드표를 참조하면 됩니다. 아스키코드표란 문자와 숫자를 1:1 매핑시킨 표입니다.
![](https://blog.kakaocdn.net/dn/bL7Obf/btrKJ59ERjf/ye8qQgqb5pZbs9SNEkKINK/img.jpg)
![](https://blog.kakaocdn.net/dn/ejN21h/btrKGxs1Sjt/9s6eEKfEIk5MLkEKx9iRGK/img.jpg)
만약 숫자 0을 입력하고 싶으면 16진수로 30이 됩니다. 10진수로 변환하면 48에 해당하는 숫자입니다.
이번에는 '안녕하세요!'를 인코딩해보겠습니다. 먼저, '안녕하세요'는 앞의 인코딩 사이트를 가셔서 인코딩한 후 %를 모두 지워줍니다.
· '안녕하세요' 인코딩 결과
그리고 !가 0x21이기 때문에 인코딩 결과에 21을 붙이면 됩니다.
· '안녕하세요!' 인코딩 결과
![](https://blog.kakaocdn.net/dn/dmsj4i/btrKHUgrVhA/Z624MbRmoAr7E7c2TyucS0/img.png)
![](https://blog.kakaocdn.net/dn/m7M41/btrKJ6OfOWJ/2cpPeK6xzvbaKxt2d0oRVK/img.png)
'안녕하세요!'가 잘 출력됩니다.
· 아스키코드 특수문자 알아보기
스페이스: 0x20
엔터: 0x0A
스페이스를 넣고싶을 땐 20, 엔터를 넣고 싶을 땐 0A를 넣으면 됩니다.
'블록체인' 카테고리의 다른 글
[블록체인] 블록체인 시스템은 어떻게 구축할까 1편 - exchange, wallet, payment에서 transaction 취급방법 (0) | 2022.08.27 |
---|---|
[블록체인] 거래소는 시세를 어떻게 형성할까? (0) | 2022.08.27 |
[ethereum] abi-decoder를 이용하여 inputData 해독하기 (0) | 2022.08.27 |
[ethereum] transaction을 보고 contract 생성을어떻게 할까 (0) | 2022.08.27 |
[ethereum] transaction 발생 시 - Warning! Error encountered during contract execution [Out of gas] 에러 (1) | 2022.08.27 |