FabToken is a straightforward implementation of the Driver API.
It prioritizes simplicity over privacy, storing all token transaction details openly on the ledger for anyone with access to view ownership and activity.
FabToken exclusively supports long-term identities based on a standard X.509 certificate scheme,
which reveals the owner’s enrollment ID in plain text.
Tokens are directly represented on the ledger as JSON-formatted data based on the token.Token structure.
The Owner field of this structure stores the identity information.
The Identity Service handles the encoding/decoding of this field.
The FabToken driver is configured via a set of public parameters that define the rules and constraints of the token system. These parameters are shared among all participants and are typically stored on the ledger within the Token Chaincode (TCC).
The PublicParams for FabToken (v1) include:
"fabtoken".1).64 for 64-bit integers).Public parameters can be generated and inspected using the tokengen utility.
# Generate FabToken public parameters
tokengen gen fabtoken.v1 --auditors ./msp/auditor --issuers ./msp/issuer --output ./params
FabToken uses Protocol Buffers for all serialized data structures, ensuring consistent communication between nodes and the ledger. The definitions are located in token/core/fabtoken/protos/.
ftpp.proto)The PublicParameters message defines the governance and constraints of the FabToken system:
token_driver_name: Unique identifier for the driver ("fabtoken").token_driver_version: Version of the driver logic.auditor: Identity (X.509) of the authorized auditor.issuers: List of authorized issuer identities.max_token: Maximum value for any single token.quantity_precision: Bit-precision for token amounts.extra_data: Extensibility map for custom parameters.ftactions.proto)Token: Represents a cleartext token.
owner: Serialized identity of the owner.type: Token type (e.g., "USD").quantity: Amount encoded as a hex string (e.g., "0x64" for 100).IssueAction:
issuer: Identity of the authorizing issuer.outputs: List of new Token objects to be created.inputs: Optional list of tokens being redeemed during issuance.metadata: Application-level metadata.TransferAction:
inputs: List of TokenID and full Token structures being spent.outputs: List of new Token structures being created.metadata: Application-level metadata.FabToken does not provide privacy for tokens or identities.
The validator guarantees the following: