타임스탬프 API — 빠른 시작
HTTP 호출 한 번. 키도, 계정도, 가입 양식도 없습니다. 파일은 그대로 남고 SHA-256만 길을 떠납니다.
# 현재 세계 공통 시각 curl https://beattime.live/api/now/ # 파일 기록: 해시는 로컬에서 계산하고 해시만 전송 sha256sum contract.pdf curl -X POST https://beattime.live/api/proof/stamp \ -H 'Content-Type: application/json' \ -d '{"digest":"<64 hex characters>"}'
연동은 이것이 전부입니다. 등록할 것도, 교체할 토큰도, 협상할 할당량도 없습니다. 이 서비스는 무료이며 앞으로도 그렇습니다.
응답으로 오는 것
기록은 지금 시점의 상태를 돌려줍니다. 나중에 같은 해시는 더 많은 것을 반환합니다. 먼저 서명, 그다음 외부 앵커입니다.
- digest
- 보내신 SHA-256(소문자). 우리가 당신의 파일에 대해 보는 것은 이것뿐입니다.
- beat
- .beat 시간으로 표시한 시점. 시간대가 붙지 않는 하나의 공통 값입니다.
- utc
- 같은 시점을 UTC로, 마이크로초 단위까지.
- seq
- 추가만 가능한 로그에서의 위치. 번호는 중복되지도, 이동하지도 않습니다.
- week
- 이 기록이 속한 머클 트리의 ISO 주차.
- chain_hash
- 이 기록을 직전 기록과 연결합니다. 기록을 지우면 사슬이 눈에 띄게 끊어집니다.
- week_root
- 주간 머클 루트. 주가 마감되기 전까지는 잠정값이며 계속 바뀝니다.
- inclusion_proof
- 형제 해시와 그 방향(L 또는 R). 이것으로 루트를 직접 다시 계산할 수 있으며, 바로 그 점이 증명을 우리와 무관하게 만듭니다.
- root_signature
- 고정된 주간 루트에 대한 Ed25519 서명. 주가 봉인되면 나타납니다.
- ots_status
- 비트코인 앵커 상태. 승인 대기 중에는 pending, 이후에는 블록 높이와 함께 bitcoin.
- anchors
- 주간 루트를 기록해 둔 은행 참조 번호. 어떤 블록체인에도 의존하지 않는 앵커입니다.
“주가 아직 열려 있음”은 정상 응답이며 오류가 아닙니다.
새 기록에는 아직 서명도 앵커도 없습니다. 해당 주가 아직 봉인되지 않았기 때문입니다. 봉인은 ISO 주가 끝날 때 이루어지고, 비트코인 증명은 하루 정도 뒤에 따라옵니다. 나중에 같은 해시로 다시 물어보면 빠졌던 항목이 채워져 있습니다. 그동안 기록된 시각은 바뀌지 않습니다.
같은 파일을 두 번 기록하면
첫 기록이 언제나 이깁니다. 같은 해시를 다시 보내면 원래 기록이 그대로 돌아옵니다. 시각도 일련번호도 같고 상태 코드만 201 대신 200입니다. 따라서 재시도는 안전합니다. 응답이 유실되거나 클라이언트가 조급하게 재전송해도 타임스탬프가 뒤로 밀리지 않습니다.
201 Created → 처음 기록됨 200 OK → 이미 기록됨. 원래 타임스탬프가 반환됨 400 → 해시가 16진수 64자가 아님 429 → 요청 한도 초과. 잠시 후 재시도
요청 한도와 CORS
한도는 IP 주소 단위이며, 한 클라이언트가 다른 사용자를 밀어내지 않도록 존재합니다. 일반적인 연동이 하는 일에는 일부러 넉넉하게 잡았습니다.
| 엔드포인트 | 한도 |
|---|---|
| POST /api/proof/stamp | 20 / min |
| GET /api/proof/verify | 120 / min |
| GET /api/proof/cert/<digest> | 10 / min |
| 나머지(시각, 변환, 동기화) | 300 / min |
모든 엔드포인트가 Access-Control-Allow-Origin: * 헤더로 응답하므로 브라우저에서 바로 호출할 수 있습니다. Tor를 통한 요청은 한도가 더 높습니다. 출구 노드 하나 뒤에 많은 사람이 있기 때문입니다.
바로 쓰는 클라이언트
단일 파일, 의존성 없음, Apache-2.0. Python, PHP, JavaScript, C#, C++17을 지원합니다. 하나를 프로젝트에 복사하거나 전체 레퍼런스를 읽어 보세요.
이것이 아닌 것
이 위에 무언가를 만들기 전에 알아 두셔야 합니다. 검토 단계에서 발견하시는 것보다 여기서 말씀드리는 편이 낫습니다.
- eIDAS가 말하는 적격 신뢰 서비스가 아닙니다. 따라서 제41조의 법적 추정이 생기지 않습니다. 이것은 증거이지 판단이 아닙니다.
- 존재와 무결성을 증명하며, 저작자는 증명하지 않습니다. 타임스탬프는 이 바이트열이 그 시점까지 존재했고 이후 바뀌지 않았다고 말할 뿐, 누가 만들었는지나 내용이 참인지는 말하지 않습니다.
- RFC 3161이 아닙니다. 현재 이 프로토콜을 지원하지 않으므로 이를 기대하는 도구(
openssl ts,signtool)는 이 API와 통신하지 못합니다. - 기록은 공개되며 영구적입니다. 해시는 철회할 수 없으니 목록에 남기고 싶지 않은 것은 기록하지 마세요.