# What Is the 3DPRC-2 Standard? The Complete Guide to 3DPass Object Tokenization

> Discover the 3DPRC-2 standard, a peer-to-peer protocol for authenticating, protecting, and tokenizing real-world objects on the Ledger of Things blockchain with Proof-of-Scan.

- Repository: [3Dpass/3dp](https://github.com/3dpass/3dp)
- Tags: deep-dive
- Published: 2026-02-23

---

**The 3DPRC-2 standard is a peer-to-peer protocol that defines the authentication, protection, and tokenization of real-world objects on the Ledger of Things blockchain, implemented through the Proof-of-Scan consensus mechanism.**

The 3DPRC-2 (3DPass Request for Comments) specification serves as the architectural backbone for transforming physical objects into unique digital assets. Implemented across the `3dpass/3dp` repository, this standard governs how three-dimensional objects are hashed, validated by a decentralized network, and converted into on-chain tokens. Understanding the 3DPRC-2 object tokenization framework is essential for developers building decentralized applications that bridge physical items with blockchain-based ownership.

## Core Architecture of the 3DPRC-2 Standard

The 3DPRC-2 standard establishes a complete pipeline from physical object to digital asset, enforced by several specialized pallets in the Substrate runtime.

### Object Authentication and HASH ID Generation

At the heart of 3DPRC-2 lies the **Object Authentication Protocol**, which converts a submitted 3D model into a unique on-chain **HASH ID** while guaranteeing copy-protection. This process utilizes the GRID2D algorithm to generate shape-specific hashes that serve as the object's digital fingerprint.

According to the source code in [`pallets/poscan/src/lib.rs`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/src/lib.rs) (lines 6-9), the PoScan pallet constitutes "a part of 3DPRC-2 the object tokenization standard implementation"【/cache/repos/github.com/3dpass/3dp/main/pallets/poscan/src/lib.rs†L6-L9】. This module enforces the authentication flow where validators estimate processing time and reach consensus before minting the HASH ID.

### The PoScan API Interface

3DPRC-2 exposes its functionality through a standardized JSON-RPC interface called the **PoScan API**. This interface allows external clients to submit objects, query authentication states, and approve tokenization.

The API defines critical methods including `poscan_putObject` for submission, `poscan_getPoscanObject` for retrieval, and `poscan_approve` for finalizing authentication. These methods are fully documented in [`pallets/poscan/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/README.md) (lines 12-50), which details parameters such as object categories, privacy flags, and property definitions【/cache/repos/github.com/3dpass/3dp/main/pallets/poscan/README.md†L12-L50】.

### Asset Tokenization Rules

Once authenticated, 3DPRC-2 specifies how object properties become tradeable tokens. The standard supports both fungible shares (representing partial ownership) and non-fungible tokens (representing unique assets), along with backed currencies tied to physical properties like weight or material.

The [`pallets/poscan-assets/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/poscan-assets/README.md) (lines 3-21) outlines these "Currencies (tokens) or backed tokens … according to 3DPRC-2", explaining how validators enforce limits on property values during the minting process【/cache/repos/github.com/3dpass/3dp/main/pallets/poscan-assets/README.md†L3-L21】.

## Validator Participation and Consensus Integration

The 3DPRC-2 standard relies on a decentralized validator network to enforce object authentication before tokenization occurs.

### The Estimation Consensus Mechanism

Validators participate by submitting time estimations for object processing through the `submitEstimation` system call. The protocol requires a **2/3 consensus threshold** among validators before an object receives authentication approval.

This mechanism is documented in [`pallets/validator-set/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/validator-set/README.md) (lines 4-5), which explicitly links the `submitEstimation` function to the 3DPRC-2 validation flow【/cache/repos/github.com/3dpass/3dp/main/pallets/validator-set/README.md†L4-L5】. Validators who participate in this consensus process receive estimation rewards, while successful miners collect author rewards for block production.

### Proof-of-Scan Consensus

3DPRC-2 drives the innovative **Proof-of-Scan (PoScan)** consensus mechanism, a hybrid PoW-PoA system where an object's shape serves as the mining nonce. This design guarantees that computational work is directly tied to real-world object authentication.

The [`consensus/poscan/README.md`](https://github.com/3dpass/3dp/blob/main/consensus/poscan/README.md) (lines 7-10) explains how "3DPRC-2 underpins the PoScan consensus", ensuring that mining activities contribute to the security and verification of tokenized objects【/cache/repos/github.com/3dpass/3dp/main/consensus/poscan/README.md†L7-L10】.

## Interacting with 3DPRC-2: Code Examples

Developers can interact with the 3DPRC-2 standard through both RPC calls and direct runtime API access.

### Submitting an Object via JSON-RPC

To initiate the tokenization process, clients call the `poscan_putObject` method with the object's geometric data and GRID2D hashes:

```json
{
  "jsonrpc":"2.0",
  "method":"poscan_putObject",
  "params":[
    "Objects3D:Grid2dLow",
    false,
    "0x...obj data...",
    6,
    ["0x2c99...","0x80af..."],
    [{"propIdx":0,"maxValue":1}],
    false,
    null,
    null,
    false,
    null,
    null
  ],
  "id":1
}

```

This request specifies the object category, privacy settings, byte array data, required number of approvals, top-10 GRID2D hashes, and property definitions. The implementation resides in [`pallets/poscan/src/lib.rs`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/src/lib.rs) as part of the standard's core runtime logic.

### Querying Object State in Rust

Runtime modules can query authentication status through the `PosscanApi` trait:

```rust
use posscan_api::PosscanApi;

fn get_object<T: Config>(object_id: u32) -> Result<ObjData<T::AccountId, T::BlockNumber>, Error<T>> {
    <PosscanApi<T>>::get_object(object_id)
}

```

This interface wraps the PoScan pallet's storage structures, providing type-safe access to object metadata and authentication states.

### Validator Estimation Submission

Validators submit their processing estimates using the validator-set API:

```rust
use validator_set_api::ValidatorSetApi;

fn submit_estimation<T: Config>(object_id: u32, est: u64, signature: Vec<u8>) -> DispatchResult {
    <ValidatorSetApi<T>>::submit_estimation(object_id, est, signature)
}

```

This call is essential for reaching the 2/3 consensus threshold required by the 3DPRC-2 protocol before an object can proceed to tokenization.

## Summary

The 3DPRC-2 standard provides the complete technical specification for bridging physical objects with blockchain ecosystems:

- **Defines the Object Authentication Protocol** that generates unique HASH IDs from 3D models using GRID2D hashing, implemented in [`pallets/poscan/src/lib.rs`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/src/lib.rs).
- **Establishes the PoScan API** with standardized JSON-RPC methods for object submission and verification, documented in [`pallets/poscan/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/README.md).
- **Governs asset tokenization** rules for converting object properties into fungible and non-fungible tokens, specified in [`pallets/poscan-assets/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/poscan-assets/README.md).
- **Enforces decentralized consensus** through validator estimations requiring 2/3 agreement, detailed in [`pallets/validator-set/README.md`](https://github.com/3dpass/3dp/blob/main/pallets/validator-set/README.md).
- **Integrates with PoScan consensus** to make object authentication a fundamental component of the mining process, as described in [`consensus/poscan/README.md`](https://github.com/3dpass/3dp/blob/main/consensus/poscan/README.md).

## Frequently Asked Questions

### What does 3DPRC-2 stand for and where is it documented?

**3DPRC-2 stands for 3DPass Request for Comments 2**, a technical specification document defining the peer-to-peer protocol for object tokenization. The high-level overview appears in the repository's [`README.md`](https://github.com/3dpass/3dp/blob/main/README.md) (lines 12-14), while implementation details are distributed across the PoScan, validator-set, and assets pallet documentation【/cache/repos/github.com/3dpass/3dp/main/README.md†L12-L14】.

### How does 3DPRC-2 prevent duplicate tokenization of the same physical object?

The standard utilizes the **GRID2D algorithm** to generate deterministic hashes from an object's geometric shape, creating a unique HASH ID. Only one HASH ID can exist on-chain for a given object, and the 2/3 validator consensus requirement ensures that subtle shape variations or copy attempts are detected and rejected during the estimation phase.

### What types of tokens can be created under the 3DPRC-2 standard?

3DPRC-2 supports multiple tokenization models: **non-fungible tokens** for unique objects, **fungible shares** representing fractional ownership, and **backed currencies** tied to quantifiable properties like weight or material composition. These asset types are managed through the `poscan-assets` pallet, which enforces value limits and property constraints during minting.

### Which file contains the core implementation of the 3DPRC-2 authentication logic?

The primary implementation resides in [`pallets/poscan/src/lib.rs`](https://github.com/3dpass/3dp/blob/main/pallets/poscan/src/lib.rs), which explicitly identifies itself as "a part of 3DPRC-2 the object tokenization standard implementation" (lines 6-9)【/cache/repos/github.com/3dpass/3dp/main/pallets/poscan/src/lib.rs†L6-L9】. This pallet contains the runtime logic for object storage, hash verification, and the state transitions governing the authentication pipeline.