sign
서명 과정
1-5- 회원 로그인을 진행합니다.5-8- 회원의 MPC 지갑이 존재하지 않는 경우 회원의 지갑을 신규 생성합니다.9-11- 지갑은 존재하나 클라이언트에서 MPC 키 조각 또는 MPC 키 생성에 사용된 password가 존재하지 않을 경우 recover합니다.12-13- 트랜잭션 정보를 담은 객체를 생성하여 서명 요청합니다. 응답으로 서명된 raw transaction을 얻을 수 있습니다.14- 서명된 트랜잭션을 블록체인에 반영하기 위해 WaaS에 요청합니다. 이 때 서명 요청에서 받은 raw transaction을 사용합니다.15- 트랜잭션 전송이 정상적으로 이뤄진 경우 해당 트랜잭션에 대한 receipt를 받을 수 있으며, 이를 사용해 트랜잭션 정보를 조회할 수 있습니다.
트랜잭션에 서명하기 위해서는 Key generate 응답으로 받은 pvencstr, encryptDevicePassword, wid의 값을 Secure-Channel을 사용해 암호화하여 요청할 필요가 있습니다.
트랜잭션을 서명하고 블록체인 네트워크에 블록으로 반영되기까지 다음과 같은 과정으로 진행됩니다.
-
트랜잭션 생성
사용자는 원하는 트랜잭션을 생성하고 해당 트랜잭션에 대한 서명을 진행합니다. 서명은 해당 트랜잭션이 정당한 송신자로부터 온 것임을 검증하는데 사용됩니다. 트랜잭션 생성에 필요한 항목은 Sign SDK API 또는 Sign REST API를 참조합니다. -
트랜잭션 서명
WaaS 에서 지원하는 Sign Type은 다음과 같습니다.- Personal Sign
- Legacy Sign
- EIP-1559 Sign
- SignTypedDataV3
- SignTypedDataV4
Transaction 서명에 필요한 Nonce와 Gas는 개발 편의를 위해 WaaS 서비스에서 기본값이 설정될 수 있도록 지원합니다. 하지만 이는 실제 블록체인에 반영되는 시점에 충돌을 일으킬 수 있으며 Gas와 Nonce를 조회하여 직접 지정하기를 권장합니다.
트랜잭션 전송
서명한 트랜잭션을 블록체인에 반영
-
JSON-RPC 호출
서명된 트랜잭션을 JSON-RPC 호출을 사용하여 웹3 체인 네트워크에 전송합니다. 이는 트랜잭션을 노드에 제출하여 블록에 포함시키도록 요청하는 것입니다.
WaaS는 JSON-RPC 호출을 위한 인터페이스를 제공하고 있으며 API Reference에서 확인할 수 있습니다. -
트랜잭션 검증 및 블록 반영
JSON-RPC를 통해 요청된 트랜잭션은 검증을 거쳐 트랜잭션을 블록에 포함해 블록체인에 기록됩니다. -
트랜잭션 결과 확인
블록에 반영된 트랜잭션의 결과 및 상태는 JSON-RPC를 통해 사용자는 트랜잭션의 성공 여부를 확인할 수 있습니다.