What's the Blockchain Shift?
Because the technology of blockchains is constantly evolving, and we want to enable our customers to benefit from the best performance, we have designated the Blockchain Shift.
As a brand, you may be used to minting digital passports, also known as NFT, on a given chain, however, performance has slowed. The blockchain shift allows recreating and bridging all previously created digital passports from this network to a more secure and performing new one. This means no matter the blockchain, you can mint using our protocol and our solutions. At Arianee, we make blockchain abstraction possible by managing the complexity of sublayers for you.
What's bridging?
Bridging is the operation to move a digital passport from one chain to another. The objective of this feature is to be able to bridge a digital passport without losing its history, this includes transfers and accepted Arianee Events.
- Messages sent to digital passports on
chain1
will be lost for the owner onchain2
for the bridged digital passport. They wonโt be bridged to the new chain as a message is ephemeral.- Pending events are not bridged.
What are the steps of bridging?
NFT-chain1
is sent to0x0000000000000000000000000000000B7269d67e
(bridge address).NFT-chain1
is updated with thethread
.NFT-chain2
is created with the same content and the sameviewKey
to allow retro compatibility.NFT-chain2
is transferred (air-dropped) to the previous digital passport owner.
- The
thread
is the content and history of a digital passport from a previous blockchain. Athread
can be composed of one or multiplefibers
if the digital passport is bridged multiple times.- The
viewKey
remains the same on both chains.
fiber = {
origin: {
protocolName: "POA",
tokenId: 54545,
chainId: 99,
smartContractAddress: "0xABCDEF",
},
destination: {
protocolName: "SUPERNET",
tokenId: 9893,
chainId: 11891,
smartContractAddress: "0xEFGHIJK",
},
events: {
hydrate: {
address: "0xDCb0B81223547540dA3537Bf2F19eAE09FB0A97E",
blockNumber: 28824192,
transactionHash:
"0x59ea6b79db92771f17767e7ffbb1f21945d51fbf6df40164626660294a41964f",
transactionIndex: 69,
blockHash:
"0xc00da63f2fcd9b339725fe3008ff9d3cd6757d52e648e7b8c88abd91b9d10285",
logIndex: 265,
removed: false,
id: "log_acda6df6",
returnValues: {
0: "70827165",
1: "0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
2: "",
3: "0x2A4d02879f564660eAC2c27843Da31993c2Cb498",
4: "1811318229",
5: false,
6: "1653638243",
_tokenId: "70827165",
_imprint:
"0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
_uri: "",
_initialKey: "0x2A4d02879f564660eAC2c27843Da31993c2Cb498",
_tokenRecoveryTimestamp: "1811318229",
_initialKeyIsRequestKey: false,
_tokenCreation: "1653638243",
},
event: "Hydrated",
signature:
"0x0166db8152debe7d1cfed1b1e12a32a28a986839ab44dff49682be23e29704de",
raw: {
data: "0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000002a4d02879f564660eac2c27843da31993c2cb498000000000000000000000000000000000000000000000000000000006bf685d5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000629084630000000000000000000000000000000000000000000000000000000000000000",
topics: [
"0x0166db8152debe7d1cfed1b1e12a32a28a986839ab44dff49682be23e29704de",
"0x000000000000000000000000000000000000000000000000000000000438bc9d",
"0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
],
} },
transfers: [
{
address: "0xDCb0B81223547540dA3537Bf2F19eAE09FB0A97E",
blockNumber: 28833389,
transactionHash:
"0x189c224036e5472bba1521baef7b2659f70aac7b11806fef1823b0b6b41fa373",
transactionIndex: 20,
blockHash:
"0x7ea9c1775ec6479e4d3a394d0efb5ffa6ae9d054550382be454afa3c67fab25c",
logIndex: 73,
removed: false,
id: "log_e25b73c7",
returnValues: {
0: "0x0000000000000000000000000000000000000000",
1: "0xE24c5489c973375334d1a1e43B791277F8c0f039",
2: "65072687",
_from: "0x0000000000000000000000000000000000000000",
_to: "0xE24c5489c973375334d1a1e43B791277F8c0f039",
_tokenId: "65072687",
},
event: "Transfer",
signature:
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
raw: {
data: "0x",
topics: [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x000000000000000000000000e24c5489c973375334d1a1e43b791277f8c0f039",
"0x0000000000000000000000000000000000000000000000000000000003e0ee2f",
],
}
},
],
},
arianeeEvents: [
{
content: {
$schema: "https://cert.arianee.org/version1/ArianeeEvent-i18n.json",
title: "saleout event",
},
address: "0xD64bfed4255519711f9B26F0434555b6cC9556C1",
blockNumber: 381101,
transactionHash:
"0x15b827e152193c465e81855864a40c540d83b17c623a68142c05c96fa5bf52e7",
transactionIndex: 1,
blockHash:
"0x75663f4769c305f9d84e1ed63aaa00fe465d21abf940879af41329dcf32e51c2",
logIndex: 6,
removed: false,
id: "log_5584851d",
returnValues: {
0: "97273800",
1: "0xf028bb7d46f1142D35FD12386137c96371667611",
_eventId: "97273800",
_sender: "0xf028bb7d46f1142D35FD12386137c96371667611",
},
event: "EventAccepted",
signature:
"0x801d564d3920ab7f9d83def865765f310bf8d043086d5ba3e544bd6f2073ad8c",
raw: {
data: "0x",
topics: [
"0x801d564d3920ab7f9d83def865765f310bf8d043086d5ba3e544bd6f2073ad8c",
"0x0000000000000000000000000000000000000000000000000000000005cc47c8",
"0x000000000000000000000000f028bb7d46f1142d35fd12386137c96371667611",
],
},
}
thread = [
fiber = {
origin: {
protocolName: "POA",
tokenId: 54545,
chainId: 99,
smartContractAddress: "0xABCDEF",
},
destination: {
protocolName: "SUPERNET",
tokenId: 9893,
chainId: 11891,
smartContractAddress: "0xEFGHIJK",
},
events: {
hydrate: {
address: "0xDCb0B81223547540dA3537Bf2F19eAE09FB0A97E",
blockNumber: 28824192,
transactionHash:
"0x59ea6b79db92771f17767e7ffbb1f21945d51fbf6df40164626660294a41964f",
transactionIndex: 69,
blockHash:
"0xc00da63f2fcd9b339725fe3008ff9d3cd6757d52e648e7b8c88abd91b9d10285",
logIndex: 265,
removed: false,
id: "log_acda6df6",
returnValues: {
0: "70827165",
1: "0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
2: "",
3: "0x2A4d02879f564660eAC2c27843Da31993c2Cb498",
4: "1811318229",
5: false,
6: "1653638243",
_tokenId: "70827165",
_imprint:
"0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
_uri: "",
_initialKey: "0x2A4d02879f564660eAC2c27843Da31993c2Cb498",
_tokenRecoveryTimestamp: "1811318229",
_initialKeyIsRequestKey: false,
_tokenCreation: "1653638243",
},
event: "Hydrated",
signature:
"0x0166db8152debe7d1cfed1b1e12a32a28a986839ab44dff49682be23e29704de",
raw: {
data: "0x00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000002a4d02879f564660eac2c27843da31993c2cb498000000000000000000000000000000000000000000000000000000006bf685d5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000629084630000000000000000000000000000000000000000000000000000000000000000",
topics: [
"0x0166db8152debe7d1cfed1b1e12a32a28a986839ab44dff49682be23e29704de",
"0x000000000000000000000000000000000000000000000000000000000438bc9d",
"0x29969a0ceda4e072ca9cbe1af8d125ce5fc43e9176017cf95798b1817824eded",
],
} },
transfers: [
{
address: "0xDCb0B81223547540dA3537Bf2F19eAE09FB0A97E",
blockNumber: 28833389,
transactionHash:
"0x189c224036e5472bba1521baef7b2659f70aac7b11806fef1823b0b6b41fa373",
transactionIndex: 20,
blockHash:
"0x7ea9c1775ec6479e4d3a394d0efb5ffa6ae9d054550382be454afa3c67fab25c",
logIndex: 73,
removed: false,
id: "log_e25b73c7",
returnValues: {
0: "0x0000000000000000000000000000000000000000",
1: "0xE24c5489c973375334d1a1e43B791277F8c0f039",
2: "65072687",
_from: "0x0000000000000000000000000000000000000000",
_to: "0xE24c5489c973375334d1a1e43B791277F8c0f039",
_tokenId: "65072687",
},
event: "Transfer",
signature:
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
raw: {
data: "0x",
topics: [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x000000000000000000000000e24c5489c973375334d1a1e43b791277f8c0f039",
"0x0000000000000000000000000000000000000000000000000000000003e0ee2f",
],
}
},
],
},
arianeeEvents: [
{
content: {
$schema: "https://cert.arianee.org/version1/ArianeeEvent-i18n.json",
title: "saleout event",
},
address: "0xD64bfed4255519711f9B26F0434555b6cC9556C1",
blockNumber: 381101,
transactionHash:
"0x15b827e152193c465e81855864a40c540d83b17c623a68142c05c96fa5bf52e7",
transactionIndex: 1,
blockHash:
"0x75663f4769c305f9d84e1ed63aaa00fe465d21abf940879af41329dcf32e51c2",
logIndex: 6,
removed: false,
id: "log_5584851d",
returnValues: {
0: "97273800",
1: "0xf028bb7d46f1142D35FD12386137c96371667611",
_eventId: "97273800",
_sender: "0xf028bb7d46f1142D35FD12386137c96371667611",
},
event: "EventAccepted",
signature:
"0x801d564d3920ab7f9d83def865765f310bf8d043086d5ba3e544bd6f2073ad8c",
raw: {
data: "0x",
topics: [
"0x801d564d3920ab7f9d83def865765f310bf8d043086d5ba3e544bd6f2073ad8c",
"0x0000000000000000000000000000000000000000000000000000000005cc47c8",
"0x000000000000000000000000f028bb7d46f1142d35fd12386137c96371667611",
],
},
}
]
Where the previous chain information is stored?
Because we donโt want to have dependencies on the previous chain, the thread is accessible no matter what happens to the previous blockchain. We add it to the digital passport content on hydrate. The thread cannot be updated. See conventions. This means that a brand can access the content of a thread via the digital passport content.
What's the impact on end-users?
Digital Passport History
The new bridged digital passport will display filtered events (transfers, hydrate, etc.) to make it look like there is only one digital passport with a continuous history. Thread is concatenated with current blockchain records.
๐ History Example
DAY 0: NFT is created on chain1
.
NFT-chain1
is hydrated.
DAY 1: NFT is claimed by owner1
.
NFT-chain1
is transferred toowner1
.
DAY 2: NFT is bridged.
- If the brand is not the NFT owner -
NFT-chain1
is recovered to the NFT Management Platform wallet address. NFT-chain1
is recovered to bridge address:0x0000000000000000000000000000000B7269d67e
. *NFT-chain1
is updated with thethread
. *NFT-chain2
is hydrated. *- If the brand is not the NFT owner -
NFT-chain2
is transferred toowner1
. *
- For an end-user (owner1) the history is the same before and after bridging. The hydrate & transfer with * are transparent.
- The Arianee SDK has an option to display the full history, including bridging events.
Deeplink Retro-Compatibility
A QR code with the deeplink from the previous blockchain will redirect to the digital passport on the new blockchain.
Example: https://arian.ee/12345,myViewKey should redirect https://supernet.arian.ee/12345,myViewKey.
Redirection is operational as long as
chain1
is still running.
Updated 3 months ago