typeddata

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package typeddata implements EIP-712 typed data signing for storage provider authentication.

Supported message types:

  • CreateDataSet: authorize dataset creation on a provider
  • AddPieces: authorize adding pieces to a dataset
  • DeleteDataSet: authorize dataset deletion
  • SchedulePieceRemovals: authorize piece removal scheduling

Domain: FilecoinWarmStorageService with chain-specific separation.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidSignatureLength = errors.New("signature must be 65 bytes")
	ErrInvalidRecoveryID      = errors.New("signature recovery id must be one of 0, 1, 27, 28")
)
View Source
var Types = apitypes.Types{
	"EIP712Domain": {
		{Name: "name", Type: "string"},
		{Name: "version", Type: "string"},
		{Name: "chainId", Type: "uint256"},
		{Name: "verifyingContract", Type: "address"},
	},
	"MetadataEntry": {
		{Name: "key", Type: "string"},
		{Name: "value", Type: "string"},
	},
	"CreateDataSet": {
		{Name: "clientDataSetId", Type: "uint256"},
		{Name: "payee", Type: "address"},
		{Name: "metadata", Type: "MetadataEntry[]"},
	},
	"Cid": {
		{Name: "data", Type: "bytes"},
	},
	"PieceMetadata": {
		{Name: "pieceIndex", Type: "uint256"},
		{Name: "metadata", Type: "MetadataEntry[]"},
	},
	"AddPieces": {
		{Name: "clientDataSetId", Type: "uint256"},
		{Name: "nonce", Type: "uint256"},
		{Name: "pieceData", Type: "Cid[]"},
		{Name: "pieceMetadata", Type: "PieceMetadata[]"},
	},
	"SchedulePieceRemovals": {
		{Name: "clientDataSetId", Type: "uint256"},
		{Name: "pieceIds", Type: "uint256[]"},
	},
	"DeleteDataSet": {
		{Name: "dataSetId", Type: "uint256"},
	},
}

Types contains all EIP-712 type definitions for the FWSS protocol.

Functions

func AddPiecesMessage

func AddPiecesMessage(clientDataSetID, nonce *big.Int, pieceCIDs []cid.Cid, metadata [][]MetadataEntry) (apitypes.TypedDataMessage, error)

AddPiecesMessage builds the EIP-712 message for adding pieces.

func CreateDataSetMessage

func CreateDataSetMessage(clientDataSetID *big.Int, payee common.Address, metadata []MetadataEntry) apitypes.TypedDataMessage

CreateDataSetMessage builds the EIP-712 message for dataset creation.

func DeleteDataSetMessage

func DeleteDataSetMessage(dataSetID *big.Int) apitypes.TypedDataMessage

DeleteDataSetMessage builds the EIP-712 message for dataset deletion.

func NewDomain

func NewDomain(chainID *big.Int, fwssAddr common.Address) apitypes.TypedDataDomain

NewDomain creates an EIP-712 domain for FilecoinWarmStorageService.

func NewERC20PermitDomain

func NewERC20PermitDomain(chainID *big.Int, tokenName, tokenVersion string, token common.Address) apitypes.TypedDataDomain

NewERC20PermitDomain builds an ERC-2612 EIP-712 domain for the given token. The name and version must be fetched from the token itself at runtime (see payments.fetchPermitInputs); the chainID and token address complete the domain.

func SchedulePieceRemovalsMessage

func SchedulePieceRemovalsMessage(clientDataSetID *big.Int, pieceIDs []*big.Int) apitypes.TypedDataMessage

SchedulePieceRemovalsMessage builds the EIP-712 message for scheduling piece removals.

Types

type MetadataEntry

type MetadataEntry struct {
	Key   string
	Value string
}

MetadataEntry represents a key-value metadata pair.

type Signature

type Signature struct {
	V uint8
	R [32]byte
	S [32]byte
}

Signature holds the components of an EIP-712 signature.

func Sign

func Sign(signHash func([]byte) ([]byte, error), domain apitypes.TypedDataDomain, primaryType string, message apitypes.TypedDataMessage) (*Signature, error)

Sign signs an EIP-712 typed data message using the provided hash-signing function (typically obtained via signer.SignHash).

func SignAddPieces

func SignAddPieces(signHash func([]byte) ([]byte, error), domain apitypes.TypedDataDomain, clientDataSetID, nonce *big.Int, pieceCIDs []cid.Cid, metadata [][]MetadataEntry) (*Signature, error)

SignAddPieces signs an AddPieces EIP-712 message.

func SignCreateDataSet

func SignCreateDataSet(signHash func([]byte) ([]byte, error), domain apitypes.TypedDataDomain, clientDataSetID *big.Int, payee common.Address, metadata []MetadataEntry) (*Signature, error)

SignCreateDataSet signs a CreateDataSet EIP-712 message.

func SignDeleteDataSet

func SignDeleteDataSet(signHash func([]byte) ([]byte, error), domain apitypes.TypedDataDomain, dataSetID *big.Int) (*Signature, error)

SignDeleteDataSet signs a DeleteDataSet EIP-712 message.

func SignERC20Permit

func SignERC20Permit(
	signHash func([]byte) ([]byte, error),
	domain apitypes.TypedDataDomain,
	owner, spender common.Address,
	value, nonce, deadline *big.Int,
) (*Signature, error)

SignERC20Permit signs an ERC-2612 Permit message and returns v/r/s suitable for direct use with Solidity `permit(owner, spender, value, deadline, v, r, s)` or Filecoin Pay `depositWithPermit(token, to, amount, deadline, v, r, s)`.

func SignSchedulePieceRemovals

func SignSchedulePieceRemovals(signHash func([]byte) ([]byte, error), domain apitypes.TypedDataDomain, clientDataSetID *big.Int, pieceIDs []*big.Int) (*Signature, error)

SignSchedulePieceRemovals signs a SchedulePieceRemovals EIP-712 message.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL