Startrail APIs
  • 🛫Startrail PORT: All in one document for API/SDK
    • 🔀URL per environment
  • Issue transfer api
    • 📬Issue & Transfer SRR (NFT)
      • Request Signed URL for Upload/Download Files
      • File Information Metadata
      • Issue & Transfer
      • Webhook Setup
    • 📂Collection
      • Create Collection
      • Get Collection of LUW
    • 📢Change Logs
      • v1.2.0
      • v1.1.0
      • v1.0.1
  • Metadata Schema
    • 🪅Startrail Registry (SRR)
      • Version 2.2
      • Version 2.1
      • Version 2.0
    • 📤Transfer
      • Version 1.2
      • Version 1.1
      • Version 1.0
    • ☸️Custom History
      • Custom History of Exhibition
        • Version 1.2
      • Custom History of Auction
        • Version 1.3
      • Custom History of Appraisal
        • Version 1.1
      • Custom History of Restoration
        • Version 1.0
      • Custom History of Offchain
        • Version 1.1
  • Get SRR API
    • Get Owned SRRs
    • Get SRR by Collection contract address and Token Id
      • 🚫Get SRR by Token Id
    • Description Of SRR Data
  • Ethereum Signature Validator API
    • 🔏Ethereum Signature Validator API
      • Change Logs
  • Startrail SDK Js
    • 🔰Introduction
    • 🏃Getting Started
      • RPC endpoint and chainId
    • 💳Wallet Methods
    • 🔮Startrail API Methods
      • Add Custom Histories To SRRs
      • Approve SRR By Commitment
      • Bulk
      • Check ERC2981 Royalty
      • Create Collection
      • Convert Metadata
      • Create SRR
      • Transfer Collection Ownership
      • Transfer SRR To Ethereum Address
      • Transfer From With Provenance
      • Update Metadata
    • 📱Login Providers
      • Interface
      • Whitelabeling/Customizing
        • Email Password
      • Hints
      • Multi Factor Account Management
    • 🦊MetaMask
    • 🎎Authentication Integration
    • 👾Errors
    • 📢Change logs
      • v1.35.0
      • v1.34.0
      • v1.33.2
      • v1.33.1
      • v1.32.0
      • v1.31.1
      • v1.30.6
      • v1.30.5
      • v1.30.4
      • v1.30.3
      • v1.30.2
      • v1.30.1
      • v1.30.0
      • v1.29.1
      • v1.29.0
      • v1.28.2
      • v1.28.1
      • v1.28.0
      • v1.27.1
      • v1.27.0
      • v1.26.0
      • v1.25.2(Security Patch)
  • Startrail API
    • 💱Transfer SRR Ownership By RevealHash
    • Get Transaction Data
    • Get Metadata By tokenid
  • Subgraph
    • 📊A introduction of subgraph
    • How to retrieve SRR metadata
Powered by GitBook

©2023 Startbahn, Inc.

On this page
  • approveSRRByCommitment()
  • How to complete ownership transfer with transferByReveal
  • How to generate revealHash
  • Method parameters
  • TransferMetadata
  • Lang
  • Sample Code for Generating the revealHash Value
  • Parameters Example
  • Returns
  • Response
  • Error
  • Response Example

Was this helpful?

  1. Startrail SDK Js
  2. Startrail API Methods

Approve SRR By Commitment

To know the methods calling to Startrail API from Startrail-Sdk-Js

PreviousAdd Custom Histories To SRRsNextBulk

Last updated 1 year ago

Was this helpful?

approveSRRByCommitment()

Approve transfer to those who knows the secret value set in approveSRRByCommitment() under a commit/reveal scheme.

The approveSRRByCommitment() function alone does not initiate the transfer of the SRR. You need to call to finalize the transfer.

How to complete ownership transfer with transferByReveal

When you provide a preimage for approveSRRByCommitment, you must hash the preimage using keccak256 later on and provide the resulting hash as the revealHash parameter to the in order to complete the transfer. This is particularly useful in cases where the sender only knows the recipient's email, while the Dapp system, functioning as an intermediary, can determine the Ethereum address associated with that email.

When you provide a revealHash that has been hashed with keccak256 for approveSRRByCommitment, you can directly use it as the revealHash parameter for the to finalize the transfer.

How to generate revealHash

import { bufferToHex, keccak256 } from 'ethereumjs-util'

const revealHash = bufferToHex(keccak256(Buffer.from('message')))

Please take care to ensure that the preimage remains sufficiently obscure to individuals who are not authorized. If it becomes predictable, anyone possessing this information will have the capability to execute the transfer.

Method parameters

Variable
Type
Description

startrailLUWContractAddress

string

The address of LicensedUserWallet(LUW) contract. Sets it when you want to execute transaction by the LUW contract address

contractAddress

string

The address of collection contract. Sets it when you want to associate collection contract address with the SRR.

preimage

string

A string value used to reserve the transfer. Anyone who knows the value is entitled to complete the transfer. If this value is provided along with an email, confirmation emails will be sent to the email address at the time of transfer reservation and completion. This value is exclusive to revealHash.

revealHash

string

A keccak256 hash value used to reserve the transfer. Anyone who knows the value is entitled to complete the transfer. This value is exclusive to preimage. See the sample code for Generating the revealHash Value below.

metadata

TransferMetadata

isHashPreimageEnabled

boolean

(Deprecated. It will be removed soon) Setting true hashes the preimage with keccak256

TransferMetadata

Variable
Type
Description

transferType

string

Select one of the followings "Primary sale", "Secondary sale", "Other transfer”

remarks

Lang

Write down whatever relevant to transfer ownership

customHistoryId

number

Custom History Id that is already registered in Startrail

Lang

Variable
Type
Description

ja

string

Japanse text

en

string

English text

Sample Code for Generating the revealHash Value

import { keccak256 } from '@ethersproject/keccak256'
export const generateRevealHash = (preimage: string): string => {
  return keccak256(Buffer.from(preimage))
}

// OR

import { keccak256 } from 'ethereumjs-util'
export const generateRevealHash = (preimage: string): string => {
  return bufferToHex(keccak256(Buffer.from(preimage)))
}

Parameters Example

await sdk.approveSRRByCommitment(
  {
    tokenId: '41052235',
    preimage: 'art@tuta.io',
    metadata: {
      transferType: "Primary sale",
      remarks: {
        en: "Reason for the transfer",
        ja: "移転の理由:日本語"
      },
      customHistoryId: 1,
    },
  }
)
// OR
await sdk.approveSRRByCommitment(
  {
    tokenId: '41052235',
    revealHash: '0e675a836831dd887e5ad4ce4e8365b979dcd2141536d69e3767c7c620bbfc1f',
    metadata: {
      transferType: "Primary sale",
      remarks: {
        en: "Reason for the transfer",
        ja: "移転の理由:日本語"
      },
      customHistoryId: 1,
    },
  }
)

Returns

Promise will be returned which resolves with a Response object upon a successful confirmation. false will be returned when user flow is cancelled in such a case that a user closes the popup modal.

If the confirmation fails, the Promise will resolve with an {error} object that describes the failure.

Promise<Response | false>

The use of "txReceiptId" will soon be deprecated and removed.

Response

Variable
Type
Description

txReceiptId

string

ID to identify transaction details in Startrail-API DB.

Error

Response Example

Example

{
  txReceiptId: 0
}

SRR Transfer Metadata conforming to the

Custom Error objects. Refer to the for possible data.

🔮
Transfer SRR Ownership by RevealHash
transferByReveal endpoint
transferByReveal endpoint
Error Catalogue
Transfer Data schema