Understanding Blockchain Interoperability
The growing adoption of public blockchains and tokenization across both public and permissioned networks has created an urgent need for interoperability solutions. Key use cases include:
- Cross-ledger asset exchanges
- Cryptocurrency payments linked to business transactions on permissioned chains
- Public blockchain attestation for permissioned ledger transactions
๐ Discover how top platforms achieve interoperability
Oracle Blockchain Platform's Ethereum Integration
Oracle Blockchain Platform delivers robust interoperability with:
- Ethereum Mainnet
- All EVM-compatible networks supporting standard web3 protocols
This integration works by embedding the Geth Ethereum client within the REST proxy, enabling seamless transaction orchestration through the atomicTransactions API.
Atomic Transaction Workflow
The platform employs an optimized two-phase commit protocol that can include:
- Multiple Oracle Blockchain Platform chaincode transactions
- Optional Ethereum/EVM transactions (executed atomically)
## Technical Implementation: Two-Phase Commit with LRC Optimization
While Oracle Blockchain Platform transactions support full two-phase commit (prepare/commit), Ethereum transactions require special handling through Last Resource Commit (LRC) optimization:
1. **Preparation Phase**: All platform transactions enter prepared state
2. **Ethereum Execution**: Ethereum transaction initiates
- Success: Platform transactions commit
- Failure: Platform transactions roll back
### Transaction Finality Explained
Ethereum transactions achieve finality when included in an immutable block. The `finalityParams` control:
- Finality checking (enabled/disabled)
- Wait duration (blocks or seconds)
๐ [Learn about finality thresholds](https://www.okx.com/join/BLOCKSTAR)
| Network Type | Typical Finality Threshold |
|--------------------|----------------------------|
| Ethereum Mainnet | 6 blocks |
| Private Networks | Immediate (or few blocks) |
## NFT Transfer Between Oracle Blockchain Platform and Ethereum
The `atomicTransactions` API enables NFT transfers through atomic execution of:
1. **Burn Phase**: Remove NFT from Oracle Blockchain Platform
2. **Mint Phase**: Create equivalent NFT on Ethereum
### Supported NFT Standards
Oracle Blockchain Platform supports enhanced versions of:
- ERC-721
- ERC-1155
### Implementation Requirements
1. **Token ID Format**: Must be numeric string (convertible to integer)
2. **Token URI Standards**:
- ERC-1155: ID-substituted URI (e.g., `https://token-cdn-domain/{id}.json`)
- ERC-721: Base URI + token URI (e.g., `http://api.example.com/token/`)
## Smart Contract Integration
Key considerations for Solidity smart contracts:
- Use Remix IDE to generate Application Binary Interface (ABI)
- ABI must be regenerated after any contract changes
- Example contracts available in `solidity-smartcontracts-fab253.zip`
### MintNFT Parameters
| Parameter | Description |
|---------------|----------------------------------------------|
| `to` | Ethereum address for NFT ownership |
| `id` | Numeric token ID |
| `price` | NFT price |
| `tokenHistory`| NFT history from Oracle Blockchain Platform |
## FAQ Section
### What is blockchain interoperability?
Interoperability enables different blockchain networks to exchange information and value, creating a connected ecosystem rather than isolated silos.
### Why use Last Resource Commit for Ethereum transactions?
LRC optimization accommodates Ethereum's single-phase execution model while maintaining atomicity with platform transactions.
### How long does finality typically take on Mainnet?
Ethereum Mainnet transactions typically achieve finality after 6 block confirmations (~1 hour).
### Can I transfer NFTs between any blockchains?
Currently, this implementation specifically supports transfers between Oracle Blockchain Platform and Ethereum/EVM-compatible networks.
### What happens if the Ethereum transaction fails?
The entire atomic workflow rolls back, including any prepared Oracle Blockchain Platform transactions.
### Are there fees for atomic transactions?