관리 메뉴

멍개의 연구소

[ethereum] transaction에 데이터를 포함하여 영원히 데이터 남기기 본문

블록체인

[ethereum] transaction에 데이터를 포함하여 영원히 데이터 남기기

멍개. 2022. 8. 27. 16:31

transaction에서 input data를 포함하여 전송하는 방법을 알아보겠습니다. input data가 머냐 하시는 분들이 있을텐데 다음 링크를 접속하면 다음과 같이 보실 수 있습니다.

· 예시

만약 해당 이미지처럼 안 나오면 view input As 버튼에서 UTF-8로 선택하면 됩니다.

· 계정 준비하기

테스트이기 때문에 ropsten 네트워크에서 진행합니다.

해당 계정의 private key를 이용하여 myetherwallet에서 정상적으로 읽어지는지 확인해보겠습니다.

잘 읽어와집니다. 이제 여기서 input data를 포함하여 전송하는 방법을 알아보겠습니다.

1. + 고급: 데이터 추가 버튼 누르기

빨간색으로 표시해둔 부분을 눌러주면 다음과 같이 나타납니다.

데이터에 데이터를 넣으면 됩니다. 근데 그냥 키보드로 입력한 값을 넣으면 안됩니다. 인코딩된 데이터를 넣어야 정상적으로 transaction이 발생됩니다.

· 데이터 인코딩

해당 사이트에 들어가면 데이터 인코딩을 할 수 있습니다.

입력란에 데이터를 입력한 후 URL Encode! 버튼을 눌러주면 인코딩된 결과를 볼 수 있습니다.

앞의 결과는 '안녕하세요'를 입력한 후 이코딩을 한 결과입니다. 여기서 %를 지웁니다.

· %지우기 전

%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94

· % 지운 후

EC9588EB8595ED9598EC84B8EC9A94

%를 지운 결과를 복사한 후 앞의 고급: 데이터 추가를 눌었을 때 생긴 입력란에 넣어줍니다.

· transaction 발생

데이터를 넣어줄 땐 0x를 붙여서 넣어줍니다. 0x는 16진수를 의미합니다. 받는 주소는 본인으로 한 후 0이더를 보내줍니다. 소량의 수수료만 지불하면 됩니다. 이제 트랜잭션을 생성해줍니다.

트랜잭션 생성 버튼을 누르면 트랜잭션 전송하기 버튼이 나옵니다 여기서 트랜잭션 전송하기 버튼을 눌러줍니다.

트랜잭션 전송하기 버튼을 누르면 앞의 이미지처럼 모달창이 뜹니다. 여기서 네. 맞습니다! 전송합니다. 버튼을 눌러줍니다.

하단에 transaction이 정상적으로 발생했다고 알림을 띄워줍니다. 여기서 verify Transaction 버튼을 누르면 이더스캔에서 바로 확인가능 합니다.

input data에 트랜잭션 발생시 포함한 데이터가 들어있습니다. View Input As 버튼을 눌러서 UTF-8을 눌러줍니다.

디코딩 된 결과가 잘 표시됩니다. 

하지만 앞의 사이트에서 인코딩을 할 때 주의할 점은 한글이외의 영어, 숫자, 특수문자는 인코딩이 잘 되지 않습니다. 

· 한글이외의 영문, 숫자, 특수문자 인코딩 방법

한글 이외의 문자는 아스키코드표를 참조하면 됩니다. 아스키코드표란 문자와 숫자를 1:1 매핑시킨 표입니다.

만약 숫자 0을 입력하고 싶으면 16진수로 30이 됩니다. 10진수로 변환하면 48에 해당하는 숫자입니다.

이번에는 '안녕하세요!'를 인코딩해보겠습니다. 먼저, '안녕하세요'는 앞의 인코딩 사이트를 가셔서 인코딩한 후 %를 모두 지워줍니다.

· '안녕하세요' 인코딩 결과

EC9588EB8595ED9598EC84B8EC9A94

그리고 !가 0x21이기 때문에 인코딩 결과에 21을 붙이면 됩니다.

· '안녕하세요!' 인코딩 결과

EC9588EB8595ED9598EC84B8EC9A9421

'안녕하세요!'가 잘 출력됩니다.

· 아스키코드 특수문자 알아보기

스페이스: 0x20
엔터: 0x0A

스페이스를 넣고싶을 땐 20, 엔터를 넣고 싶을 땐 0A를 넣으면 됩니다.

Comments