6. Coinstack Stamping

Last updated 8 months ago

블록체인은 그 불가역성(한번 기록되면 삭제되거나 변경되지 않음)을 활용하여 여러 분야에 적용할 수 있습니다. 특히 문서 진위 확인 서비스(Document Stamping)에서 이 블록체인 기술이 각광을 받고 있습니다. Coinstack은 앞서 Transactions에서 설명한 바와 같이 Data output을 활용한 트랜잭션을 생성할 수 있습니다. 본인이 직접 데이터 트랜잭션을 생성하여 문서의 지문값을 등록할 경우 다음과 같은 일련의 작업들을 수행해야 합니다.

  1. 본인의 비트코인 주소 생성

  2. 주소에 수수료로 쓰일 비트코인 전송

  3. 문서의 Hash값 추출(ex. SHA256)

  4. 문서의 Hash값을 추가한 data output 생성

  5. data output을 추가한 트랜잭션 생성

  6. 트랜잭션을 블록체인 네트워크에 Broadcasting

  7. 본인 주소의 Balance를 확인하여 수수료가 충분한지 계속 모니터링

하지만 단순히 문서의 지문값(Hash value)만을 빠르고 간단히 블록체인에 등록하고자 할 때는 이 모든 작업이 부담이 될 수 있습니다. Coinstack은 트랜잭션 level에서 데이터를 등록하는 기능을 추상화하여 위 작업을 간편하게 수행할 수 있는 Document Stamping 기능을 제공합니다.

1. Stamp document

SHA-256 해시를 블록체인에 기록하도록 요청합니다. 차후 요청 결과를 확인할 수 있는 stamp ID를 반환합니다. 단순히 문자열을 Coinstack에 전달하는 것만으로 번거로운 하위 작업들을 대신 처리하고 문서의 지문값을 블록체인에 등록합니다.

String privateKeyWIF = "YOUR_PRIVATE_KEY";
String message = "Hello, world";
byte[] data = message.getBytes();
String hash = Codecs.SHA256.digestEncodeHex(data);
String stampId = coinStackClient.stampDocument(privateKeyWIF, hash);
System.out.println(stampId);

결과값은 String 으로 리턴됩니다.

"7f902baec17633d12fb70892698157f595682910c96e3ee44cbdc3e2545d6665-2"

2. Get stamp status

Stamp 요청 상태를 확인합니다. Stamp가 저장된 transaction hash와 output, confirmation 상태를 반환합니다.

Stamp stamp = coinStackClient.getStamp("YOUR_STAMP_ID_VALUE");

결과값은 Stamp object 로 리턴됩니다.

Stamp stamp = coinStackClient.getStamp("YOUR_STAMP_ID_VALUE");
System.out.println(stamp.getHash());
if("YOUR_STAMP_HASH".equals(stamp.getHash())){
System.out.println("Right");
} else {
System.out.println("Wrong");
}