Approve SRR By Commitment

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

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 Transfer SRR Ownership by RevealHash 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 transferByReveal endpoint 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 transferByReveal endpoint 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

VariableTypeDescription

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

SRR Transfer Metadata conforming to the Transfer Data schema

isHashPreimageEnabled

boolean

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

TransferMetadata

VariableTypeDescription

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

VariableTypeDescription

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

VariableTypeDescription

txReceiptId

string

ID to identify transaction details in Startrail-API DB.

Error

Custom Error objects. Refer to the Error Catalogue for possible data.

Response Example

Example

{
  txReceiptId: 0
}

Last updated

ยฉ2023 Startbahn, Inc.