Add proof-measure client (public securedBy / measured-immutability service)
proof-measure is a separate, public, unauthenticated Dragonchain service. Adds: - client.UnauthenticatedClient: HMAC-free transport mirroring Client's marshal/decode/error handling. - proofmeasure.ProofMeasureClient: GetSecurity / Report / Health, default base URL https://proof-measure.dragonchain.com; standalone + a DragonchainSDK.ProofMeasure handle. - models for SecurityResult/RawMeasure/ReportRequest/TransactionReport/etc (decimals as strings, timestamps int64). - httptest unit tests.
This commit is contained in:
37
README.md
37
README.md
@@ -147,6 +147,43 @@ All API methods accept a `context.Context` as their first parameter for timeout
|
||||
### Block
|
||||
- `Get(ctx, blockID)` - Get block by ID
|
||||
|
||||
### Proof Measure (public, unauthenticated)
|
||||
- `GetSecurity(ctx, network, since)` - A network's accumulated security since `since` (unix seconds; `0` = service default), as raw measure + USD valuation. `network` = `"BTC"` or `"ETH"`.
|
||||
- `Report(ctx, req)` - Per-transaction "securedBy" report over interchain anchors.
|
||||
- `Health(ctx)` - Service liveness.
|
||||
|
||||
## Proof Measure
|
||||
|
||||
`proof-measure` is a separate, **public, unauthenticated** Dragonchain service
|
||||
(the measured-immutability / "securedBy" metric) at
|
||||
`https://proof-measure.dragonchain.com`. It needs no credentials. The SDK exposes
|
||||
it two ways:
|
||||
|
||||
```go
|
||||
// 1. Via the main SDK (targets the default public endpoint):
|
||||
sec, err := client.ProofMeasure.GetSecurity(ctx, "BTC", time.Now().Add(-time.Hour).Unix())
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("BTC secured by %s (%s) since %d\n", sec.ValueUSDFormatted, sec.Raw.Value+" "+sec.Raw.Unit, sec.SinceUnix)
|
||||
|
||||
// 2. Standalone (no prime credentials needed; empty URL = public prod):
|
||||
import "git.dragonchain.com/dragonchain/prime-sdk-go/proofmeasure"
|
||||
|
||||
pm := proofmeasure.NewProofMeasureClient("") // or a custom base URL
|
||||
report, err := pm.Report(ctx, &models.ReportRequest{
|
||||
TransactionID: "tx-123", PrimeID: "my-prime", BlockID: "42",
|
||||
Anchors: []models.ReportAnchorInput{
|
||||
{Network: "BTC", TxHash: "0x...", Timestamp: anchorUnix},
|
||||
{Network: "ETH", TxHash: "0x...", Timestamp: anchorUnix},
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Secured by %s across %d anchors\n", report.TotalValueUSDFormatted, len(report.Anchors))
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
The SDK uses HMAC-SHA256 authentication. You need to provide:
|
||||
|
||||
Reference in New Issue
Block a user