diff --git a/404.html b/404.html index 866254103..afe7a59b2 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | Archethic - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/FAQ/aeweb/index.html b/FAQ/aeweb/index.html index 145871a89..ab3658116 100644 --- a/FAQ/aeweb/index.html +++ b/FAQ/aeweb/index.html @@ -4,13 +4,13 @@ AEWeb | Archethic - +
-
Skip to main content

AEWeb

General

How do I redirect my domain names to my websites deployed on the Archethic Blockchain?

All the information regarding DNS configuration is available in the dedicated section.

You will also find examples for Gandi, Cloudflare, and OVH services.

What is the purpose of a .gitignore file?

The .gitignore file serves to exclude specific files and directories from version control with Git. In the context of AEWeb, it's used to prevent the upload and synchronization of configuration and development files that are specific to the Git repository. This ensures that only the essential files of the website are transferred during the upload process.

Currently, the AEWeb CLI is not directly connected to the wallet. Therefore, it is necessary to provision the chain that will host the files in order to pay the transaction fees. However, you can still use the wallet's keychain by retrieving the passphrase and utilizing the wallet's service to send funds to the service hosting the image, just as if you were performing the action directly from the wallet.

Here's an example using the Testnet:

aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website --keychain-funding-service "archethic-wallet-ALICE" --keychain-website-service myImageAEWeb
- +
Skip to main content

AEWeb

General

How do I redirect my domain names to my websites deployed on the Archethic Blockchain?

All the information regarding DNS configuration is available in the dedicated section.

You will also find examples for Gandi, Cloudflare, and OVH services.

What is the purpose of a .gitignore file?

The .gitignore file serves to exclude specific files and directories from version control with Git. In the context of AEWeb, it's used to prevent the upload and synchronization of configuration and development files that are specific to the Git repository. This ensures that only the essential files of the website are transferred during the upload process.

Currently, the AEWeb CLI is not directly connected to the wallet. Therefore, it is necessary to provision the chain that will host the files in order to pay the transaction fees. However, you can still use the wallet's keychain by retrieving the passphrase and utilizing the wallet's service to send funds to the service hosting the image, just as if you were performing the action directly from the wallet.

Here's an example using the Testnet:

aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website --keychain-funding-service "archethic-wallet-ALICE" --keychain-website-service myImageAEWeb
+ \ No newline at end of file diff --git a/FAQ/bridge-2-ways/index.html b/FAQ/bridge-2-ways/index.html index c1afaf62a..4d8bda504 100644 --- a/FAQ/bridge-2-ways/index.html +++ b/FAQ/bridge-2-ways/index.html @@ -4,7 +4,7 @@ Archethic Bridge 2-ways | Archethic - + @@ -29,8 +29,8 @@ $UCO contract address: 0x8a3d77e9d6968b780564936d15B09805827C21fa

Polygon: https://app.uniswap.org/
$UCO contract address: 0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc

BSC: https://pancakeswap.finance/liquidity?chain=bscTestnet
$UCO contract address: 0xb001f1e7c8bda414ac7cf7ecba5469fe8d24b6de

Ensure that you connect your wallet to the respective DEX platform and follow the instructions to make the swap.

Issues management

What happens if a problem occurs, or I refuse a transaction during the transfer?

During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "Refund" button available on your Archethic Bridge application.

If I sent the tokens to a wrong Mainnet address, what to do?

You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1).

Can I help the developers analyze the problems?

You can help developers improve the application by submitting information that describes the state of the application. -To do this, you can copy/paste your transaction from your local history in the application.


- +To do this, you can copy/paste your transaction from your local history in the application.


+ \ No newline at end of file diff --git a/FAQ/bridge/index.html b/FAQ/bridge/index.html index cb949b28d..32079467a 100644 --- a/FAQ/bridge/index.html +++ b/FAQ/bridge/index.html @@ -4,7 +4,7 @@ Archethic Bridge $UCO one-way | Archethic - + @@ -15,8 +15,8 @@ MATIC has the lowest fees.

bridge-blockchains

Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?

Archethic’s bridge leverages Atomic Swap, which is a way to bring safely assets between chains.

By using the bridge, you will create contract on ETH/BSC/MATIC and transfer your UCO in there. This contract is called “Hashed Time-locked contract” where the funds will be locked until the reveal of a secret or after lock time.

Once done, the same will be done on Archethic side. The two chains are now ready to transfer assets. The transfer itself consists of revealing the private part of the secret encoded in the contracts, to allow the exchange.

Once the secret is revealed in one chain, the second can proceed to the reveal, as the secret is now public. Atomic swap provides secure transfers between chains as there is no pool holding all the assets but hard-coding of recipients and rules in a one-time contract.

What types of assets can be moved across the crypto bridge on the Archethic blockchain?

Only UCOs can be “bridged”.

What are the fees associated with using the crypto bridge on the Archethic blockchain?

You would have to pay the fees on ETH/BSC/MATIC to transfers your UCO and proceed to the transfer. -However, you won’t have to pay the fees on Archethic, which is the purpose of the bridge: to get funds on the Archethic’s network.

I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?

On the wallet app, from the version 2.0.8, the network is displayed in the main menu (click on the burger icon to access to the main menu).

Metamask

Will the Archethic Network be available on Metamask?

No, Archethic blockchain is not Ethereum Virtual Machine (EVM) compatible.

How can I add a network on Metamask?

Here is a link giving a tutorial to add a custom network RPC on Metamask : https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC

How to install Metamask?

Here is a link giving a tutorial to install Metamask : https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet

Issues management

What happens if a problem occurs, or I refuse a transaction during the transfer?

During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "REFUND" button available on your Archethic Bridge application.

If I sent the tokens to a wrong Mainnet address, what to do?

You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1).

What if I want to reset the process?

The bridge will only allow one transfer at a time. If you have started a transfer, you must complete it before you can start a new one.

In some cases, a transfer in progress can be resumed at a later stage, for example if you have declined a transaction in your wallet or closed your browser.

If you don't want to continue the current transfer, you can use the 'clear local storage' option to reset the transfer tool and start a new transfer.

Warning: If you clear your local memory, the funds associated with the unfinished transfer will be lost.

Can I help the developers analyze the problems?

You can help developers improve the application by submitting information that describes the state of the application.

To do this, you can export your local storage with the option available on the interface.

Dev

How can developers use Archethic bridge to create new decentralized applications?

Developers can use blockchain bridges to create new decentralized applications by connecting different blockchain networks to enable the movement of assets, data, and information across them.

This allows for the creation of interoperable DApps that can utilize the features and capabilities of multiple blockchain networks.

Developers can use smart contract or atomic swap technology to facilitate the transfer of assets across different networks, and can also use cross-chain data oracles to access off-chain data on different networks.

I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?

The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don’t forget the 24 words) and create/import a wallet on the Testnet network.

- +However, you won’t have to pay the fees on Archethic, which is the purpose of the bridge: to get funds on the Archethic’s network.

I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?

On the wallet app, from the version 2.0.8, the network is displayed in the main menu (click on the burger icon to access to the main menu).

Metamask

Will the Archethic Network be available on Metamask?

No, Archethic blockchain is not Ethereum Virtual Machine (EVM) compatible.

How can I add a network on Metamask?

Here is a link giving a tutorial to add a custom network RPC on Metamask : https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC

How to install Metamask?

Here is a link giving a tutorial to install Metamask : https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet

Issues management

What happens if a problem occurs, or I refuse a transaction during the transfer?

During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "REFUND" button available on your Archethic Bridge application.

If I sent the tokens to a wrong Mainnet address, what to do?

You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1).

What if I want to reset the process?

The bridge will only allow one transfer at a time. If you have started a transfer, you must complete it before you can start a new one.

In some cases, a transfer in progress can be resumed at a later stage, for example if you have declined a transaction in your wallet or closed your browser.

If you don't want to continue the current transfer, you can use the 'clear local storage' option to reset the transfer tool and start a new transfer.

Warning: If you clear your local memory, the funds associated with the unfinished transfer will be lost.

Can I help the developers analyze the problems?

You can help developers improve the application by submitting information that describes the state of the application.

To do this, you can export your local storage with the option available on the interface.

Dev

How can developers use Archethic bridge to create new decentralized applications?

Developers can use blockchain bridges to create new decentralized applications by connecting different blockchain networks to enable the movement of assets, data, and information across them.

This allows for the creation of interoperable DApps that can utilize the features and capabilities of multiple blockchain networks.

Developers can use smart contract or atomic swap technology to facilitate the transfer of assets across different networks, and can also use cross-chain data oracles to access off-chain data on different networks.

I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?

The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don’t forget the 24 words) and create/import a wallet on the Testnet network.

+ \ No newline at end of file diff --git a/FAQ/wallet/index.html b/FAQ/wallet/index.html index af061f1ec..08a61d5d8 100644 --- a/FAQ/wallet/index.html +++ b/FAQ/wallet/index.html @@ -4,7 +4,7 @@ Wallet | Archethic - + @@ -21,8 +21,8 @@ 6) After reading the information, click on "I understand".
7) The 24 words of your secret phrase will be displayed.

caution

Do not share them with anyone and write them down so you can confirm them on the following screen.

8) Confirmation requires that the words be put back in order.
9) Once the process of confirming the order of the words in the secret phrase is done, you can select the means to protect your application (PIN code, password, biometrics, YubiKey).
-10) After a few seconds of waiting, your keychain is created with your first account.

You can now enjoy the Archethic ecosystem. Enjoy!

How to create a fungible token on the Archethic Wallet?

1) Open your Archethic Wallet and click on tokens in the main tab.

2) Click on create token.

3) Insert all the information:

And click on "Create Token".

4) Confirm the transaction.

You have successfully created your Token!

How to create a NFT on the Archethic Wallet?

1) Click on 'NFT' at the bottom right of the application.

2) Choose a category

3) Click on create a NFT

4) Insert all the information:

5) Import your NFT

6) Go to summary and click on "Create the NFT", confirm the mint

You have successfully created an NFT and can locate it in the category you selected during step 2.

- +10) After a few seconds of waiting, your keychain is created with your first account.

You can now enjoy the Archethic ecosystem. Enjoy!

How to create a fungible token on the Archethic Wallet?

1) Open your Archethic Wallet and click on tokens in the main tab.

2) Click on create token.

3) Insert all the information:

And click on "Create Token".

4) Confirm the transaction.

You have successfully created your Token!

How to create a NFT on the Archethic Wallet?

1) Click on 'NFT' at the bottom right of the application.

2) Choose a category

3) Click on create a NFT

4) Insert all the information:

5) Import your NFT

6) Go to summary and click on "Create the NFT", confirm the mint

You have successfully created an NFT and can locate it in the category you selected during step 2.

+ \ No newline at end of file diff --git a/assets/js/009f927a.2bb2ef0c.js b/assets/js/009f927a.f940b2b7.js similarity index 99% rename from assets/js/009f927a.2bb2ef0c.js rename to assets/js/009f927a.f940b2b7.js index 6d2e3ec7a..d61d1af93 100644 --- a/assets/js/009f927a.2bb2ef0c.js +++ b/assets/js/009f927a.f940b2b7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7265],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,f=p["".concat(l,".").concat(h)]||p[h]||u[h]||o;return n?i.createElement(f,r(r({ref:t},d),{},{components:n})):i.createElement(f,r({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"replication-attestation",title:"Replication attestation"},r=void 0,s={unversionedId:"learn/sharding/replication-attestation",id:"learn/sharding/replication-attestation",title:"Replication attestation",description:"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.",source:"@site/docs/learn/sharding/replication-attestation.md",sourceDirName:"learn/sharding",slug:"/learn/sharding/replication-attestation",permalink:"/learn/sharding/replication-attestation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"replication-attestation",title:"Replication attestation"},sidebar:"docs",previous:{title:"Beacon Explorer",permalink:"/learn/sharding/beacon-chain/explorer"},next:{title:"Tokens",permalink:"/learn/token"}},l={},c=[{value:"Heuristic solution",id:"heuristic-solution",level:2},{value:"Nested replications",id:"nested-replications",level:3},{value:"Client notifications",id:"client-notifications",level:3},{value:"Further improvements",id:"further-improvements",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.\nIf we are not providing this kind of mechanism, we can end up into a network split / mismatch where shards and beacon aren't cross linked.\nAlso we do not want to overload the beacon chain by broadcasting it with hundred of messages for a single transaction summary."),(0,a.kt)("h2",{id:"heuristic-solution"},"Heuristic solution"),(0,a.kt)("p",null,"Each validation node will notify the replications nodes in charge, and wait their confirmations to attest the validity\nand the availability of the transaction in the shard before notifying the beacon chain and the welcome node."),(0,a.kt)("p",null,"In 1st approx, a single notification from the validation nodes is sufficient to ensure the availability. This attestation will contain a list of signatures,\nfrom the replication nodes, to status about their commitment to store the transaction.\nHowever, further attestations and confirmations can be checked later during the time, to provide more security."),(0,a.kt)("p",null,"For example, a beacon chain receiving 1 attestation from a validation node including X storage confirmations\nwill be valid as 3 attestations with their respective confirmations."),(0,a.kt)("h3",{id:"nested-replications"},"Nested replications"),(0,a.kt)("p",null,"Moreover, when we are dealing with recipients for transfer or smart contract calls, we want to support the recipients shards will be notified\nonly when the main transaction is validated and stored.\nSo for example, the replication can be splitted by levels: ","[ Main Chain ]"," -> ","[ Recipient Chains]"),(0,a.kt)("p",null,"Then the welcome node will be notified by a validation node with a given number of replica confirmations."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," V1\n / | \\\nChain: S1 S2 S3\n / | \\\n Recipient Shards\n")),(0,a.kt)("h3",{id:"client-notifications"},"Client notifications"),(0,a.kt)("p",null,"When a transaction is submitted, the welcome node will transfer this transaction to the validation nodes and return a pending status to the client.\nThe client would have to subscribe to notifications about the completion of the transaction.\nOnce the transaction will be validated and the validation nodes by notifing the welcome will notify the clients asynchronously."),(0,a.kt)("h2",{id:"further-improvements"},"Further improvements"),(0,a.kt)("p",null,"To reduce the overall size of the attestations and confirmations we can support signature aggregation or cosigning to embed a single transaction with a bitfield\nto indicate which nodes signed the transaction replication, which will be signed over by a validation node."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7265],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=a,f=p["".concat(l,".").concat(h)]||p[h]||u[h]||o;return n?i.createElement(f,r(r({ref:t},d),{},{components:n})):i.createElement(f,r({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"replication-attestation",title:"Replication attestation"},r=void 0,s={unversionedId:"learn/sharding/replication-attestation",id:"learn/sharding/replication-attestation",title:"Replication attestation",description:"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.",source:"@site/docs/learn/sharding/replication-attestation.md",sourceDirName:"learn/sharding",slug:"/learn/sharding/replication-attestation",permalink:"/learn/sharding/replication-attestation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"replication-attestation",title:"Replication attestation"},sidebar:"docs",previous:{title:"Beacon Explorer",permalink:"/learn/sharding/beacon-chain/explorer"},next:{title:"Tokens",permalink:"/learn/token"}},l={},c=[{value:"Heuristic solution",id:"heuristic-solution",level:2},{value:"Nested replications",id:"nested-replications",level:3},{value:"Client notifications",id:"client-notifications",level:3},{value:"Further improvements",id:"further-improvements",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.\nIf we are not providing this kind of mechanism, we can end up into a network split / mismatch where shards and beacon aren't cross linked.\nAlso we do not want to overload the beacon chain by broadcasting it with hundred of messages for a single transaction summary."),(0,a.kt)("h2",{id:"heuristic-solution"},"Heuristic solution"),(0,a.kt)("p",null,"Each validation node will notify the replications nodes in charge, and wait their confirmations to attest the validity\nand the availability of the transaction in the shard before notifying the beacon chain and the welcome node."),(0,a.kt)("p",null,"In 1st approx, a single notification from the validation nodes is sufficient to ensure the availability. This attestation will contain a list of signatures,\nfrom the replication nodes, to status about their commitment to store the transaction.\nHowever, further attestations and confirmations can be checked later during the time, to provide more security."),(0,a.kt)("p",null,"For example, a beacon chain receiving 1 attestation from a validation node including X storage confirmations\nwill be valid as 3 attestations with their respective confirmations."),(0,a.kt)("h3",{id:"nested-replications"},"Nested replications"),(0,a.kt)("p",null,"Moreover, when we are dealing with recipients for transfer or smart contract calls, we want to support the recipients shards will be notified\nonly when the main transaction is validated and stored.\nSo for example, the replication can be splitted by levels: ","[ Main Chain ]"," -> ","[ Recipient Chains]"),(0,a.kt)("p",null,"Then the welcome node will be notified by a validation node with a given number of replica confirmations."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," V1\n / | \\\nChain: S1 S2 S3\n / | \\\n Recipient Shards\n")),(0,a.kt)("h3",{id:"client-notifications"},"Client notifications"),(0,a.kt)("p",null,"When a transaction is submitted, the welcome node will transfer this transaction to the validation nodes and return a pending status to the client.\nThe client would have to subscribe to notifications about the completion of the transaction.\nOnce the transaction will be validated and the validation nodes by notifing the welcome will notify the clients asynchronously."),(0,a.kt)("h2",{id:"further-improvements"},"Further improvements"),(0,a.kt)("p",null,"To reduce the overall size of the attestations and confirmations we can support signature aggregation or cosigning to embed a single transaction with a bitfield\nto indicate which nodes signed the transaction replication, which will be signed over by a validation node."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/0126df03.fe45d3af.js b/assets/js/0126df03.ab689ac9.js similarity index 98% rename from assets/js/0126df03.fe45d3af.js rename to assets/js/0126df03.ab689ac9.js index 0600d710c..516c042e0 100644 --- a/assets/js/0126df03.fe45d3af.js +++ b/assets/js/0126df03.ab689ac9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5295],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=n,b=p["".concat(i,".").concat(u)]||p[u]||m[u]||l;return a?r.createElement(b,c(c({ref:t},d),{},{components:a})):r.createElement(b,c({ref:t},d))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,c=new Array(l);c[0]=u;var o={};for(var i in t)hasOwnProperty.call(t,i)&&(o[i]=t[i]);o.originalType=e,o[p]="string"==typeof e?e:n,c[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>d});var r=a(7462),n=a(7294),l=a(3905);a(8209);const c={id:"oracle-data",title:"OracleData",hide_table_of_contents:!1},o=void 0,i={unversionedId:"build/api/schema/objects/oracle-data",id:"build/api/schema/objects/oracle-data",title:"OracleData",description:"[OracleData] represents an oracle data.",source:"@site/docs/build/api/schema/objects/oracle-data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/oracle-data",permalink:"/build/api/schema/objects/oracle-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-data",title:"OracleData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Node",permalink:"/build/api/schema/objects/node"},next:{title:"OracleServices",permalink:"/build/api/schema/objects/oracle-services"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'OracleData.servicesOracleServices ',id:"code-style-fontweight-normal-oracledatabservicesbcodeoracleservices-",level:4},{value:'OracleData.timestampTimestamp ',id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[OracleData]"," represents an oracle data."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type OracleData {\n services: OracleServices\n timestamp: Timestamp\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabservicesbcodeoracleservices-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"OracleData.",(0,l.kt)("b",null,"services"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-services"},(0,l.kt)("inlineCode",{parentName:"a"},"OracleServices"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"OracleData.",(0,l.kt)("b",null,"timestamp"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,l.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,l.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/oracle-data"},(0,l.kt)("inlineCode",{parentName:"a"},"oracleData"))," ",(0,l.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/oracle-update"},(0,l.kt)("inlineCode",{parentName:"a"},"oracleUpdate"))," ",(0,l.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5295],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=n,b=p["".concat(i,".").concat(u)]||p[u]||m[u]||l;return a?r.createElement(b,c(c({ref:t},d),{},{components:a})):r.createElement(b,c({ref:t},d))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,c=new Array(l);c[0]=u;var o={};for(var i in t)hasOwnProperty.call(t,i)&&(o[i]=t[i]);o.originalType=e,o[p]="string"==typeof e?e:n,c[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>d});var r=a(7462),n=a(7294),l=a(3905);a(8209);const c={id:"oracle-data",title:"OracleData",hide_table_of_contents:!1},o=void 0,i={unversionedId:"build/api/schema/objects/oracle-data",id:"build/api/schema/objects/oracle-data",title:"OracleData",description:"[OracleData] represents an oracle data.",source:"@site/docs/build/api/schema/objects/oracle-data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/oracle-data",permalink:"/build/api/schema/objects/oracle-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-data",title:"OracleData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Node",permalink:"/build/api/schema/objects/node"},next:{title:"OracleServices",permalink:"/build/api/schema/objects/oracle-services"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'OracleData.servicesOracleServices ',id:"code-style-fontweight-normal-oracledatabservicesbcodeoracleservices-",level:4},{value:'OracleData.timestampTimestamp ',id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[OracleData]"," represents an oracle data."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type OracleData {\n services: OracleServices\n timestamp: Timestamp\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabservicesbcodeoracleservices-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"OracleData.",(0,l.kt)("b",null,"services"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-services"},(0,l.kt)("inlineCode",{parentName:"a"},"OracleServices"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"OracleData.",(0,l.kt)("b",null,"timestamp"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,l.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,l.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/oracle-data"},(0,l.kt)("inlineCode",{parentName:"a"},"oracleData"))," ",(0,l.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/oracle-update"},(0,l.kt)("inlineCode",{parentName:"a"},"oracleUpdate"))," ",(0,l.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/02486155.b22e57c2.js b/assets/js/02486155.96eac468.js similarity index 97% rename from assets/js/02486155.b22e57c2.js rename to assets/js/02486155.96eac468.js index 65d9e1ecf..f09b1b69e 100644 --- a/assets/js/02486155.b22e57c2.js +++ b/assets/js/02486155.96eac468.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6716],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),s=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),u=s(a),d=r,y=u["".concat(l,".").concat(d)]||u[d]||p[d]||o;return a?n.createElement(y,i(i({ref:t},m),{},{components:a})):n.createElement(y,i({ref:t},m))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:r,i[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>d,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>m});var n=a(7462),r=a(7294),o=a(3905);a(8209);const i={id:"beacon-chain-summary",title:"beaconChainSummary",hide_table_of_contents:!1},c=void 0,l={unversionedId:"build/api/schema/queries/beacon-chain-summary",id:"build/api/schema/queries/beacon-chain-summary",title:"beaconChainSummary",description:"Query the network to get the value of the summary of beacon chain at a specific time or the last value",source:"@site/docs/build/api/schema/queries/beacon-chain-summary.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/beacon-chain-summary",permalink:"/build/api/schema/queries/beacon-chain-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"beacon-chain-summary",title:"beaconChainSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"balance",permalink:"/build/api/schema/queries/balance"},next:{title:"genesisAddress",permalink:"/build/api/schema/queries/genesis-address"}},s={},m=[{value:"Arguments",id:"arguments",level:3},{value:'beaconChainSummary.timestampTimestamp ',id:"code-style-fontweight-normal-beaconchainsummarybtimestampbcodetimestamp-",level:4},{value:"Type",id:"type",level:3},{value:'BeaconChainSummary ',id:"beaconchainsummary-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),d=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:u,SpecifiedBy:p,Badge:d},b="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to get the value of the summary of beacon chain at a specific time or the last value"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"beaconChainSummary(\n timestamp: Timestamp\n): BeaconChainSummary\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybtimestampbcodetimestamp-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"beaconChainSummary.",(0,o.kt)("b",null,"timestamp"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,o.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,o.kt)(d,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"beaconchainsummary-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/beacon-chain-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,o.kt)(d,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Beacon Chain Summary]"," represents the beacon chain aggregate for a certain date")))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6716],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),s=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),u=s(a),d=r,y=u["".concat(l,".").concat(d)]||u[d]||p[d]||o;return a?n.createElement(y,i(i({ref:t},m),{},{components:a})):n.createElement(y,i({ref:t},m))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:r,i[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>d,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>m});var n=a(7462),r=a(7294),o=a(3905);a(8209);const i={id:"beacon-chain-summary",title:"beaconChainSummary",hide_table_of_contents:!1},c=void 0,l={unversionedId:"build/api/schema/queries/beacon-chain-summary",id:"build/api/schema/queries/beacon-chain-summary",title:"beaconChainSummary",description:"Query the network to get the value of the summary of beacon chain at a specific time or the last value",source:"@site/docs/build/api/schema/queries/beacon-chain-summary.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/beacon-chain-summary",permalink:"/build/api/schema/queries/beacon-chain-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"beacon-chain-summary",title:"beaconChainSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"balance",permalink:"/build/api/schema/queries/balance"},next:{title:"genesisAddress",permalink:"/build/api/schema/queries/genesis-address"}},s={},m=[{value:"Arguments",id:"arguments",level:3},{value:'beaconChainSummary.timestampTimestamp ',id:"code-style-fontweight-normal-beaconchainsummarybtimestampbcodetimestamp-",level:4},{value:"Type",id:"type",level:3},{value:'BeaconChainSummary ',id:"beaconchainsummary-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),d=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:u,SpecifiedBy:p,Badge:d},b="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to get the value of the summary of beacon chain at a specific time or the last value"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"beaconChainSummary(\n timestamp: Timestamp\n): BeaconChainSummary\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybtimestampbcodetimestamp-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"beaconChainSummary.",(0,o.kt)("b",null,"timestamp"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,o.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,o.kt)(d,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"beaconchainsummary-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/beacon-chain-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,o.kt)(d,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Beacon Chain Summary]"," represents the beacon chain aggregate for a certain date")))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/05fd4dd8.67c8c821.js b/assets/js/05fd4dd8.97ef881f.js similarity index 97% rename from assets/js/05fd4dd8.67c8c821.js rename to assets/js/05fd4dd8.97ef881f.js index 4f6af97f2..e4163e186 100644 --- a/assets/js/05fd4dd8.67c8c821.js +++ b/assets/js/05fd4dd8.97ef881f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9174],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>f});var o=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function a(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var l=o.createContext({}),c=function(t){var e=o.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):a(a({},e),t)),n},p=function(t){var e=c(t.components);return o.createElement(l.Provider,{value:e},t.children)},d="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},b=o.forwardRef((function(t,e){var n=t.components,r=t.mdxType,i=t.originalType,l=t.parentName,p=s(t,["components","mdxType","originalType","parentName"]),d=c(n),b=r,f=d["".concat(l,".").concat(b)]||d[b]||u[b]||i;return n?o.createElement(f,a(a({ref:e},p),{},{components:n})):o.createElement(f,a({ref:e},p))}));function f(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=n.length,a=new Array(i);a[0]=b;var s={};for(var l in e)hasOwnProperty.call(e,l)&&(s[l]=e[l]);s.originalType=t,s[d]="string"==typeof t?t:r,a[1]=s;for(var c=2;c{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"bootstrap",title:"Bootstrap"},a=void 0,s={unversionedId:"build/core/bootstrap",id:"build/core/bootstrap",title:"Bootstrap",description:"When the Archethic node, a task is launched to perform the node bootstrapping to join the network.",source:"@site/docs/build/core/bootstrap.md",sourceDirName:"build/core",slug:"/build/core/bootstrap",permalink:"/build/core/bootstrap",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"bootstrap",title:"Bootstrap"},sidebar:"docs",previous:{title:"P2P availability sampling",permalink:"/build/core/beacon-chain/p2p-sampling"},next:{title:"Cryptography",permalink:"/build/core/cryptography/"}},l={},c=[{value:"Network initizialiation",id:"network-initizialiation",level:2},{value:"First node bootstrapping",id:"first-node-bootstrapping",level:2},{value:"Next time bootstraps",id:"next-time-bootstraps",level:2}],p={toc:c},d="wrapper";function u(t){let{components:e,...n}=t;return(0,r.kt)(d,(0,o.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"When the Archethic node, a task is launched to perform the node bootstrapping to join the network."),(0,r.kt)("p",null,"To be able to bootstrap a node, we gather connectivity information (IP, Port, Transport, Reward address, Bootstrapping seeds) and also last synchronization date."),(0,r.kt)("p",null,"But a flow is determine to define what is the state of the bootstrap: network initialization, first bootstrap, next bootstrap"),(0,r.kt)("mermaid",{value:"graph TD\n A[Start] --\x3e B{Need to bootstrap ?}\n B --\x3e|Yes| Bootstrap \n B --\x3e|No| End\n Bootstrap --\x3e C{Need to initialize network?}\n C --\x3e|Yes| D(Initialize network)\n C --\x3e|No| E{New node public key ?}\n E --\x3e|Yes| F(New node transaction update)\n E --\x3e|Yes| G(First node transaction)"}),(0,r.kt)("h2",{id:"network-initizialiation"},"Network initizialiation"),(0,r.kt)("p",null,"The first node joining the network will be in charge to initialize the network by defining few transaction chains:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create first node shared secrets transaction chain with initial dailly nonce"),(0,r.kt)("li",{parentName:"ul"},"Create genesis wallets according to the allocation from the UCO token distribution ")),(0,r.kt)("h2",{id:"first-node-bootstrapping"},"First node bootstrapping"),(0,r.kt)("p",null,"During the first initialization, a node will contact P2P bootstrapping seeds (anchor nodes) to be able to fetch existing nodes."),(0,r.kt)("p",null,"Next a node will create transaction to publish its connectivity and crypto information which will authorize or not new joining node."),(0,r.kt)("p",null,"Once a node is authorized, after the success of this transaction, it can decrypt/load the storage nonce (will be used for self-repair) and start the self-repair initial cycle to sync transactions."),(0,r.kt)("h2",{id:"next-time-bootstraps"},"Next time bootstraps"),(0,r.kt)("p",null,"For further bootstraps, the bootstrap tasks determine if an update is required based on connectivity/crypto information changes, then a transaction is emitted to the node chain."),(0,r.kt)("p",null,"Once validated, the self-repair is also triggered to resync missed transactions."))}u.isMDXComponent=!0},8209:(t,e,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9174],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>f});var o=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function a(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var l=o.createContext({}),c=function(t){var e=o.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):a(a({},e),t)),n},p=function(t){var e=c(t.components);return o.createElement(l.Provider,{value:e},t.children)},d="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},b=o.forwardRef((function(t,e){var n=t.components,r=t.mdxType,i=t.originalType,l=t.parentName,p=s(t,["components","mdxType","originalType","parentName"]),d=c(n),b=r,f=d["".concat(l,".").concat(b)]||d[b]||u[b]||i;return n?o.createElement(f,a(a({ref:e},p),{},{components:n})):o.createElement(f,a({ref:e},p))}));function f(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=n.length,a=new Array(i);a[0]=b;var s={};for(var l in e)hasOwnProperty.call(e,l)&&(s[l]=e[l]);s.originalType=t,s[d]="string"==typeof t?t:r,a[1]=s;for(var c=2;c{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"bootstrap",title:"Bootstrap"},a=void 0,s={unversionedId:"build/core/bootstrap",id:"build/core/bootstrap",title:"Bootstrap",description:"When the Archethic node, a task is launched to perform the node bootstrapping to join the network.",source:"@site/docs/build/core/bootstrap.md",sourceDirName:"build/core",slug:"/build/core/bootstrap",permalink:"/build/core/bootstrap",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"bootstrap",title:"Bootstrap"},sidebar:"docs",previous:{title:"P2P availability sampling",permalink:"/build/core/beacon-chain/p2p-sampling"},next:{title:"Cryptography",permalink:"/build/core/cryptography/"}},l={},c=[{value:"Network initizialiation",id:"network-initizialiation",level:2},{value:"First node bootstrapping",id:"first-node-bootstrapping",level:2},{value:"Next time bootstraps",id:"next-time-bootstraps",level:2}],p={toc:c},d="wrapper";function u(t){let{components:e,...n}=t;return(0,r.kt)(d,(0,o.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"When the Archethic node, a task is launched to perform the node bootstrapping to join the network."),(0,r.kt)("p",null,"To be able to bootstrap a node, we gather connectivity information (IP, Port, Transport, Reward address, Bootstrapping seeds) and also last synchronization date."),(0,r.kt)("p",null,"But a flow is determine to define what is the state of the bootstrap: network initialization, first bootstrap, next bootstrap"),(0,r.kt)("mermaid",{value:"graph TD\n A[Start] --\x3e B{Need to bootstrap ?}\n B --\x3e|Yes| Bootstrap \n B --\x3e|No| End\n Bootstrap --\x3e C{Need to initialize network?}\n C --\x3e|Yes| D(Initialize network)\n C --\x3e|No| E{New node public key ?}\n E --\x3e|Yes| F(New node transaction update)\n E --\x3e|Yes| G(First node transaction)"}),(0,r.kt)("h2",{id:"network-initizialiation"},"Network initizialiation"),(0,r.kt)("p",null,"The first node joining the network will be in charge to initialize the network by defining few transaction chains:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create first node shared secrets transaction chain with initial dailly nonce"),(0,r.kt)("li",{parentName:"ul"},"Create genesis wallets according to the allocation from the UCO token distribution ")),(0,r.kt)("h2",{id:"first-node-bootstrapping"},"First node bootstrapping"),(0,r.kt)("p",null,"During the first initialization, a node will contact P2P bootstrapping seeds (anchor nodes) to be able to fetch existing nodes."),(0,r.kt)("p",null,"Next a node will create transaction to publish its connectivity and crypto information which will authorize or not new joining node."),(0,r.kt)("p",null,"Once a node is authorized, after the success of this transaction, it can decrypt/load the storage nonce (will be used for self-repair) and start the self-repair initial cycle to sync transactions."),(0,r.kt)("h2",{id:"next-time-bootstraps"},"Next time bootstraps"),(0,r.kt)("p",null,"For further bootstraps, the bootstrap tasks determine if an update is required based on connectivity/crypto information changes, then a transaction is emitted to the node chain."),(0,r.kt)("p",null,"Once validated, the self-repair is also triggered to resync missed transactions."))}u.isMDXComponent=!0},8209:(t,e,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/0607e0c5.31171ab2.js b/assets/js/0607e0c5.e7409be4.js similarity index 99% rename from assets/js/0607e0c5.31171ab2.js rename to assets/js/0607e0c5.e7409be4.js index db2b1faf1..9cf6e3a23 100644 --- a/assets/js/0607e0c5.31171ab2.js +++ b/assets/js/0607e0c5.e7409be4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6894],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||a;return n?r.createElement(b,l(l({ref:t},d),{},{components:n})):r.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:o,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var r=n(7462),o=n(7294),a=n(3905);n(8209);const l={id:"version",title:"Version",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/version",id:"build/api/schema/objects/version",title:"Version",description:"[Version] represents code, transaction and protocol version",source:"@site/docs/build/api/schema/objects/version.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/version",permalink:"/build/api/schema/objects/version",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"version",title:"Version",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"ValidationStamp",permalink:"/build/api/schema/objects/validation-stamp"},next:{title:"balance",permalink:"/build/api/schema/queries/balance"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Version.codeString ',id:"code-style-fontweight-normal-versionbcodebcodestring-",level:4},{value:'Version.protocolString ',id:"code-style-fontweight-normal-versionbprotocolbcodestring-",level:4},{value:'Version.transactionString ',id:"code-style-fontweight-normal-versionbtransactionbcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(f,(0,r.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"[Version]"," represents code, transaction and protocol version"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Version {\n code: String\n protocol: String\n transaction: String\n}\n")),(0,a.kt)("h3",{id:"fields"},"Fields"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbcodebcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"code"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbprotocolbcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"protocol"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbtransactionbcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"transaction"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h3",{id:"returned-by"},"Returned by"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/queries/version"},(0,a.kt)("inlineCode",{parentName:"a"},"version"))," ",(0,a.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6894],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||a;return n?r.createElement(b,l(l({ref:t},d),{},{components:n})):r.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:o,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var r=n(7462),o=n(7294),a=n(3905);n(8209);const l={id:"version",title:"Version",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/version",id:"build/api/schema/objects/version",title:"Version",description:"[Version] represents code, transaction and protocol version",source:"@site/docs/build/api/schema/objects/version.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/version",permalink:"/build/api/schema/objects/version",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"version",title:"Version",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"ValidationStamp",permalink:"/build/api/schema/objects/validation-stamp"},next:{title:"balance",permalink:"/build/api/schema/queries/balance"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Version.codeString ',id:"code-style-fontweight-normal-versionbcodebcodestring-",level:4},{value:'Version.protocolString ',id:"code-style-fontweight-normal-versionbprotocolbcodestring-",level:4},{value:'Version.transactionString ',id:"code-style-fontweight-normal-versionbtransactionbcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(f,(0,r.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"[Version]"," represents code, transaction and protocol version"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Version {\n code: String\n protocol: String\n transaction: String\n}\n")),(0,a.kt)("h3",{id:"fields"},"Fields"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbcodebcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"code"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbprotocolbcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"protocol"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-versionbtransactionbcodestring-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Version.",(0,a.kt)("b",null,"transaction"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,a.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,a.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h3",{id:"returned-by"},"Returned by"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/queries/version"},(0,a.kt)("inlineCode",{parentName:"a"},"version"))," ",(0,a.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/0666b85a.37d4ad68.js b/assets/js/0666b85a.dcbfe9e3.js similarity index 97% rename from assets/js/0666b85a.37d4ad68.js rename to assets/js/0666b85a.dcbfe9e3.js index 3d730a5c0..d65572f1d 100644 --- a/assets/js/0666b85a.37d4ad68.js +++ b/assets/js/0666b85a.dcbfe9e3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3633],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||l;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));n(8209);const l={id:"testnet",title:"Testnet"},o=void 0,i={unversionedId:"build/testnet",id:"build/testnet",title:"Testnet",description:"Local",source:"@site/docs/build/testnet.md",sourceDirName:"build",slug:"/build/testnet",permalink:"/build/testnet",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"testnet",title:"Testnet"},sidebar:"docs",previous:{title:"Fees",permalink:"/build/smart-contracts/fees"},next:{title:"FAQ",permalink:"/category/faq"}},s={},p=[{value:"Local",id:"local",level:2},{value:"Installation",id:"installation",level:3},{value:"Get some funds",id:"get-some-funds",level:3},{value:"Public",id:"public",level:2},{value:"Get some funds",id:"get-some-funds-1",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"local"},"Local"),(0,a.kt)("p",null,"To test and build on top of Archethic network, we encourage people to test with a local instance."),(0,a.kt)("h3",{id:"installation"},"Installation"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Clone the repository: ")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"git clone https://github.com/archethic-foundation/archethic-node.git\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Setup the dev environment:"),(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://elixir-lang.org/install.html"},"Install Elixir")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://nodejs.org/en/download/"},"Install NodeJS")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://gmplib.org"},"Install GMP")))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Fetch the dependencies"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"mix deps.get\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Build web assets")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cd assets ; npm install; cd -\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Start instance")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"iex -S mix\n")),(0,a.kt)("h3",{id:"get-some-funds"},"Get some funds"),(0,a.kt)("p",null,"To be able to fund some addresses, the development mode of the running enable the testnet faucet."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Funding"),(0,a.kt)("p",{parentName:"li"},"Browse to the http://localhost:4000/faucet and enter any address to send funds to. "),(0,a.kt)("p",{parentName:"li"},"It should transfer 100 UCO to the given address.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Check the balance"),(0,a.kt)("p",{parentName:"li"},"Go to http://localhost:4000/explorer/transaction/{TYPE_YOUR_ADDRESS_IN_HEXADECIMAL}"),(0,a.kt)("p",{parentName:"li"},'It should display 100 unspent outputs (in the "Ledger inputs" section)'))),(0,a.kt)("h2",{id:"public"},"Public"),(0,a.kt)("p",null,"Public testnet is available at ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net"},"https://testnet.archethic.net")),(0,a.kt)("h3",{id:"get-some-funds-1"},"Get some funds"),(0,a.kt)("p",null,"You can then go the ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," to get free UCOs to experiment the Archethic network"))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3633],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||l;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));n(8209);const l={id:"testnet",title:"Testnet"},o=void 0,i={unversionedId:"build/testnet",id:"build/testnet",title:"Testnet",description:"Local",source:"@site/docs/build/testnet.md",sourceDirName:"build",slug:"/build/testnet",permalink:"/build/testnet",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"testnet",title:"Testnet"},sidebar:"docs",previous:{title:"Fees",permalink:"/build/smart-contracts/fees"},next:{title:"FAQ",permalink:"/category/faq"}},s={},p=[{value:"Local",id:"local",level:2},{value:"Installation",id:"installation",level:3},{value:"Get some funds",id:"get-some-funds",level:3},{value:"Public",id:"public",level:2},{value:"Get some funds",id:"get-some-funds-1",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"local"},"Local"),(0,a.kt)("p",null,"To test and build on top of Archethic network, we encourage people to test with a local instance."),(0,a.kt)("h3",{id:"installation"},"Installation"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Clone the repository: ")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"git clone https://github.com/archethic-foundation/archethic-node.git\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Setup the dev environment:"),(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://elixir-lang.org/install.html"},"Install Elixir")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://nodejs.org/en/download/"},"Install NodeJS")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://gmplib.org"},"Install GMP")))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Fetch the dependencies"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"mix deps.get\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Build web assets")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"cd assets ; npm install; cd -\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Start instance")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"iex -S mix\n")),(0,a.kt)("h3",{id:"get-some-funds"},"Get some funds"),(0,a.kt)("p",null,"To be able to fund some addresses, the development mode of the running enable the testnet faucet."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Funding"),(0,a.kt)("p",{parentName:"li"},"Browse to the http://localhost:4000/faucet and enter any address to send funds to. "),(0,a.kt)("p",{parentName:"li"},"It should transfer 100 UCO to the given address.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Check the balance"),(0,a.kt)("p",{parentName:"li"},"Go to http://localhost:4000/explorer/transaction/{TYPE_YOUR_ADDRESS_IN_HEXADECIMAL}"),(0,a.kt)("p",{parentName:"li"},'It should display 100 unspent outputs (in the "Ledger inputs" section)'))),(0,a.kt)("h2",{id:"public"},"Public"),(0,a.kt)("p",null,"Public testnet is available at ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net"},"https://testnet.archethic.net")),(0,a.kt)("h3",{id:"get-some-funds-1"},"Get some funds"),(0,a.kt)("p",null,"You can then go the ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," to get free UCOs to experiment the Archethic network"))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/07620fdf.e4f4f20b.js b/assets/js/07620fdf.ad9390af.js similarity index 98% rename from assets/js/07620fdf.e4f4f20b.js rename to assets/js/07620fdf.ad9390af.js index 69d7e11cc..078a3d121 100644 --- a/assets/js/07620fdf.e4f4f20b.js +++ b/assets/js/07620fdf.ad9390af.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3812],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),u=r,m=d["".concat(c,".").concat(u)]||d[u]||h[u]||i;return n?a.createElement(m,o(o({ref:t},p),{},{components:n})):a.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"cli",title:"AEWeb - CLI",sidebar_label:"CLI",sidebar_position:3},o="AEWeb CLI (Command-Line Interface)",s={unversionedId:"participate/aeweb/usage/cli",id:"participate/aeweb/usage/cli",title:"AEWeb - CLI",description:"Repository//github.com/archethic-foundation/aeweb-cli",source:"@site/docs/participate/aeweb/usage/cli.md",sourceDirName:"participate/aeweb/usage",slug:"/participate/aeweb/usage/cli",permalink:"/participate/aeweb/usage/cli",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"cli",title:"AEWeb - CLI",sidebar_label:"CLI",sidebar_position:3},sidebar:"docs",previous:{title:"Usage",permalink:"/category/usage"},next:{title:"AEWeb Front End",permalink:"/participate/aeweb/usage/aeweb-front"}},c={},l=[{value:"aeweb generate-address",id:"aeweb-generate-address",level:2},{value:"aeweb deploy",id:"aeweb-deploy",level:2}],p={toc:l},d="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"aeweb-cli-command-line-interface"},"AEWeb CLI (Command-Line Interface)"),(0,r.kt)("p",null,"Repository: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"https://github.com/archethic-foundation/aeweb-cli")),(0,r.kt)("p",null,"This tool, built with NodeJS, can be used to deploy files and websites to the Archethic blockchain.\nOnce installed, as instructed in the README, the ",(0,r.kt)("inlineCode",{parentName:"p"},"aeweb")," command is available."),(0,r.kt)("h2",{id:"aeweb-generate-address"},"aeweb generate-address"),(0,r.kt)("p",null,"This command is used to generate an address from a seed. "),(0,r.kt)("admonition",{title:"Use case",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You might use this on TestNet for example, to determine an address to use the ",(0,r.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," on.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ aeweb generate-address --seed myseedphrase --index 0\n00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065\n")),(0,r.kt)("h2",{id:"aeweb-deploy"},"aeweb deploy"),(0,r.kt)("p",null,"This command is used to deploy the content of a folder or a single file. It will create the ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb/how-it-works"},"transactions"),", estimate the fees and, after confirmation, will write the transactions on the network."),(0,r.kt)("p",null,"Parameters: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"seed")," The keychain seed, used to prove you are the owner of the transaction chain used to pay the fees"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"endpoint")," ",(0,r.kt)("a",{parentName:"li",href:"https://testnet.archethic.net"},"https://testnet.archethic.net")," | ",(0,r.kt)("a",{parentName:"li",href:"https://mainnet.archethic.net"},"https://mainnet.archethic.net")," | ",(0,r.kt)("a",{parentName:"li",href:"http://127.0.0.1:4000"},"http://127.0.0.1:4000")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"path")," The path of the folder/file to upload ")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"$ aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website\nConnecting to https://testnet.archethic.net \nCreating file structure and compress content...\nCreating transactions ...\nEstimating fees ...\nTotal Fee Requirement would be : 2.58933391 UCO ( $ 0.23 | \u20ac 0.22), for 3 transactions.\nDo you want to continue. (yes/no) yes\nSending 3 transactions...\nTransaction 1...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/000013c531...\n-----------\nTransaction 2...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000a78a35...\n-----------\nTransaction 3...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000f1126e...\n-----------\nWebsite is deployed at: https://testnet.archethic.net/api/web_hosting/00007d9167...\n")),(0,r.kt)("admonition",{title:"There Can Be Only One",type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"There can only be a single deployment per seed.")," Which makes it possible to update it by running the exact same command. The endpoint of your deployment will not change. "),(0,r.kt)("p",{parentName:"admonition"},"If you need to deploy another website, use another seed (and transfer funds to it via the Wallet app).")))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3812],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),u=r,m=d["".concat(c,".").concat(u)]||d[u]||h[u]||i;return n?a.createElement(m,o(o({ref:t},p),{},{components:n})):a.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"cli",title:"AEWeb - CLI",sidebar_label:"CLI",sidebar_position:3},o="AEWeb CLI (Command-Line Interface)",s={unversionedId:"participate/aeweb/usage/cli",id:"participate/aeweb/usage/cli",title:"AEWeb - CLI",description:"Repository//github.com/archethic-foundation/aeweb-cli",source:"@site/docs/participate/aeweb/usage/cli.md",sourceDirName:"participate/aeweb/usage",slug:"/participate/aeweb/usage/cli",permalink:"/participate/aeweb/usage/cli",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"cli",title:"AEWeb - CLI",sidebar_label:"CLI",sidebar_position:3},sidebar:"docs",previous:{title:"Usage",permalink:"/category/usage"},next:{title:"AEWeb Front End",permalink:"/participate/aeweb/usage/aeweb-front"}},c={},l=[{value:"aeweb generate-address",id:"aeweb-generate-address",level:2},{value:"aeweb deploy",id:"aeweb-deploy",level:2}],p={toc:l},d="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"aeweb-cli-command-line-interface"},"AEWeb CLI (Command-Line Interface)"),(0,r.kt)("p",null,"Repository: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"https://github.com/archethic-foundation/aeweb-cli")),(0,r.kt)("p",null,"This tool, built with NodeJS, can be used to deploy files and websites to the Archethic blockchain.\nOnce installed, as instructed in the README, the ",(0,r.kt)("inlineCode",{parentName:"p"},"aeweb")," command is available."),(0,r.kt)("h2",{id:"aeweb-generate-address"},"aeweb generate-address"),(0,r.kt)("p",null,"This command is used to generate an address from a seed. "),(0,r.kt)("admonition",{title:"Use case",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You might use this on TestNet for example, to determine an address to use the ",(0,r.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," on.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ aeweb generate-address --seed myseedphrase --index 0\n00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065\n")),(0,r.kt)("h2",{id:"aeweb-deploy"},"aeweb deploy"),(0,r.kt)("p",null,"This command is used to deploy the content of a folder or a single file. It will create the ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb/how-it-works"},"transactions"),", estimate the fees and, after confirmation, will write the transactions on the network."),(0,r.kt)("p",null,"Parameters: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"seed")," The keychain seed, used to prove you are the owner of the transaction chain used to pay the fees"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"endpoint")," ",(0,r.kt)("a",{parentName:"li",href:"https://testnet.archethic.net"},"https://testnet.archethic.net")," | ",(0,r.kt)("a",{parentName:"li",href:"https://mainnet.archethic.net"},"https://mainnet.archethic.net")," | ",(0,r.kt)("a",{parentName:"li",href:"http://127.0.0.1:4000"},"http://127.0.0.1:4000")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"path")," The path of the folder/file to upload ")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"$ aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website\nConnecting to https://testnet.archethic.net \nCreating file structure and compress content...\nCreating transactions ...\nEstimating fees ...\nTotal Fee Requirement would be : 2.58933391 UCO ( $ 0.23 | \u20ac 0.22), for 3 transactions.\nDo you want to continue. (yes/no) yes\nSending 3 transactions...\nTransaction 1...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/000013c531...\n-----------\nTransaction 2...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000a78a35...\n-----------\nTransaction 3...\nWaiting transaction validation...\nTransaction confirmed !\nSee transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000f1126e...\n-----------\nWebsite is deployed at: https://testnet.archethic.net/api/web_hosting/00007d9167...\n")),(0,r.kt)("admonition",{title:"There Can Be Only One",type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"There can only be a single deployment per seed.")," Which makes it possible to update it by running the exact same command. The endpoint of your deployment will not change. "),(0,r.kt)("p",{parentName:"admonition"},"If you need to deploy another website, use another seed (and transfer funds to it via the Wallet app).")))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/07f0fc78.ebd5c48d.js b/assets/js/07f0fc78.7199b2e7.js similarity index 98% rename from assets/js/07f0fc78.ebd5c48d.js rename to assets/js/07f0fc78.7199b2e7.js index 4d38a0e07..5635bf8fa 100644 --- a/assets/js/07f0fc78.ebd5c48d.js +++ b/assets/js/07f0fc78.7199b2e7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2491],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var o=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=o.createContext({}),d=function(e){var t=o.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=d(a),u=n,f=p["".concat(s,".").concat(u)]||p[u]||m[u]||r;return a?o.createElement(f,l(l({ref:t},c),{},{components:a})):o.createElement(f,l({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=u;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:n,l[1]=i;for(var d=2;d{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var o=a(7462),n=a(7294),r=a(3905);a(8209);const l={id:"validation-stamp",title:"ValidationStamp",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/validation-stamp",id:"build/api/schema/objects/validation-stamp",title:"ValidationStamp",description:"[ValidationStamp] represents the validation performs by the coordinator",source:"@site/docs/build/api/schema/objects/validation-stamp.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/validation-stamp",permalink:"/build/api/schema/objects/validation-stamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"validation-stamp",title:"ValidationStamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UnspentOutput",permalink:"/build/api/schema/objects/unspent-output"},next:{title:"Version",permalink:"/build/api/schema/objects/version"}},d={},c=[{value:"Fields",id:"fields",level:3},{value:'ValidationStamp.ledgerOperationsLedgerOperations ',id:"code-style-fontweight-normal-validationstampbledgeroperationsbcodeledgeroperations-",level:4},{value:'ValidationStamp.proofOfIntegrityHash ',id:"code-style-fontweight-normal-validationstampbproofofintegritybcodehash-",level:4},{value:'ValidationStamp.proofOfWorkPublicKey ',id:"code-style-fontweight-normal-validationstampbproofofworkbcodepublickey-",level:4},{value:'ValidationStamp.protocolVersionInt ',id:"code-style-fontweight-normal-validationstampbprotocolversionbcodeint-",level:4},{value:'ValidationStamp.signatureHex ',id:"code-style-fontweight-normal-validationstampbsignaturebcodehex-",level:4},{value:'ValidationStamp.timestampTimestamp ',id:"code-style-fontweight-normal-validationstampbtimestampbcodetimestamp-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,r.kt)(n.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,r.kt)(n.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(n.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:p,SpecifiedBy:m,Badge:u},b="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(b,(0,o.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[ValidationStamp]"," represents the validation performs by the coordinator\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Proof of work: Public key matching the origin signature"),(0,r.kt)("li",{parentName:"ul"},"Proof of integrity: Hash of the previous proof of integrity and the transaction"),(0,r.kt)("li",{parentName:"ul"},"Ledger operations: All the operations performed by the transaction"),(0,r.kt)("li",{parentName:"ul"},"Signature: Coordinator signature of the stamp"),(0,r.kt)("li",{parentName:"ul"},"Protocol version: Version of the transaction validation protocol")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type ValidationStamp {\n ledgerOperations: LedgerOperations\n proofOfIntegrity: Hash\n proofOfWork: PublicKey\n protocolVersion: Int\n signature: Hex\n timestamp: Timestamp\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbledgeroperationsbcodeledgeroperations-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"ledgerOperations"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbproofofintegritybcodehash-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"proofOfIntegrity"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hash"},(0,r.kt)("inlineCode",{parentName:"a"},"Hash"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbproofofworkbcodepublickey-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"proofOfWork"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,r.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbprotocolversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"protocolVersion"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbsignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"signature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbtimestampbcodetimestamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"timestamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,r.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2491],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var o=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=o.createContext({}),d=function(e){var t=o.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=d(a),u=n,f=p["".concat(s,".").concat(u)]||p[u]||m[u]||r;return a?o.createElement(f,l(l({ref:t},c),{},{components:a})):o.createElement(f,l({ref:t},c))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=u;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:n,l[1]=i;for(var d=2;d{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var o=a(7462),n=a(7294),r=a(3905);a(8209);const l={id:"validation-stamp",title:"ValidationStamp",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/validation-stamp",id:"build/api/schema/objects/validation-stamp",title:"ValidationStamp",description:"[ValidationStamp] represents the validation performs by the coordinator",source:"@site/docs/build/api/schema/objects/validation-stamp.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/validation-stamp",permalink:"/build/api/schema/objects/validation-stamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"validation-stamp",title:"ValidationStamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UnspentOutput",permalink:"/build/api/schema/objects/unspent-output"},next:{title:"Version",permalink:"/build/api/schema/objects/version"}},d={},c=[{value:"Fields",id:"fields",level:3},{value:'ValidationStamp.ledgerOperationsLedgerOperations ',id:"code-style-fontweight-normal-validationstampbledgeroperationsbcodeledgeroperations-",level:4},{value:'ValidationStamp.proofOfIntegrityHash ',id:"code-style-fontweight-normal-validationstampbproofofintegritybcodehash-",level:4},{value:'ValidationStamp.proofOfWorkPublicKey ',id:"code-style-fontweight-normal-validationstampbproofofworkbcodepublickey-",level:4},{value:'ValidationStamp.protocolVersionInt ',id:"code-style-fontweight-normal-validationstampbprotocolversionbcodeint-",level:4},{value:'ValidationStamp.signatureHex ',id:"code-style-fontweight-normal-validationstampbsignaturebcodehex-",level:4},{value:'ValidationStamp.timestampTimestamp ',id:"code-style-fontweight-normal-validationstampbtimestampbcodetimestamp-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,r.kt)(n.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,r.kt)(n.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(n.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:p,SpecifiedBy:m,Badge:u},b="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(b,(0,o.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[ValidationStamp]"," represents the validation performs by the coordinator\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Proof of work: Public key matching the origin signature"),(0,r.kt)("li",{parentName:"ul"},"Proof of integrity: Hash of the previous proof of integrity and the transaction"),(0,r.kt)("li",{parentName:"ul"},"Ledger operations: All the operations performed by the transaction"),(0,r.kt)("li",{parentName:"ul"},"Signature: Coordinator signature of the stamp"),(0,r.kt)("li",{parentName:"ul"},"Protocol version: Version of the transaction validation protocol")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type ValidationStamp {\n ledgerOperations: LedgerOperations\n proofOfIntegrity: Hash\n proofOfWork: PublicKey\n protocolVersion: Int\n signature: Hex\n timestamp: Timestamp\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbledgeroperationsbcodeledgeroperations-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"ledgerOperations"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbproofofintegritybcodehash-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"proofOfIntegrity"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hash"},(0,r.kt)("inlineCode",{parentName:"a"},"Hash"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbproofofworkbcodepublickey-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"proofOfWork"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,r.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbprotocolversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"protocolVersion"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbsignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"signature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-validationstampbtimestampbcodetimestamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"ValidationStamp.",(0,r.kt)("b",null,"timestamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,r.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/08912224.da7e0b17.js b/assets/js/08912224.8b2f1a1a.js similarity index 98% rename from assets/js/08912224.da7e0b17.js rename to assets/js/08912224.8b2f1a1a.js index 7bc5cc308..4f09eb7ad 100644 --- a/assets/js/08912224.da7e0b17.js +++ b/assets/js/08912224.8b2f1a1a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8610],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return r?n.createElement(f,i(i({ref:t},c),{},{components:r})):n.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>p,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"token-properties",title:"TokenProperties",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/scalars/token-properties",id:"build/api/schema/scalars/token-properties",title:"TokenProperties",description:"[tokenProperties] represents a token's properties",source:"@site/docs/build/api/schema/scalars/token-properties.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/token-properties",permalink:"/build/api/schema/scalars/token-properties",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token-properties",title:"TokenProperties",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Timestamp",permalink:"/build/api/schema/scalars/timestamp"},next:{title:"TransactionType",permalink:"/build/api/schema/scalars/transaction-type"}},p={},c=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:u,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[tokenProperties]"," represents a token's properties"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar TokenProperties\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8610],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return r?n.createElement(f,i(i({ref:t},c),{},{components:r})):n.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>p,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"token-properties",title:"TokenProperties",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/scalars/token-properties",id:"build/api/schema/scalars/token-properties",title:"TokenProperties",description:"[tokenProperties] represents a token's properties",source:"@site/docs/build/api/schema/scalars/token-properties.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/token-properties",permalink:"/build/api/schema/scalars/token-properties",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token-properties",title:"TokenProperties",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Timestamp",permalink:"/build/api/schema/scalars/timestamp"},next:{title:"TransactionType",permalink:"/build/api/schema/scalars/transaction-type"}},p={},c=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:u,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[tokenProperties]"," represents a token's properties"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar TokenProperties\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/0945e04b.2a9907b5.js b/assets/js/0945e04b.a1f77a29.js similarity index 99% rename from assets/js/0945e04b.2a9907b5.js rename to assets/js/0945e04b.a1f77a29.js index f9558bc50..c8ca996b9 100644 --- a/assets/js/0945e04b.2a9907b5.js +++ b/assets/js/0945e04b.a1f77a29.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7611],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=s(n),h=i,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||r;return n?a.createElement(m,l(l({ref:t},d),{},{components:n})):a.createElement(m,l({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"api",title:"Ledger Application API"},l=void 0,o={unversionedId:"build/clients/ledger-wallet/api",id:"build/clients/ledger-wallet/api",title:"Ledger Application API",description:"Reference Repository:",source:"@site/docs/build/clients/ledger-wallet/api.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/api",permalink:"/build/clients/ledger-wallet/api",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"api",title:"Ledger Application API"},sidebar:"docs",previous:{title:"Ledger wallet",permalink:"/build/clients/ledger-wallet/"},next:{title:"ADPU commands",permalink:"/build/clients/ledger-wallet/commands"}},p={},s=[{value:"GET VERSION",id:"get-version",level:2},{value:"GET DEVICE ORIGIN PUBLIC KEY",id:"get-device-origin-public-key",level:2},{value:"GET ARCHETHIC ADDRESS",id:"get-archethic-address",level:2},{value:"SIGN TRANSACTION",id:"sign-transaction",level:2}],d={toc:s},u="wrapper";function c(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Reference Repository:\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/tree/master/src"},"Archethic BOLOS App"))),(0,i.kt)("p",null,"[TOC]"),(0,i.kt)("h2",{id:"get-version"},"GET VERSION"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getVersion.c"},"Source File: getVersion.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Get version returns the version of Device Application on Ledger")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Function Signature\n",(0,i.kt)("strong",{parentName:"p"},"handleGetVersion(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"p1")," -> APDU Parameter (Not Concerned in our context)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"p2")," -> APDU Parameter (Not Concerned in our context)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"*","dataBuffer")," -> NULL (Not required for getting version)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"dataLength")," -> Length of the dataBuffer")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"*","flags")," -> ",(0,i.kt)("strong",{parentName:"p"},"Modes (respond immediately(sync), process and respond(async))")),(0,i.kt)("p",{parentName:"li"},"There is a general buffer ",(0,i.kt)("strong",{parentName:"p"},"G_io_apdu_buffer")," (already in ledger SDK) for both input and output, we copy version to this buffer from ",(0,i.kt)("strong",{parentName:"p"},"APPVERSION")," which is defined in Makefile. As we only need integer, so we subtract '0' from the APPVERSION","[0 | 2 | 4]",".\nAPPVERSION and APPNAME are defined in the makefile of the project."),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"io_exchange_with_code(SW_OK, 3)")),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"- It adds status at the end of the Buffer (G_io_apdu_buffer).\n- **SW_OK** (0x9000) adds status code at the end of the buffer.\n- 3 is the length of the data in the buffer. \n")))))),(0,i.kt)("h2",{id:"get-device-origin-public-key"},"GET DEVICE ORIGIN PUBLIC KEY"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getPublicKey.c"},"Source File: getPublicKey.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Gets the hardware(device origin) public key from ledger device.")),(0,i.kt)("p",null,"It returns the public key derived from the hardware ledger device seed (",(0,i.kt)("strong",{parentName:"p"},"HARDWARE SEED"),")."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"handleGetPublicKey(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"*","flags |= IO_ASYNCH_REPLY;"),"\nThis is added to get response from the user of HID. So needed to be set to the ASYNC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"getOriginPublicKey(cx_ecfp_public_key_t ","*","publicKey)"),"\nThis calls ",(0,i.kt)("strong",null,"deriveArchethicKeyPair")," and return it.\n",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair(CX_CURVE_SECP256K1, 650, 0xffff, 0, NULL, 0, NULL, publicKey);"))))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre"},"- First Param** is the curve type which is fixed in our case.\n- Second Param** is the coin type which is defined for the [UCO Token]()\n- 3rd Param** is for the account which account to get, which is defined as: \n - $account =$ Depends on the intended use of the key.\n - Currently fixed values: 0xFFFF for $o_{key}$, 0x0000 for a simple $w_{key}$\n- 4th Param** is address index \n- 5th Param** is masterSeed which is set to NULL because we need the device origin master seed.\n- 6th Param** is the master seed Length\n- 7th param** is the structure to store public key\n"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Function Signature\n",(0,i.kt)("strong",{parentName:"p"},"deriveArchethicKeyPair(cx_curve_t curve, uint32_t coin_type, uint32_t account, uint32_t address_index, uint8_t ","*","masterSeed, uint8_t masterSeedLen, cx_ecfp_private_key_t ","*","privateKey, cx_ecfp_public_key_t ","*","publicKey)")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"This function first checks the curve type of the ",(0,i.kt)("inlineCode",{parentName:"p"},"cx_curve_t"),", which sets the mode for the which it needs to perform operation.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Next depending upon the account type as defined in the specification (0xffff | 0x0000) it derives the private key from the masterseed."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the account type is ",(0,i.kt)("inlineCode",{parentName:"li"},"0xffff")," then ",(0,i.kt)("strong",{parentName:"li"},"os_perso_derive_node_with_seed()")," function is called which derives the key from the ledger hardware origin key."),(0,i.kt)("li",{parentName:"ul"},"When account type is ",(0,i.kt)("inlineCode",{parentName:"li"},"0x0000")," then it derives the rawPrivateKey from the from ",(0,i.kt)("strong",{parentName:"li"},"archethic_derive_with_seed_key()")," function which derives the key as per provided params."))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Next it checks if there is a ",(0,i.kt)("strong",{parentName:"p"},"publicKey")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If that is the case then it derives the corresponding public key and generates from the walletPrivateKey"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If there is ",(0,i.kt)("strong",{parentName:"p"},"privateKey")," the it simple returns the ",(0,i.kt)("strong",{parentName:"p"},"privateKey"),".\n"))))),(0,i.kt)("admonition",{type:"success"},(0,i.kt)("p",{parentName:"admonition"},"As Public Key is in format: ",(0,i.kt)("strong",{parentName:"p"},"[curve_type, device_origin, 04xy]")),(0,i.kt)("p",{parentName:"admonition"},"02 -> Curve Type 04 -> Device Origin 04 -> uncompressed "),(0,i.kt)("p",{parentName:"admonition"},"X -> 52e77c79bea0f84e2d9c40356932fb0dd31688c23d6b6e9ac99d2869dc407692"),(0,i.kt)("p",{parentName:"admonition"},"Y -> 1e731fb84d0a094c6273fffed68147c381a273c83868cdeb9b81c7ec790c6d38")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Since raw private key is in ",(0,i.kt)("strong",{parentName:"p"},"bytes")," it needs to be converted which is done by the function cx_ecfp_init_private_key(curve, rawPrivateKey, 32, &walletPrivateKey).")),(0,i.kt)("h2",{id:"get-archethic-address"},"GET ARCHETHIC ADDRESS"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getAddress.c"},"Source File: getAddress.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Return the Archethic address from the ledger including curve type in the start")),(0,i.kt)("p",null,"INS = 04\nLc = Data Length\naddress_index = 4 bytes (bip44)\newk",(0,i.kt)("sub",null,"aes")," = encrypted wallet key"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"handleGetAddress(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"First 4 bytes are address index hence we store then in ",(0,i.kt)("inlineCode",{parentName:"li"},"address_index")," from the data buffer (Converting them according to thier byte ordering.)"),(0,i.kt)("li",{parentName:"ul"},"We performECDH to get the secret pointX on the curve,",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"performECDH(uint8_t ","*","ephPublicKey, uint8_t ephPublicKeySize, uint8_t ","*","ecdhPointX)")),(0,i.kt)("li",{parentName:"ul"},"This derives an Archethic keypair first with function ",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair")," and gets originPrivateKey"),(0,i.kt)("li",{parentName:"ul"},"The performs ecdh with function ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh")," with the originPrivateKey and takes publickey and finds the ecdhPointX "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh(&originPrivateKey, CX_ECDH_X, ephPublicKey, ephPublicKeySize, ecdhPointX, 32);")),(0,i.kt)("li",{parentName:"ul"},"publicKey is taken from the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")))),(0,i.kt)("li",{parentName:"ul"},"Now we decrypt the wallet with the ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"decryptWallet(ecdhPointX, sizeof(ecdhPointX), dataBuffer, dataLength, g_wallet.encodedWallet, &g_wallet.walletLen);")),(0,i.kt)("li",{parentName:"ul"},"Since we have moved pointer we now only have ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," 16 bytes and enc($wk_{aes}$) 32bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inside Decrypt wallet we first calculate the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key_iv_tag")," from the ecdhPointX by double hashing it from the sha512 function $sha512(sha512(ecdh","_","secret\\ or\\ PointX))$. "),(0,i.kt)("li",{parentName:"ul"},"we get 3 parts from above double hashing in 64 bytes which are",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"aes_key")," ","[32bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"iv")," ","[16bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"auth_seed")," ","[16bytes]"))),(0,i.kt)("li",{parentName:"ul"},"Now we get sha256 has of auth_seed in ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_key")),(0,i.kt)("li",{parentName:"ul"},"And now we do hmac(auth",(0,i.kt)("em",{parentName:"li"},"key , enc($wk"),"{aes}$)) and get ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," which are first 16 bytes from hmac result. $Rest\\ 16\\ bytes\\ are\\ reserved$"),(0,i.kt)("li",{parentName:"ul"},"Now we compare if auth_tag equals to auth_tag supplied in the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If if doesn't return ",(0,i.kt)("inlineCode",{parentName:"li"},"0xBADDECODE")),(0,i.kt)("li",{parentName:"ul"},"If it does",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Decrypt the wallet and return the ",(0,i.kt)("strong",{parentName:"li"},"encoded wallet")))))))),(0,i.kt)("li",{parentName:"ul"},"Now get the BIP44Paths from the encoded wallet according to specificaton",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"getBIP44Path(address_index, g_wallet.encodedWallet, g_wallet.walletLen, 0, g_bip44_path, &bip44pathlen);")),(0,i.kt)("li",{parentName:"ul"},"This does according to address index which were first 4 bytes of ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")),(0,i.kt)("li",{parentName:"ul"},"This returns the bip44Path in ",(0,i.kt)("inlineCode",{parentName:"li"},"char* string_bip_44")))),(0,i.kt)("li",{parentName:"ul"},"Now Generate Archethic Address from the Encoded Wallet and set as required. ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateArchethicAddress(uint8_t hash_type, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint32_t sequence_no, uint8_t ","*","address, uint8_t ","*","address_len)")),(0,i.kt)("li",{parentName:"ul"},"For now only support hash_type ",(0,i.kt)("inlineCode",{parentName:"li"},"sha256")),(0,i.kt)("li",{parentName:"ul"},"Returns address in ",(0,i.kt)("inlineCode",{parentName:"li"},"uint8_t *address"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"It generates key from the encoded wallet and storesit in ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecfp_public_key_t")," structure"),(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateKeyFromWallet(address_index, encoded_wallet, wallet_len, sequence_no, &curve_type, NULL, &publicKey)")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Derives Archethic Keypair depending on the supplied params:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"coin_type")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"account")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"curve")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"address_index")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"publicKey")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"privateKey"))))))))))))))),(0,i.kt)("h2",{id:"sign-transaction"},"SIGN TRANSACTION"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/signHash.c"},"Source File: signHash.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Returns APDU response as ",(0,i.kt)("inlineCode",{parentName:"p"},"Transaction Hash | Public Key | ASN_DER_SIGN")," in success")),(0,i.kt)("p",null,"INS = 08\naddress_index = 4 bytes (bip44)"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Funcion Signature:\n",(0,i.kt)("strong",{parentName:"li"},"handleSignHash(uint8_t p1, uint8_t p2, uint8_t *dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"First 4 bytes are address index hence we store then in ",(0,i.kt)("inlineCode",{parentName:"li"},"address_index")," from the data buffer (Converting them according to thier byte ordering.)"),(0,i.kt)("li",{parentName:"ul"},"Then we check for addresslength ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"if %2 == 0 then SHA256 or SHA3_256 and length = 34"),(0,i.kt)("li",{parentName:"ul"},"if %2 == 1 then SHA512 or SHA3_512 and length = 66"))),(0,i.kt)("li",{parentName:"ul"},"We copy the recieverAddress upto the addressLength in previous step to ",(0,i.kt)("inlineCode",{parentName:"li"},"g_tx.recieverAddr")),(0,i.kt)("li",{parentName:"ul"},"Then get next 8 bytes as amount and convert it to big endian",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Then for display convert it to float and set in ",(0,i.kt)("inlineCode",{parentName:"li"},"g_amount")," for display"))),(0,i.kt)("li",{parentName:"ul"},"performECDH to get ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We performECDH to get the secret pointX on the curve,",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"performECDH(uint8_t ","*","ephPublicKey, uint8_t ephPublicKeySize, uint8_t ","*","ecdhPointX)")),(0,i.kt)("li",{parentName:"ul"},"This derives an Archethic keypair first with function ",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair")," and gets originPrivateKey"),(0,i.kt)("li",{parentName:"ul"},"The performs ecdh with function ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh")," with the originPrivateKey and takes publickey and finds the ecdhPointX "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh(&originPrivateKey, CX_ECDH_X, ephPublicKey, ephPublicKeySize, ecdhPointX, 32);")))))),(0,i.kt)("li",{parentName:"ul"},"Now we decrypt the wallet with the ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"decryptWallet(ecdhPointX, sizeof(ecdhPointX), dataBuffer, dataLength, g_wallet.encodedWallet, &g_wallet.walletLen);")),(0,i.kt)("li",{parentName:"ul"},"Since we have moved pointer we now only have ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," 16 bytes and enc($wk_{aes}$) 32bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inside Decrypt wallet we first calculate the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key_iv_tag")," from the ecdhPointX by double hashing it from the sha512 function $sha512(sha512(ecdh","_","secret\\ or\\ PointX))$. "),(0,i.kt)("li",{parentName:"ul"},"we get 3 parts from above double hashing in 64 bytes which are",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"aes_key")," ","[32bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"iv")," ","[16bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"auth_seed")," ","[16bytes]"))),(0,i.kt)("li",{parentName:"ul"},"Now we get sha256 has of auth_seed in ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_key")),(0,i.kt)("li",{parentName:"ul"},"And now we do hmac(auth",(0,i.kt)("em",{parentName:"li"},"key , enc($wk"),"{aes}$)) and get ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," which are first 16 bytes from hmac result. $Rest\\ 16\\ bytes\\ are\\ reserved$"),(0,i.kt)("li",{parentName:"ul"},"Now we compare if auth_tag equals to auth_tag supplied in the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If if doesn't return ",(0,i.kt)("inlineCode",{parentName:"li"},"0xBADDECODE")),(0,i.kt)("li",{parentName:"ul"},"If it does",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Decrypt the wallet and return the ",(0,i.kt)("strong",{parentName:"li"},"encoded wallet")))))))))),(0,i.kt)("li",{parentName:"ul"},"Now Generate Archethic Address from the Encoded Wallet and set as required. ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateArchethicAddress(uint8_t hash_type, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint32_t sequence_no, uint8_t ","*","address, uint8_t ","*","address_len)")),(0,i.kt)("li",{parentName:"ul"},"For now only support hash_type ",(0,i.kt)("inlineCode",{parentName:"li"},"sha256")),(0,i.kt)("li",{parentName:"ul"},"Returns address in ",(0,i.kt)("inlineCode",{parentName:"li"},"uint8_t *address")))),(0,i.kt)("li",{parentName:"ul"},"Now get the BIP44Paths from the encoded wallet according to specificaton",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"getBIP44Path(address_index, g_wallet.encodedWallet, g_wallet.walletLen, 0, g_bip44_path, &bip44pathlen);")),(0,i.kt)("li",{parentName:"ul"},"This does according to address index which were first 4 bytes of ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")),(0,i.kt)("li",{parentName:"ul"},"This returns the bip44Path in ",(0,i.kt)("inlineCode",{parentName:"li"},"char* string_bip_44")))),(0,i.kt)("li",{parentName:"ul"},"Next we calulate the transactionHash",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"getTransactionHash(uint8_t ","*","senderAddr, uint8_t senderAddrLen,\nuint8_t ","*","receiveAddr, uint8_t receiveAddrLen,\nuint8_t ","*","amount, uint8_t ","*","txHash, uint8_t ","*","txHashLen)")),(0,i.kt)("li",{parentName:"ul"},"Format for Transaction Hash Generation",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"tx_version | senderAddr | tx_type | code_size | content_size | ownership_length | total_uco_transfers | recieverAddr | amount | total_token_transfers | recipients"))),(0,i.kt)("li",{parentName:"ul"},"We apply ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_hash_sha256()")," and return the hash in ",(0,i.kt)("inlineCode",{parentName:"li"},"txHash")))),(0,i.kt)("li",{parentName:"ul"},"We prompt user in GUI to approve the transaction"),(0,i.kt)("li",{parentName:"ul"},"Once approve we performECDSA on the transactionHash",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"performECDSA(uint8_t ","*","txHash, uint8_t txHashLen, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint8_t sequence_no, uint8_t ","*","asn_sign, uint8_t ","*","sign_len)")),(0,i.kt)("li",{parentName:"ul"},"We generateKey from Wallet Similar to when getting address and give back ",(0,i.kt)("inlineCode",{parentName:"li"},"publicKey")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"privateKey")),(0,i.kt)("li",{parentName:"ul"},"We copy curve_type on asn_sign buffer"),(0,i.kt)("li",{parentName:"ul"},"We set 0 to signify onchain wallet"),(0,i.kt)("li",{parentName:"ul"},"We copy the publicKey on asn_sign buffer"),(0,i.kt)("li",{parentName:"ul"},"We sign the txnHash with the privateKet and append signature to asn_sign buffer "),(0,i.kt)("li",{parentName:"ul"},"We increase sign_len by publicKey length + 2 bytes"))),(0,i.kt)("li",{parentName:"ul"},"Once signature is performed we copy the txnHash to the ",(0,i.kt)("inlineCode",{parentName:"li"},"G_io_apdu_buffer")),(0,i.kt)("li",{parentName:"ul"},"Then, we copy the contents of encodedWallet on which we have overwritten the signature to the ",(0,i.kt)("inlineCode",{parentName:"li"},"G_io_apdu_buffer")),(0,i.kt)("li",{parentName:"ul"},"And we return the APDU with SW_OK and total length as ",(0,i.kt)("inlineCode",{parentName:"li"},"txnhash length + walletLen"))))))}c.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7611],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=s(n),h=i,m=u["".concat(p,".").concat(h)]||u[h]||c[h]||r;return n?a.createElement(m,l(l({ref:t},d),{},{components:n})):a.createElement(m,l({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=h;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"api",title:"Ledger Application API"},l=void 0,o={unversionedId:"build/clients/ledger-wallet/api",id:"build/clients/ledger-wallet/api",title:"Ledger Application API",description:"Reference Repository:",source:"@site/docs/build/clients/ledger-wallet/api.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/api",permalink:"/build/clients/ledger-wallet/api",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"api",title:"Ledger Application API"},sidebar:"docs",previous:{title:"Ledger wallet",permalink:"/build/clients/ledger-wallet/"},next:{title:"ADPU commands",permalink:"/build/clients/ledger-wallet/commands"}},p={},s=[{value:"GET VERSION",id:"get-version",level:2},{value:"GET DEVICE ORIGIN PUBLIC KEY",id:"get-device-origin-public-key",level:2},{value:"GET ARCHETHIC ADDRESS",id:"get-archethic-address",level:2},{value:"SIGN TRANSACTION",id:"sign-transaction",level:2}],d={toc:s},u="wrapper";function c(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Reference Repository:\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/tree/master/src"},"Archethic BOLOS App"))),(0,i.kt)("p",null,"[TOC]"),(0,i.kt)("h2",{id:"get-version"},"GET VERSION"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getVersion.c"},"Source File: getVersion.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Get version returns the version of Device Application on Ledger")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Function Signature\n",(0,i.kt)("strong",{parentName:"p"},"handleGetVersion(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"p1")," -> APDU Parameter (Not Concerned in our context)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"p2")," -> APDU Parameter (Not Concerned in our context)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"*","dataBuffer")," -> NULL (Not required for getting version)")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"dataLength")," -> Length of the dataBuffer")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"*","flags")," -> ",(0,i.kt)("strong",{parentName:"p"},"Modes (respond immediately(sync), process and respond(async))")),(0,i.kt)("p",{parentName:"li"},"There is a general buffer ",(0,i.kt)("strong",{parentName:"p"},"G_io_apdu_buffer")," (already in ledger SDK) for both input and output, we copy version to this buffer from ",(0,i.kt)("strong",{parentName:"p"},"APPVERSION")," which is defined in Makefile. As we only need integer, so we subtract '0' from the APPVERSION","[0 | 2 | 4]",".\nAPPVERSION and APPNAME are defined in the makefile of the project."),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"io_exchange_with_code(SW_OK, 3)")),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre"},"- It adds status at the end of the Buffer (G_io_apdu_buffer).\n- **SW_OK** (0x9000) adds status code at the end of the buffer.\n- 3 is the length of the data in the buffer. \n")))))),(0,i.kt)("h2",{id:"get-device-origin-public-key"},"GET DEVICE ORIGIN PUBLIC KEY"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getPublicKey.c"},"Source File: getPublicKey.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Gets the hardware(device origin) public key from ledger device.")),(0,i.kt)("p",null,"It returns the public key derived from the hardware ledger device seed (",(0,i.kt)("strong",{parentName:"p"},"HARDWARE SEED"),")."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"handleGetPublicKey(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"*","flags |= IO_ASYNCH_REPLY;"),"\nThis is added to get response from the user of HID. So needed to be set to the ASYNC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"getOriginPublicKey(cx_ecfp_public_key_t ","*","publicKey)"),"\nThis calls ",(0,i.kt)("strong",null,"deriveArchethicKeyPair")," and return it.\n",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair(CX_CURVE_SECP256K1, 650, 0xffff, 0, NULL, 0, NULL, publicKey);"))))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre"},"- First Param** is the curve type which is fixed in our case.\n- Second Param** is the coin type which is defined for the [UCO Token]()\n- 3rd Param** is for the account which account to get, which is defined as: \n - $account =$ Depends on the intended use of the key.\n - Currently fixed values: 0xFFFF for $o_{key}$, 0x0000 for a simple $w_{key}$\n- 4th Param** is address index \n- 5th Param** is masterSeed which is set to NULL because we need the device origin master seed.\n- 6th Param** is the master seed Length\n- 7th param** is the structure to store public key\n"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Function Signature\n",(0,i.kt)("strong",{parentName:"p"},"deriveArchethicKeyPair(cx_curve_t curve, uint32_t coin_type, uint32_t account, uint32_t address_index, uint8_t ","*","masterSeed, uint8_t masterSeedLen, cx_ecfp_private_key_t ","*","privateKey, cx_ecfp_public_key_t ","*","publicKey)")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"This function first checks the curve type of the ",(0,i.kt)("inlineCode",{parentName:"p"},"cx_curve_t"),", which sets the mode for the which it needs to perform operation.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Next depending upon the account type as defined in the specification (0xffff | 0x0000) it derives the private key from the masterseed."),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"When the account type is ",(0,i.kt)("inlineCode",{parentName:"li"},"0xffff")," then ",(0,i.kt)("strong",{parentName:"li"},"os_perso_derive_node_with_seed()")," function is called which derives the key from the ledger hardware origin key."),(0,i.kt)("li",{parentName:"ul"},"When account type is ",(0,i.kt)("inlineCode",{parentName:"li"},"0x0000")," then it derives the rawPrivateKey from the from ",(0,i.kt)("strong",{parentName:"li"},"archethic_derive_with_seed_key()")," function which derives the key as per provided params."))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Next it checks if there is a ",(0,i.kt)("strong",{parentName:"p"},"publicKey")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If that is the case then it derives the corresponding public key and generates from the walletPrivateKey"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"If there is ",(0,i.kt)("strong",{parentName:"p"},"privateKey")," the it simple returns the ",(0,i.kt)("strong",{parentName:"p"},"privateKey"),".\n"))))),(0,i.kt)("admonition",{type:"success"},(0,i.kt)("p",{parentName:"admonition"},"As Public Key is in format: ",(0,i.kt)("strong",{parentName:"p"},"[curve_type, device_origin, 04xy]")),(0,i.kt)("p",{parentName:"admonition"},"02 -> Curve Type 04 -> Device Origin 04 -> uncompressed "),(0,i.kt)("p",{parentName:"admonition"},"X -> 52e77c79bea0f84e2d9c40356932fb0dd31688c23d6b6e9ac99d2869dc407692"),(0,i.kt)("p",{parentName:"admonition"},"Y -> 1e731fb84d0a094c6273fffed68147c381a273c83868cdeb9b81c7ec790c6d38")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Since raw private key is in ",(0,i.kt)("strong",{parentName:"p"},"bytes")," it needs to be converted which is done by the function cx_ecfp_init_private_key(curve, rawPrivateKey, 32, &walletPrivateKey).")),(0,i.kt)("h2",{id:"get-archethic-address"},"GET ARCHETHIC ADDRESS"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/getAddress.c"},"Source File: getAddress.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Return the Archethic address from the ledger including curve type in the start")),(0,i.kt)("p",null,"INS = 04\nLc = Data Length\naddress_index = 4 bytes (bip44)\newk",(0,i.kt)("sub",null,"aes")," = encrypted wallet key"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"handleGetAddress(uint8_t p1, uint8_t p2, uint8_t ","*","dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"First 4 bytes are address index hence we store then in ",(0,i.kt)("inlineCode",{parentName:"li"},"address_index")," from the data buffer (Converting them according to thier byte ordering.)"),(0,i.kt)("li",{parentName:"ul"},"We performECDH to get the secret pointX on the curve,",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"performECDH(uint8_t ","*","ephPublicKey, uint8_t ephPublicKeySize, uint8_t ","*","ecdhPointX)")),(0,i.kt)("li",{parentName:"ul"},"This derives an Archethic keypair first with function ",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair")," and gets originPrivateKey"),(0,i.kt)("li",{parentName:"ul"},"The performs ecdh with function ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh")," with the originPrivateKey and takes publickey and finds the ecdhPointX "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh(&originPrivateKey, CX_ECDH_X, ephPublicKey, ephPublicKeySize, ecdhPointX, 32);")),(0,i.kt)("li",{parentName:"ul"},"publicKey is taken from the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")))),(0,i.kt)("li",{parentName:"ul"},"Now we decrypt the wallet with the ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"decryptWallet(ecdhPointX, sizeof(ecdhPointX), dataBuffer, dataLength, g_wallet.encodedWallet, &g_wallet.walletLen);")),(0,i.kt)("li",{parentName:"ul"},"Since we have moved pointer we now only have ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," 16 bytes and enc($wk_{aes}$) 32bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inside Decrypt wallet we first calculate the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key_iv_tag")," from the ecdhPointX by double hashing it from the sha512 function $sha512(sha512(ecdh","_","secret\\ or\\ PointX))$. "),(0,i.kt)("li",{parentName:"ul"},"we get 3 parts from above double hashing in 64 bytes which are",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"aes_key")," ","[32bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"iv")," ","[16bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"auth_seed")," ","[16bytes]"))),(0,i.kt)("li",{parentName:"ul"},"Now we get sha256 has of auth_seed in ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_key")),(0,i.kt)("li",{parentName:"ul"},"And now we do hmac(auth",(0,i.kt)("em",{parentName:"li"},"key , enc($wk"),"{aes}$)) and get ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," which are first 16 bytes from hmac result. $Rest\\ 16\\ bytes\\ are\\ reserved$"),(0,i.kt)("li",{parentName:"ul"},"Now we compare if auth_tag equals to auth_tag supplied in the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If if doesn't return ",(0,i.kt)("inlineCode",{parentName:"li"},"0xBADDECODE")),(0,i.kt)("li",{parentName:"ul"},"If it does",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Decrypt the wallet and return the ",(0,i.kt)("strong",{parentName:"li"},"encoded wallet")))))))),(0,i.kt)("li",{parentName:"ul"},"Now get the BIP44Paths from the encoded wallet according to specificaton",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"getBIP44Path(address_index, g_wallet.encodedWallet, g_wallet.walletLen, 0, g_bip44_path, &bip44pathlen);")),(0,i.kt)("li",{parentName:"ul"},"This does according to address index which were first 4 bytes of ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")),(0,i.kt)("li",{parentName:"ul"},"This returns the bip44Path in ",(0,i.kt)("inlineCode",{parentName:"li"},"char* string_bip_44")))),(0,i.kt)("li",{parentName:"ul"},"Now Generate Archethic Address from the Encoded Wallet and set as required. ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateArchethicAddress(uint8_t hash_type, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint32_t sequence_no, uint8_t ","*","address, uint8_t ","*","address_len)")),(0,i.kt)("li",{parentName:"ul"},"For now only support hash_type ",(0,i.kt)("inlineCode",{parentName:"li"},"sha256")),(0,i.kt)("li",{parentName:"ul"},"Returns address in ",(0,i.kt)("inlineCode",{parentName:"li"},"uint8_t *address"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"It generates key from the encoded wallet and storesit in ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecfp_public_key_t")," structure"),(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateKeyFromWallet(address_index, encoded_wallet, wallet_len, sequence_no, &curve_type, NULL, &publicKey)")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Derives Archethic Keypair depending on the supplied params:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"coin_type")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"account")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"curve")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"address_index")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"publicKey")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"privateKey"))))))))))))))),(0,i.kt)("h2",{id:"sign-transaction"},"SIGN TRANSACTION"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger/blob/master/src/signHash.c"},"Source File: signHash.c")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Returns APDU response as ",(0,i.kt)("inlineCode",{parentName:"p"},"Transaction Hash | Public Key | ASN_DER_SIGN")," in success")),(0,i.kt)("p",null,"INS = 08\naddress_index = 4 bytes (bip44)"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Funcion Signature:\n",(0,i.kt)("strong",{parentName:"li"},"handleSignHash(uint8_t p1, uint8_t p2, uint8_t *dataBuffer, uint16_t dataLength, volatile unsigned int ","*","flags)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"First 4 bytes are address index hence we store then in ",(0,i.kt)("inlineCode",{parentName:"li"},"address_index")," from the data buffer (Converting them according to thier byte ordering.)"),(0,i.kt)("li",{parentName:"ul"},"Then we check for addresslength ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"if %2 == 0 then SHA256 or SHA3_256 and length = 34"),(0,i.kt)("li",{parentName:"ul"},"if %2 == 1 then SHA512 or SHA3_512 and length = 66"))),(0,i.kt)("li",{parentName:"ul"},"We copy the recieverAddress upto the addressLength in previous step to ",(0,i.kt)("inlineCode",{parentName:"li"},"g_tx.recieverAddr")),(0,i.kt)("li",{parentName:"ul"},"Then get next 8 bytes as amount and convert it to big endian",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Then for display convert it to float and set in ",(0,i.kt)("inlineCode",{parentName:"li"},"g_amount")," for display"))),(0,i.kt)("li",{parentName:"ul"},"performECDH to get ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We performECDH to get the secret pointX on the curve,",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"performECDH(uint8_t ","*","ephPublicKey, uint8_t ephPublicKeySize, uint8_t ","*","ecdhPointX)")),(0,i.kt)("li",{parentName:"ul"},"This derives an Archethic keypair first with function ",(0,i.kt)("inlineCode",{parentName:"li"},"deriveArchethicKeyPair")," and gets originPrivateKey"),(0,i.kt)("li",{parentName:"ul"},"The performs ecdh with function ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh")," with the originPrivateKey and takes publickey and finds the ecdhPointX "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"cx_ecdh(&originPrivateKey, CX_ECDH_X, ephPublicKey, ephPublicKeySize, ecdhPointX, 32);")))))),(0,i.kt)("li",{parentName:"ul"},"Now we decrypt the wallet with the ecdhPointX ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"decryptWallet(ecdhPointX, sizeof(ecdhPointX), dataBuffer, dataLength, g_wallet.encodedWallet, &g_wallet.walletLen);")),(0,i.kt)("li",{parentName:"ul"},"Since we have moved pointer we now only have ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," 16 bytes and enc($wk_{aes}$) 32bytes",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Inside Decrypt wallet we first calculate the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key_iv_tag")," from the ecdhPointX by double hashing it from the sha512 function $sha512(sha512(ecdh","_","secret\\ or\\ PointX))$. "),(0,i.kt)("li",{parentName:"ul"},"we get 3 parts from above double hashing in 64 bytes which are",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"aes_key")," ","[32bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"iv")," ","[16bytes]"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"auth_seed")," ","[16bytes]"))),(0,i.kt)("li",{parentName:"ul"},"Now we get sha256 has of auth_seed in ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_key")),(0,i.kt)("li",{parentName:"ul"},"And now we do hmac(auth",(0,i.kt)("em",{parentName:"li"},"key , enc($wk"),"{aes}$)) and get ",(0,i.kt)("inlineCode",{parentName:"li"},"auth_tag")," which are first 16 bytes from hmac result. $Rest\\ 16\\ bytes\\ are\\ reserved$"),(0,i.kt)("li",{parentName:"ul"},"Now we compare if auth_tag equals to auth_tag supplied in the ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")," ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"If if doesn't return ",(0,i.kt)("inlineCode",{parentName:"li"},"0xBADDECODE")),(0,i.kt)("li",{parentName:"ul"},"If it does",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Decrypt the wallet and return the ",(0,i.kt)("strong",{parentName:"li"},"encoded wallet")))))))))),(0,i.kt)("li",{parentName:"ul"},"Now Generate Archethic Address from the Encoded Wallet and set as required. ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"generateArchethicAddress(uint8_t hash_type, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint32_t sequence_no, uint8_t ","*","address, uint8_t ","*","address_len)")),(0,i.kt)("li",{parentName:"ul"},"For now only support hash_type ",(0,i.kt)("inlineCode",{parentName:"li"},"sha256")),(0,i.kt)("li",{parentName:"ul"},"Returns address in ",(0,i.kt)("inlineCode",{parentName:"li"},"uint8_t *address")))),(0,i.kt)("li",{parentName:"ul"},"Now get the BIP44Paths from the encoded wallet according to specificaton",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Fn Signature ",(0,i.kt)("strong",{parentName:"li"},"getBIP44Path(address_index, g_wallet.encodedWallet, g_wallet.walletLen, 0, g_bip44_path, &bip44pathlen);")),(0,i.kt)("li",{parentName:"ul"},"This does according to address index which were first 4 bytes of ",(0,i.kt)("inlineCode",{parentName:"li"},"dataBuffer")),(0,i.kt)("li",{parentName:"ul"},"This returns the bip44Path in ",(0,i.kt)("inlineCode",{parentName:"li"},"char* string_bip_44")))),(0,i.kt)("li",{parentName:"ul"},"Next we calulate the transactionHash",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"getTransactionHash(uint8_t ","*","senderAddr, uint8_t senderAddrLen,\nuint8_t ","*","receiveAddr, uint8_t receiveAddrLen,\nuint8_t ","*","amount, uint8_t ","*","txHash, uint8_t ","*","txHashLen)")),(0,i.kt)("li",{parentName:"ul"},"Format for Transaction Hash Generation",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"tx_version | senderAddr | tx_type | code_size | content_size | ownership_length | total_uco_transfers | recieverAddr | amount | total_token_transfers | recipients"))),(0,i.kt)("li",{parentName:"ul"},"We apply ",(0,i.kt)("inlineCode",{parentName:"li"},"cx_hash_sha256()")," and return the hash in ",(0,i.kt)("inlineCode",{parentName:"li"},"txHash")))),(0,i.kt)("li",{parentName:"ul"},"We prompt user in GUI to approve the transaction"),(0,i.kt)("li",{parentName:"ul"},"Once approve we performECDSA on the transactionHash",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Function Signature\n",(0,i.kt)("strong",{parentName:"li"},"performECDSA(uint8_t ","*","txHash, uint8_t txHashLen, uint32_t address_index, uint8_t ","*","encoded_wallet, uint8_t ","*","wallet_len, uint8_t sequence_no, uint8_t ","*","asn_sign, uint8_t ","*","sign_len)")),(0,i.kt)("li",{parentName:"ul"},"We generateKey from Wallet Similar to when getting address and give back ",(0,i.kt)("inlineCode",{parentName:"li"},"publicKey")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"privateKey")),(0,i.kt)("li",{parentName:"ul"},"We copy curve_type on asn_sign buffer"),(0,i.kt)("li",{parentName:"ul"},"We set 0 to signify onchain wallet"),(0,i.kt)("li",{parentName:"ul"},"We copy the publicKey on asn_sign buffer"),(0,i.kt)("li",{parentName:"ul"},"We sign the txnHash with the privateKet and append signature to asn_sign buffer "),(0,i.kt)("li",{parentName:"ul"},"We increase sign_len by publicKey length + 2 bytes"))),(0,i.kt)("li",{parentName:"ul"},"Once signature is performed we copy the txnHash to the ",(0,i.kt)("inlineCode",{parentName:"li"},"G_io_apdu_buffer")),(0,i.kt)("li",{parentName:"ul"},"Then, we copy the contents of encodedWallet on which we have overwritten the signature to the ",(0,i.kt)("inlineCode",{parentName:"li"},"G_io_apdu_buffer")),(0,i.kt)("li",{parentName:"ul"},"And we return the APDU with SW_OK and total length as ",(0,i.kt)("inlineCode",{parentName:"li"},"txnhash length + walletLen"))))))}c.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/0946372c.abe76719.js b/assets/js/0946372c.bf638d1a.js similarity index 98% rename from assets/js/0946372c.abe76719.js rename to assets/js/0946372c.bf638d1a.js index 1b2381471..723749e5f 100644 --- a/assets/js/0946372c.abe76719.js +++ b/assets/js/0946372c.bf638d1a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7790],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),u=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,h=p["".concat(d,".").concat(m)]||p[m]||s[m]||l;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[p]="string"==typeof e?e:r,i[1]=o;for(var u=2;u{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var a=n(7462),r=(n(7294),n(3905));n(8209);const l={id:"account",title:"Account"},i=void 0,o={unversionedId:"build/core/account",id:"build/core/account",title:"Account",description:"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.",source:"@site/docs/build/core/account.md",sourceDirName:"build/core",slug:"/build/core/account",permalink:"/build/core/account",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"account",title:"Account"},sidebar:"docs",previous:{title:"Core development",permalink:"/build/core/"},next:{title:"BeaconChain",permalink:"/build/core/beacon-chain/"}},d={},u=[{value:"UCO",id:"uco",level:2},{value:"Ledger",id:"ledger",level:3},{value:"Index",id:"index",level:3},{value:"Token",id:"token",level:2},{value:"Ledger",id:"ledger-1",level:3},{value:"Index",id:"index-1",level:3},{value:"Loading",id:"loading",level:2}],c={toc:u},p="wrapper";function s(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS."),(0,r.kt)("p",null,"This gives us faster computation and data retrieval to asserts balances and UTXO loading."),(0,r.kt)("h2",{id:"uco"},"UCO"),(0,r.kt)("p",null,"A memory table is defined to list of the UCO available for a given address"),(0,r.kt)("p",null,"Few functions are provided to be able to query this table in order to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"get the UCO balance "),(0,r.kt)("li",{parentName:"ul"},"get the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"get the total inputs (spent and unspent)"),(0,r.kt)("li",{parentName:"ul"},"spend all the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"add new UCO UTXO")),(0,r.kt)("h3",{id:"ledger"},"Ledger"),(0,r.kt)("p",null,"Each entry is indexed by a tuple recipient/sender to identify uniquely an UTXO"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient, Sender"),(0,r.kt)("th",{parentName:"tr",align:null},"Amount"),(0,r.kt)("th",{parentName:"tr",align:null},"Spent ?"),(0,r.kt)("th",{parentName:"tr",align:null},"Date")))),(0,r.kt)("h3",{id:"index"},"Index"),(0,r.kt)("p",null,"An index table is provided to be able to retrieve all the sender UTXOs for a given recipient"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient"),(0,r.kt)("th",{parentName:"tr",align:null},"Sender")))),(0,r.kt)("h2",{id:"token"},"Token"),(0,r.kt)("p",null,"A memory table is defined to list al the token available for a given address"),(0,r.kt)("p",null,"Few functions are provided to be able to query this table in order to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"get the token balance s"),(0,r.kt)("li",{parentName:"ul"},"get the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"get the total inputs (spent and unspent)"),(0,r.kt)("li",{parentName:"ul"},"spend all the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"add new token UTXO")),(0,r.kt)("h3",{id:"ledger-1"},"Ledger"),(0,r.kt)("p",null,"Each entry is indexed by a tuple recipient/sender/token address to identify uniquely an UTXO"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient, Sender, Token"),(0,r.kt)("th",{parentName:"tr",align:null},"Amount"),(0,r.kt)("th",{parentName:"tr",align:null},"Spent ?"),(0,r.kt)("th",{parentName:"tr",align:null},"Date")))),(0,r.kt)("h3",{id:"index-1"},"Index"),(0,r.kt)("p",null,"An index table is provided to be able to retrieve all the sender UTXOs for a given recipient"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient"),(0,r.kt)("th",{parentName:"tr",align:null},"Sender"),(0,r.kt)("th",{parentName:"tr",align:null},"Token address")))),(0,r.kt)("h2",{id:"loading"},"Loading"),(0,r.kt)("p",null,"When a transaction replicated, the storage nodes in charge of storing the new transaction (chain replicas or recipient replicas) will load the transaction in those tables to index the UTXO and build in memory view."),(0,r.kt)("p",null,"The same goes when a node is bootstraping, a process will load all the transactions from the database to load them into those tables."))}s.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7790],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),u=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,h=p["".concat(d,".").concat(m)]||p[m]||s[m]||l;return n?a.createElement(h,i(i({ref:t},c),{},{components:n})):a.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[p]="string"==typeof e?e:r,i[1]=o;for(var u=2;u{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var a=n(7462),r=(n(7294),n(3905));n(8209);const l={id:"account",title:"Account"},i=void 0,o={unversionedId:"build/core/account",id:"build/core/account",title:"Account",description:"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.",source:"@site/docs/build/core/account.md",sourceDirName:"build/core",slug:"/build/core/account",permalink:"/build/core/account",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"account",title:"Account"},sidebar:"docs",previous:{title:"Core development",permalink:"/build/core/"},next:{title:"BeaconChain",permalink:"/build/core/beacon-chain/"}},d={},u=[{value:"UCO",id:"uco",level:2},{value:"Ledger",id:"ledger",level:3},{value:"Index",id:"index",level:3},{value:"Token",id:"token",level:2},{value:"Ledger",id:"ledger-1",level:3},{value:"Index",id:"index-1",level:3},{value:"Loading",id:"loading",level:2}],c={toc:u},p="wrapper";function s(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS."),(0,r.kt)("p",null,"This gives us faster computation and data retrieval to asserts balances and UTXO loading."),(0,r.kt)("h2",{id:"uco"},"UCO"),(0,r.kt)("p",null,"A memory table is defined to list of the UCO available for a given address"),(0,r.kt)("p",null,"Few functions are provided to be able to query this table in order to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"get the UCO balance "),(0,r.kt)("li",{parentName:"ul"},"get the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"get the total inputs (spent and unspent)"),(0,r.kt)("li",{parentName:"ul"},"spend all the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"add new UCO UTXO")),(0,r.kt)("h3",{id:"ledger"},"Ledger"),(0,r.kt)("p",null,"Each entry is indexed by a tuple recipient/sender to identify uniquely an UTXO"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient, Sender"),(0,r.kt)("th",{parentName:"tr",align:null},"Amount"),(0,r.kt)("th",{parentName:"tr",align:null},"Spent ?"),(0,r.kt)("th",{parentName:"tr",align:null},"Date")))),(0,r.kt)("h3",{id:"index"},"Index"),(0,r.kt)("p",null,"An index table is provided to be able to retrieve all the sender UTXOs for a given recipient"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient"),(0,r.kt)("th",{parentName:"tr",align:null},"Sender")))),(0,r.kt)("h2",{id:"token"},"Token"),(0,r.kt)("p",null,"A memory table is defined to list al the token available for a given address"),(0,r.kt)("p",null,"Few functions are provided to be able to query this table in order to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"get the token balance s"),(0,r.kt)("li",{parentName:"ul"},"get the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"get the total inputs (spent and unspent)"),(0,r.kt)("li",{parentName:"ul"},"spend all the UTXOs"),(0,r.kt)("li",{parentName:"ul"},"add new token UTXO")),(0,r.kt)("h3",{id:"ledger-1"},"Ledger"),(0,r.kt)("p",null,"Each entry is indexed by a tuple recipient/sender/token address to identify uniquely an UTXO"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient, Sender, Token"),(0,r.kt)("th",{parentName:"tr",align:null},"Amount"),(0,r.kt)("th",{parentName:"tr",align:null},"Spent ?"),(0,r.kt)("th",{parentName:"tr",align:null},"Date")))),(0,r.kt)("h3",{id:"index-1"},"Index"),(0,r.kt)("p",null,"An index table is provided to be able to retrieve all the sender UTXOs for a given recipient"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Recipient"),(0,r.kt)("th",{parentName:"tr",align:null},"Sender"),(0,r.kt)("th",{parentName:"tr",align:null},"Token address")))),(0,r.kt)("h2",{id:"loading"},"Loading"),(0,r.kt)("p",null,"When a transaction replicated, the storage nodes in charge of storing the new transaction (chain replicas or recipient replicas) will load the transaction in those tables to index the UTXO and build in memory view."),(0,r.kt)("p",null,"The same goes when a node is bootstraping, a process will load all the transactions from the database to load them into those tables."))}s.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/0c928027.86ddbe9d.js b/assets/js/0c928027.c00e3b5e.js similarity index 98% rename from assets/js/0c928027.86ddbe9d.js rename to assets/js/0c928027.c00e3b5e.js index fc6820822..9b088fafd 100644 --- a/assets/js/0c928027.86ddbe9d.js +++ b/assets/js/0c928027.c00e3b5e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7157],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>k});var a=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(t),m=o,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return t?a.createElement(k,i(i({ref:n},c),{},{components:t})):a.createElement(k,i({ref:n},c))}));function k(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var p=2;p{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var a=t(7462),o=(t(7294),t(3905));t(8209);const r={id:"token",title:"Tokens"},i=void 0,l={unversionedId:"learn/token",id:"learn/token",title:"Tokens",description:"Tokens is an important feature on Archethic.",source:"@site/docs/learn/token.md",sourceDirName:"learn",slug:"/learn/token",permalink:"/learn/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token",title:"Tokens"},sidebar:"docs",previous:{title:"Replication attestation",permalink:"/learn/sharding/replication-attestation"},next:{title:"Participate",permalink:"/category/participate"}},s={},p=[{value:"Native",id:"native",level:2},{value:"Standardized",id:"standardized",level:2},{value:"Creation",id:"creation",level:2},{value:"Fungible",id:"fungible",level:3},{value:"Non-fungible",id:"non-fungible",level:3},{value:"Resupply fungible tokens (AEIP-18)",id:"resupply-fungible-tokens-aeip-18",level:2},{value:"Recipients (AEIP-19)",id:"recipients-aeip-19",level:2},{value:"Transfer",id:"transfer",level:2}],c={toc:p},u="wrapper";function d(e){let{components:n,...t}=e;return(0,o.kt)(u,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Tokens is an important feature on Archethic.\nNowadays, our world is transforming towards digitalisation and tokenization with new use cases and trends (royalties, collection, proof of ownerships, etc.)"),(0,o.kt)("p",null,"Archethic allows users to create and transaction with an unlimited-defined (custom) token natively."),(0,o.kt)("h2",{id:"native"},"Native"),(0,o.kt)("p",null,"Archethic tokens are considered as native as for developers, there is no need to create smart contract to mint or transfer tokens."),(0,o.kt)("p",null,"The transaction's structure supports - by design, asn extension of the ledger model (more than UCO-only transaction)"),(0,o.kt)("p",null,"All the layer of complexity have been removed to make them efficient and performant."),(0,o.kt)("p",null,"Because of this, the transfer of tokens is as simple as a transfer of UCO (just UTXO), making it fast and cheap."),(0,o.kt)("h2",{id:"standardized"},"Standardized"),(0,o.kt)("p",null,"Archethic's tokens are also unified through specifications to help implementers, developers and users to have a clear understanding of their definition."),(0,o.kt)("p",null,"The complete specification is composed of many AEIPs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-02.md"},"AEIP-02 - Tokens standard")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-18.md"},"AEIP-18 - Tokens resupply")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-19.md"},"AEIP-19 - Tokens minting's recipients"))),(0,o.kt)("h2",{id:"creation"},"Creation"),(0,o.kt)("p",null,"In order to create a token, you have to:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"set the transaction's type to: ",(0,o.kt)("inlineCode",{parentName:"li"},"token")),(0,o.kt)("li",{parentName:"ol"},"define in the transaction's content the token's json definition")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/develop/priv/json-schemas/token-core.json"},"The JSON Schema is available on GitHub")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"As everything on Archethic, it is a good practice to create a new transaction chain for this token only.")),(0,o.kt)("h3",{id:"fungible"},"Fungible"),(0,o.kt)("p",null,"Example of a token that doesn't allow minting (may never be resupplied):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 100000000000, // 1000 tokens\n "decimals": 8, // 1 token == 10\u2078\n "type": "fungible",\n "symbol": "TOKEN_SYMBOL",\n "name": "TOKEN_NAME",\n "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}\n}\n')),(0,o.kt)("p",null,"Example of a token that allows minting (may be resupplied later):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "allow_mint": true, // <------------\n "supply": 100000000000, // 100000 tokens\n "decimals": 6, // 1 token == 10\u2076\n "type": "fungible",\n "symbol": "TOKEN_SYMBOL",\n "name": "TOKEN_NAME",\n "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}\n}\n')),(0,o.kt)("h3",{id:"non-fungible"},"Non-fungible"),(0,o.kt)("p",null,"There are 2 definitions for the NFT:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"either for a single token"),(0,o.kt)("li",{parentName:"ol"},"either for a collection of tokens")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"NFTs always have 8 decimals.")),(0,o.kt)("p",null,"Example of a NFT:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 100000000, // 1 token\n "type": "non-fungible",\n "name": "My NFT",\n "symbol": "MNFT",\n "properties": {\n "image": "base64 of the image",\n "description": "This is a NFT with an image"\n }\n}\n')),(0,o.kt)("p",null,"Example of a NFT Collection:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 300000000, // 3 tokens\n "type": "non-fungible",\n "name": "COLLETION NAME",\n "symbol": "COLLETION_SYMBOL",\n "properties": {"globalProperty": "value"},\n "collection": [\n {"image": "link"},\n {"image": "link"},\n {"image": "link"}\n ]\n}\n')),(0,o.kt)("p",null,"During the transaction validation, the miners will understand how to interpret this transaction and create the relative assets and UTXOs to make transfers possible right away."),(0,o.kt)("h2",{id:"resupply-fungible-tokens-aeip-18"},"Resupply fungible tokens (AEIP-18)"),(0,o.kt)("p",null,"As mentioned above, fungible tokens may accept to be minted at any time. ",(0,o.kt)("strong",{parentName:"p"},"This transaction must be done in the same transaction chain of the referenced token")," (to prove ownership of the token) and it's type must be ",(0,o.kt)("inlineCode",{parentName:"p"},"token"),"."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/develop/priv/json-schemas/token-resupply.json"},"The JSON Schema is available on GitHub")),(0,o.kt)("p",null,"Here's an example of the token resupply transaction's content:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 18],\n "supply": 100000000000, // 1000 tokens if referenced token has decimals=8\n "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2"\n}\n')),(0,o.kt)("h2",{id:"recipients-aeip-19"},"Recipients (AEIP-19)"),(0,o.kt)("p",null,"When creating a token transaction (creation or resupply), it is also possible to specify a list of recipients that will receive all or some of the minted tokens.\nIn order to do so, a ",(0,o.kt)("inlineCode",{parentName:"p"},"recipients")," field must specified in the transaction's content."),(0,o.kt)("p",null,"Here's an example for a fungible token resupply:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 18, 19],\n "supply": 1000,\n "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2",\n "recipients": [\n {\n "to": "0000f1fd....",\n "amount": 100000000 // 1 token\n }\n ]\n}\n')),(0,o.kt)("p",null,"Here's another example for a non-fungible token creation:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [2, 8, 19],\n "supply": 100000000, // 1 token\n "type": "non-fungible",\n "name": "My NFT",\n "symbol": "MNFT",\n "properties": {\n "image": "base64 of the image",\n "description": "This is a NFT with an image"\n },\n "recipients": [\n {\n "to": "0000f1fd....",\n "amount": 100000000 // 1 token\n }\n ]\n}\n')),(0,o.kt)("h2",{id:"transfer"},"Transfer"),(0,o.kt)("p",null,"Now that the tokens are created, there are few ways to move them around:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Via a wallet (such as the ",(0,o.kt)("a",{parentName:"li",href:"https://www.archethic.net/aewallet.html"},"Archethic Wallet"),")"),(0,o.kt)("li",{parentName:"ol"},"Via the ",(0,o.kt)("inlineCode",{parentName:"li"},"send-transaction")," API"),(0,o.kt)("li",{parentName:"ol"},"Via a Smart Contract")),(0,o.kt)("p",null,"Example of a NFT transfer via the API:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "method": "send_transaction",\n "jsonrpc": "2.0",\n "id": 1,\n "params": {\n "transaction": {\n "version": 2,\n "type": "transfer",\n // [...]\n "data": {\n "ledger": {\n "token": {\n "transfers": [\n {\n "to": "0000ABCD...EF", // recipient\'s address\n "amount": 100000000, // 1 token\n "tokenAddress": "00001AC8...4F", // token definition address\n "tokenId": 1 // 1st token of the collection\n }\n ]\n }\n }\n }\n }\n }\n}\n')),(0,o.kt)("p",null,"Example of a transfer via a Smart Contract:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-elixir"},"Contract.add_token_transfer(token_address: 0x00001AC8...4F, to: 0x0000ABCD...EF, amount: 100000000)\n")))}d.isMDXComponent=!0},8209:(e,n,t)=>{t(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7157],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>k});var a=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(t),m=o,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return t?a.createElement(k,i(i({ref:n},c),{},{components:t})):a.createElement(k,i({ref:n},c))}));function k(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var p=2;p{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var a=t(7462),o=(t(7294),t(3905));t(8209);const r={id:"token",title:"Tokens"},i=void 0,l={unversionedId:"learn/token",id:"learn/token",title:"Tokens",description:"Tokens is an important feature on Archethic.",source:"@site/docs/learn/token.md",sourceDirName:"learn",slug:"/learn/token",permalink:"/learn/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token",title:"Tokens"},sidebar:"docs",previous:{title:"Replication attestation",permalink:"/learn/sharding/replication-attestation"},next:{title:"Participate",permalink:"/category/participate"}},s={},p=[{value:"Native",id:"native",level:2},{value:"Standardized",id:"standardized",level:2},{value:"Creation",id:"creation",level:2},{value:"Fungible",id:"fungible",level:3},{value:"Non-fungible",id:"non-fungible",level:3},{value:"Resupply fungible tokens (AEIP-18)",id:"resupply-fungible-tokens-aeip-18",level:2},{value:"Recipients (AEIP-19)",id:"recipients-aeip-19",level:2},{value:"Transfer",id:"transfer",level:2}],c={toc:p},u="wrapper";function d(e){let{components:n,...t}=e;return(0,o.kt)(u,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Tokens is an important feature on Archethic.\nNowadays, our world is transforming towards digitalisation and tokenization with new use cases and trends (royalties, collection, proof of ownerships, etc.)"),(0,o.kt)("p",null,"Archethic allows users to create and transaction with an unlimited-defined (custom) token natively."),(0,o.kt)("h2",{id:"native"},"Native"),(0,o.kt)("p",null,"Archethic tokens are considered as native as for developers, there is no need to create smart contract to mint or transfer tokens."),(0,o.kt)("p",null,"The transaction's structure supports - by design, asn extension of the ledger model (more than UCO-only transaction)"),(0,o.kt)("p",null,"All the layer of complexity have been removed to make them efficient and performant."),(0,o.kt)("p",null,"Because of this, the transfer of tokens is as simple as a transfer of UCO (just UTXO), making it fast and cheap."),(0,o.kt)("h2",{id:"standardized"},"Standardized"),(0,o.kt)("p",null,"Archethic's tokens are also unified through specifications to help implementers, developers and users to have a clear understanding of their definition."),(0,o.kt)("p",null,"The complete specification is composed of many AEIPs:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-02.md"},"AEIP-02 - Tokens standard")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-18.md"},"AEIP-18 - Tokens resupply")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-19.md"},"AEIP-19 - Tokens minting's recipients"))),(0,o.kt)("h2",{id:"creation"},"Creation"),(0,o.kt)("p",null,"In order to create a token, you have to:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"set the transaction's type to: ",(0,o.kt)("inlineCode",{parentName:"li"},"token")),(0,o.kt)("li",{parentName:"ol"},"define in the transaction's content the token's json definition")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/develop/priv/json-schemas/token-core.json"},"The JSON Schema is available on GitHub")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"As everything on Archethic, it is a good practice to create a new transaction chain for this token only.")),(0,o.kt)("h3",{id:"fungible"},"Fungible"),(0,o.kt)("p",null,"Example of a token that doesn't allow minting (may never be resupplied):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 100000000000, // 1000 tokens\n "decimals": 8, // 1 token == 10\u2078\n "type": "fungible",\n "symbol": "TOKEN_SYMBOL",\n "name": "TOKEN_NAME",\n "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}\n}\n')),(0,o.kt)("p",null,"Example of a token that allows minting (may be resupplied later):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "allow_mint": true, // <------------\n "supply": 100000000000, // 100000 tokens\n "decimals": 6, // 1 token == 10\u2076\n "type": "fungible",\n "symbol": "TOKEN_SYMBOL",\n "name": "TOKEN_NAME",\n "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}\n}\n')),(0,o.kt)("h3",{id:"non-fungible"},"Non-fungible"),(0,o.kt)("p",null,"There are 2 definitions for the NFT:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"either for a single token"),(0,o.kt)("li",{parentName:"ol"},"either for a collection of tokens")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"NFTs always have 8 decimals.")),(0,o.kt)("p",null,"Example of a NFT:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 100000000, // 1 token\n "type": "non-fungible",\n "name": "My NFT",\n "symbol": "MNFT",\n "properties": {\n "image": "base64 of the image",\n "description": "This is a NFT with an image"\n }\n}\n')),(0,o.kt)("p",null,"Example of a NFT Collection:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "supply": 300000000, // 3 tokens\n "type": "non-fungible",\n "name": "COLLETION NAME",\n "symbol": "COLLETION_SYMBOL",\n "properties": {"globalProperty": "value"},\n "collection": [\n {"image": "link"},\n {"image": "link"},\n {"image": "link"}\n ]\n}\n')),(0,o.kt)("p",null,"During the transaction validation, the miners will understand how to interpret this transaction and create the relative assets and UTXOs to make transfers possible right away."),(0,o.kt)("h2",{id:"resupply-fungible-tokens-aeip-18"},"Resupply fungible tokens (AEIP-18)"),(0,o.kt)("p",null,"As mentioned above, fungible tokens may accept to be minted at any time. ",(0,o.kt)("strong",{parentName:"p"},"This transaction must be done in the same transaction chain of the referenced token")," (to prove ownership of the token) and it's type must be ",(0,o.kt)("inlineCode",{parentName:"p"},"token"),"."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/develop/priv/json-schemas/token-resupply.json"},"The JSON Schema is available on GitHub")),(0,o.kt)("p",null,"Here's an example of the token resupply transaction's content:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 18],\n "supply": 100000000000, // 1000 tokens if referenced token has decimals=8\n "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2"\n}\n')),(0,o.kt)("h2",{id:"recipients-aeip-19"},"Recipients (AEIP-19)"),(0,o.kt)("p",null,"When creating a token transaction (creation or resupply), it is also possible to specify a list of recipients that will receive all or some of the minted tokens.\nIn order to do so, a ",(0,o.kt)("inlineCode",{parentName:"p"},"recipients")," field must specified in the transaction's content."),(0,o.kt)("p",null,"Here's an example for a fungible token resupply:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 18, 19],\n "supply": 1000,\n "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2",\n "recipients": [\n {\n "to": "0000f1fd....",\n "amount": 100000000 // 1 token\n }\n ]\n}\n')),(0,o.kt)("p",null,"Here's another example for a non-fungible token creation:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [2, 8, 19],\n "supply": 100000000, // 1 token\n "type": "non-fungible",\n "name": "My NFT",\n "symbol": "MNFT",\n "properties": {\n "image": "base64 of the image",\n "description": "This is a NFT with an image"\n },\n "recipients": [\n {\n "to": "0000f1fd....",\n "amount": 100000000 // 1 token\n }\n ]\n}\n')),(0,o.kt)("h2",{id:"transfer"},"Transfer"),(0,o.kt)("p",null,"Now that the tokens are created, there are few ways to move them around:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Via a wallet (such as the ",(0,o.kt)("a",{parentName:"li",href:"https://www.archethic.net/aewallet.html"},"Archethic Wallet"),")"),(0,o.kt)("li",{parentName:"ol"},"Via the ",(0,o.kt)("inlineCode",{parentName:"li"},"send-transaction")," API"),(0,o.kt)("li",{parentName:"ol"},"Via a Smart Contract")),(0,o.kt)("p",null,"Example of a NFT transfer via the API:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "method": "send_transaction",\n "jsonrpc": "2.0",\n "id": 1,\n "params": {\n "transaction": {\n "version": 2,\n "type": "transfer",\n // [...]\n "data": {\n "ledger": {\n "token": {\n "transfers": [\n {\n "to": "0000ABCD...EF", // recipient\'s address\n "amount": 100000000, // 1 token\n "tokenAddress": "00001AC8...4F", // token definition address\n "tokenId": 1 // 1st token of the collection\n }\n ]\n }\n }\n }\n }\n }\n}\n')),(0,o.kt)("p",null,"Example of a transfer via a Smart Contract:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-elixir"},"Contract.add_token_transfer(token_address: 0x00001AC8...4F, to: 0x0000ABCD...EF, amount: 100000000)\n")))}d.isMDXComponent=!0},8209:(e,n,t)=>{t(7294)}}]); \ No newline at end of file diff --git a/assets/js/11838df3.5bb97674.js b/assets/js/11838df3.0702be45.js similarity index 97% rename from assets/js/11838df3.5bb97674.js rename to assets/js/11838df3.0702be45.js index 07958865b..45eaf5d2a 100644 --- a/assets/js/11838df3.5bb97674.js +++ b/assets/js/11838df3.0702be45.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(a),f=o,m=u["".concat(i,".").concat(f)]||u[f]||p[f]||n;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,l=new Array(n);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:o,l[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=a(7462),o=a(7294),n=a(3905);a(8209);const l={id:"uco-data",title:"UcoData",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/objects/uco-data",id:"build/api/schema/objects/uco-data",title:"UcoData",description:"No description",source:"@site/docs/build/api/schema/objects/uco-data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-data",permalink:"/build/api/schema/objects/uco-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"uco-data",title:"UcoData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Transaction",permalink:"/build/api/schema/objects/transaction"},next:{title:"UcoLedger",permalink:"/build/api/schema/objects/uco-ledger"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoData.eurFloat ',id:"code-style-fontweight-normal-ucodatabeurbcodefloat-",level:4},{value:'UcoData.usdFloat ',id:"code-style-fontweight-normal-ucodatabusdbcodefloat-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,n.kt)(o.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:f},b="wrapper";function y(e){let{components:t,...a}=e;return(0,n.kt)(b,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"No description"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoData {\n eur: Float\n usd: Float\n}\n")),(0,n.kt)("h3",{id:"fields"},"Fields"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-ucodatabeurbcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"UcoData.",(0,n.kt)("b",null,"eur"))),(0,n.kt)(u,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-ucodatabusdbcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"UcoData.",(0,n.kt)("b",null,"usd"))),(0,n.kt)(u,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"member-of"},"Member of"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-services"},(0,n.kt)("inlineCode",{parentName:"a"},"OracleServices"))," ",(0,n.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(a),f=o,m=u["".concat(i,".").concat(f)]||u[f]||p[f]||n;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,l=new Array(n);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:o,l[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=a(7462),o=a(7294),n=a(3905);a(8209);const l={id:"uco-data",title:"UcoData",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/objects/uco-data",id:"build/api/schema/objects/uco-data",title:"UcoData",description:"No description",source:"@site/docs/build/api/schema/objects/uco-data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-data",permalink:"/build/api/schema/objects/uco-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"uco-data",title:"UcoData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Transaction",permalink:"/build/api/schema/objects/transaction"},next:{title:"UcoLedger",permalink:"/build/api/schema/objects/uco-ledger"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoData.eurFloat ',id:"code-style-fontweight-normal-ucodatabeurbcodefloat-",level:4},{value:'UcoData.usdFloat ',id:"code-style-fontweight-normal-ucodatabusdbcodefloat-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,n.kt)(o.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:f},b="wrapper";function y(e){let{components:t,...a}=e;return(0,n.kt)(b,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"No description"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoData {\n eur: Float\n usd: Float\n}\n")),(0,n.kt)("h3",{id:"fields"},"Fields"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-ucodatabeurbcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"UcoData.",(0,n.kt)("b",null,"eur"))),(0,n.kt)(u,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-ucodatabusdbcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"UcoData.",(0,n.kt)("b",null,"usd"))),(0,n.kt)(u,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"member-of"},"Member of"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-services"},(0,n.kt)("inlineCode",{parentName:"a"},"OracleServices"))," ",(0,n.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/12706266.2a13b956.js b/assets/js/12706266.b8064979.js similarity index 99% rename from assets/js/12706266.2a13b956.js rename to assets/js/12706266.b8064979.js index e1d918937..09c498686 100644 --- a/assets/js/12706266.2a13b956.js +++ b/assets/js/12706266.b8064979.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1137],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(n),m=r,k=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return n?a.createElement(k,l(l({ref:t},p),{},{components:n})):a.createElement(k,l({ref:t},p))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"language",title:"Smart Contract Language",sidebar_label:"Language"},l=void 0,o={unversionedId:"build/smart-contracts/language/legacy/language",id:"build/smart-contracts/language/legacy/language",title:"Smart Contract Language",description:"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:",source:"@site/docs/build/smart-contracts/language/legacy/language.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/language",permalink:"/build/smart-contracts/language/legacy/language",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"language",title:"Smart Contract Language",sidebar_label:"Language"},sidebar:"docs",previous:{title:"Examples",permalink:"/build/smart-contracts/language/legacy/examples"},next:{title:"Playground",permalink:"/build/smart-contracts/playground/"}},c={},s=[{value:"Triggers/Actions",id:"triggersactions",level:2},{value:"Conditions",id:"conditions",level:2},{value:"Global variables",id:"global-variables",level:2},{value:"Functions",id:"functions",level:2},{value:"Utilities",id:"utilities",level:3},{value:"Statements",id:"statements",level:3}],p={toc:s},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Expressiveness"),(0,r.kt)("li",{parentName:"ul"},"Simplify"),(0,r.kt)("li",{parentName:"ul"},"Security")),(0,r.kt)("p",null,"Along with the new features of Archethic Smart Contracts (triggers, conditions, actions), a new custom language is defined"),(0,r.kt)("h2",{id:"triggersactions"},"Triggers/Actions"),(0,r.kt)("p",null,"To define a trigger, we need to specify an action block with its trigger type and the following parameters (if presents)"),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"based on an incoming transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"actions triggered_by: transaction do\n # do something when a receive transaction\nend\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"based on time interval")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: interval, at: "0 8 * * *" do\n # do something each day at 8AM\nend\n')),(0,r.kt)("h2",{id:"conditions"},"Conditions"),(0,r.kt)("p",null,"To define a condition, we need to specify a condition block with its subject and the list conditions by fields:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"authorized_keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"secrets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"previous_public_key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"origin_family"))),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'expecting the incoming transaction contains the content "hello"')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition transaction: [\n content: "Hello"\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"expecting all the transaction in the chain should be generated from a biometric device")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"condition inherit: [\n origin_family: biometric\n]\n")),(0,r.kt)("h2",{id:"global-variables"},"Global variables"),(0,r.kt)("p",null,"Smart Contract can use global variable in the different blocks:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"contract"),": represent the actual contract"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transaction"),": incoming transaction"),(0,r.kt)("li",{parentName:"ul"},"(inherit condition only) ",(0,r.kt)("inlineCode",{parentName:"li"},"next"),": next transaction on the chain"),(0,r.kt)("li",{parentName:"ul"},"(inherit condition only) ",(0,r.kt)("inlineCode",{parentName:"li"},"previous"),": previous transaction on the chain")),(0,r.kt)("p",null,"Each of this variables contains the following fields:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"address")," (hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")," (abitraty string)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")," (abritraty string)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"authorized_keys")," (map of public keys)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"secrets")," (list of encrypted secrets in hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"previous_public_key")," (hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"recipients")," (list of smart contract recipients addresses in hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")," (map of the uco transfers: ",(0,r.kt)("inlineCode",{parentName:"li"},"%{ recipient_address => amount }")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")," (map of the token transfers: ",(0,r.kt)("inlineCode",{parentName:"li"},"%{ recipient_address => list(%{ amount: amount, token_address: token_to_transfer, token_id: token_id}}) "))),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("p",null,"Archethic Smart Contracts relies on function which can be used on condition or action blocks."),(0,r.kt)("p",null,"There are two categories of functions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Utilities"),(0,r.kt)("li",{parentName:"ul"},"Statements (for transaction generation)")),(0,r.kt)("h3",{id:"utilities"},"Utilities"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In the ",(0,r.kt)("inlineCode",{parentName:"p"},"condition")," block, if no parameter is given, the transaction's field value will be the first one")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"hash(data)"),": Perform a cryptographic hash")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"condition transaction: [\n content: hash(contract.code)\n]\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"regex_match?(data, pattern)"),": Verify a regular expression")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition transaction: [\n content: regex_match?("hello")\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"regex_extract(data, pattern)"),": Extract data from a regular expression")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"json_match?: Verify the data matches a JSONPath expression"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition oracle: [\n content: json_match?("$.uco.usd")\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"json_extract(data, pattern)"),": Extract data from a JSONPath expression")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition oracle: [\n content: json_extract("$.uco.usd") > 0.2\n]\n')),(0,r.kt)("h3",{id:"statements"},"Statements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_type"),": Set the transaction type")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"actions triggered_by: transaction do\n set_type transfer\nend\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_uco_transfer"),": Add a new UCO transfer")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_uco_transfer to: "F28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", amount: 1.0\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_token_transfer"),": Add a new token transfer")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_token_transfer: to: "AF28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", token_address: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 1.0\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_content"),": Set the new content")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n set_content "hello"\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_code"),": Set the new code")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n set_code """\n actions triggered_by: transaction do\n add_uco_transfer to: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 2.0\n end\n """\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_ownership"),": Add a new ownership with a secret and its authorized public keys")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_ownership secret: "...", secret_key: "...", authorized_public_key: ["0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"]\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_recipient"),": Add a contract address to reach")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: datetime, at: 1391309040 do\n add_recipient "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"\nend\n\n')))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1137],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(n),m=r,k=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return n?a.createElement(k,l(l({ref:t},p),{},{components:n})):a.createElement(k,l({ref:t},p))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"language",title:"Smart Contract Language",sidebar_label:"Language"},l=void 0,o={unversionedId:"build/smart-contracts/language/legacy/language",id:"build/smart-contracts/language/legacy/language",title:"Smart Contract Language",description:"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:",source:"@site/docs/build/smart-contracts/language/legacy/language.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/language",permalink:"/build/smart-contracts/language/legacy/language",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"language",title:"Smart Contract Language",sidebar_label:"Language"},sidebar:"docs",previous:{title:"Examples",permalink:"/build/smart-contracts/language/legacy/examples"},next:{title:"Playground",permalink:"/build/smart-contracts/playground/"}},c={},s=[{value:"Triggers/Actions",id:"triggersactions",level:2},{value:"Conditions",id:"conditions",level:2},{value:"Global variables",id:"global-variables",level:2},{value:"Functions",id:"functions",level:2},{value:"Utilities",id:"utilities",level:3},{value:"Statements",id:"statements",level:3}],p={toc:s},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Expressiveness"),(0,r.kt)("li",{parentName:"ul"},"Simplify"),(0,r.kt)("li",{parentName:"ul"},"Security")),(0,r.kt)("p",null,"Along with the new features of Archethic Smart Contracts (triggers, conditions, actions), a new custom language is defined"),(0,r.kt)("h2",{id:"triggersactions"},"Triggers/Actions"),(0,r.kt)("p",null,"To define a trigger, we need to specify an action block with its trigger type and the following parameters (if presents)"),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"based on an incoming transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"actions triggered_by: transaction do\n # do something when a receive transaction\nend\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"based on time interval")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: interval, at: "0 8 * * *" do\n # do something each day at 8AM\nend\n')),(0,r.kt)("h2",{id:"conditions"},"Conditions"),(0,r.kt)("p",null,"To define a condition, we need to specify a condition block with its subject and the list conditions by fields:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"authorized_keys")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"secrets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"previous_public_key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"origin_family"))),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'expecting the incoming transaction contains the content "hello"')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition transaction: [\n content: "Hello"\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"expecting all the transaction in the chain should be generated from a biometric device")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"condition inherit: [\n origin_family: biometric\n]\n")),(0,r.kt)("h2",{id:"global-variables"},"Global variables"),(0,r.kt)("p",null,"Smart Contract can use global variable in the different blocks:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"contract"),": represent the actual contract"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transaction"),": incoming transaction"),(0,r.kt)("li",{parentName:"ul"},"(inherit condition only) ",(0,r.kt)("inlineCode",{parentName:"li"},"next"),": next transaction on the chain"),(0,r.kt)("li",{parentName:"ul"},"(inherit condition only) ",(0,r.kt)("inlineCode",{parentName:"li"},"previous"),": previous transaction on the chain")),(0,r.kt)("p",null,"Each of this variables contains the following fields:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"address")," (hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")," (abitraty string)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")," (abritraty string)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"authorized_keys")," (map of public keys)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"secrets")," (list of encrypted secrets in hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"previous_public_key")," (hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"recipients")," (list of smart contract recipients addresses in hex)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")," (map of the uco transfers: ",(0,r.kt)("inlineCode",{parentName:"li"},"%{ recipient_address => amount }")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")," (map of the token transfers: ",(0,r.kt)("inlineCode",{parentName:"li"},"%{ recipient_address => list(%{ amount: amount, token_address: token_to_transfer, token_id: token_id}}) "))),(0,r.kt)("h2",{id:"functions"},"Functions"),(0,r.kt)("p",null,"Archethic Smart Contracts relies on function which can be used on condition or action blocks."),(0,r.kt)("p",null,"There are two categories of functions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Utilities"),(0,r.kt)("li",{parentName:"ul"},"Statements (for transaction generation)")),(0,r.kt)("h3",{id:"utilities"},"Utilities"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In the ",(0,r.kt)("inlineCode",{parentName:"p"},"condition")," block, if no parameter is given, the transaction's field value will be the first one")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"hash(data)"),": Perform a cryptographic hash")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"condition transaction: [\n content: hash(contract.code)\n]\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"regex_match?(data, pattern)"),": Verify a regular expression")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition transaction: [\n content: regex_match?("hello")\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"regex_extract(data, pattern)"),": Extract data from a regular expression")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"json_match?: Verify the data matches a JSONPath expression"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition oracle: [\n content: json_match?("$.uco.usd")\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"json_extract(data, pattern)"),": Extract data from a JSONPath expression")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'condition oracle: [\n content: json_extract("$.uco.usd") > 0.2\n]\n')),(0,r.kt)("h3",{id:"statements"},"Statements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_type"),": Set the transaction type")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"actions triggered_by: transaction do\n set_type transfer\nend\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_uco_transfer"),": Add a new UCO transfer")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_uco_transfer to: "F28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", amount: 1.0\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_token_transfer"),": Add a new token transfer")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_token_transfer: to: "AF28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", token_address: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 1.0\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_content"),": Set the new content")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n set_content "hello"\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set_code"),": Set the new code")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n set_code """\n actions triggered_by: transaction do\n add_uco_transfer to: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 2.0\n end\n """\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_ownership"),": Add a new ownership with a secret and its authorized public keys")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: transaction do\n add_ownership secret: "...", secret_key: "...", authorized_public_key: ["0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"]\nend\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"add_recipient"),": Add a contract address to reach")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'actions triggered_by: datetime, at: 1391309040 do\n add_recipient "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"\nend\n\n')))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/145f3c45.a580fdc7.js b/assets/js/145f3c45.03610a43.js similarity index 98% rename from assets/js/145f3c45.a580fdc7.js rename to assets/js/145f3c45.03610a43.js index 230bf023c..70a1054ec 100644 --- a/assets/js/145f3c45.a580fdc7.js +++ b/assets/js/145f3c45.03610a43.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8268],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),c=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,b=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(b,l(l({ref:t},d),{},{components:n})):a.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const l={id:"transaction-input",title:"TransactionInput",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/transaction-input",id:"build/api/schema/objects/transaction-input",title:"TransactionInput",description:"[TransactionInput] represents the inputs from the transaction",source:"@site/docs/build/api/schema/objects/transaction-input.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-input",permalink:"/build/api/schema/objects/transaction-input",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-input",title:"TransactionInput",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionError",permalink:"/build/api/schema/objects/transaction-error"},next:{title:"TransactionMovement",permalink:"/build/api/schema/objects/transaction-movement"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionInput.amountInt ',id:"code-style-fontweight-normal-transactioninputbamountbcodeint-",level:4},{value:'TransactionInput.fromAddress ',id:"code-style-fontweight-normal-transactioninputbfrombcodeaddress-",level:4},{value:'TransactionInput.spentBoolean ',id:"code-style-fontweight-normal-transactioninputbspentbcodeboolean-",level:4},{value:'TransactionInput.timestampTimestamp ',id:"code-style-fontweight-normal-transactioninputbtimestampbcodetimestamp-",level:4},{value:'TransactionInput.tokenAddressAddress ',id:"code-style-fontweight-normal-transactioninputbtokenaddressbcodeaddress-",level:4},{value:'TransactionInput.tokenIdInt ',id:"code-style-fontweight-normal-transactioninputbtokenidbcodeint-",level:4},{value:'TransactionInput.typeString ',id:"code-style-fontweight-normal-transactioninputbtypebcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},k="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionInput]"," represents the inputs from the transaction\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,o.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,o.kt)("li",{parentName:"ul"},"Type: UCO/token/Call"),(0,o.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,o.kt)("li",{parentName:"ul"},"Spent: determines if the input has been spent"),(0,o.kt)("li",{parentName:"ul"},"Timestamp: Date time when the inputs was generated"),(0,o.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionInput {\n amount: Int\n from: Address\n spent: Boolean\n timestamp: Timestamp\n tokenAddress: Address\n tokenId: Int\n type: String\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbfrombcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"from"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbspentbcodeboolean-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"spent"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,o.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtimestampbcodetimestamp-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"timestamp"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,o.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtokenaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"tokenAddress"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtypebcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"type"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,o.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8268],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),c=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,b=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(b,l(l({ref:t},d),{},{components:n})):a.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const l={id:"transaction-input",title:"TransactionInput",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/transaction-input",id:"build/api/schema/objects/transaction-input",title:"TransactionInput",description:"[TransactionInput] represents the inputs from the transaction",source:"@site/docs/build/api/schema/objects/transaction-input.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-input",permalink:"/build/api/schema/objects/transaction-input",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-input",title:"TransactionInput",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionError",permalink:"/build/api/schema/objects/transaction-error"},next:{title:"TransactionMovement",permalink:"/build/api/schema/objects/transaction-movement"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionInput.amountInt ',id:"code-style-fontweight-normal-transactioninputbamountbcodeint-",level:4},{value:'TransactionInput.fromAddress ',id:"code-style-fontweight-normal-transactioninputbfrombcodeaddress-",level:4},{value:'TransactionInput.spentBoolean ',id:"code-style-fontweight-normal-transactioninputbspentbcodeboolean-",level:4},{value:'TransactionInput.timestampTimestamp ',id:"code-style-fontweight-normal-transactioninputbtimestampbcodetimestamp-",level:4},{value:'TransactionInput.tokenAddressAddress ',id:"code-style-fontweight-normal-transactioninputbtokenaddressbcodeaddress-",level:4},{value:'TransactionInput.tokenIdInt ',id:"code-style-fontweight-normal-transactioninputbtokenidbcodeint-",level:4},{value:'TransactionInput.typeString ',id:"code-style-fontweight-normal-transactioninputbtypebcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},k="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionInput]"," represents the inputs from the transaction\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,o.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,o.kt)("li",{parentName:"ul"},"Type: UCO/token/Call"),(0,o.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,o.kt)("li",{parentName:"ul"},"Spent: determines if the input has been spent"),(0,o.kt)("li",{parentName:"ul"},"Timestamp: Date time when the inputs was generated"),(0,o.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionInput {\n amount: Int\n from: Address\n spent: Boolean\n timestamp: Timestamp\n tokenAddress: Address\n tokenId: Int\n type: String\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbfrombcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"from"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbspentbcodeboolean-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"spent"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,o.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtimestampbcodetimestamp-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"timestamp"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,o.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtokenaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"tokenAddress"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactioninputbtypebcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionInput.",(0,o.kt)("b",null,"type"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,o.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/147d0e4e.2689713c.js b/assets/js/147d0e4e.199b9b7e.js similarity index 97% rename from assets/js/147d0e4e.2689713c.js rename to assets/js/147d0e4e.199b9b7e.js index 9810f32b1..e028dd0e7 100644 --- a/assets/js/147d0e4e.2689713c.js +++ b/assets/js/147d0e4e.199b9b7e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1166],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=s(n),h=a,m=d["".concat(l,".").concat(h)]||d[h]||p[h]||i;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=h;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"oracle-chain",title:"OracleChain"},o=void 0,c={unversionedId:"learn/oracle-chain",id:"learn/oracle-chain",title:"OracleChain",description:"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.",source:"@site/docs/learn/oracle-chain.md",sourceDirName:"learn",slug:"/learn/oracle-chain",permalink:"/learn/oracle-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-chain",title:"OracleChain"},sidebar:"docs",previous:{title:"Governance",permalink:"/learn/governance/"},next:{title:"P2P",permalink:"/learn/p2p/"}},l={},s=[{value:"How is it work ?",id:"how-is-it-work-",level:2},{value:"Services",id:"services",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called ",(0,a.kt)("inlineCode",{parentName:"p"},"OracleChain"),"."),(0,a.kt)("p",null,"It aims to gather external data to be used inside the network or the smart contract layer."),(0,a.kt)("h2",{id:"how-is-it-work-"},"How is it work ?"),(0,a.kt)("p",null,"OracleChain behaves a bit like the ",(0,a.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," except the transaction on the chain are generated every 10min but only when there is a new data updated."),(0,a.kt)("p",null,"It's using a long-polling mechanism to get data from external sources and submit a transaction through ARCH Consensus."),(0,a.kt)("p",null,"By using ARCH consensus, we ensure the atomic commitment of the data submitted and ensure validity of the information written into the transaction."),(0,a.kt)("p",null,"Each node receives the new transaction from the OracleChain and can apply behaviors from this new data and notify smart contracts which depends on oracle updates."),(0,a.kt)("mermaid",{value:"graph TD\n A[Node1] --\x3e|1. Fetch data| B\n B(External service: ie. UCO Price)\n A --\x3e | 2. Send transaction| C\n A --\x3e | 2. Send transaction| D\n C[Node2] --\x3e | 3. Check data | B \n D[Node3] --\x3e | 3. Check data |B\n C[Node2] --\x3e | 4. Validate transaction | D \n D[Node2] --\x3e C"}),(0,a.kt)("h2",{id:"services"},"Services"),(0,a.kt)("p",null,"The list of services supported by the OracleChain:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"UCO Price Feed: fetching UCO token price from Coingecko in USD/EUR currency and is used for the:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Transaction Fee algorithm"),(0,a.kt)("li",{parentName:"ul"},"Auto reward of nodes which didn't receive enough mining rewards")))))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1166],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=s(n),h=a,m=d["".concat(l,".").concat(h)]||d[h]||p[h]||i;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=h;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"oracle-chain",title:"OracleChain"},o=void 0,c={unversionedId:"learn/oracle-chain",id:"learn/oracle-chain",title:"OracleChain",description:"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.",source:"@site/docs/learn/oracle-chain.md",sourceDirName:"learn",slug:"/learn/oracle-chain",permalink:"/learn/oracle-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-chain",title:"OracleChain"},sidebar:"docs",previous:{title:"Governance",permalink:"/learn/governance/"},next:{title:"P2P",permalink:"/learn/p2p/"}},l={},s=[{value:"How is it work ?",id:"how-is-it-work-",level:2},{value:"Services",id:"services",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called ",(0,a.kt)("inlineCode",{parentName:"p"},"OracleChain"),"."),(0,a.kt)("p",null,"It aims to gather external data to be used inside the network or the smart contract layer."),(0,a.kt)("h2",{id:"how-is-it-work-"},"How is it work ?"),(0,a.kt)("p",null,"OracleChain behaves a bit like the ",(0,a.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," except the transaction on the chain are generated every 10min but only when there is a new data updated."),(0,a.kt)("p",null,"It's using a long-polling mechanism to get data from external sources and submit a transaction through ARCH Consensus."),(0,a.kt)("p",null,"By using ARCH consensus, we ensure the atomic commitment of the data submitted and ensure validity of the information written into the transaction."),(0,a.kt)("p",null,"Each node receives the new transaction from the OracleChain and can apply behaviors from this new data and notify smart contracts which depends on oracle updates."),(0,a.kt)("mermaid",{value:"graph TD\n A[Node1] --\x3e|1. Fetch data| B\n B(External service: ie. UCO Price)\n A --\x3e | 2. Send transaction| C\n A --\x3e | 2. Send transaction| D\n C[Node2] --\x3e | 3. Check data | B \n D[Node3] --\x3e | 3. Check data |B\n C[Node2] --\x3e | 4. Validate transaction | D \n D[Node2] --\x3e C"}),(0,a.kt)("h2",{id:"services"},"Services"),(0,a.kt)("p",null,"The list of services supported by the OracleChain:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"UCO Price Feed: fetching UCO token price from Coingecko in USD/EUR currency and is used for the:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Transaction Fee algorithm"),(0,a.kt)("li",{parentName:"ul"},"Auto reward of nodes which didn't receive enough mining rewards")))))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/14d826f7.8d474c3e.js b/assets/js/14d826f7.244f0081.js similarity index 99% rename from assets/js/14d826f7.8d474c3e.js rename to assets/js/14d826f7.244f0081.js index d41f9df31..a4691f2af 100644 --- a/assets/js/14d826f7.8d474c3e.js +++ b/assets/js/14d826f7.244f0081.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7870],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>k});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},h=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=s(n),d=o,k=u["".concat(c,".").concat(d)]||u[d]||p[d]||a;return n?r.createElement(k,l(l({ref:t},h),{},{components:n})):r.createElement(k,l({ref:t},h))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));n(8209);const a={id:"wallet",title:"Wallet"},l=void 0,i={unversionedId:"FAQ/wallet",id:"FAQ/wallet",title:"Wallet",description:"General",source:"@site/docs/FAQ/wallet.md",sourceDirName:"FAQ",slug:"/FAQ/wallet",permalink:"/FAQ/wallet",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"wallet",title:"Wallet"},sidebar:"docs",previous:{title:"Archethic Bridge $UCO one-way",permalink:"/FAQ/bridge"},next:{title:"Contributing",permalink:"/contributing"}},c={},s=[{value:"General",id:"general",level:2},{value:" How to retrieve the address of my Archethic wallet?",id:"-how-to-retrieve-the-address-of-my-archethic-wallet",level:3},{value:" How to create a wallet on the Archethic blockchain?",id:"-how-to-create-a-wallet-on-the-archethic-blockchain",level:3},{value:" How to create a fungible token on the Archethic Wallet?",id:"-how-to-create-a-fungible-token-on-the-archethic-wallet",level:3},{value:" How to create a NFT on the Archethic Wallet?",id:"-how-to-create-a-nft-on-the-archethic-wallet",level:3}],h={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"general"},"General"),(0,o.kt)("h3",{id:"-how-to-retrieve-the-address-of-my-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to retrieve the address of my Archethic wallet?")),(0,o.kt)("p",null,"Firstly, you should be aware that your address changes with each transaction."),(0,o.kt)("p",null,"But don't worry. If you provide an old address to receive funds or tokens, it will still work, and you will receive what you are expecting."),(0,o.kt)("admonition",{type:"success"},(0,o.kt)("p",{parentName:"admonition"},"If you do not have an Archethic wallet or address yet, we invite you to refer to the section",(0,o.kt)("br",null),(0,o.kt)("a",{href:"/FAQ/wallet#-how-to-create-a-wallet-on-the-archethic-blockchain"},'"How to create a wallet on the Archethic blockchain?"'))),(0,o.kt)("p",null,"Once your wallet is created,",(0,o.kt)("br",null),'\n1) select the account you wish to receive your funds or tokens on via the "Keychain" tab, which lists your accounts and services contained in your decentralized keychain.',(0,o.kt)("br",null),'\n2) Once selected, the application will display the "Main" tab, where a "Receive" button is shown.',(0,o.kt)("br",null),"\n3) Click on it, and you will get your address, either in the form of a QR Code or in text form by clicking on the icon corresponding to the copy action.",(0,o.kt)("br",null)),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"wallet-address",src:n(1992).Z,width:"353",height:"411"})),(0,o.kt)("h3",{id:"-how-to-create-a-wallet-on-the-archethic-blockchain"},(0,o.kt)("strong",{parentName:"h3"}," How to create a wallet on the Archethic blockchain?")),(0,o.kt)("p",null,"Firstly, ",(0,o.kt)("a",{href:"https://www.archethic.net/wallet",target:"_blank"},"download the wallet")," version that corresponds to the platform you want to use it on from the Archethic website or the app stores.\nOnce installed, you can launch the application."),(0,o.kt)("p",null,"1) The first page invites you to read and accept ","[https://www.archethic.net/privacy-policy-wallet/]","(the privacy policy).",(0,o.kt)("br",null),'\n2) Once accepted, you can click on "Get started" to begin creating your wallet.',(0,o.kt)("br",null),"\n3) First, give a name to your first account within your future decentralized keychain.",(0,o.kt)("br",null),"\n4) A confirmation popup appears to verify that the account name is to your liking.",(0,o.kt)("br",null),"\n5) The application reminds you of important security information to protect your funds and your secret phrase.",(0,o.kt)("br",null),'\n6) After reading the information, click on "I understand".',(0,o.kt)("br",null),"\n7) The 24 words of your secret phrase will be displayed.",(0,o.kt)("br",null)),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Do not share them with anyone and write them down so you can confirm them on the following screen.")),(0,o.kt)("p",null,"8) Confirmation requires that the words be put back in order.",(0,o.kt)("br",null),"\n9) Once the process of confirming the order of the words in the secret phrase is done, you can select the means to protect your application (PIN code, password, biometrics, YubiKey).",(0,o.kt)("br",null),"\n10) After a few seconds of waiting, your keychain is created with your first account.",(0,o.kt)("br",null)),(0,o.kt)("p",null,"You can now enjoy the Archethic ecosystem. Enjoy!"),(0,o.kt)("h3",{id:"-how-to-create-a-fungible-token-on-the-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to create a fungible token on the Archethic Wallet?")),(0,o.kt)("p",null,"1) Open your Archethic Wallet and click on tokens in the main tab."),(0,o.kt)("img",{src:"/img/faq/wallet/tokens1.png",width:"400px"}),(0,o.kt)("p",null,"2) Click on create token. "),(0,o.kt)("img",{src:"/img/faq/wallet/tokens2.png",width:"400px"}),(0,o.kt)("p",null,"3) Insert all the information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Name: Name of the token, e.g., "Archethic"'),(0,o.kt)("li",{parentName:"ul"},'Symbol: Symbol of the token, e.g., "UCO"'),(0,o.kt)("li",{parentName:"ul"},"Initial Supply: The maximum supply of your token.")),(0,o.kt)("p",null,'And click on "Create Token".'),(0,o.kt)("img",{src:"/img/faq/wallet/tokens3.png",width:"400px"}),(0,o.kt)("p",null,"4) Confirm the transaction."),(0,o.kt)("p",null,"You have successfully created your Token!"),(0,o.kt)("img",{src:"/img/faq/wallet/tokens4.png",width:"400px"}),(0,o.kt)("h3",{id:"-how-to-create-a-nft-on-the-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to create a NFT on the Archethic Wallet?")),(0,o.kt)("p",null,"1) Click on 'NFT' at the bottom right of the application."),(0,o.kt)("p",null,"2) Choose a category"),(0,o.kt)("p",null,"3) Click on create a NFT"),(0,o.kt)("img",{src:"/img/faq/wallet/NFT1.png",width:"400px"}),(0,o.kt)("p",null,"4) Insert all the information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Name: Name of the NFT such as "Archers"'),(0,o.kt)("li",{parentName:"ul"},'Symbol: Symbol such as "UCO"'),(0,o.kt)("li",{parentName:"ul"},"Description: Describe your NFT ")),(0,o.kt)("img",{src:"/img/faq/wallet/NFT2.png",width:"400px"}),(0,o.kt)("p",null,"5) Import your NFT"),(0,o.kt)("img",{src:"/img/faq/wallet/NFT3.png",width:"400px"}),(0,o.kt)("p",null,'6) Go to summary and click on "Create the NFT", confirm the mint'),(0,o.kt)("img",{src:"/img/faq/wallet/NFT4.png",width:"400px"}),(0,o.kt)("p",null,"You have successfully created an NFT and can locate it in the category you selected during step 2."))}p.isMDXComponent=!0},1992:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/wallet-FAQ-display-address-a4c212b56b5f8a328385ac7c6e5c3e66.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7870],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>k});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},h=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=s(n),d=o,k=u["".concat(c,".").concat(d)]||u[d]||p[d]||a;return n?r.createElement(k,l(l({ref:t},h),{},{components:n})):r.createElement(k,l({ref:t},h))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));n(8209);const a={id:"wallet",title:"Wallet"},l=void 0,i={unversionedId:"FAQ/wallet",id:"FAQ/wallet",title:"Wallet",description:"General",source:"@site/docs/FAQ/wallet.md",sourceDirName:"FAQ",slug:"/FAQ/wallet",permalink:"/FAQ/wallet",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"wallet",title:"Wallet"},sidebar:"docs",previous:{title:"Archethic Bridge $UCO one-way",permalink:"/FAQ/bridge"},next:{title:"Contributing",permalink:"/contributing"}},c={},s=[{value:"General",id:"general",level:2},{value:" How to retrieve the address of my Archethic wallet?",id:"-how-to-retrieve-the-address-of-my-archethic-wallet",level:3},{value:" How to create a wallet on the Archethic blockchain?",id:"-how-to-create-a-wallet-on-the-archethic-blockchain",level:3},{value:" How to create a fungible token on the Archethic Wallet?",id:"-how-to-create-a-fungible-token-on-the-archethic-wallet",level:3},{value:" How to create a NFT on the Archethic Wallet?",id:"-how-to-create-a-nft-on-the-archethic-wallet",level:3}],h={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"general"},"General"),(0,o.kt)("h3",{id:"-how-to-retrieve-the-address-of-my-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to retrieve the address of my Archethic wallet?")),(0,o.kt)("p",null,"Firstly, you should be aware that your address changes with each transaction."),(0,o.kt)("p",null,"But don't worry. If you provide an old address to receive funds or tokens, it will still work, and you will receive what you are expecting."),(0,o.kt)("admonition",{type:"success"},(0,o.kt)("p",{parentName:"admonition"},"If you do not have an Archethic wallet or address yet, we invite you to refer to the section",(0,o.kt)("br",null),(0,o.kt)("a",{href:"/FAQ/wallet#-how-to-create-a-wallet-on-the-archethic-blockchain"},'"How to create a wallet on the Archethic blockchain?"'))),(0,o.kt)("p",null,"Once your wallet is created,",(0,o.kt)("br",null),'\n1) select the account you wish to receive your funds or tokens on via the "Keychain" tab, which lists your accounts and services contained in your decentralized keychain.',(0,o.kt)("br",null),'\n2) Once selected, the application will display the "Main" tab, where a "Receive" button is shown.',(0,o.kt)("br",null),"\n3) Click on it, and you will get your address, either in the form of a QR Code or in text form by clicking on the icon corresponding to the copy action.",(0,o.kt)("br",null)),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"wallet-address",src:n(1992).Z,width:"353",height:"411"})),(0,o.kt)("h3",{id:"-how-to-create-a-wallet-on-the-archethic-blockchain"},(0,o.kt)("strong",{parentName:"h3"}," How to create a wallet on the Archethic blockchain?")),(0,o.kt)("p",null,"Firstly, ",(0,o.kt)("a",{href:"https://www.archethic.net/wallet",target:"_blank"},"download the wallet")," version that corresponds to the platform you want to use it on from the Archethic website or the app stores.\nOnce installed, you can launch the application."),(0,o.kt)("p",null,"1) The first page invites you to read and accept ","[https://www.archethic.net/privacy-policy-wallet/]","(the privacy policy).",(0,o.kt)("br",null),'\n2) Once accepted, you can click on "Get started" to begin creating your wallet.',(0,o.kt)("br",null),"\n3) First, give a name to your first account within your future decentralized keychain.",(0,o.kt)("br",null),"\n4) A confirmation popup appears to verify that the account name is to your liking.",(0,o.kt)("br",null),"\n5) The application reminds you of important security information to protect your funds and your secret phrase.",(0,o.kt)("br",null),'\n6) After reading the information, click on "I understand".',(0,o.kt)("br",null),"\n7) The 24 words of your secret phrase will be displayed.",(0,o.kt)("br",null)),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Do not share them with anyone and write them down so you can confirm them on the following screen.")),(0,o.kt)("p",null,"8) Confirmation requires that the words be put back in order.",(0,o.kt)("br",null),"\n9) Once the process of confirming the order of the words in the secret phrase is done, you can select the means to protect your application (PIN code, password, biometrics, YubiKey).",(0,o.kt)("br",null),"\n10) After a few seconds of waiting, your keychain is created with your first account.",(0,o.kt)("br",null)),(0,o.kt)("p",null,"You can now enjoy the Archethic ecosystem. Enjoy!"),(0,o.kt)("h3",{id:"-how-to-create-a-fungible-token-on-the-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to create a fungible token on the Archethic Wallet?")),(0,o.kt)("p",null,"1) Open your Archethic Wallet and click on tokens in the main tab."),(0,o.kt)("img",{src:"/img/faq/wallet/tokens1.png",width:"400px"}),(0,o.kt)("p",null,"2) Click on create token. "),(0,o.kt)("img",{src:"/img/faq/wallet/tokens2.png",width:"400px"}),(0,o.kt)("p",null,"3) Insert all the information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Name: Name of the token, e.g., "Archethic"'),(0,o.kt)("li",{parentName:"ul"},'Symbol: Symbol of the token, e.g., "UCO"'),(0,o.kt)("li",{parentName:"ul"},"Initial Supply: The maximum supply of your token.")),(0,o.kt)("p",null,'And click on "Create Token".'),(0,o.kt)("img",{src:"/img/faq/wallet/tokens3.png",width:"400px"}),(0,o.kt)("p",null,"4) Confirm the transaction."),(0,o.kt)("p",null,"You have successfully created your Token!"),(0,o.kt)("img",{src:"/img/faq/wallet/tokens4.png",width:"400px"}),(0,o.kt)("h3",{id:"-how-to-create-a-nft-on-the-archethic-wallet"},(0,o.kt)("strong",{parentName:"h3"}," How to create a NFT on the Archethic Wallet?")),(0,o.kt)("p",null,"1) Click on 'NFT' at the bottom right of the application."),(0,o.kt)("p",null,"2) Choose a category"),(0,o.kt)("p",null,"3) Click on create a NFT"),(0,o.kt)("img",{src:"/img/faq/wallet/NFT1.png",width:"400px"}),(0,o.kt)("p",null,"4) Insert all the information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Name: Name of the NFT such as "Archers"'),(0,o.kt)("li",{parentName:"ul"},'Symbol: Symbol such as "UCO"'),(0,o.kt)("li",{parentName:"ul"},"Description: Describe your NFT ")),(0,o.kt)("img",{src:"/img/faq/wallet/NFT2.png",width:"400px"}),(0,o.kt)("p",null,"5) Import your NFT"),(0,o.kt)("img",{src:"/img/faq/wallet/NFT3.png",width:"400px"}),(0,o.kt)("p",null,'6) Go to summary and click on "Create the NFT", confirm the mint'),(0,o.kt)("img",{src:"/img/faq/wallet/NFT4.png",width:"400px"}),(0,o.kt)("p",null,"You have successfully created an NFT and can locate it in the category you selected during step 2."))}p.isMDXComponent=!0},1992:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/wallet-FAQ-display-address-a4c212b56b5f8a328385ac7c6e5c3e66.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/16aa5868.1ba402ac.js b/assets/js/16aa5868.e07eb173.js similarity index 98% rename from assets/js/16aa5868.1ba402ac.js rename to assets/js/16aa5868.e07eb173.js index cdc943b94..03dccc8f5 100644 --- a/assets/js/16aa5868.1ba402ac.js +++ b/assets/js/16aa5868.e07eb173.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3559],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>y});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,c=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=i(r),b=a,y=p["".concat(s,".").concat(b)]||p[b]||u[b]||c;return r?n.createElement(y,l(l({ref:t},d),{},{components:r})):n.createElement(y,l({ref:t},d))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=r.length,l=new Array(c);l[0]=b;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:a,l[1]=o;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>b,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>o,default:()=>f,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),c=r(3905);r(8209);const l={id:"shared-secrets",title:"SharedSecrets",hide_table_of_contents:!1},o=void 0,s={unversionedId:"build/api/schema/objects/shared-secrets",id:"build/api/schema/objects/shared-secrets",title:"SharedSecrets",description:"[SharedSecrets] represents the public shared secret information",source:"@site/docs/build/api/schema/objects/shared-secrets.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/shared-secrets",permalink:"/build/api/schema/objects/shared-secrets",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"shared-secrets",title:"SharedSecrets",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Ownership",permalink:"/build/api/schema/objects/ownership"},next:{title:"TokenBalance",permalink:"/build/api/schema/objects/token-balance"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'SharedSecrets.storageNoncePublicKeyPublicKey ',id:"code-style-fontweight-normal-sharedsecretsbstoragenoncepublickeybcodepublickey-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,c.kt)(a.Fragment,null,(0,c.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,c.kt)(a.Fragment,null,"Specification",(0,c.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),b=e=>(0,c.kt)(a.Fragment,null,(0,c.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:d,Bullet:p,SpecifiedBy:u,Badge:b},m="wrapper";function f(e){let{components:t,...r}=e;return(0,c.kt)(m,(0,n.Z)({},y,r,{components:t,mdxType:"MDXLayout"}),(0,c.kt)("p",null,"[SharedSecrets]"," represents the public shared secret information\nIt includes:"),(0,c.kt)("ul",null,(0,c.kt)("li",{parentName:"ul"},"The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)")),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-graphql"},"type SharedSecrets {\n storageNoncePublicKey: PublicKey\n}\n")),(0,c.kt)("h3",{id:"fields"},"Fields"),(0,c.kt)("h4",{id:"code-style-fontweight-normal-sharedsecretsbstoragenoncepublickeybcodepublickey-"},(0,c.kt)("a",{parentName:"h4",href:"#"},(0,c.kt)("code",{style:{fontWeight:"normal"}},"SharedSecrets.",(0,c.kt)("b",null,"storageNoncePublicKey"))),(0,c.kt)(p,{mdxType:"Bullet"}),(0,c.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,c.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,c.kt)(b,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,c.kt)("blockquote",null),(0,c.kt)("h3",{id:"returned-by"},"Returned by"),(0,c.kt)("p",null,(0,c.kt)("a",{parentName:"p",href:"/build/api/schema/queries/shared-secrets"},(0,c.kt)("inlineCode",{parentName:"a"},"sharedSecrets"))," ",(0,c.kt)(b,{class:"secondary",text:"query",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3559],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>y});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,c=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=i(r),b=a,y=p["".concat(s,".").concat(b)]||p[b]||u[b]||c;return r?n.createElement(y,l(l({ref:t},d),{},{components:r})):n.createElement(y,l({ref:t},d))}));function y(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=r.length,l=new Array(c);l[0]=b;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:a,l[1]=o;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>b,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>o,default:()=>f,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),c=r(3905);r(8209);const l={id:"shared-secrets",title:"SharedSecrets",hide_table_of_contents:!1},o=void 0,s={unversionedId:"build/api/schema/objects/shared-secrets",id:"build/api/schema/objects/shared-secrets",title:"SharedSecrets",description:"[SharedSecrets] represents the public shared secret information",source:"@site/docs/build/api/schema/objects/shared-secrets.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/shared-secrets",permalink:"/build/api/schema/objects/shared-secrets",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"shared-secrets",title:"SharedSecrets",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Ownership",permalink:"/build/api/schema/objects/ownership"},next:{title:"TokenBalance",permalink:"/build/api/schema/objects/token-balance"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'SharedSecrets.storageNoncePublicKeyPublicKey ',id:"code-style-fontweight-normal-sharedsecretsbstoragenoncepublickeybcodepublickey-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,c.kt)(a.Fragment,null,(0,c.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,c.kt)(a.Fragment,null,"Specification",(0,c.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),b=e=>(0,c.kt)(a.Fragment,null,(0,c.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:d,Bullet:p,SpecifiedBy:u,Badge:b},m="wrapper";function f(e){let{components:t,...r}=e;return(0,c.kt)(m,(0,n.Z)({},y,r,{components:t,mdxType:"MDXLayout"}),(0,c.kt)("p",null,"[SharedSecrets]"," represents the public shared secret information\nIt includes:"),(0,c.kt)("ul",null,(0,c.kt)("li",{parentName:"ul"},"The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)")),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-graphql"},"type SharedSecrets {\n storageNoncePublicKey: PublicKey\n}\n")),(0,c.kt)("h3",{id:"fields"},"Fields"),(0,c.kt)("h4",{id:"code-style-fontweight-normal-sharedsecretsbstoragenoncepublickeybcodepublickey-"},(0,c.kt)("a",{parentName:"h4",href:"#"},(0,c.kt)("code",{style:{fontWeight:"normal"}},"SharedSecrets.",(0,c.kt)("b",null,"storageNoncePublicKey"))),(0,c.kt)(p,{mdxType:"Bullet"}),(0,c.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,c.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,c.kt)(b,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,c.kt)("blockquote",null),(0,c.kt)("h3",{id:"returned-by"},"Returned by"),(0,c.kt)("p",null,(0,c.kt)("a",{parentName:"p",href:"/build/api/schema/queries/shared-secrets"},(0,c.kt)("inlineCode",{parentName:"a"},"sharedSecrets"))," ",(0,c.kt)(b,{class:"secondary",text:"query",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/16c17b5d.37b26807.js b/assets/js/16c17b5d.f34591e9.js similarity index 98% rename from assets/js/16c17b5d.37b26807.js rename to assets/js/16c17b5d.f34591e9.js index b5cce65ad..69ab354be 100644 --- a/assets/js/16c17b5d.37b26807.js +++ b/assets/js/16c17b5d.f34591e9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7741],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"transaction-chain",title:"Transaction chains",sidebar_position:4},o=void 0,s={unversionedId:"learn/transaction-chain",id:"learn/transaction-chain",title:"Transaction chains",description:"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - transaction with its own validation evidences.",source:"@site/docs/learn/transaction-chain.md",sourceDirName:"learn",slug:"/learn/transaction-chain",permalink:"/learn/transaction-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"transaction-chain",title:"Transaction chains",sidebar_position:4},sidebar:"docs",previous:{title:"Patents",permalink:"/learn/patents"},next:{title:"Transaction fees",permalink:"/learn/fee"}},l={},c=[{value:"Principles",id:"principles",level:2},{value:"Transaction structure",id:"transaction-structure",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - ",(0,r.kt)("inlineCode",{parentName:"p"},"transaction")," with its own validation evidences."),(0,r.kt)("h2",{id:"principles"},"Principles"),(0,r.kt)("admonition",{title:"Liveness",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Each validated transaction is stored as a chain than can only be updated from the last validation transaction in the chain\nThe last transaction on a chain becomes the ",(0,r.kt)("em",{parentName:"p"},"authoritative")," transaction.")),(0,r.kt)("admonition",{title:"Quantum resistant",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"For security reason, once the public key is disclosed, it is considered as expired, only the hash of the public key of the next transaction(aka ",(0,r.kt)("inlineCode",{parentName:"p"},"address"),") is announced.\nThis allows the next public key to be kept until the next transaction on the chain.")),(0,r.kt)("admonition",{title:"Address resolution",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Any addresses of a transaction chain can be used as destination address.\nIt's not necessary to specify the last transaction address in the chain.")),(0,r.kt)("admonition",{title:"Stateless transactions",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Transaction are using an ",(0,r.kt)("em",{parentName:"p"},"UTXO")," (Unspent Transaction Output) model so, a transaction cannot change state.\nThere is no reality outside the validated transactions")),(0,r.kt)("admonition",{title:"UTXO mining",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"List of unspent outputs does not need to be specified by the sender of the transaction\nall unspent outputs will be reintegrated directly into the last transaction.")),(0,r.kt)("h2",{id:"transaction-structure"},"Transaction structure"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("h3",{parentName:"li",id:"pending-transaction"},"Pending transaction"))),(0,r.kt)("p",null,"A pending transaction is a transaction that does not have validation.\nIts structure is described as below:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"|-----------|------|------|---------------------|--------------------|------------------|\n| Address | Type | Data | Previous public key | Previous signature | Origin signature |\n| --------- | ------- | -------- | ------------------- | ------------------ | ---------------- |\n| |\n| |\n| --------- | ------ | -------- | ------------ | ------------ |\n| Content | Code | Ledger | Ownerships | Recipients |\n| --------- | ------ | -------- | ------------ | ------------ |\n| |\n| |\n| ----- | ------- | | ----------------- | -------- |\n| UCO | Token | | Authorized keys | Secret |\n| ----- | ------- | | ----------------- | -------- |\n\n\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Address: Corresponds to the hash of the public key of the transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Type: Defines the functional role of the transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Data: Contains all the operations to be performed (transfers, smart contracts, key authorizations, etc.)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Content: Can contain any kind of data. It can be used to host some data (HTML page, text, image, code, etc.)"),(0,r.kt)("li",{parentName:"ul"},"Code: Defines the smart contract code to be interpreted by the node. More details on ",(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts"},"Smart-Contracts")," section."),(0,r.kt)("li",{parentName:"ul"},"Ledger: Defines several types of ledger operations",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"UCO: for the cryptocurrency transfers"),(0,r.kt)("li",{parentName:"ul"},"Token: for non-financial transactions (intended for P2P uses - as tokens, loyalties, etc.)"))),(0,r.kt)("li",{parentName:"ul"},"Ownerships: Define some cryptographic authorizations and delegations",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Authorized keys: list of authorized keys to be able to decrypt secrets"),(0,r.kt)("li",{parentName:"ul"},"Secrets: Encrypted contents which can be decrypted by the authorized keys"))),(0,r.kt)("li",{parentName:"ul"},"Recipients: Additional recipients to target smart contracts"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Previous public key: Corresponds to the public key associated to the previous transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Previous signature: Corresponds to the signature of the private key associated with the mentioned previous public key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Origin signature: Corresponds to the signature of the device or software that generated the transaction. This is used on the ",(0,r.kt)("a",{parentName:"p",href:"/learn/arch-consensus/proof-of-work"},"Proof Of Work")," mechanism and is a necessary condition of its validation.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("h3",{parentName:"li",id:"validated-transaction"},"Validated transaction"))),(0,r.kt)("p",null,"A validated transaction is a pending transaction completed with the validation proofs required by the Heuristic Algorithms.\nThose are defined by the given structure:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"|------------------|-------------------------|\n| Validation Stamp | Cross Validation Stamps |\n| ---------------- | ----------------------- |\n| |\n| | ----------------- | ----------- |\n| | Node public key | Signature |\n| | ----------------- | ----------- |\n| |\n| ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |\n| Timestamp | Proof of Work | Proof of Integrity | Proof of Election | Ledger Operations | Recipients | Errors | Signature |\n| ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |\n| |\n| ----- | ----------------------- | ----------------- |\n| Fee | Transaction movements | Unspent outputs |\n| ----- | ----------------------- | ----------------- |\n\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Validation Stamp: Stamp generated by the coordinator node",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Proof of work: Corresponds to the public key matching the origin signature (More details on the ",(0,r.kt)("a",{parentName:"li",href:"/learn/arch-consensus/proof-of-work"},"Proof of Work")," section)."),(0,r.kt)("li",{parentName:"ul"},"Proof of integrity: Proves the linkage of the previous transactions"),(0,r.kt)("li",{parentName:"ul"},"Proof of election: Proves the validation node's rotating election and permit to reproduce it later (See ",(0,r.kt)("a",{parentName:"li",href:"/learn/arch-consensus#rotating-election"},"Rotating Election"),")"),(0,r.kt)("li",{parentName:"ul"},"Ledger operations: Contains all the ledger operations that will be taken into account by the network",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"fee: Transaction's fee"),(0,r.kt)("li",{parentName:"ul"},"transaction movements: Issuer and resolved transaction movements"),(0,r.kt)("li",{parentName:"ul"},"Unspent outputs: List of the remaining unspent outputs of the transaction chain after validation"))),(0,r.kt)("li",{parentName:"ul"},"Recipients: List of resolved addresses of the recipients"),(0,r.kt)("li",{parentName:"ul"},"Errors: Any errors found in the validation (i.e. pending transaction error)"),(0,r.kt)("li",{parentName:"ul"},"Signature: Cryptographic signature of the entire stamp by the coordinator's key"))),(0,r.kt)("li",{parentName:"ul"},"Cross validation stamps: To be considered as validated, the ",(0,r.kt)("inlineCode",{parentName:"li"},"Validation Stamp")," must be joined as many ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," as required by the Heuristic Algorithms.\nThey are signatures of the given validation stamp.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Node public key: Correspond to the node's public key which generate this ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp"),"'s signature"),(0,r.kt)("li",{parentName:"ul"},"Signature: Correspond to the signature of the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," for the mentioned public key"),(0,r.kt)("li",{parentName:"ul"},"Inconsistencies: In case of inconsistencies or disagreement, it will contain a list of inconsistencies noted")))))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7741],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"transaction-chain",title:"Transaction chains",sidebar_position:4},o=void 0,s={unversionedId:"learn/transaction-chain",id:"learn/transaction-chain",title:"Transaction chains",description:"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - transaction with its own validation evidences.",source:"@site/docs/learn/transaction-chain.md",sourceDirName:"learn",slug:"/learn/transaction-chain",permalink:"/learn/transaction-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"transaction-chain",title:"Transaction chains",sidebar_position:4},sidebar:"docs",previous:{title:"Patents",permalink:"/learn/patents"},next:{title:"Transaction fees",permalink:"/learn/fee"}},l={},c=[{value:"Principles",id:"principles",level:2},{value:"Transaction structure",id:"transaction-structure",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - ",(0,r.kt)("inlineCode",{parentName:"p"},"transaction")," with its own validation evidences."),(0,r.kt)("h2",{id:"principles"},"Principles"),(0,r.kt)("admonition",{title:"Liveness",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Each validated transaction is stored as a chain than can only be updated from the last validation transaction in the chain\nThe last transaction on a chain becomes the ",(0,r.kt)("em",{parentName:"p"},"authoritative")," transaction.")),(0,r.kt)("admonition",{title:"Quantum resistant",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"For security reason, once the public key is disclosed, it is considered as expired, only the hash of the public key of the next transaction(aka ",(0,r.kt)("inlineCode",{parentName:"p"},"address"),") is announced.\nThis allows the next public key to be kept until the next transaction on the chain.")),(0,r.kt)("admonition",{title:"Address resolution",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Any addresses of a transaction chain can be used as destination address.\nIt's not necessary to specify the last transaction address in the chain.")),(0,r.kt)("admonition",{title:"Stateless transactions",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Transaction are using an ",(0,r.kt)("em",{parentName:"p"},"UTXO")," (Unspent Transaction Output) model so, a transaction cannot change state.\nThere is no reality outside the validated transactions")),(0,r.kt)("admonition",{title:"UTXO mining",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"List of unspent outputs does not need to be specified by the sender of the transaction\nall unspent outputs will be reintegrated directly into the last transaction.")),(0,r.kt)("h2",{id:"transaction-structure"},"Transaction structure"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("h3",{parentName:"li",id:"pending-transaction"},"Pending transaction"))),(0,r.kt)("p",null,"A pending transaction is a transaction that does not have validation.\nIts structure is described as below:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"|-----------|------|------|---------------------|--------------------|------------------|\n| Address | Type | Data | Previous public key | Previous signature | Origin signature |\n| --------- | ------- | -------- | ------------------- | ------------------ | ---------------- |\n| |\n| |\n| --------- | ------ | -------- | ------------ | ------------ |\n| Content | Code | Ledger | Ownerships | Recipients |\n| --------- | ------ | -------- | ------------ | ------------ |\n| |\n| |\n| ----- | ------- | | ----------------- | -------- |\n| UCO | Token | | Authorized keys | Secret |\n| ----- | ------- | | ----------------- | -------- |\n\n\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Address: Corresponds to the hash of the public key of the transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Type: Defines the functional role of the transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Data: Contains all the operations to be performed (transfers, smart contracts, key authorizations, etc.)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Content: Can contain any kind of data. It can be used to host some data (HTML page, text, image, code, etc.)"),(0,r.kt)("li",{parentName:"ul"},"Code: Defines the smart contract code to be interpreted by the node. More details on ",(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts"},"Smart-Contracts")," section."),(0,r.kt)("li",{parentName:"ul"},"Ledger: Defines several types of ledger operations",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"UCO: for the cryptocurrency transfers"),(0,r.kt)("li",{parentName:"ul"},"Token: for non-financial transactions (intended for P2P uses - as tokens, loyalties, etc.)"))),(0,r.kt)("li",{parentName:"ul"},"Ownerships: Define some cryptographic authorizations and delegations",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Authorized keys: list of authorized keys to be able to decrypt secrets"),(0,r.kt)("li",{parentName:"ul"},"Secrets: Encrypted contents which can be decrypted by the authorized keys"))),(0,r.kt)("li",{parentName:"ul"},"Recipients: Additional recipients to target smart contracts"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Previous public key: Corresponds to the public key associated to the previous transaction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Previous signature: Corresponds to the signature of the private key associated with the mentioned previous public key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Origin signature: Corresponds to the signature of the device or software that generated the transaction. This is used on the ",(0,r.kt)("a",{parentName:"p",href:"/learn/arch-consensus/proof-of-work"},"Proof Of Work")," mechanism and is a necessary condition of its validation.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("h3",{parentName:"li",id:"validated-transaction"},"Validated transaction"))),(0,r.kt)("p",null,"A validated transaction is a pending transaction completed with the validation proofs required by the Heuristic Algorithms.\nThose are defined by the given structure:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"|------------------|-------------------------|\n| Validation Stamp | Cross Validation Stamps |\n| ---------------- | ----------------------- |\n| |\n| | ----------------- | ----------- |\n| | Node public key | Signature |\n| | ----------------- | ----------- |\n| |\n| ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |\n| Timestamp | Proof of Work | Proof of Integrity | Proof of Election | Ledger Operations | Recipients | Errors | Signature |\n| ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |\n| |\n| ----- | ----------------------- | ----------------- |\n| Fee | Transaction movements | Unspent outputs |\n| ----- | ----------------------- | ----------------- |\n\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Validation Stamp: Stamp generated by the coordinator node",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Proof of work: Corresponds to the public key matching the origin signature (More details on the ",(0,r.kt)("a",{parentName:"li",href:"/learn/arch-consensus/proof-of-work"},"Proof of Work")," section)."),(0,r.kt)("li",{parentName:"ul"},"Proof of integrity: Proves the linkage of the previous transactions"),(0,r.kt)("li",{parentName:"ul"},"Proof of election: Proves the validation node's rotating election and permit to reproduce it later (See ",(0,r.kt)("a",{parentName:"li",href:"/learn/arch-consensus#rotating-election"},"Rotating Election"),")"),(0,r.kt)("li",{parentName:"ul"},"Ledger operations: Contains all the ledger operations that will be taken into account by the network",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"fee: Transaction's fee"),(0,r.kt)("li",{parentName:"ul"},"transaction movements: Issuer and resolved transaction movements"),(0,r.kt)("li",{parentName:"ul"},"Unspent outputs: List of the remaining unspent outputs of the transaction chain after validation"))),(0,r.kt)("li",{parentName:"ul"},"Recipients: List of resolved addresses of the recipients"),(0,r.kt)("li",{parentName:"ul"},"Errors: Any errors found in the validation (i.e. pending transaction error)"),(0,r.kt)("li",{parentName:"ul"},"Signature: Cryptographic signature of the entire stamp by the coordinator's key"))),(0,r.kt)("li",{parentName:"ul"},"Cross validation stamps: To be considered as validated, the ",(0,r.kt)("inlineCode",{parentName:"li"},"Validation Stamp")," must be joined as many ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," as required by the Heuristic Algorithms.\nThey are signatures of the given validation stamp.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Node public key: Correspond to the node's public key which generate this ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp"),"'s signature"),(0,r.kt)("li",{parentName:"ul"},"Signature: Correspond to the signature of the ",(0,r.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," for the mentioned public key"),(0,r.kt)("li",{parentName:"ul"},"Inconsistencies: In case of inconsistencies or disagreement, it will contain a list of inconsistencies noted")))))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/16e43f8e.fdb95d35.js b/assets/js/16e43f8e.6da186e5.js similarity index 98% rename from assets/js/16e43f8e.fdb95d35.js rename to assets/js/16e43f8e.6da186e5.js index 9bc7e6560..b3a5081ea 100644 --- a/assets/js/16e43f8e.fdb95d35.js +++ b/assets/js/16e43f8e.6da186e5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2282],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||s;return n?a.createElement(f,o(o({ref:t},d),{},{components:n})):a.createElement(f,o({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,o[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var a=n(7462),r=n(7294),s=n(3905);n(8209);const o={id:"transaction-inputs",title:"transactionInputs",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/queries/transaction-inputs",id:"build/api/schema/queries/transaction-inputs",title:"transactionInputs",description:"Query the network to list the transaction inputs from an address",source:"@site/docs/build/api/schema/queries/transaction-inputs.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction-inputs",permalink:"/build/api/schema/queries/transaction-inputs",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-inputs",title:"transactionInputs",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionChain",permalink:"/build/api/schema/queries/transaction-chain"},next:{title:"transaction",permalink:"/build/api/schema/queries/transaction"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionInputs.addressAddress! ',id:"code-style-fontweight-normal-transactioninputsbaddressbcodeaddress--",level:4},{value:'transactionInputs.limitPosInteger ',id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-",level:4},{value:'transactionInputs.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-",level:4},{value:"Type",id:"type",level:3},{value:'TransactionInput ',id:"transactioninput-",level:4}],p=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},g="wrapper";function h(e){let{components:t,...n}=e;return(0,s.kt)(g,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Query the network to list the transaction inputs from an address"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionInputs(\n address: Address!\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionInput]\n")),(0,s.kt)("h3",{id:"arguments"},"Arguments"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsbaddressbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"address"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,s.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"limit"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,s.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"pagingOffset"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/non-neg-integer"},(0,s.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"type"},"Type"),(0,s.kt)("h4",{id:"transactioninput-"},(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},"[TransactionInput]"," represents the inputs from the transaction\nIt includes:"),(0,s.kt)("ul",{parentName:"blockquote"},(0,s.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,s.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,s.kt)("li",{parentName:"ul"},"Type: UCO/token/Call"),(0,s.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,s.kt)("li",{parentName:"ul"},"Spent: determines if the input has been spent"),(0,s.kt)("li",{parentName:"ul"},"Timestamp: Date time when the inputs was generated"),(0,s.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted."))))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2282],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,s=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||s;return n?a.createElement(f,o(o({ref:t},d),{},{components:n})):a.createElement(f,o({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=n.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,o[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var a=n(7462),r=n(7294),s=n(3905);n(8209);const o={id:"transaction-inputs",title:"transactionInputs",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/queries/transaction-inputs",id:"build/api/schema/queries/transaction-inputs",title:"transactionInputs",description:"Query the network to list the transaction inputs from an address",source:"@site/docs/build/api/schema/queries/transaction-inputs.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction-inputs",permalink:"/build/api/schema/queries/transaction-inputs",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-inputs",title:"transactionInputs",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionChain",permalink:"/build/api/schema/queries/transaction-chain"},next:{title:"transaction",permalink:"/build/api/schema/queries/transaction"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionInputs.addressAddress! ',id:"code-style-fontweight-normal-transactioninputsbaddressbcodeaddress--",level:4},{value:'transactionInputs.limitPosInteger ',id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-",level:4},{value:'transactionInputs.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-",level:4},{value:"Type",id:"type",level:3},{value:'TransactionInput ',id:"transactioninput-",level:4}],p=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},g="wrapper";function h(e){let{components:t,...n}=e;return(0,s.kt)(g,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Query the network to list the transaction inputs from an address"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionInputs(\n address: Address!\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionInput]\n")),(0,s.kt)("h3",{id:"arguments"},"Arguments"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsbaddressbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"address"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,s.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"limit"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,s.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"transactionInputs.",(0,s.kt)("b",null,"pagingOffset"))),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/non-neg-integer"},(0,s.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"type"},"Type"),(0,s.kt)("h4",{id:"transactioninput-"},(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},"[TransactionInput]"," represents the inputs from the transaction\nIt includes:"),(0,s.kt)("ul",{parentName:"blockquote"},(0,s.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,s.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,s.kt)("li",{parentName:"ul"},"Type: UCO/token/Call"),(0,s.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,s.kt)("li",{parentName:"ul"},"Spent: determines if the input has been spent"),(0,s.kt)("li",{parentName:"ul"},"Timestamp: Date time when the inputs was generated"),(0,s.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted."))))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/1735c347.32d815aa.js b/assets/js/1735c347.68f5c063.js similarity index 98% rename from assets/js/1735c347.32d815aa.js rename to assets/js/1735c347.68f5c063.js index be54d526f..d6978c524 100644 --- a/assets/js/1735c347.32d815aa.js +++ b/assets/js/1735c347.68f5c063.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8087],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=o,m=d["".concat(l,".").concat(p)]||d[p]||h[p]||r;return n?i.createElement(m,a(a({ref:t},u),{},{components:n})):i.createElement(m,a({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"archethic-intro",title:"Archethic introduction",sidebar_label:"Learn",sidebar_position:1},a=void 0,s={unversionedId:"learn/archethic-intro",id:"learn/archethic-intro",title:"Archethic introduction",description:"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),",source:"@site/docs/learn/README.md",sourceDirName:"learn",slug:"/learn/",permalink:"/learn/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"archethic-intro",title:"Archethic introduction",sidebar_label:"Learn",sidebar_position:1},sidebar:"docs",next:{title:"UCO token",permalink:"/learn/uco"}},l={},c=[{value:"Motivations",id:"motivations",level:2},{value:"Innovations",id:"innovations",level:2}],u={toc:c},d="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,i.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),\nto be the most secure and scalable decentralized network."),(0,o.kt)("hr",null),(0,o.kt)("p",null,"Archethic's network is built to overcome the issues faced by other blockchain solutions:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Support of billions of transactions"),(0,o.kt)("li",{parentName:"ul"},"Linear scalability"),(0,o.kt)("li",{parentName:"ul"},"Low-energy consumption"),(0,o.kt)("li",{parentName:"ul"},"Mass adoption"),(0,o.kt)("li",{parentName:"ul"},"Low transaction fees")),(0,o.kt)("p",null,"This document aims to provide information and resources about the technology and the usage to build new decentralized applications on top of Archethic."),(0,o.kt)("h2",{id:"motivations"},"Motivations"),(0,o.kt)("p",null,"Given the universal constraints both material and physical, billions of transactions cannot be integrated into a single branch of chained blocks."),(0,o.kt)("p",null,"Similarly, regardless of the consensus method, it is not possible to ensure universal consensus on billions of transactions by polling all nodes of the network."),(0,o.kt)("p",null,"Finally, the functioning of current distributed networks (P2P) is such that it is not possible to guarantee the freshness (consistency) of data on an asynchronous network,\nunless the network is slowed down excessively by the calculation of the nonce of the block (PoW), as is the case with other blockchain networks."),(0,o.kt)("h2",{id:"innovations"},"Innovations"),(0,o.kt)("p",null,"Archethic Blockchain solved this issues in the following way:"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"TransactionChains"),"Instead of chained blocks of transactions, each block is reduced to its atomic form.",(0,o.kt)("br",null),"Therefore, each block contains only one transaction and each transaction will be chained in its own chain."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Real Sharded Network"),"Archethic is using sharding technology to ensure distribution of transaction processing and storage to provide a very high scalability."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Next-generation consensus"),"Archethic is using an universal consensus called ARCH based on Atomic Commitment using Heuristic Rotating election of a tiny set of validation nodes providing the highest level of security"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Optimized Replication and Self Repair"),"Every transaction will be stored in a deterministic way on a set of nodes using a sharded storage layer.",(0,o.kt)("br",null),"Thus, every node will autonomously know all the nodes for a given transaction and ease the network by only interrogating the closest elected nodes."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Distributed network without bottleneck"),"Archethic rebuilds the entire P2P layer to provide an efficient messaging between peers based on the Supervised Multicast using self discovery mechanism from incoming connection and network transactions.",(0,o.kt)("br",null),"The system is able to maintain a qualified vision of the network while limiting the generation of requests."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8087],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=o,m=d["".concat(l,".").concat(p)]||d[p]||h[p]||r;return n?i.createElement(m,a(a({ref:t},u),{},{components:n})):i.createElement(m,a({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"archethic-intro",title:"Archethic introduction",sidebar_label:"Learn",sidebar_position:1},a=void 0,s={unversionedId:"learn/archethic-intro",id:"learn/archethic-intro",title:"Archethic introduction",description:"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),",source:"@site/docs/learn/README.md",sourceDirName:"learn",slug:"/learn/",permalink:"/learn/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"archethic-intro",title:"Archethic introduction",sidebar_label:"Learn",sidebar_position:1},sidebar:"docs",next:{title:"UCO token",permalink:"/learn/uco"}},l={},c=[{value:"Motivations",id:"motivations",level:2},{value:"Innovations",id:"innovations",level:2}],u={toc:c},d="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,i.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),\nto be the most secure and scalable decentralized network."),(0,o.kt)("hr",null),(0,o.kt)("p",null,"Archethic's network is built to overcome the issues faced by other blockchain solutions:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Support of billions of transactions"),(0,o.kt)("li",{parentName:"ul"},"Linear scalability"),(0,o.kt)("li",{parentName:"ul"},"Low-energy consumption"),(0,o.kt)("li",{parentName:"ul"},"Mass adoption"),(0,o.kt)("li",{parentName:"ul"},"Low transaction fees")),(0,o.kt)("p",null,"This document aims to provide information and resources about the technology and the usage to build new decentralized applications on top of Archethic."),(0,o.kt)("h2",{id:"motivations"},"Motivations"),(0,o.kt)("p",null,"Given the universal constraints both material and physical, billions of transactions cannot be integrated into a single branch of chained blocks."),(0,o.kt)("p",null,"Similarly, regardless of the consensus method, it is not possible to ensure universal consensus on billions of transactions by polling all nodes of the network."),(0,o.kt)("p",null,"Finally, the functioning of current distributed networks (P2P) is such that it is not possible to guarantee the freshness (consistency) of data on an asynchronous network,\nunless the network is slowed down excessively by the calculation of the nonce of the block (PoW), as is the case with other blockchain networks."),(0,o.kt)("h2",{id:"innovations"},"Innovations"),(0,o.kt)("p",null,"Archethic Blockchain solved this issues in the following way:"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"TransactionChains"),"Instead of chained blocks of transactions, each block is reduced to its atomic form.",(0,o.kt)("br",null),"Therefore, each block contains only one transaction and each transaction will be chained in its own chain."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Real Sharded Network"),"Archethic is using sharding technology to ensure distribution of transaction processing and storage to provide a very high scalability."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Next-generation consensus"),"Archethic is using an universal consensus called ARCH based on Atomic Commitment using Heuristic Rotating election of a tiny set of validation nodes providing the highest level of security"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Optimized Replication and Self Repair"),"Every transaction will be stored in a deterministic way on a set of nodes using a sharded storage layer.",(0,o.kt)("br",null),"Thus, every node will autonomously know all the nodes for a given transaction and ease the network by only interrogating the closest elected nodes."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Distributed network without bottleneck"),"Archethic rebuilds the entire P2P layer to provide an efficient messaging between peers based on the Supervised Multicast using self discovery mechanism from incoming connection and network transactions.",(0,o.kt)("br",null),"The system is able to maintain a qualified vision of the network while limiting the generation of requests."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/17dede69.5513e72e.js b/assets/js/17dede69.c5c51daa.js similarity index 98% rename from assets/js/17dede69.5513e72e.js rename to assets/js/17dede69.c5c51daa.js index e585cffd8..10cc6c62d 100644 --- a/assets/js/17dede69.5513e72e.js +++ b/assets/js/17dede69.c5c51daa.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9091],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},i=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,i=c(e,["components","mdxType","originalType","parentName"]),p=d(n),m=r,k=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(k,l(l({ref:t},i),{},{components:n})):a.createElement(k,l({ref:t},i))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:r,l[1]=c;for(var d=2;d{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>d,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>s,toc:()=>i});var a=n(7462),r=n(7294),o=n(3905);n(8209);const l={id:"token-balance",title:"TokenBalance",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/objects/token-balance",id:"build/api/schema/objects/token-balance",title:"TokenBalance",description:"[tokenBalance] represents a token ledger balance.",source:"@site/docs/build/api/schema/objects/token-balance.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-balance",permalink:"/build/api/schema/objects/token-balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token-balance",title:"TokenBalance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"SharedSecrets",permalink:"/build/api/schema/objects/shared-secrets"},next:{title:"TokenLedger",permalink:"/build/api/schema/objects/token-ledger"}},d={},i=[{value:"Fields",id:"fields",level:3},{value:'TokenBalance.addressAddress ',id:"code-style-fontweight-normal-tokenbalancebaddressbcodeaddress-",level:4},{value:'TokenBalance.amountInt ',id:"code-style-fontweight-normal-tokenbalancebamountbcodeint-",level:4},{value:'TokenBalance.tokenIdInt ',id:"code-style-fontweight-normal-tokenbalancebtokenidbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:i,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[tokenBalance]"," represents a token ledger balance.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Token: address of the token"),(0,o.kt)("li",{parentName:"ul"},"Amount: amount of token"),(0,o.kt)("li",{parentName:"ul"},"Token ID: ID of the token")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenBalance {\n address: Address\n amount: Int\n tokenId: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/balance"},(0,o.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9091],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},i=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,i=c(e,["components","mdxType","originalType","parentName"]),p=d(n),m=r,k=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(k,l(l({ref:t},i),{},{components:n})):a.createElement(k,l({ref:t},i))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:r,l[1]=c;for(var d=2;d{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>d,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>s,toc:()=>i});var a=n(7462),r=n(7294),o=n(3905);n(8209);const l={id:"token-balance",title:"TokenBalance",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/objects/token-balance",id:"build/api/schema/objects/token-balance",title:"TokenBalance",description:"[tokenBalance] represents a token ledger balance.",source:"@site/docs/build/api/schema/objects/token-balance.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-balance",permalink:"/build/api/schema/objects/token-balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token-balance",title:"TokenBalance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"SharedSecrets",permalink:"/build/api/schema/objects/shared-secrets"},next:{title:"TokenLedger",permalink:"/build/api/schema/objects/token-ledger"}},d={},i=[{value:"Fields",id:"fields",level:3},{value:'TokenBalance.addressAddress ',id:"code-style-fontweight-normal-tokenbalancebaddressbcodeaddress-",level:4},{value:'TokenBalance.amountInt ',id:"code-style-fontweight-normal-tokenbalancebamountbcodeint-",level:4},{value:'TokenBalance.tokenIdInt ',id:"code-style-fontweight-normal-tokenbalancebtokenidbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:i,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[tokenBalance]"," represents a token ledger balance.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Token: address of the token"),(0,o.kt)("li",{parentName:"ul"},"Amount: amount of token"),(0,o.kt)("li",{parentName:"ul"},"Token ID: ID of the token")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenBalance {\n address: Address\n amount: Int\n tokenId: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbalancebtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenBalance.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/balance"},(0,o.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/1872c6b8.454d14d8.js b/assets/js/1872c6b8.28a92b85.js similarity index 98% rename from assets/js/1872c6b8.454d14d8.js rename to assets/js/1872c6b8.28a92b85.js index 279c1ff39..267b14091 100644 --- a/assets/js/1872c6b8.454d14d8.js +++ b/assets/js/1872c6b8.28a92b85.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3747],{3905:(e,t,i)=>{i.d(t,{Zo:()=>l,kt:()=>f});var r=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var c=r.createContext({}),h=function(e){var t=r.useContext(c),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},l=function(e){var t=h(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=h(i),u=n,f=d["".concat(c,".").concat(u)]||d[u]||p[u]||a;return i?r.createElement(f,o(o({ref:t},l),{},{components:i})):r.createElement(f,o({ref:t},l))}));function f(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,o=new Array(a);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:n,o[1]=s;for(var h=2;h{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});var r=i(7462),n=(i(7294),i(3905));i(8209);const a={id:"bridge",title:"Archethic's bridge"},o=void 0,s={unversionedId:"participate/bridge/bridge",id:"participate/bridge/bridge",title:"Archethic's bridge",description:"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way.",source:"@site/docs/participate/bridge/README.md",sourceDirName:"participate/bridge",slug:"/participate/bridge/",permalink:"/participate/bridge/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"bridge",title:"Archethic's bridge"},sidebar:"docs",previous:{title:"Automate deployments",permalink:"/participate/aeweb/automation"},next:{title:"Usage",permalink:"/category/usage-1"}},c={},h=[{value:"Key concepts",id:"key-concepts",level:2},{value:"HTLC (Hash Time Lock Contract)",id:"htlc-hash-time-lock-contract",level:3},{value:"Archethic's cross-chain verification",id:"archethics-cross-chain-verification",level:3},{value:"Safety Module",id:"safety-module",level:3},{value:"Usage",id:"usage",level:2},{value:"Specifics",id:"specifics",level:2},{value:"EVM to Archethic",id:"evm-to-archethic",level:3},{value:"Archethic to EVM",id:"archethic-to-evm",level:3}],l={toc:h},d="wrapper";function p(e){let{components:t,...i}=e;return(0,n.kt)(d,(0,r.Z)({},l,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way."),(0,n.kt)("admonition",{title:"Testnet's only",type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"The current version of Archethic's bridge is only available on the testnet.\nYou can experiment and start bridging your assets by visiting ",(0,n.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net/"},"bridge.testnet.archethic.net/"))),(0,n.kt)("h2",{id:"key-concepts"},"Key concepts"),(0,n.kt)("h3",{id:"htlc-hash-time-lock-contract"},"HTLC (Hash Time Lock Contract)"),(0,n.kt)("p",null,"Archethic's bridge relies on atomic swap technology to securely exchange assets in a peer-to-peer and cryptographic manner without intermediaries. It also allows for the reversal and refund of assets after a specified lock time period."),(0,n.kt)("p",null,"This involves the use of specific contracts known as ",(0,n.kt)("strong",{parentName:"p"},"Hash Time Lock Contracts (HTLC)"),", which lock your funds until a secret is revealed (similar to a secret box) or after a lock time period to provide refund capabilities. These contracts must be deployed on both chains involved in the swap."),(0,n.kt)("p",null,"Both chains must be ready to transfer assets by revealing the private part of the secret encoded in the contracts, which enables the exchange. Once the secret is revealed on one chain, the other can proceed as the secret is now public."),(0,n.kt)("p",null,"This atomic swap method ensures secure transfers between chains without a central pool holding all the assets. Instead, it relies on hard-coded recipients and rules within a one-time contract."),(0,n.kt)("h3",{id:"archethics-cross-chain-verification"},"Archethic's cross-chain verification"),(0,n.kt)("p",null,"While conventional atomic swaps rely on HTLC techniques for security through peer-to-peer and cryptographic approaches, Archethic enhances its atomic swap protocol by enabling data retrieval outside of the blockchain. This enhancement makes the process completely decentralized and strengthens the security model."),(0,n.kt)("p",null,"Archethic's nodes can fetch transaction status on other chains, such as EVM blockchains, to establish the status of a swap with a strong consensus.\nCombining HTLC and Archethic's specific capabilities provides a high level of trust in the origin and reveal capabilities of any swap, relying on cryptography and cross-chain data retrieval."),(0,n.kt)("h3",{id:"safety-module"},"Safety Module"),(0,n.kt)("p",null,"To mitigate the risks associated with bridging assets, Archethic introduces a ",(0,n.kt)("strong",{parentName:"p"},"Safety Module"),", designed to address deficiencies that may occur when unexpected events disrupt the bridge's operation."),(0,n.kt)("p",null,"The Safety Module serves as a reserve of tokens that can be used in case of token loss or variations in the locked amount between both chains. "),(0,n.kt)("p",null,"At the launch of any pool, the maximum amount of tokens held by the pool will match the amount in the Safety Module. Each pool has its dedicated Safety Module, which will grow over time, increasing liquidity in the bridge pool."),(0,n.kt)("p",null,"Funding the Safety Module involves deducting a fee from each transfer originating from EVM to Archethic. This fee is deposited directly into the Safety Module to strengthen the reserve. The more tokens held in the Safety Module, the lower the fee rate becomes. "),(0,n.kt)("p",null,"The Safety Module is represented by a multisignature wallet managed by the bridge's governance."),(0,n.kt)("h2",{id:"usage"},"Usage"),(0,n.kt)("p",null,"TODO"),(0,n.kt)("h2",{id:"specifics"},"Specifics"),(0,n.kt)("h3",{id:"evm-to-archethic"},"EVM to Archethic"),(0,n.kt)("p",null,"The process begins with a secret held by a client (in this case, the bridge's dApp) and its hash, which forms a lock upon revealing the secret. "),(0,n.kt)("p",null,"The user deploys an HTLC smart contract on the EVM blockchain through the bridge's EVM pool."),(0,n.kt)("p",null," This pool ensures the capacity of the swap's initiator, fee distribution (see ",(0,n.kt)("a",{parentName:"p",href:"#safety-module"},"see Safety Module"),"), lock time period, and the recipient's address for the assets to be bridged."),(0,n.kt)("p",null,"Similarly, the user must deploy a contract on Archethic under the same conditions while specifying the recipient wallet to receive the funds. "),(0,n.kt)("p",null,"Subsequently, a request is made to the Archethic's pool (which holds the wrapped tokens) to fill the HTLC."),(0,n.kt)("p",null,"Because the tokens are wrapped on Archethic, the pool will mint new tokens after cross-chain verification (",(0,n.kt)("a",{parentName:"p",href:"#archethics-cross-chain-verification"},"see Archethic's specific"),")."),(0,n.kt)("p",null,"The remaining step involves revealing the secret on EVM to transfer the funds to the bridge's recipient wallet (including the safety module), and replicating this process on Archethic, ensuring that the action is executed on EVM blockchains through off-chain requests."),(0,n.kt)("p",null,"This results in both counterparties receiving their funds, achieving parity in the bridged assets."),(0,n.kt)("h3",{id:"archethic-to-evm"},"Archethic to EVM"),(0,n.kt)("p",null,"To exchange assets from Archethic to EVM, the process follows a similar pattern but in reverse order.\nHowever, a new feature is introduced in the smart contracts. Since EVM cannot request information outside the blockchain, steps are taken to ensure that an action has been performed on Archethic's side. Cryptography is employed to assert the action through a signature and provide non-repudiation proof for the Archethic's pool."),(0,n.kt)("p",null,"In this scenario, the user creates an HTLC contract on Archethic and funds it with tokens (wrapped or native), specifying the recipient's wallet provided by Archethic's pool, without initially revealing the secret and its lock."),(0,n.kt)("p",null,"The user then requests the Archethic's pool to obtain a secret, its hash, and a signature confirming the action's completion on Archethic's side."),(0,n.kt)("p",null,"During this process, the Archethic's pool contacts the HTLC to update its conditions for the secret's reveal by inserting the generated secret's hash from the pool."),(0,n.kt)("p",null,"On the other side, the user can request the EVM pool to create and provision an HTLC contract based on the proof provided by Archethic's pool regarding an existing and funded HTLC."),(0,n.kt)("p",null,"The EVM pool can now create and transfer funds to this new contract."),(0,n.kt)("p",null,"The remaining step is to reveal the secret. The user asks the Archethic's pool to reveal the secret within the HTLC and provide a signature for this action. At this point, the locked tokens will be burnt. "),(0,n.kt)("p",null,"With the secret revealed, the user can also reveal the secret on the EVM HTLC and provide the signature from Archethic's pool, unlocking the assets to the user's wallet registered within the contract."),(0,n.kt)("p",null,"This process ensures that both counterparties receive their funds, achieving parity in the bridged assets."))}p.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3747],{3905:(e,t,i)=>{i.d(t,{Zo:()=>l,kt:()=>f});var r=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var c=r.createContext({}),h=function(e){var t=r.useContext(c),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},l=function(e){var t=h(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=h(i),u=n,f=d["".concat(c,".").concat(u)]||d[u]||p[u]||a;return i?r.createElement(f,o(o({ref:t},l),{},{components:i})):r.createElement(f,o({ref:t},l))}));function f(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,o=new Array(a);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:n,o[1]=s;for(var h=2;h{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});var r=i(7462),n=(i(7294),i(3905));i(8209);const a={id:"bridge",title:"Archethic's bridge"},o=void 0,s={unversionedId:"participate/bridge/bridge",id:"participate/bridge/bridge",title:"Archethic's bridge",description:"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way.",source:"@site/docs/participate/bridge/README.md",sourceDirName:"participate/bridge",slug:"/participate/bridge/",permalink:"/participate/bridge/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"bridge",title:"Archethic's bridge"},sidebar:"docs",previous:{title:"Automate deployments",permalink:"/participate/aeweb/automation"},next:{title:"Usage",permalink:"/category/usage-1"}},c={},h=[{value:"Key concepts",id:"key-concepts",level:2},{value:"HTLC (Hash Time Lock Contract)",id:"htlc-hash-time-lock-contract",level:3},{value:"Archethic's cross-chain verification",id:"archethics-cross-chain-verification",level:3},{value:"Safety Module",id:"safety-module",level:3},{value:"Usage",id:"usage",level:2},{value:"Specifics",id:"specifics",level:2},{value:"EVM to Archethic",id:"evm-to-archethic",level:3},{value:"Archethic to EVM",id:"archethic-to-evm",level:3}],l={toc:h},d="wrapper";function p(e){let{components:t,...i}=e;return(0,n.kt)(d,(0,r.Z)({},l,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way."),(0,n.kt)("admonition",{title:"Testnet's only",type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"The current version of Archethic's bridge is only available on the testnet.\nYou can experiment and start bridging your assets by visiting ",(0,n.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net/"},"bridge.testnet.archethic.net/"))),(0,n.kt)("h2",{id:"key-concepts"},"Key concepts"),(0,n.kt)("h3",{id:"htlc-hash-time-lock-contract"},"HTLC (Hash Time Lock Contract)"),(0,n.kt)("p",null,"Archethic's bridge relies on atomic swap technology to securely exchange assets in a peer-to-peer and cryptographic manner without intermediaries. It also allows for the reversal and refund of assets after a specified lock time period."),(0,n.kt)("p",null,"This involves the use of specific contracts known as ",(0,n.kt)("strong",{parentName:"p"},"Hash Time Lock Contracts (HTLC)"),", which lock your funds until a secret is revealed (similar to a secret box) or after a lock time period to provide refund capabilities. These contracts must be deployed on both chains involved in the swap."),(0,n.kt)("p",null,"Both chains must be ready to transfer assets by revealing the private part of the secret encoded in the contracts, which enables the exchange. Once the secret is revealed on one chain, the other can proceed as the secret is now public."),(0,n.kt)("p",null,"This atomic swap method ensures secure transfers between chains without a central pool holding all the assets. Instead, it relies on hard-coded recipients and rules within a one-time contract."),(0,n.kt)("h3",{id:"archethics-cross-chain-verification"},"Archethic's cross-chain verification"),(0,n.kt)("p",null,"While conventional atomic swaps rely on HTLC techniques for security through peer-to-peer and cryptographic approaches, Archethic enhances its atomic swap protocol by enabling data retrieval outside of the blockchain. This enhancement makes the process completely decentralized and strengthens the security model."),(0,n.kt)("p",null,"Archethic's nodes can fetch transaction status on other chains, such as EVM blockchains, to establish the status of a swap with a strong consensus.\nCombining HTLC and Archethic's specific capabilities provides a high level of trust in the origin and reveal capabilities of any swap, relying on cryptography and cross-chain data retrieval."),(0,n.kt)("h3",{id:"safety-module"},"Safety Module"),(0,n.kt)("p",null,"To mitigate the risks associated with bridging assets, Archethic introduces a ",(0,n.kt)("strong",{parentName:"p"},"Safety Module"),", designed to address deficiencies that may occur when unexpected events disrupt the bridge's operation."),(0,n.kt)("p",null,"The Safety Module serves as a reserve of tokens that can be used in case of token loss or variations in the locked amount between both chains. "),(0,n.kt)("p",null,"At the launch of any pool, the maximum amount of tokens held by the pool will match the amount in the Safety Module. Each pool has its dedicated Safety Module, which will grow over time, increasing liquidity in the bridge pool."),(0,n.kt)("p",null,"Funding the Safety Module involves deducting a fee from each transfer originating from EVM to Archethic. This fee is deposited directly into the Safety Module to strengthen the reserve. The more tokens held in the Safety Module, the lower the fee rate becomes. "),(0,n.kt)("p",null,"The Safety Module is represented by a multisignature wallet managed by the bridge's governance."),(0,n.kt)("h2",{id:"usage"},"Usage"),(0,n.kt)("p",null,"TODO"),(0,n.kt)("h2",{id:"specifics"},"Specifics"),(0,n.kt)("h3",{id:"evm-to-archethic"},"EVM to Archethic"),(0,n.kt)("p",null,"The process begins with a secret held by a client (in this case, the bridge's dApp) and its hash, which forms a lock upon revealing the secret. "),(0,n.kt)("p",null,"The user deploys an HTLC smart contract on the EVM blockchain through the bridge's EVM pool."),(0,n.kt)("p",null," This pool ensures the capacity of the swap's initiator, fee distribution (see ",(0,n.kt)("a",{parentName:"p",href:"#safety-module"},"see Safety Module"),"), lock time period, and the recipient's address for the assets to be bridged."),(0,n.kt)("p",null,"Similarly, the user must deploy a contract on Archethic under the same conditions while specifying the recipient wallet to receive the funds. "),(0,n.kt)("p",null,"Subsequently, a request is made to the Archethic's pool (which holds the wrapped tokens) to fill the HTLC."),(0,n.kt)("p",null,"Because the tokens are wrapped on Archethic, the pool will mint new tokens after cross-chain verification (",(0,n.kt)("a",{parentName:"p",href:"#archethics-cross-chain-verification"},"see Archethic's specific"),")."),(0,n.kt)("p",null,"The remaining step involves revealing the secret on EVM to transfer the funds to the bridge's recipient wallet (including the safety module), and replicating this process on Archethic, ensuring that the action is executed on EVM blockchains through off-chain requests."),(0,n.kt)("p",null,"This results in both counterparties receiving their funds, achieving parity in the bridged assets."),(0,n.kt)("h3",{id:"archethic-to-evm"},"Archethic to EVM"),(0,n.kt)("p",null,"To exchange assets from Archethic to EVM, the process follows a similar pattern but in reverse order.\nHowever, a new feature is introduced in the smart contracts. Since EVM cannot request information outside the blockchain, steps are taken to ensure that an action has been performed on Archethic's side. Cryptography is employed to assert the action through a signature and provide non-repudiation proof for the Archethic's pool."),(0,n.kt)("p",null,"In this scenario, the user creates an HTLC contract on Archethic and funds it with tokens (wrapped or native), specifying the recipient's wallet provided by Archethic's pool, without initially revealing the secret and its lock."),(0,n.kt)("p",null,"The user then requests the Archethic's pool to obtain a secret, its hash, and a signature confirming the action's completion on Archethic's side."),(0,n.kt)("p",null,"During this process, the Archethic's pool contacts the HTLC to update its conditions for the secret's reveal by inserting the generated secret's hash from the pool."),(0,n.kt)("p",null,"On the other side, the user can request the EVM pool to create and provision an HTLC contract based on the proof provided by Archethic's pool regarding an existing and funded HTLC."),(0,n.kt)("p",null,"The EVM pool can now create and transfer funds to this new contract."),(0,n.kt)("p",null,"The remaining step is to reveal the secret. The user asks the Archethic's pool to reveal the secret within the HTLC and provide a signature for this action. At this point, the locked tokens will be burnt. "),(0,n.kt)("p",null,"With the secret revealed, the user can also reveal the secret on the EVM HTLC and provide the signature from Archethic's pool, unlocking the assets to the user's wallet registered within the contract."),(0,n.kt)("p",null,"This process ensures that both counterparties receive their funds, achieving parity in the bridged assets."))}p.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file diff --git a/assets/js/193cb586.d63fe9c3.js b/assets/js/193cb586.54a5df7c.js similarity index 98% rename from assets/js/193cb586.d63fe9c3.js rename to assets/js/193cb586.54a5df7c.js index 98a3334fb..e7afec6b7 100644 --- a/assets/js/193cb586.d63fe9c3.js +++ b/assets/js/193cb586.54a5df7c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6289],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),g=s(n),u=r,m=g["".concat(l,".").concat(u)]||g[u]||p[u]||i;return n?a.createElement(m,o(o({ref:t},d),{},{components:n})):a.createElement(m,o({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[g]="string"==typeof e?e:r,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"triggers",title:"Smart Contracts - Triggers",sidebar_label:"Triggers",sidebar_position:1},o=void 0,c={unversionedId:"build/smart-contracts/language/triggers",id:"build/smart-contracts/language/triggers",title:"Smart Contracts - Triggers",description:"Contract triggered by a transaction",source:"@site/docs/build/smart-contracts/language/triggers.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/triggers",permalink:"/build/smart-contracts/language/triggers",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"triggers",title:"Smart Contracts - Triggers",sidebar_label:"Triggers",sidebar_position:1},sidebar:"docs",previous:{title:"Language",permalink:"/build/smart-contracts/language/"},next:{title:"Condition",permalink:"/build/smart-contracts/language/condition"}},l={},s=[{value:"Contract triggered by a transaction",id:"contract-triggered-by-a-transaction",level:3},{value:"Contract triggered by a transaction with a named action",id:"contract-triggered-by-a-transaction-with-a-named-action",level:3},{value:"Contract triggered at a specific date and time",id:"contract-triggered-at-a-specific-date-and-time",level:3},{value:"Contract triggered at a specific interval",id:"contract-triggered-at-a-specific-interval",level:3},{value:"Contract triggered on every Oracle transaction",id:"contract-triggered-on-every-oracle-transaction",level:3},{value:"Multiple triggers",id:"multiple-triggers",level:3}],d={toc:s},g="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(g,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"contract-triggered-by-a-transaction"},"Contract triggered by a transaction"),(0,r.kt)("p",null,"To trigger a SC execution, the incoming transaction must add the SC address in the ",(0,r.kt)("inlineCode",{parentName:"p"},"recipients")," part of the transaction."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"This allows to activate a SC without sending funds to it, or to send funds to it without activating the code execution. "),(0,r.kt)("p",{parentName:"admonition"},"Because the ",(0,r.kt)("inlineCode",{parentName:"p"},"recipients")," field is a list, you can trigger multiple contracts in the same transaction \ud83d\ude09")),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition transaction")," may be used to check the incoming transaction (before executing the trigger)."),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, as: [\n ...\n]\n\nactions triggered_by: transaction do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-by-a-transaction-with-a-named-action"},"Contract triggered by a transaction with a named action"),(0,r.kt)("p",null,'The SC caller may be able to execute a specific "named" action with specified arguments on the Smart Contract.'),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition transaction")," may be used to check the incoming transaction (before executing the trigger)."),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks."),(0,r.kt)("li",{parentName:"ul"},"every ",(0,r.kt)("inlineCode",{parentName:"li"},"argument")," defined is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, on: vote_for_class_president(firstname, lastname), as: [\n ...\n]\n\nactions triggered_by: transaction, on: vote_for_class_president(firstname, lastname) do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-at-a-specific-date-and-time"},"Contract triggered at a specific date and time"),(0,r.kt)("p",null,"You may trigger a contract at a specific date and time. You need to specify a ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Unix_time"},"Unix time")," (seconds since epoch)."),(0,r.kt)("admonition",{title:"The datetime must be rounded to the minute",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"A contract will not parse if the datetime isn't rounded.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\nactions triggered_by: datetime, at: 1676332800 do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-at-a-specific-interval"},"Contract triggered at a specific interval"),(0,r.kt)("p",null,"You may trigger a contract at a specific interval. You need to specify a ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Cron"},"CRON Format String"),"."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"The minimum granularity is the minute. Except in local development where the minimum granularity is the second.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\n# \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n# \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n# \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of the month (1 - 31)\n# \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n# \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of the week (0 - 6) (Sunday to Saturday)\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# * * * * *\nactions triggered_by: interval, at: "0 8 * * *" do\n # do something each day at 8AM UTC\nend\n')),(0,r.kt)("h3",{id:"contract-triggered-on-every-oracle-transaction"},"Contract triggered on every Oracle transaction"),(0,r.kt)("p",null,"You may trigger a contract on every Oracle transaction."),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition oracle")," must be used to check the oracle transaction (to avoid running a contract if the oracle does not contain what you require)"),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: oracle, as: [\n # use transaction.content to make sure the oracle has the data you require\n]\nactions triggered_by: oracle do\n # do something with transaction.content\nend\n")),(0,r.kt)("h3",{id:"multiple-triggers"},"Multiple triggers"),(0,r.kt)("p",null,"Only named action triggers may have multiple triggers. ",(0,r.kt)("strong",{parentName:"p"},"Other triggers are limited to 1 per type"),"."),(0,r.kt)("p",null,"DO:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: transaction do\n ...\nend\n\nactions triggered_by: transaction, on: upgrade() do\n ...\nend\n\nactions triggered_by: transaction, on: calculate(x, y) do\n ...\nend\n\nactions triggered_by: interval, at: "0 8 * * *" do\n ...\nend\n')),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 9 * * *" do\n ...\nend\n\nactions triggered_by: interval, at: "0 8 * * *" do\n ...\nend\n')),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n\nactions triggered_by: transaction do\n ...\nend\n\nactions triggered_by: transaction do\n ...\nend\n")),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n\nactions triggered_by: datetime, at: 1693519200 do\n ...\nend\n\nactions triggered_by: datetime, at: 1693605600 do\n ...\nend\n")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6289],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),g=s(n),u=r,m=g["".concat(l,".").concat(u)]||g[u]||p[u]||i;return n?a.createElement(m,o(o({ref:t},d),{},{components:n})):a.createElement(m,o({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[g]="string"==typeof e?e:r,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"triggers",title:"Smart Contracts - Triggers",sidebar_label:"Triggers",sidebar_position:1},o=void 0,c={unversionedId:"build/smart-contracts/language/triggers",id:"build/smart-contracts/language/triggers",title:"Smart Contracts - Triggers",description:"Contract triggered by a transaction",source:"@site/docs/build/smart-contracts/language/triggers.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/triggers",permalink:"/build/smart-contracts/language/triggers",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"triggers",title:"Smart Contracts - Triggers",sidebar_label:"Triggers",sidebar_position:1},sidebar:"docs",previous:{title:"Language",permalink:"/build/smart-contracts/language/"},next:{title:"Condition",permalink:"/build/smart-contracts/language/condition"}},l={},s=[{value:"Contract triggered by a transaction",id:"contract-triggered-by-a-transaction",level:3},{value:"Contract triggered by a transaction with a named action",id:"contract-triggered-by-a-transaction-with-a-named-action",level:3},{value:"Contract triggered at a specific date and time",id:"contract-triggered-at-a-specific-date-and-time",level:3},{value:"Contract triggered at a specific interval",id:"contract-triggered-at-a-specific-interval",level:3},{value:"Contract triggered on every Oracle transaction",id:"contract-triggered-on-every-oracle-transaction",level:3},{value:"Multiple triggers",id:"multiple-triggers",level:3}],d={toc:s},g="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(g,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"contract-triggered-by-a-transaction"},"Contract triggered by a transaction"),(0,r.kt)("p",null,"To trigger a SC execution, the incoming transaction must add the SC address in the ",(0,r.kt)("inlineCode",{parentName:"p"},"recipients")," part of the transaction."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"This allows to activate a SC without sending funds to it, or to send funds to it without activating the code execution. "),(0,r.kt)("p",{parentName:"admonition"},"Because the ",(0,r.kt)("inlineCode",{parentName:"p"},"recipients")," field is a list, you can trigger multiple contracts in the same transaction \ud83d\ude09")),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition transaction")," may be used to check the incoming transaction (before executing the trigger)."),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, as: [\n ...\n]\n\nactions triggered_by: transaction do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-by-a-transaction-with-a-named-action"},"Contract triggered by a transaction with a named action"),(0,r.kt)("p",null,'The SC caller may be able to execute a specific "named" action with specified arguments on the Smart Contract.'),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition transaction")," may be used to check the incoming transaction (before executing the trigger)."),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks."),(0,r.kt)("li",{parentName:"ul"},"every ",(0,r.kt)("inlineCode",{parentName:"li"},"argument")," defined is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, on: vote_for_class_president(firstname, lastname), as: [\n ...\n]\n\nactions triggered_by: transaction, on: vote_for_class_president(firstname, lastname) do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-at-a-specific-date-and-time"},"Contract triggered at a specific date and time"),(0,r.kt)("p",null,"You may trigger a contract at a specific date and time. You need to specify a ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Unix_time"},"Unix time")," (seconds since epoch)."),(0,r.kt)("admonition",{title:"The datetime must be rounded to the minute",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"A contract will not parse if the datetime isn't rounded.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\nactions triggered_by: datetime, at: 1676332800 do\n ...\nend\n")),(0,r.kt)("h3",{id:"contract-triggered-at-a-specific-interval"},"Contract triggered at a specific interval"),(0,r.kt)("p",null,"You may trigger a contract at a specific interval. You need to specify a ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Cron"},"CRON Format String"),"."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"The minimum granularity is the minute. Except in local development where the minimum granularity is the second.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\n# \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n# \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n# \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of the month (1 - 31)\n# \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n# \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of the week (0 - 6) (Sunday to Saturday)\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# \u2502 \u2502 \u2502 \u2502 \u2502\n# * * * * *\nactions triggered_by: interval, at: "0 8 * * *" do\n # do something each day at 8AM UTC\nend\n')),(0,r.kt)("h3",{id:"contract-triggered-on-every-oracle-transaction"},"Contract triggered on every Oracle transaction"),(0,r.kt)("p",null,"You may trigger a contract on every Oracle transaction."),(0,r.kt)("p",null,"In this scenario:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"condition oracle")," must be used to check the oracle transaction (to avoid running a contract if the oracle does not contain what you require)"),(0,r.kt)("li",{parentName:"ul"},"a ",(0,r.kt)("inlineCode",{parentName:"li"},"transaction")," variable is available in the blocks.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: oracle, as: [\n # use transaction.content to make sure the oracle has the data you require\n]\nactions triggered_by: oracle do\n # do something with transaction.content\nend\n")),(0,r.kt)("h3",{id:"multiple-triggers"},"Multiple triggers"),(0,r.kt)("p",null,"Only named action triggers may have multiple triggers. ",(0,r.kt)("strong",{parentName:"p"},"Other triggers are limited to 1 per type"),"."),(0,r.kt)("p",null,"DO:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: transaction do\n ...\nend\n\nactions triggered_by: transaction, on: upgrade() do\n ...\nend\n\nactions triggered_by: transaction, on: calculate(x, y) do\n ...\nend\n\nactions triggered_by: interval, at: "0 8 * * *" do\n ...\nend\n')),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 9 * * *" do\n ...\nend\n\nactions triggered_by: interval, at: "0 8 * * *" do\n ...\nend\n')),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n\nactions triggered_by: transaction do\n ...\nend\n\nactions triggered_by: transaction do\n ...\nend\n")),(0,r.kt)("p",null,"DON'T:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n\nactions triggered_by: datetime, at: 1693519200 do\n ...\nend\n\nactions triggered_by: datetime, at: 1693605600 do\n ...\nend\n")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/199f22fd.f9b76d2e.js b/assets/js/199f22fd.1f9e0c61.js similarity index 98% rename from assets/js/199f22fd.f9b76d2e.js rename to assets/js/199f22fd.1f9e0c61.js index 3f6530901..7fe5ff282 100644 --- a/assets/js/199f22fd.f9b76d2e.js +++ b/assets/js/199f22fd.1f9e0c61.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1263],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),f=a,m=d["".concat(l,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"nearest-endpoints",title:"nearestEndpoints",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/queries/nearest-endpoints",id:"build/api/schema/queries/nearest-endpoints",title:"nearestEndpoints",description:"List the nearest endpoints nodes from the client's IP",source:"@site/docs/build/api/schema/queries/nearest-endpoints.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/nearest-endpoints",permalink:"/build/api/schema/queries/nearest-endpoints",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"nearest-endpoints",title:"nearestEndpoints",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"lastTransaction",permalink:"/build/api/schema/queries/last-transaction"},next:{title:"networkTransactions",permalink:"/build/api/schema/queries/network-transactions"}},c={},p=[{value:"Type",id:"type",level:3},{value:'Endpoint ',id:"endpoint-",level:4}],d=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List the nearest endpoints nodes from the client's IP"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"nearestEndpoints: [Endpoint]\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"endpoint-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/endpoint"},(0,o.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Endpoint]"," represents a network node's endpoint")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1263],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),f=a,m=d["".concat(l,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"nearest-endpoints",title:"nearestEndpoints",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/queries/nearest-endpoints",id:"build/api/schema/queries/nearest-endpoints",title:"nearestEndpoints",description:"List the nearest endpoints nodes from the client's IP",source:"@site/docs/build/api/schema/queries/nearest-endpoints.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/nearest-endpoints",permalink:"/build/api/schema/queries/nearest-endpoints",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"nearest-endpoints",title:"nearestEndpoints",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"lastTransaction",permalink:"/build/api/schema/queries/last-transaction"},next:{title:"networkTransactions",permalink:"/build/api/schema/queries/network-transactions"}},c={},p=[{value:"Type",id:"type",level:3},{value:'Endpoint ',id:"endpoint-",level:4}],d=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List the nearest endpoints nodes from the client's IP"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"nearestEndpoints: [Endpoint]\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"endpoint-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/endpoint"},(0,o.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Endpoint]"," represents a network node's endpoint")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/1b311f41.a4c5609a.js b/assets/js/1b311f41.b044aff3.js similarity index 99% rename from assets/js/1b311f41.a4c5609a.js rename to assets/js/1b311f41.b044aff3.js index 75d7c2e66..9d81ef4c0 100644 --- a/assets/js/1b311f41.a4c5609a.js +++ b/assets/js/1b311f41.b044aff3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3355],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),l=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(a),m=r,h=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return a?n.createElement(h,s(s({ref:t},d),{},{components:a})):n.createElement(h,s({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const s={id:"transaction-chain",title:"transactionChain",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/transaction-chain",id:"build/api/schema/queries/transaction-chain",title:"transactionChain",description:"Query the network to find a transaction chain",source:"@site/docs/build/api/schema/queries/transaction-chain.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction-chain",permalink:"/build/api/schema/queries/transaction-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-chain",title:"transactionChain",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"token",permalink:"/build/api/schema/queries/token"},next:{title:"transactionInputs",permalink:"/build/api/schema/queries/transaction-inputs"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionChain.addressAddress! ',id:"code-style-fontweight-normal-transactionchainbaddressbcodeaddress--",level:4},{value:'transactionChain.orderSortOrder ',id:"code-style-fontweight-normal-transactionchainborderbcodesortorder-",level:4},{value:'transactionChain.pagingAddressAddress ',id:"code-style-fontweight-normal-transactionchainbpagingaddressbcodeaddress-",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),h={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a transaction chain"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionChain(\n address: Address!\n order: SortOrder\n pagingAddress: Address\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"address"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainborderbcodesortorder-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"order"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/enums/sort-order"},(0,o.kt)("inlineCode",{parentName:"a"},"SortOrder"))," ",(0,o.kt)(m,{class:"secondary",text:"enum",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainbpagingaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"pagingAddress"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3355],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),l=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(a),m=r,h=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return a?n.createElement(h,s(s({ref:t},d),{},{components:a})):n.createElement(h,s({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const s={id:"transaction-chain",title:"transactionChain",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/transaction-chain",id:"build/api/schema/queries/transaction-chain",title:"transactionChain",description:"Query the network to find a transaction chain",source:"@site/docs/build/api/schema/queries/transaction-chain.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction-chain",permalink:"/build/api/schema/queries/transaction-chain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-chain",title:"transactionChain",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"token",permalink:"/build/api/schema/queries/token"},next:{title:"transactionInputs",permalink:"/build/api/schema/queries/transaction-inputs"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionChain.addressAddress! ',id:"code-style-fontweight-normal-transactionchainbaddressbcodeaddress--",level:4},{value:'transactionChain.orderSortOrder ',id:"code-style-fontweight-normal-transactionchainborderbcodesortorder-",level:4},{value:'transactionChain.pagingAddressAddress ',id:"code-style-fontweight-normal-transactionchainbpagingaddressbcodeaddress-",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),h={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a transaction chain"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionChain(\n address: Address!\n order: SortOrder\n pagingAddress: Address\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"address"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainborderbcodesortorder-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"order"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/enums/sort-order"},(0,o.kt)("inlineCode",{parentName:"a"},"SortOrder"))," ",(0,o.kt)(m,{class:"secondary",text:"enum",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionchainbpagingaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionChain.",(0,o.kt)("b",null,"pagingAddress"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/2159a0a5.abd010e6.js b/assets/js/2159a0a5.9cdad23a.js similarity index 98% rename from assets/js/2159a0a5.abd010e6.js rename to assets/js/2159a0a5.9cdad23a.js index c094f1f40..c3ff5661b 100644 --- a/assets/js/2159a0a5.abd010e6.js +++ b/assets/js/2159a0a5.9cdad23a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7766],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),m=r,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?a.createElement(f,o(o({ref:t},p),{},{components:n})):a.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"fee",title:"Transaction fees",sidebar_position:4},o=void 0,l={unversionedId:"learn/fee",id:"learn/fee",title:"Transaction fees",description:"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction's distribution.",source:"@site/docs/learn/transaction-fees.md",sourceDirName:"learn",slug:"/learn/fee",permalink:"/learn/fee",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"fee",title:"Transaction fees",sidebar_position:4},sidebar:"docs",previous:{title:"Transaction chains",permalink:"/learn/transaction-chain"},next:{title:"Transaction types",permalink:"/learn/transaction-types"}},s={},c=[{value:"Calculation",id:"calculation",level:2},{value:"Transaction's type particularities",id:"transactions-type-particularities",level:2},{value:"Network",id:"network",level:3},{value:"Keychain",id:"keychain",level:3},{value:"Token",id:"token",level:3}],p={toc:c},u="wrapper";function d(e){let{components:t,...i}=e;return(0,r.kt)(u,(0,a.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction's distribution."),(0,r.kt)("p",null,"The fees are calculated according to the real costs of the network (size, complexity) and is based on a minimal fee ($0.01) indexed to the real UCO's price (using ",(0,r.kt)("a",{parentName:"p",href:"/learn/oracle-chain"},"Oracle Chain"),")"),(0,r.kt)("p",null,"During the transaction validation, the entire fee is burned to make the UCO more rare.\nThis programmable destruction of the UCO ensures a deflation and increases the value of each token."),(0,r.kt)("p",null,"This way a fair reward mechanism is put in place for nodes regarding their work and their availability."),(0,r.kt)("h2",{id:"calculation"},"Calculation"),(0,r.kt)("p",null,"The transaction's fee computation is based on some properties:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Minimum fee: ",(0,r.kt)("em",{parentName:"li"},"$0.01 of the current UCO price")),(0,r.kt)("li",{parentName:"ul"},"Number of recipient (for transfers or smart contractcalls)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"1: no more additional fee "),(0,r.kt)("li",{parentName:"ul"},">"," 1: each additional recipient will have an additional cost of $0.1 UCO(",(0,r.kt)("em",{parentName:"li"},"Because sending transaction to multiple leverages more resources in term of network and storage, as the transaction must be replicated in all the chain targets"),")"))),(0,r.kt)("li",{parentName:"ul"},"Size of the transaction: each stored byte will cost 10",(0,r.kt)("sup",null,"-8")," of the current UCO's price"),(0,r.kt)("li",{parentName:"ul"},"Number of replicas"),(0,r.kt)("li",{parentName:"ul"},"Complexity of the smart contract (Coming soon)")),(0,r.kt)("p",null,"Overall formula:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Transaction Fee = minimum_fee + fee_for_storage(size * nb_replicas) + fee_for_complexity + cost_per_recipient\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Regular transfer of UCO to single person would cost around ~$0.01 (+/- additional information + nb of replicas)")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"The $0.01 cost is static only as minimum fee for any transaction.\nDepending on the number of recipients, size, etc. the fee will increase, as it requires more work for the network")),(0,r.kt)("h2",{id:"transactions-type-particularities"},"Transaction's type particularities"),(0,r.kt)("h3",{id:"network"},"Network"),(0,r.kt)("p",null,"All the transactions with a transaction's type such as ",(0,r.kt)("inlineCode",{parentName:"p"},"node"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"node shared secrets"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"oracle"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"beacon chain"),", etc. don't cost fee, as their intent is only for network management."),(0,r.kt)("h3",{id:"keychain"},"Keychain"),(0,r.kt)("p",null,"Transactions to manage keychain for creation, updates or add new access don't cost fee, as this will be blockage to the adoption and there are just meant to ease the wallet management."),(0,r.kt)("h3",{id:"token"},"Token"),(0,r.kt)("p",null,"Archethic supports a token mining through a given type of transaction ",(0,r.kt)("inlineCode",{parentName:"p"},"token"),".\nBecause during this step validation nodes have to perform some additional work to create new unspent transaction outputs (UTXOs) and deliver them (if multiple - for example in a collection creation)."),(0,r.kt)("p",null,"Hence an additional fee is computed based on the number of UTXO to create."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Fungible tokens: there will only cost the minimum fee: $0.01 - as it's like doing some UCO transfer")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Non fungible tokens: These are tokens which each collection item have some unique properties and well identified. So a list of UTXO is created for each unique collection items. This creation will consume resources of computation, networking and storage."))),(0,r.kt)("p",null,"An additional fee is determined in that case through the following formula: "),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"(log10(number of utxos) + 1) * number of utxos * minimum fee")),(0,r.kt)("p",null,"So the transaction fee will gradually increase according of the number of unique token to create (= new UTXO)"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(7626).Z,width:"811",height:"502"})))}d.isMDXComponent=!0},7626:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/nft_additional_fee-8c6d24177afeea4eba9d662d63304901.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7766],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),m=r,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?a.createElement(f,o(o({ref:t},p),{},{components:n})):a.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"fee",title:"Transaction fees",sidebar_position:4},o=void 0,l={unversionedId:"learn/fee",id:"learn/fee",title:"Transaction fees",description:"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction's distribution.",source:"@site/docs/learn/transaction-fees.md",sourceDirName:"learn",slug:"/learn/fee",permalink:"/learn/fee",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"fee",title:"Transaction fees",sidebar_position:4},sidebar:"docs",previous:{title:"Transaction chains",permalink:"/learn/transaction-chain"},next:{title:"Transaction types",permalink:"/learn/transaction-types"}},s={},c=[{value:"Calculation",id:"calculation",level:2},{value:"Transaction's type particularities",id:"transactions-type-particularities",level:2},{value:"Network",id:"network",level:3},{value:"Keychain",id:"keychain",level:3},{value:"Token",id:"token",level:3}],p={toc:c},u="wrapper";function d(e){let{components:t,...i}=e;return(0,r.kt)(u,(0,a.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction's distribution."),(0,r.kt)("p",null,"The fees are calculated according to the real costs of the network (size, complexity) and is based on a minimal fee ($0.01) indexed to the real UCO's price (using ",(0,r.kt)("a",{parentName:"p",href:"/learn/oracle-chain"},"Oracle Chain"),")"),(0,r.kt)("p",null,"During the transaction validation, the entire fee is burned to make the UCO more rare.\nThis programmable destruction of the UCO ensures a deflation and increases the value of each token."),(0,r.kt)("p",null,"This way a fair reward mechanism is put in place for nodes regarding their work and their availability."),(0,r.kt)("h2",{id:"calculation"},"Calculation"),(0,r.kt)("p",null,"The transaction's fee computation is based on some properties:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Minimum fee: ",(0,r.kt)("em",{parentName:"li"},"$0.01 of the current UCO price")),(0,r.kt)("li",{parentName:"ul"},"Number of recipient (for transfers or smart contractcalls)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"1: no more additional fee "),(0,r.kt)("li",{parentName:"ul"},">"," 1: each additional recipient will have an additional cost of $0.1 UCO(",(0,r.kt)("em",{parentName:"li"},"Because sending transaction to multiple leverages more resources in term of network and storage, as the transaction must be replicated in all the chain targets"),")"))),(0,r.kt)("li",{parentName:"ul"},"Size of the transaction: each stored byte will cost 10",(0,r.kt)("sup",null,"-8")," of the current UCO's price"),(0,r.kt)("li",{parentName:"ul"},"Number of replicas"),(0,r.kt)("li",{parentName:"ul"},"Complexity of the smart contract (Coming soon)")),(0,r.kt)("p",null,"Overall formula:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Transaction Fee = minimum_fee + fee_for_storage(size * nb_replicas) + fee_for_complexity + cost_per_recipient\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Regular transfer of UCO to single person would cost around ~$0.01 (+/- additional information + nb of replicas)")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"The $0.01 cost is static only as minimum fee for any transaction.\nDepending on the number of recipients, size, etc. the fee will increase, as it requires more work for the network")),(0,r.kt)("h2",{id:"transactions-type-particularities"},"Transaction's type particularities"),(0,r.kt)("h3",{id:"network"},"Network"),(0,r.kt)("p",null,"All the transactions with a transaction's type such as ",(0,r.kt)("inlineCode",{parentName:"p"},"node"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"node shared secrets"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"oracle"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"beacon chain"),", etc. don't cost fee, as their intent is only for network management."),(0,r.kt)("h3",{id:"keychain"},"Keychain"),(0,r.kt)("p",null,"Transactions to manage keychain for creation, updates or add new access don't cost fee, as this will be blockage to the adoption and there are just meant to ease the wallet management."),(0,r.kt)("h3",{id:"token"},"Token"),(0,r.kt)("p",null,"Archethic supports a token mining through a given type of transaction ",(0,r.kt)("inlineCode",{parentName:"p"},"token"),".\nBecause during this step validation nodes have to perform some additional work to create new unspent transaction outputs (UTXOs) and deliver them (if multiple - for example in a collection creation)."),(0,r.kt)("p",null,"Hence an additional fee is computed based on the number of UTXO to create."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Fungible tokens: there will only cost the minimum fee: $0.01 - as it's like doing some UCO transfer")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Non fungible tokens: These are tokens which each collection item have some unique properties and well identified. So a list of UTXO is created for each unique collection items. This creation will consume resources of computation, networking and storage."))),(0,r.kt)("p",null,"An additional fee is determined in that case through the following formula: "),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"(log10(number of utxos) + 1) * number of utxos * minimum fee")),(0,r.kt)("p",null,"So the transaction fee will gradually increase according of the number of unique token to create (= new UTXO)"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(7626).Z,width:"811",height:"502"})))}d.isMDXComponent=!0},7626:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/nft_additional_fee-8c6d24177afeea4eba9d662d63304901.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/21e44e7e.b731f269.js b/assets/js/21e44e7e.4cabcc49.js similarity index 99% rename from assets/js/21e44e7e.b731f269.js rename to assets/js/21e44e7e.4cabcc49.js index 0274ded80..9fdc62470 100644 --- a/assets/js/21e44e7e.b731f269.js +++ b/assets/js/21e44e7e.4cabcc49.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6605],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=i(r),m=a,b=p["".concat(l,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(b,s(s({ref:t},d),{},{components:r})):n.createElement(b,s({ref:t},d))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:a,s[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>c,default:()=>y,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const s={id:"transaction-error",title:"TransactionError",hide_table_of_contents:!1},c=void 0,l={unversionedId:"build/api/schema/objects/transaction-error",id:"build/api/schema/objects/transaction-error",title:"TransactionError",description:"[TransactionError] represents an error.",source:"@site/docs/build/api/schema/objects/transaction-error.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-error",permalink:"/build/api/schema/objects/transaction-error",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-error",title:"TransactionError",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionAttestation",permalink:"/build/api/schema/objects/transaction-attestation"},next:{title:"TransactionInput",permalink:"/build/api/schema/objects/transaction-input"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionError.addressAddress ',id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress-",level:4},{value:'TransactionError.contextErrorContext ',id:"code-style-fontweight-normal-transactionerrorbcontextbcodeerrorcontext-",level:4},{value:'TransactionError.reasonString ',id:"code-style-fontweight-normal-transactionerrorbreasonbcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(f,(0,n.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionError]"," represents an error."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionError {\n address: Address\n context: ErrorContext\n reason: String\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbcontextbcodeerrorcontext-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"context"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/enums/error-context"},(0,o.kt)("inlineCode",{parentName:"a"},"ErrorContext"))," ",(0,o.kt)(m,{class:"secondary",text:"enum",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbreasonbcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"reason"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-error"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionError"))," ",(0,o.kt)(m,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6605],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=i(r),m=a,b=p["".concat(l,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(b,s(s({ref:t},d),{},{components:r})):n.createElement(b,s({ref:t},d))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:a,s[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>c,default:()=>y,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const s={id:"transaction-error",title:"TransactionError",hide_table_of_contents:!1},c=void 0,l={unversionedId:"build/api/schema/objects/transaction-error",id:"build/api/schema/objects/transaction-error",title:"TransactionError",description:"[TransactionError] represents an error.",source:"@site/docs/build/api/schema/objects/transaction-error.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-error",permalink:"/build/api/schema/objects/transaction-error",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-error",title:"TransactionError",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionAttestation",permalink:"/build/api/schema/objects/transaction-attestation"},next:{title:"TransactionInput",permalink:"/build/api/schema/objects/transaction-input"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionError.addressAddress ',id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress-",level:4},{value:'TransactionError.contextErrorContext ',id:"code-style-fontweight-normal-transactionerrorbcontextbcodeerrorcontext-",level:4},{value:'TransactionError.reasonString ',id:"code-style-fontweight-normal-transactionerrorbreasonbcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(f,(0,n.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionError]"," represents an error."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionError {\n address: Address\n context: ErrorContext\n reason: String\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbcontextbcodeerrorcontext-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"context"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/enums/error-context"},(0,o.kt)("inlineCode",{parentName:"a"},"ErrorContext"))," ",(0,o.kt)(m,{class:"secondary",text:"enum",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbreasonbcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionError.",(0,o.kt)("b",null,"reason"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-error"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionError"))," ",(0,o.kt)(m,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/244870c6.a4b31436.js b/assets/js/244870c6.505ba13d.js similarity index 99% rename from assets/js/244870c6.a4b31436.js rename to assets/js/244870c6.505ba13d.js index 797eb0525..cc64563cd 100644 --- a/assets/js/244870c6.a4b31436.js +++ b/assets/js/244870c6.505ba13d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6484],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),y=o,h=d["".concat(s,".").concat(y)]||d[y]||u[y]||r;return n?a.createElement(h,i(i({ref:t},p),{},{components:n})):a.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var a=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"deploy",title:"Smart Contracts Playground - Deploy",sidebar_label:"Deploy",sidebar_position:2},i=void 0,l={unversionedId:"build/smart-contracts/playground/deploy",id:"build/smart-contracts/playground/deploy",title:"Smart Contracts Playground - Deploy",description:"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn't meet the security standard we expect.",source:"@site/docs/build/smart-contracts/playground/deploy.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/deploy",permalink:"/build/smart-contracts/playground/deploy",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:2,frontMatter:{id:"deploy",title:"Smart Contracts Playground - Deploy",sidebar_label:"Deploy",sidebar_position:2},sidebar:"docs",previous:{title:"Build",permalink:"/build/smart-contracts/playground/build"},next:{title:"Function calls",permalink:"/build/smart-contracts/playground/functions"}},s={},c=[],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"Not mainnet-ready",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn't meet the security standard we expect.")),(0,o.kt)("p",null,"Once the code is written and the triggers are tested, the next step is to deploy the Smart Contract. Please open the deploy panel by clicking on the deploy button:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"the deploy button",src:n(4396).Z,width:"90",height:"67"})),(0,o.kt)("p",null,"The deploy panel opens on the left hand side: "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"the deploy panel",src:n(3801).Z,width:"3600",height:"2390"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Choose the network where you want to deploy the Smart Contract. This will always be "',(0,o.kt)("a",{parentName:"li",href:"https://testnet.archethic.net%22"},'https://testnet.archethic.net"')," for now."),(0,o.kt)("li",{parentName:"ol"},"You'll see that we automatically retrieve the ",(0,o.kt)("inlineCode",{parentName:"li"},"storage nonce public key")," that is used to give ownership of the contract to the authorized nodes (miners)."),(0,o.kt)("li",{parentName:"ol"},"Then specify a seed of a transaction chain that will host the contract. ")),(0,o.kt)("p",null,"While modifying the seed, you can see that the future contract's address is displayed. The contract's genesis address is also displayed. "),(0,o.kt)("admonition",{title:"Genesis address",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The genesis address is the one you'll use in the ",(0,o.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," to transfer funds.")),(0,o.kt)("p",null,"Now you may click on ",(0,o.kt)("inlineCode",{parentName:"p"},"estimate fees")," and then ",(0,o.kt)("inlineCode",{parentName:"p"},"deploy"),". Hopefully you'll see a success message!\nYou may follow the link to view the transaction on the explorer."),(0,o.kt)("admonition",{title:"That's it!",type:"success"},(0,o.kt)("p",{parentName:"admonition"},"Congratulations on your contract's deployment.")))}u.isMDXComponent=!0},4396:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABDCAYAAAAccRJRAAAEQklEQVR4Xu2au09TURzHf0yUCaZeXFoXSxyISymLj8GKQ4VFYyKvBBAjIonPvwIVE1+JvBIeNTG6gB3EOgg6iCyGSVwsDFIW6UTroud3yS29t7ftKW1/5wZ+J2HhnnN+t5/zvd/feVV5jzf/Ay4VJ1DFoCvOWA/AoGk4M2gizgyaQVMRIIrDHs2giQgQhWFFM2giAkRhWNEMmogAURhWNIMmIkAUhhXNoLMJaJobutvb9QdT4TDE41tEmEoP40hFu6qrQXO7IbaxYfqFXR1X4KjXq//vVywG07OvTM+9Ho+AH4dkKlU6mTL34DjQCHnoxgC4alzwezMOM7NhHRxC7O7cVbNRpmbCEFtfB2zT2dEOR+o1SO4k4cnzF46D7TjQDb5jcPnSxTRMBLe5FU8r2So0VHa9W9MHxiiv37yFH2s/y6zJ0rpzHGg75Rb7E1+OTzjOvx0HGhPetb5eW7ab6L/JZPqZpmlQ49pTsvGAQdvgQ3/1CP9NCYDJvyloDYV0rzXKdmIbFhe/CCtYy/JdbNvg80Eg4Id6Ad0o6O3zkYjwbhdUizrrwsdVJ0ilis5MfLns4evyCixEowXd4/Spk3BG/NkVJyRIpaDz+fGnpc8QaPLr1iCb3E40NkJba8gWtjFDKThiFaqgFDT+pv6+HtNnj/97/yEKy99WhC3szkBQkaMTk7CdSBTEgINz/lzQVA+9fXR8smDbSlZQDhrt4+bgQDqpWaG0BIPQLDwYfXdMwJYpQ4PXoa62Tq+6I7z/6TP182rloBFG5orPziYM1cv6daaF2K0gZQar3HWUg7b69PDDkawZQl1tLVwVFiPr1/iV3L97O81KtT/jiygDjfPlluBZ04ovn/qK9Wur92PfC9GPyhYyykDfu3Mra7FR6DM3/Hq/nzUm1eGRx/ttXlK7QwUaE+ODR4cM9H6tA2GNialaoakeW4flA5RNhv29PfoOnczihZNhDpfLnN7NzUfg++qqqSZP70pKD7uNrfsd1oWJkQCLWd1lLlicsM+hdHpnjJHMElzWl7FPuyV4MavKMmjHtgtlsw58m0KbSs1+v7QvY3+8qZRDJtZ9DrtqssvufNukuKc9OjapdE9aqaINj/Z6PenpWtuFkGk37892AhaXlmBNnAFaN+9xoHxihy/Q1GQ6LEA/n3sX0ccNl++x2CHf+LdTcL6jLPTaVGrvKMu4emDth4+yJDINH85KQCpHFet1A5xx4KWYXOrF/RHrIa3MoqYc71pMH8o92vqymQkSvXZaXJKRuUDTJS7X4AGtExKf3QA4DrSRIFGleAsps/CVsGK+oRLqYqLsEle/sEyLq2J8ybEEmAe1qSOt4yDCZtBEo8qgGTQRAaIwrGgGTUSAKAwrmkETESAKw4pm0EQEiMKwohk0EQGiMKxoBk1EgCgMK5pBExEgCsOKZtBEBIjCsKIZNBEBojCsaCLQ/wEUs1lc4dJ83gAAAABJRU5ErkJggg=="},3801:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_panel_deploy-c50b458baed8c3bf36b5c1a17d2f9566.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6484],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),y=o,h=d["".concat(s,".").concat(y)]||d[y]||u[y]||r;return n?a.createElement(h,i(i({ref:t},p),{},{components:n})):a.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var a=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"deploy",title:"Smart Contracts Playground - Deploy",sidebar_label:"Deploy",sidebar_position:2},i=void 0,l={unversionedId:"build/smart-contracts/playground/deploy",id:"build/smart-contracts/playground/deploy",title:"Smart Contracts Playground - Deploy",description:"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn't meet the security standard we expect.",source:"@site/docs/build/smart-contracts/playground/deploy.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/deploy",permalink:"/build/smart-contracts/playground/deploy",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:2,frontMatter:{id:"deploy",title:"Smart Contracts Playground - Deploy",sidebar_label:"Deploy",sidebar_position:2},sidebar:"docs",previous:{title:"Build",permalink:"/build/smart-contracts/playground/build"},next:{title:"Function calls",permalink:"/build/smart-contracts/playground/functions"}},s={},c=[],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"Not mainnet-ready",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn't meet the security standard we expect.")),(0,o.kt)("p",null,"Once the code is written and the triggers are tested, the next step is to deploy the Smart Contract. Please open the deploy panel by clicking on the deploy button:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"the deploy button",src:n(4396).Z,width:"90",height:"67"})),(0,o.kt)("p",null,"The deploy panel opens on the left hand side: "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"the deploy panel",src:n(3801).Z,width:"3600",height:"2390"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Choose the network where you want to deploy the Smart Contract. This will always be "',(0,o.kt)("a",{parentName:"li",href:"https://testnet.archethic.net%22"},'https://testnet.archethic.net"')," for now."),(0,o.kt)("li",{parentName:"ol"},"You'll see that we automatically retrieve the ",(0,o.kt)("inlineCode",{parentName:"li"},"storage nonce public key")," that is used to give ownership of the contract to the authorized nodes (miners)."),(0,o.kt)("li",{parentName:"ol"},"Then specify a seed of a transaction chain that will host the contract. ")),(0,o.kt)("p",null,"While modifying the seed, you can see that the future contract's address is displayed. The contract's genesis address is also displayed. "),(0,o.kt)("admonition",{title:"Genesis address",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The genesis address is the one you'll use in the ",(0,o.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/faucet"},"faucet")," to transfer funds.")),(0,o.kt)("p",null,"Now you may click on ",(0,o.kt)("inlineCode",{parentName:"p"},"estimate fees")," and then ",(0,o.kt)("inlineCode",{parentName:"p"},"deploy"),". Hopefully you'll see a success message!\nYou may follow the link to view the transaction on the explorer."),(0,o.kt)("admonition",{title:"That's it!",type:"success"},(0,o.kt)("p",{parentName:"admonition"},"Congratulations on your contract's deployment.")))}u.isMDXComponent=!0},4396:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABDCAYAAAAccRJRAAAEQklEQVR4Xu2au09TURzHf0yUCaZeXFoXSxyISymLj8GKQ4VFYyKvBBAjIonPvwIVE1+JvBIeNTG6gB3EOgg6iCyGSVwsDFIW6UTroud3yS29t7ftKW1/5wZ+J2HhnnN+t5/zvd/feVV5jzf/Ay4VJ1DFoCvOWA/AoGk4M2gizgyaQVMRIIrDHs2giQgQhWFFM2giAkRhWNEMmogAURhWNIMmIkAUhhXNoLMJaJobutvb9QdT4TDE41tEmEoP40hFu6qrQXO7IbaxYfqFXR1X4KjXq//vVywG07OvTM+9Ho+AH4dkKlU6mTL34DjQCHnoxgC4alzwezMOM7NhHRxC7O7cVbNRpmbCEFtfB2zT2dEOR+o1SO4k4cnzF46D7TjQDb5jcPnSxTRMBLe5FU8r2So0VHa9W9MHxiiv37yFH2s/y6zJ0rpzHGg75Rb7E1+OTzjOvx0HGhPetb5eW7ab6L/JZPqZpmlQ49pTsvGAQdvgQ3/1CP9NCYDJvyloDYV0rzXKdmIbFhe/CCtYy/JdbNvg80Eg4Id6Ad0o6O3zkYjwbhdUizrrwsdVJ0ilis5MfLns4evyCixEowXd4/Spk3BG/NkVJyRIpaDz+fGnpc8QaPLr1iCb3E40NkJba8gWtjFDKThiFaqgFDT+pv6+HtNnj/97/yEKy99WhC3szkBQkaMTk7CdSBTEgINz/lzQVA+9fXR8smDbSlZQDhrt4+bgQDqpWaG0BIPQLDwYfXdMwJYpQ4PXoa62Tq+6I7z/6TP182rloBFG5orPziYM1cv6daaF2K0gZQar3HWUg7b69PDDkawZQl1tLVwVFiPr1/iV3L97O81KtT/jiygDjfPlluBZ04ovn/qK9Wur92PfC9GPyhYyykDfu3Mra7FR6DM3/Hq/nzUm1eGRx/ttXlK7QwUaE+ODR4cM9H6tA2GNialaoakeW4flA5RNhv29PfoOnczihZNhDpfLnN7NzUfg++qqqSZP70pKD7uNrfsd1oWJkQCLWd1lLlicsM+hdHpnjJHMElzWl7FPuyV4MavKMmjHtgtlsw58m0KbSs1+v7QvY3+8qZRDJtZ9DrtqssvufNukuKc9OjapdE9aqaINj/Z6PenpWtuFkGk37892AhaXlmBNnAFaN+9xoHxihy/Q1GQ6LEA/n3sX0ccNl++x2CHf+LdTcL6jLPTaVGrvKMu4emDth4+yJDINH85KQCpHFet1A5xx4KWYXOrF/RHrIa3MoqYc71pMH8o92vqymQkSvXZaXJKRuUDTJS7X4AGtExKf3QA4DrSRIFGleAsps/CVsGK+oRLqYqLsEle/sEyLq2J8ybEEmAe1qSOt4yDCZtBEo8qgGTQRAaIwrGgGTUSAKAwrmkETESAKw4pm0EQEiMKwohk0EQGiMKxoBk1EgCgMK5pBExEgCsOKZtBEBIjCsKIZNBEBojCsaCLQ/wEUs1lc4dJ83gAAAABJRU5ErkJggg=="},3801:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_panel_deploy-c50b458baed8c3bf36b5c1a17d2f9566.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/24510ea8.6ae98bcf.js b/assets/js/24510ea8.e64959e2.js similarity index 98% rename from assets/js/24510ea8.6ae98bcf.js rename to assets/js/24510ea8.e64959e2.js index 2a7cd9703..f32c2f289 100644 --- a/assets/js/24510ea8.6ae98bcf.js +++ b/assets/js/24510ea8.e64959e2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1340],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},h=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,h=o(e,["components","mdxType","originalType","parentName"]),d=s(r),p=a,f=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return r?n.createElement(f,c(c({ref:t},h),{},{components:r})):n.createElement(f,c({ref:t},h))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,c=new Array(i);c[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const i={id:"service",title:"Oracle Chain Service",sidebar_label:"Service"},c=void 0,o={unversionedId:"build/core/oracle-chain/service",id:"build/core/oracle-chain/service",title:"Oracle Chain Service",description:"OracleChain provides a way to extend it and to add more services to the scheduler.",source:"@site/docs/build/core/oracle-chain/service.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/service",permalink:"/build/core/oracle-chain/service",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"service",title:"Oracle Chain Service",sidebar_label:"Service"},sidebar:"docs",previous:{title:"Scheduler",permalink:"/build/core/oracle-chain/scheduler"},next:{title:"P2P",permalink:"/build/core/p2p/"}},l={},s=[{value:"Behavior",id:"behavior",level:2},{value:"Example",id:"example",level:3},{value:"Configuration",id:"configuration",level:2}],h={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"OracleChain provides a way to extend it and to add more services to the scheduler."),(0,a.kt)("h2",{id:"behavior"},"Behavior"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/oracle_chain/services/impl.ex"},"behavior")," defines functions to extend to support new services"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fetch: This will perform the data fetching and will return a map of the data to be serialized by the transaction"),(0,a.kt)("li",{parentName:"ul"},"Verify: This will let validation nodes asserts the information provided in the new oracle transaction"),(0,a.kt)("li",{parentName:"ul"},"Parse data: This will parse the incoming data from the oracle transaction and checks its validatity")),(0,a.kt)("h3",{id:"example"},"Example"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/oracle_chain/services/uco_price.ex"},"UCO service behavior")," is implemented in such way:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fetch: it request Coingecko to fetch the USD/EUR pair of the Archethic token"),(0,a.kt)("li",{parentName:"ul"},"Verify: fetch Coingecko again to gather the token price and compare price using a standard deviation function with a threshold of 0.01"),(0,a.kt)("li",{parentName:"ul"},"Parse data: Ensure the data is map with the USD/EUR pair and an amount encoded as float")),(0,a.kt)("h2",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"Along with the definition of the new service, we need to inform how to add this service to the ",(0,a.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/scheduler"},"scheduler"),".\nFor this we need to add the service in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/config/config.exs"},"configuration (config.exs)")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},"config :archethic, Archethic.OracleChain,\n services: [\n uco: Archethic.OracleChain.Services.UCOPrice,\n mynewservice: Archethic.OracleChain.Service.MyNewService # Added line\n ]\n")))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1340],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},h=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,h=o(e,["components","mdxType","originalType","parentName"]),d=s(r),p=a,f=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return r?n.createElement(f,c(c({ref:t},h),{},{components:r})):n.createElement(f,c({ref:t},h))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,c=new Array(i);c[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const i={id:"service",title:"Oracle Chain Service",sidebar_label:"Service"},c=void 0,o={unversionedId:"build/core/oracle-chain/service",id:"build/core/oracle-chain/service",title:"Oracle Chain Service",description:"OracleChain provides a way to extend it and to add more services to the scheduler.",source:"@site/docs/build/core/oracle-chain/service.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/service",permalink:"/build/core/oracle-chain/service",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"service",title:"Oracle Chain Service",sidebar_label:"Service"},sidebar:"docs",previous:{title:"Scheduler",permalink:"/build/core/oracle-chain/scheduler"},next:{title:"P2P",permalink:"/build/core/p2p/"}},l={},s=[{value:"Behavior",id:"behavior",level:2},{value:"Example",id:"example",level:3},{value:"Configuration",id:"configuration",level:2}],h={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"OracleChain provides a way to extend it and to add more services to the scheduler."),(0,a.kt)("h2",{id:"behavior"},"Behavior"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/oracle_chain/services/impl.ex"},"behavior")," defines functions to extend to support new services"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fetch: This will perform the data fetching and will return a map of the data to be serialized by the transaction"),(0,a.kt)("li",{parentName:"ul"},"Verify: This will let validation nodes asserts the information provided in the new oracle transaction"),(0,a.kt)("li",{parentName:"ul"},"Parse data: This will parse the incoming data from the oracle transaction and checks its validatity")),(0,a.kt)("h3",{id:"example"},"Example"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/oracle_chain/services/uco_price.ex"},"UCO service behavior")," is implemented in such way:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Fetch: it request Coingecko to fetch the USD/EUR pair of the Archethic token"),(0,a.kt)("li",{parentName:"ul"},"Verify: fetch Coingecko again to gather the token price and compare price using a standard deviation function with a threshold of 0.01"),(0,a.kt)("li",{parentName:"ul"},"Parse data: Ensure the data is map with the USD/EUR pair and an amount encoded as float")),(0,a.kt)("h2",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"Along with the definition of the new service, we need to inform how to add this service to the ",(0,a.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/scheduler"},"scheduler"),".\nFor this we need to add the service in the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/config/config.exs"},"configuration (config.exs)")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},"config :archethic, Archethic.OracleChain,\n services: [\n uco: Archethic.OracleChain.Services.UCOPrice,\n mynewservice: Archethic.OracleChain.Service.MyNewService # Added line\n ]\n")))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/27ab3fd0.583f2a51.js b/assets/js/27ab3fd0.c42f5e56.js similarity index 97% rename from assets/js/27ab3fd0.583f2a51.js rename to assets/js/27ab3fd0.c42f5e56.js index bbaf0ca90..fde060310 100644 --- a/assets/js/27ab3fd0.583f2a51.js +++ b/assets/js/27ab3fd0.c42f5e56.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3382],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),l=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return a.createElement(i.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(r),m=n,f=d["".concat(i,".").concat(m)]||d[m]||u[m]||o;return r?a.createElement(f,c(c({ref:t},p),{},{components:r})):a.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[d]="string"==typeof e?e:n,c[1]=s;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>c,metadata:()=>i,toc:()=>p});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"shared-secrets",title:"sharedSecrets",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/queries/shared-secrets",id:"build/api/schema/queries/shared-secrets",title:"sharedSecrets",description:"Query the network to get the storage nonce public key",source:"@site/docs/build/api/schema/queries/shared-secrets.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/shared-secrets",permalink:"/build/api/schema/queries/shared-secrets",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"shared-secrets",title:"sharedSecrets",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"oracleData",permalink:"/build/api/schema/queries/oracle-data"},next:{title:"token",permalink:"/build/api/schema/queries/token"}},l={},p=[{value:"Type",id:"type",level:3},{value:'SharedSecrets ',id:"sharedsecrets-",level:4}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},y="wrapper";function h(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to get the storage nonce public key"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"sharedSecrets: SharedSecrets\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"sharedsecrets-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/shared-secrets"},(0,o.kt)("inlineCode",{parentName:"a"},"SharedSecrets"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[SharedSecrets]"," represents the public shared secret information\nIt includes:"),(0,o.kt)("ul",{parentName:"blockquote"},(0,o.kt)("li",{parentName:"ul"},"The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)"))))}h.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3382],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),l=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return a.createElement(i.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(r),m=n,f=d["".concat(i,".").concat(m)]||d[m]||u[m]||o;return r?a.createElement(f,c(c({ref:t},p),{},{components:r})):a.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[d]="string"==typeof e?e:n,c[1]=s;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>c,metadata:()=>i,toc:()=>p});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"shared-secrets",title:"sharedSecrets",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/queries/shared-secrets",id:"build/api/schema/queries/shared-secrets",title:"sharedSecrets",description:"Query the network to get the storage nonce public key",source:"@site/docs/build/api/schema/queries/shared-secrets.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/shared-secrets",permalink:"/build/api/schema/queries/shared-secrets",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"shared-secrets",title:"sharedSecrets",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"oracleData",permalink:"/build/api/schema/queries/oracle-data"},next:{title:"token",permalink:"/build/api/schema/queries/token"}},l={},p=[{value:"Type",id:"type",level:3},{value:'SharedSecrets ',id:"sharedsecrets-",level:4}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},y="wrapper";function h(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to get the storage nonce public key"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"sharedSecrets: SharedSecrets\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"sharedsecrets-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/shared-secrets"},(0,o.kt)("inlineCode",{parentName:"a"},"SharedSecrets"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[SharedSecrets]"," represents the public shared secret information\nIt includes:"),(0,o.kt)("ul",{parentName:"blockquote"},(0,o.kt)("li",{parentName:"ul"},"The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)"))))}h.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/2ab0cde1.4a1ff6a5.js b/assets/js/2ab0cde1.8338a378.js similarity index 98% rename from assets/js/2ab0cde1.4a1ff6a5.js rename to assets/js/2ab0cde1.8338a378.js index 8b1d950cc..2d03b85b9 100644 --- a/assets/js/2ab0cde1.4a1ff6a5.js +++ b/assets/js/2ab0cde1.8338a378.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5400],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>f});var n=i(7294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=s(i),d=a,f=h["".concat(l,".").concat(d)]||h[d]||p[d]||o;return i?n.createElement(f,r(r({ref:t},u),{},{components:i})):n.createElement(f,r({ref:t},u))}));function f(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,r=new Array(o);r[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[h]="string"==typeof e?e:a,r[1]=c;for(var s=2;s{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=i(7462),a=(i(7294),i(3905));i(8209);const o={id:"aeweb-front",title:"AEWeb - Application Front End",sidebar_label:"AEWeb Front End",sidebar_position:4},r="AEWeb Front end",c={unversionedId:"participate/aeweb/usage/aeweb-front",id:"participate/aeweb/usage/aeweb-front",title:"AEWeb - Application Front End",description:"Access//aeweb.archethic.net",source:"@site/docs/participate/aeweb/usage/aeweb-front.md",sourceDirName:"participate/aeweb/usage",slug:"/participate/aeweb/usage/aeweb-front",permalink:"/participate/aeweb/usage/aeweb-front",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"aeweb-front",title:"AEWeb - Application Front End",sidebar_label:"AEWeb Front End",sidebar_position:4},sidebar:"docs",previous:{title:"CLI",permalink:"/participate/aeweb/usage/cli"},next:{title:"Automate deployments",permalink:"/participate/aeweb/automation"}},l={},s=[{value:"Tutorials",id:"tutorials",level:2},{value:"Deploy for the first time my static site",id:"deploy-for-the-first-time-my-static-site",level:3},{value:"Update my static site",id:"update-my-static-site",level:3},{value:"Update the SSL certificate",id:"update-the-ssl-certificate",level:3},{value:"Unpublish my static site",id:"unpublish-my-static-site",level:3},{value:"See my static site's informations",id:"see-my-static-sites-informations",level:3},{value:"Disconnect AEWeb",id:"disconnect-aeweb",level:3},{value:"Roadmap",id:"roadmap",level:2}],u={toc:s},h="wrapper";function p(e){let{components:t,...i}=e;return(0,a.kt)(h,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"aeweb-front-end"},"AEWeb Front end"),(0,a.kt)("p",null,"Access: ",(0,a.kt)("a",{parentName:"p",href:"https://aeweb.archethic.net"},"https://aeweb.archethic.net"),(0,a.kt)("br",null),"\nSource code: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb"},"https://github.com/archethic-foundation/aeweb")),(0,a.kt)("p",null,"This web application, built with Flutter, can be used to deploy and manage static sites to the Archethic Blockchain."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Before reading the following tutorials, understand ",(0,a.kt)("a",{href:"/participate/aeweb/how-it-works",target:"_blank"},"how AEWeb works"),". ")),(0,a.kt)("h2",{id:"tutorials"},"Tutorials"),(0,a.kt)("h3",{id:"deploy-for-the-first-time-my-static-site"},"Deploy for the first time my static site"),(0,a.kt)("p",null,'When you want to deploy a new static website on the Archethic blockchain, simply click on "New static site" in the main menu or the "+" icon in the section reserved for the list of your already deployed sites.'),(0,a.kt)("p",null,"A form will then appear, providing you with the necessary information for deploying your site:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The name of the website. This name will be used to declare the site in your ",(0,a.kt)("a",{href:"/learn/decentralized-id/keychain",target:"_blank"},"decentralized keychain"),". (mandatory)"),(0,a.kt)("li",{parentName:"ul"},"The archive file (with .zip, .7z, or .rar extension) containing the content of your website. (mandatory)"),(0,a.kt)("li",{parentName:"ul"},"You can specify whether you want to include or exclude files listed in a ",(0,a.kt)("a",{href:"/FAQ/aeweb#what-is-the-purpose-of-a-gitignore-file",target:"_blank"},".gitignore file"),". (optional)"),(0,a.kt)("li",{parentName:"ul"},"The ",(0,a.kt)("a",{href:"/participate/aeweb/dns#1-get-the-certificate",target:"_blank"},"public certificate")," for your domain and the private key associated with the certificate. (optional)")),(0,a.kt)("p",null,"Once the required information is provided and the publication rules are accepted, you can initiate the deployment of your site."),(0,a.kt)("p",null,"AEWeb will then prompt you, via your Archethic wallet, to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Confirm the creation of the site in your keychain."),(0,a.kt)("li",{parentName:"ul"},"Sign the transaction(s) that contain the content of your site."),(0,a.kt)("li",{parentName:"ul"},"Sign the reference transaction of your site in the blockchain."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chains that enable your site to function.")),(0,a.kt)("p",null,"The associated fees for the creation will be provided, and once accepted, your site will be permanently published on the blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"In the beta version currently being deployed, a limit of 3 MB for a site has been set.")),(0,a.kt)("br",null),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Create static site.mp4"})),(0,a.kt)("h3",{id:"update-my-static-site"},"Update my static site"),(0,a.kt)("p",null,'You can update your site by comparing the latest version hosted on the blockchain with a new archive containing your modifications.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Sync from local folder".'),(0,a.kt)("p",null,"After selecting the archive, the application will present you with information about the differences between the blockchain data and your archive. If you are satisfied with the information and agree to the publication rules, you can proceed with the update."),(0,a.kt)("p",null,"The application will then prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction(s) that contain the content of your new site version."),(0,a.kt)("li",{parentName:"ul"},"Sign the transaction to update the reference transaction of your site in the blockchain."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chains that power your site.")),(0,a.kt)("p",null,"The associated fees for the update will be provided, and once accepted, a new version of your site will be published on the blockchain."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Update static site.mp4"})),(0,a.kt)("h3",{id:"update-the-ssl-certificate"},"Update the SSL certificate"),(0,a.kt)("p",null,'You can add and update the SSL certificate associated with your site.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Update the certificate".'),(0,a.kt)("p",null,"After selecting the public certificate for your domain and the private key associated with the certificate, the application will prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to include the certificate."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.")),(0,a.kt)("p",null,"The associated fees for the update will be provided, and once accepted, the certificate will be published in the content of the reference transaction, and the private key will be stored in a transaction secret."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Update certificate.mp4"})),(0,a.kt)("h3",{id:"unpublish-my-static-site"},"Unpublish my static site"),(0,a.kt)("p",null,'You can unpublish your static site to make it no longer accessible.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Unpublish static site".'),(0,a.kt)("p",null,"After confirming your intention to unpublish your site, the application will prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to declare the unpublishing."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.")),(0,a.kt)("p",null,"The associated fees for unpublishing will be provided, and once accepted, the site will be unpublished."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Unpublished site.mp4"})),(0,a.kt)("h3",{id:"see-my-static-sites-informations"},"See my static site's informations"),(0,a.kt)("p",null,"For each online version and for each previous version of your website, you can access the following information by clicking on the three dots at the end of each line:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The file structure of your website that has been deployed on the blockchain."),(0,a.kt)("li",{parentName:"ul"},"The transactions containing the content of your files.")),(0,a.kt)("p",null,"Regarding the SSL certificate content, you can view it by clicking on the shield icon if you have deployed one. If the icon is red, it means that no certificate is available."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Infos site.mp4"})),(0,a.kt)("h3",{id:"disconnect-aeweb"},"Disconnect AEWeb"),(0,a.kt)("p",null,"When you want to disconnect the AEWeb application from your Archethic Wallet, simply click on the red disconnect button in the section describing the connected account and environment, and then confirm to return to the home screen."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Disconnect.mp4"})),(0,a.kt)("h2",{id:"roadmap"},"Roadmap"),(0,a.kt)("ul",{className:"contains-task-list"},(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Add session management to the wallet to avoid entering the user's authentication for each transaction signature."),(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Enable direct management of the site's content from AEWeb instead of uploading an archive with all the contents.")))}p.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5400],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>f});var n=i(7294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),h=s(i),d=a,f=h["".concat(l,".").concat(d)]||h[d]||p[d]||o;return i?n.createElement(f,r(r({ref:t},u),{},{components:i})):n.createElement(f,r({ref:t},u))}));function f(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,r=new Array(o);r[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[h]="string"==typeof e?e:a,r[1]=c;for(var s=2;s{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=i(7462),a=(i(7294),i(3905));i(8209);const o={id:"aeweb-front",title:"AEWeb - Application Front End",sidebar_label:"AEWeb Front End",sidebar_position:4},r="AEWeb Front end",c={unversionedId:"participate/aeweb/usage/aeweb-front",id:"participate/aeweb/usage/aeweb-front",title:"AEWeb - Application Front End",description:"Access//aeweb.archethic.net",source:"@site/docs/participate/aeweb/usage/aeweb-front.md",sourceDirName:"participate/aeweb/usage",slug:"/participate/aeweb/usage/aeweb-front",permalink:"/participate/aeweb/usage/aeweb-front",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"aeweb-front",title:"AEWeb - Application Front End",sidebar_label:"AEWeb Front End",sidebar_position:4},sidebar:"docs",previous:{title:"CLI",permalink:"/participate/aeweb/usage/cli"},next:{title:"Automate deployments",permalink:"/participate/aeweb/automation"}},l={},s=[{value:"Tutorials",id:"tutorials",level:2},{value:"Deploy for the first time my static site",id:"deploy-for-the-first-time-my-static-site",level:3},{value:"Update my static site",id:"update-my-static-site",level:3},{value:"Update the SSL certificate",id:"update-the-ssl-certificate",level:3},{value:"Unpublish my static site",id:"unpublish-my-static-site",level:3},{value:"See my static site's informations",id:"see-my-static-sites-informations",level:3},{value:"Disconnect AEWeb",id:"disconnect-aeweb",level:3},{value:"Roadmap",id:"roadmap",level:2}],u={toc:s},h="wrapper";function p(e){let{components:t,...i}=e;return(0,a.kt)(h,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"aeweb-front-end"},"AEWeb Front end"),(0,a.kt)("p",null,"Access: ",(0,a.kt)("a",{parentName:"p",href:"https://aeweb.archethic.net"},"https://aeweb.archethic.net"),(0,a.kt)("br",null),"\nSource code: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb"},"https://github.com/archethic-foundation/aeweb")),(0,a.kt)("p",null,"This web application, built with Flutter, can be used to deploy and manage static sites to the Archethic Blockchain."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Before reading the following tutorials, understand ",(0,a.kt)("a",{href:"/participate/aeweb/how-it-works",target:"_blank"},"how AEWeb works"),". ")),(0,a.kt)("h2",{id:"tutorials"},"Tutorials"),(0,a.kt)("h3",{id:"deploy-for-the-first-time-my-static-site"},"Deploy for the first time my static site"),(0,a.kt)("p",null,'When you want to deploy a new static website on the Archethic blockchain, simply click on "New static site" in the main menu or the "+" icon in the section reserved for the list of your already deployed sites.'),(0,a.kt)("p",null,"A form will then appear, providing you with the necessary information for deploying your site:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The name of the website. This name will be used to declare the site in your ",(0,a.kt)("a",{href:"/learn/decentralized-id/keychain",target:"_blank"},"decentralized keychain"),". (mandatory)"),(0,a.kt)("li",{parentName:"ul"},"The archive file (with .zip, .7z, or .rar extension) containing the content of your website. (mandatory)"),(0,a.kt)("li",{parentName:"ul"},"You can specify whether you want to include or exclude files listed in a ",(0,a.kt)("a",{href:"/FAQ/aeweb#what-is-the-purpose-of-a-gitignore-file",target:"_blank"},".gitignore file"),". (optional)"),(0,a.kt)("li",{parentName:"ul"},"The ",(0,a.kt)("a",{href:"/participate/aeweb/dns#1-get-the-certificate",target:"_blank"},"public certificate")," for your domain and the private key associated with the certificate. (optional)")),(0,a.kt)("p",null,"Once the required information is provided and the publication rules are accepted, you can initiate the deployment of your site."),(0,a.kt)("p",null,"AEWeb will then prompt you, via your Archethic wallet, to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Confirm the creation of the site in your keychain."),(0,a.kt)("li",{parentName:"ul"},"Sign the transaction(s) that contain the content of your site."),(0,a.kt)("li",{parentName:"ul"},"Sign the reference transaction of your site in the blockchain."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chains that enable your site to function.")),(0,a.kt)("p",null,"The associated fees for the creation will be provided, and once accepted, your site will be permanently published on the blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"In the beta version currently being deployed, a limit of 3 MB for a site has been set.")),(0,a.kt)("br",null),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Create static site.mp4"})),(0,a.kt)("h3",{id:"update-my-static-site"},"Update my static site"),(0,a.kt)("p",null,'You can update your site by comparing the latest version hosted on the blockchain with a new archive containing your modifications.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Sync from local folder".'),(0,a.kt)("p",null,"After selecting the archive, the application will present you with information about the differences between the blockchain data and your archive. If you are satisfied with the information and agree to the publication rules, you can proceed with the update."),(0,a.kt)("p",null,"The application will then prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction(s) that contain the content of your new site version."),(0,a.kt)("li",{parentName:"ul"},"Sign the transaction to update the reference transaction of your site in the blockchain."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chains that power your site.")),(0,a.kt)("p",null,"The associated fees for the update will be provided, and once accepted, a new version of your site will be published on the blockchain."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Update static site.mp4"})),(0,a.kt)("h3",{id:"update-the-ssl-certificate"},"Update the SSL certificate"),(0,a.kt)("p",null,'You can add and update the SSL certificate associated with your site.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Update the certificate".'),(0,a.kt)("p",null,"After selecting the public certificate for your domain and the private key associated with the certificate, the application will prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to include the certificate."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.")),(0,a.kt)("p",null,"The associated fees for the update will be provided, and once accepted, the certificate will be published in the content of the reference transaction, and the private key will be stored in a transaction secret."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Update certificate.mp4"})),(0,a.kt)("h3",{id:"unpublish-my-static-site"},"Unpublish my static site"),(0,a.kt)("p",null,'You can unpublish your static site to make it no longer accessible.\nTo do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Unpublish static site".'),(0,a.kt)("p",null,"After confirming your intention to unpublish your site, the application will prompt you to:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to declare the unpublishing."),(0,a.kt)("li",{parentName:"ul"},"Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.")),(0,a.kt)("p",null,"The associated fees for unpublishing will be provided, and once accepted, the site will be unpublished."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Unpublished site.mp4"})),(0,a.kt)("h3",{id:"see-my-static-sites-informations"},"See my static site's informations"),(0,a.kt)("p",null,"For each online version and for each previous version of your website, you can access the following information by clicking on the three dots at the end of each line:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The file structure of your website that has been deployed on the blockchain."),(0,a.kt)("li",{parentName:"ul"},"The transactions containing the content of your files.")),(0,a.kt)("p",null,"Regarding the SSL certificate content, you can view it by clicking on the shield icon if you have deployed one. If the icon is red, it means that no certificate is available."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Infos site.mp4"})),(0,a.kt)("h3",{id:"disconnect-aeweb"},"Disconnect AEWeb"),(0,a.kt)("p",null,"When you want to disconnect the AEWeb application from your Archethic Wallet, simply click on the red disconnect button in the section describing the connected account and environment, and then confirm to return to the home screen."),(0,a.kt)("video",{controls:!0,width:"90%"},(0,a.kt)("source",{src:"/video/AEWeb-howto-Disconnect.mp4"})),(0,a.kt)("h2",{id:"roadmap"},"Roadmap"),(0,a.kt)("ul",{className:"contains-task-list"},(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Add session management to the wallet to avoid entering the user's authentication for each transaction signature."),(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Enable direct management of the site's content from AEWeb instead of uploading an archive with all the contents.")))}p.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file diff --git a/assets/js/2bbc5cd2.73b3213c.js b/assets/js/2bbc5cd2.0fc39d00.js similarity index 96% rename from assets/js/2bbc5cd2.73b3213c.js rename to assets/js/2bbc5cd2.0fc39d00.js index bf244c653..73ae10a8e 100644 --- a/assets/js/2bbc5cd2.73b3213c.js +++ b/assets/js/2bbc5cd2.0fc39d00.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1710],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),s=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=s(r),m=n,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return r?a.createElement(f,c(c({ref:t},p),{},{components:r})):a.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:n,c[1]=i;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"smart-contracts",title:"Smart Contracts (Legacy)",sidebar_label:"Legacy",sidebar_position:999},c=void 0,i={unversionedId:"build/smart-contracts/language/legacy/smart-contracts",id:"build/smart-contracts/language/legacy/smart-contracts",title:"Smart Contracts (Legacy)",description:"This specification is deprecated and will be still be valid for SC before 1.1.0. The new version is available here",source:"@site/docs/build/smart-contracts/language/legacy/README.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/",permalink:"/build/smart-contracts/language/legacy/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:999,frontMatter:{id:"smart-contracts",title:"Smart Contracts (Legacy)",sidebar_label:"Legacy",sidebar_position:999},sidebar:"docs",previous:{title:"Examples",permalink:"/build/smart-contracts/language/examples"},next:{title:"Examples",permalink:"/build/smart-contracts/language/legacy/examples"}},l={},s=[],p={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{title:"Disclaimer",type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"This specification is deprecated and will be still be valid for SC before ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/releases/tag/v1.1.0"},"1.1.0"),". The new version is available ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/language"},"here"))))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1710],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),s=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=s(r),m=n,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return r?a.createElement(f,c(c({ref:t},p),{},{components:r})):a.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:n,c[1]=i;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"smart-contracts",title:"Smart Contracts (Legacy)",sidebar_label:"Legacy",sidebar_position:999},c=void 0,i={unversionedId:"build/smart-contracts/language/legacy/smart-contracts",id:"build/smart-contracts/language/legacy/smart-contracts",title:"Smart Contracts (Legacy)",description:"This specification is deprecated and will be still be valid for SC before 1.1.0. The new version is available here",source:"@site/docs/build/smart-contracts/language/legacy/README.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/",permalink:"/build/smart-contracts/language/legacy/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:999,frontMatter:{id:"smart-contracts",title:"Smart Contracts (Legacy)",sidebar_label:"Legacy",sidebar_position:999},sidebar:"docs",previous:{title:"Examples",permalink:"/build/smart-contracts/language/examples"},next:{title:"Examples",permalink:"/build/smart-contracts/language/legacy/examples"}},l={},s=[],p={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{title:"Disclaimer",type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"This specification is deprecated and will be still be valid for SC before ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/releases/tag/v1.1.0"},"1.1.0"),". The new version is available ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/language"},"here"))))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/2bc40b18.140cacbc.js b/assets/js/2bc40b18.6e88fc89.js similarity index 99% rename from assets/js/2bc40b18.140cacbc.js rename to assets/js/2bc40b18.6e88fc89.js index 7a9f6d31c..45356411a 100644 --- a/assets/js/2bc40b18.140cacbc.js +++ b/assets/js/2bc40b18.6e88fc89.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6631],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(n),u=o,f=p["".concat(c,".").concat(u)]||p[u]||h[u]||r;return n?a.createElement(f,i(i({ref:t},d),{},{components:n})):a.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"governance",title:"Governance"},i=void 0,l={unversionedId:"learn/governance/governance",id:"learn/governance/governance",title:"Governance",description:"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,",source:"@site/docs/learn/governance/governance.md",sourceDirName:"learn/governance",slug:"/learn/governance/",permalink:"/learn/governance/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"governance",title:"Governance"},sidebar:"docs",previous:{title:"Keychain",permalink:"/learn/decentralized-id/keychain"},next:{title:"OracleChain",permalink:"/learn/oracle-chain"}},c={},s=[{value:"Decentralized Identity & Proof of Identity",id:"decentralized-identity--proof-of-identity",level:2},{value:"Code \xabOn-Chain\xbb",id:"code-on-chain",level:2},{value:"Introduction",id:"introduction",level:3},{value:"Details",id:"details",level:3},{value:"Incentives",id:"incentives",level:2}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,\nimmutable, and transparently embedded in a blockchain."),(0,o.kt)("p",null,"It's one of the biggest challenge in the Blockchain's industry. Often relayed as \"code is law\", those governance model is\nonly applied to a single actor which the miner's owner."),(0,o.kt)("p",null,"While those model are decentralized, they are ignoring huge part of the ecosystem being the users themselves, the\napplication providers, the technical contributors, and even the Blockchain itself constrained by the code installed on the\nhighest computing power."),(0,o.kt)("p",null,"The governance of the Archethic Blockchain is based on several technical and functional fundamentals:"),(0,o.kt)("h2",{id:"decentralized-identity--proof-of-identity"},"Decentralized Identity & Proof of Identity"),(0,o.kt)("p",null,"An essential prerequisite for a human-inclusive governance:\nthe ability of the ecosystem to uniquely identify a person and\nto integrate that person into a relevant group of actors"),(0,o.kt)("h2",{id:"code-on-chain"},"Code \xabOn-Chain\xbb"),(0,o.kt)("h3",{id:"introduction"},"Introduction"),(0,o.kt)("p",null,'The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will\nimmediately apply the decided updates (via Elixir hot-reload modules and from the information stored in the "transaction content" area). '),(0,o.kt)("p",null,"The Archethic Blockchain is also equipped with the ability to test the impact of a new feature in real-time."),(0,o.kt)("p",null,"Each update is stored in the form of a specific transaction chain allowing the network to version (git...) all updates, but also to force each update according to a specific governance (voting quorum, veto right...)."),(0,o.kt)("h3",{id:"details"},"Details"),(0,o.kt)("p",null,"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain code in a automated and tested way. "),(0,o.kt)("p",null,"The idea behind the governance on Archethic blockchain is to be able to audit, test and apply code proposals in a automatic, indepedent and secure way across the deployed network."),(0,o.kt)("mermaid",{value:"flowchart LR\n Dev[Developer] --\x3e|Create proposal| CodeProposal(Transaction)\n CodeProposal --\x3e SemanticValidation(Semantic Validation)\n SemanticValidation --\x3e CI(Continuous Integration)\n CI --\x3e CD(Continuous Deployment)\n CD --\x3e Up(Upgrade)\n Up --\x3e Reward(Reward)\n Reward --\x3e Dev"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"The process begins when a contributor creates a code proposal within a transaction. This code proposal will be checked to ensure that it follows the proper form (contains the correct fields for example)."),(0,o.kt)("li",{parentName:"ol"},"After the code proposal is verified, we start going over the details of the proposal and verifying that it contains correct version, valid upgrade terms and valid changes for example."),(0,o.kt)("li",{parentName:"ol"},"When the code proposal is considered valid, and after gathering enough approvals from members of the technical council, we start the Continuous Integration phase.\nThe role of this part is to check that the proposal passes the tests, security checks and code style."),(0,o.kt)("li",{parentName:"ol"},"If the phase returns a success then we start the Continuous Deployment phase.\nThe aim of this part is to test the proposal in a real world settings by deploying it into a testnet with various nodes performing multiple distinct functions."),(0,o.kt)("li",{parentName:"ol"},"After the last phase succeeded, we launch the next phase which consists of upgrading the actual nodes to the new versions and finally rewarding all the actors that participated in the global process.")),(0,o.kt)("h2",{id:"incentives"},"Incentives"),(0,o.kt)("p",null,"Financing of the work associated with updates, new features, and contributions is an essential element.\nThe network has a reserve of one-third of the tokens (with progressive distribution constraints) for this purpose."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6631],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(n),u=o,f=p["".concat(c,".").concat(u)]||p[u]||h[u]||r;return n?a.createElement(f,i(i({ref:t},d),{},{components:n})):a.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:o,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=n(7462),o=(n(7294),n(3905));n(8209);const r={id:"governance",title:"Governance"},i=void 0,l={unversionedId:"learn/governance/governance",id:"learn/governance/governance",title:"Governance",description:"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,",source:"@site/docs/learn/governance/governance.md",sourceDirName:"learn/governance",slug:"/learn/governance/",permalink:"/learn/governance/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"governance",title:"Governance"},sidebar:"docs",previous:{title:"Keychain",permalink:"/learn/decentralized-id/keychain"},next:{title:"OracleChain",permalink:"/learn/oracle-chain"}},c={},s=[{value:"Decentralized Identity & Proof of Identity",id:"decentralized-identity--proof-of-identity",level:2},{value:"Code \xabOn-Chain\xbb",id:"code-on-chain",level:2},{value:"Introduction",id:"introduction",level:3},{value:"Details",id:"details",level:3},{value:"Incentives",id:"incentives",level:2}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,\nimmutable, and transparently embedded in a blockchain."),(0,o.kt)("p",null,"It's one of the biggest challenge in the Blockchain's industry. Often relayed as \"code is law\", those governance model is\nonly applied to a single actor which the miner's owner."),(0,o.kt)("p",null,"While those model are decentralized, they are ignoring huge part of the ecosystem being the users themselves, the\napplication providers, the technical contributors, and even the Blockchain itself constrained by the code installed on the\nhighest computing power."),(0,o.kt)("p",null,"The governance of the Archethic Blockchain is based on several technical and functional fundamentals:"),(0,o.kt)("h2",{id:"decentralized-identity--proof-of-identity"},"Decentralized Identity & Proof of Identity"),(0,o.kt)("p",null,"An essential prerequisite for a human-inclusive governance:\nthe ability of the ecosystem to uniquely identify a person and\nto integrate that person into a relevant group of actors"),(0,o.kt)("h2",{id:"code-on-chain"},"Code \xabOn-Chain\xbb"),(0,o.kt)("h3",{id:"introduction"},"Introduction"),(0,o.kt)("p",null,'The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will\nimmediately apply the decided updates (via Elixir hot-reload modules and from the information stored in the "transaction content" area). '),(0,o.kt)("p",null,"The Archethic Blockchain is also equipped with the ability to test the impact of a new feature in real-time."),(0,o.kt)("p",null,"Each update is stored in the form of a specific transaction chain allowing the network to version (git...) all updates, but also to force each update according to a specific governance (voting quorum, veto right...)."),(0,o.kt)("h3",{id:"details"},"Details"),(0,o.kt)("p",null,"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain code in a automated and tested way. "),(0,o.kt)("p",null,"The idea behind the governance on Archethic blockchain is to be able to audit, test and apply code proposals in a automatic, indepedent and secure way across the deployed network."),(0,o.kt)("mermaid",{value:"flowchart LR\n Dev[Developer] --\x3e|Create proposal| CodeProposal(Transaction)\n CodeProposal --\x3e SemanticValidation(Semantic Validation)\n SemanticValidation --\x3e CI(Continuous Integration)\n CI --\x3e CD(Continuous Deployment)\n CD --\x3e Up(Upgrade)\n Up --\x3e Reward(Reward)\n Reward --\x3e Dev"}),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"The process begins when a contributor creates a code proposal within a transaction. This code proposal will be checked to ensure that it follows the proper form (contains the correct fields for example)."),(0,o.kt)("li",{parentName:"ol"},"After the code proposal is verified, we start going over the details of the proposal and verifying that it contains correct version, valid upgrade terms and valid changes for example."),(0,o.kt)("li",{parentName:"ol"},"When the code proposal is considered valid, and after gathering enough approvals from members of the technical council, we start the Continuous Integration phase.\nThe role of this part is to check that the proposal passes the tests, security checks and code style."),(0,o.kt)("li",{parentName:"ol"},"If the phase returns a success then we start the Continuous Deployment phase.\nThe aim of this part is to test the proposal in a real world settings by deploying it into a testnet with various nodes performing multiple distinct functions."),(0,o.kt)("li",{parentName:"ol"},"After the last phase succeeded, we launch the next phase which consists of upgrading the actual nodes to the new versions and finally rewarding all the actors that participated in the global process.")),(0,o.kt)("h2",{id:"incentives"},"Incentives"),(0,o.kt)("p",null,"Financing of the work associated with updates, new features, and contributions is an essential element.\nThe network has a reserve of one-third of the tokens (with progressive distribution constraints) for this purpose."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/2c3d8110.36b29ddc.js b/assets/js/2c3d8110.f1597fe2.js similarity index 98% rename from assets/js/2c3d8110.36b29ddc.js rename to assets/js/2c3d8110.f1597fe2.js index 341f27d28..4cd5b3a11 100644 --- a/assets/js/2c3d8110.36b29ddc.js +++ b/assets/js/2c3d8110.f1597fe2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4732],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=r,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return n?a.createElement(h,o(o({ref:t},m),{},{components:n})):a.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"scheduler",title:"OracleChain Scheduler",sidebar_label:"Scheduler"},o=void 0,s={unversionedId:"build/core/oracle-chain/scheduler",id:"build/core/oracle-chain/scheduler",title:"OracleChain Scheduler",description:"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting.",source:"@site/docs/build/core/oracle-chain/scheduler.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/scheduler",permalink:"/build/core/oracle-chain/scheduler",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"scheduler",title:"OracleChain Scheduler",sidebar_label:"Scheduler"},sidebar:"docs",previous:{title:"Memory database",permalink:"/build/core/oracle-chain/memory-table"},next:{title:"Service",permalink:"/build/core/oracle-chain/service"}},l={},c=[],m={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting."),(0,r.kt)("p",null,"It's modeled as finite state machine."),(0,r.kt)("p",null,"Three main state are represented:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDLE"),": When the process is waiting a new tick to be triggered based on some interval"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Polling"),": When the process must fetch data from external sources"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Summary"),": When the process must aggregate the entire polling transactions for a given interval")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Mainnet and Testnet can have different values based on environment variables."),(0,r.kt)("p",{parentName:"admonition"},"This is due to simulate quicker events and summary."),(0,r.kt)("p",{parentName:"admonition"},"For example,"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"on Mainnet: each polling is triggered each minute and the summary each day at 00:00 UTC."),(0,r.kt)("li",{parentName:"ul"},"on Testnet: each polling is triggered each 10s and the summary each minute.\n:::")),(0,r.kt)("p",{parentName:"admonition"},"For each actionable state, the process determines if the current running node is in charge to fetch or emit the transaction, based on the election algorithm."),(0,r.kt)("p",{parentName:"admonition"},"Also to avoid any useless transactions, the process identifies if a new transaction must be emitted regarding the freshness of the information retrieved from the Oracle services."),(0,r.kt)("p",{parentName:"admonition"},"You can find below a schema representing this finite state machine and its related events.")),(0,r.kt)("mermaid",{value:'stateDiagram-v2\n [*] --\x3e Idle\n Idle --\x3e Idle: "tick\n\n state "Is summary time ?" as Is_Summary_Time\n\n state if_state <>\n Idle --\x3e Is_Summary_Time\n Is_Summary_Time --\x3e if_state\n if_state --\x3e Summary: "Yes"\n if_state --\x3e Polling: "No"\n\n\n state Polling {\n state if_state_polling <>\n state "Is polling trigger node ?" as IsPollingTriggerNode\n state "Fetching data" as FetchData\n state if_state_polling_new_data <>\n state "Is new data ?" as IsNewData\n state "Send oracle transaction" as SendOracleTransaction\n\n [*] --\x3e IsPollingTriggerNode\n IsPollingTriggerNode --\x3e if_state_polling\n if_state_polling --\x3e [*]: "No"\n if_state_polling --\x3e FetchData: "Yes"\n FetchData --\x3e IsNewData\n\n IsNewData --\x3e if_state_polling_new_data\n if_state_polling_new_data --\x3e [*]: "No"\n if_state_polling_new_data --\x3e SendOracleTransaction: "Yes"\n SendOracleTransaction --\x3e [*]\n }\n\n Polling --\x3e Idle\n\n\n state Summary {\n state if_state_summary <>\n state "Is summary trigger node ?" as IsSummaryTriggerNode\n state "Send summary transaction" as SendSummaryTransaction\n\n [*] --\x3e IsSummaryTriggerNode\n IsSummaryTriggerNode --\x3e if_state_summary\n if_state_summary --\x3e [*]: "No"\n if_state_summary --\x3e SendSummaryTransaction: "Yes"\n SendSummaryTransaction --\x3e [*]\n }\n\n Summary --\x3e Idle'}),(0,r.kt)("p",null,":::note"))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4732],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=r,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return n?a.createElement(h,o(o({ref:t},m),{},{components:n})):a.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"scheduler",title:"OracleChain Scheduler",sidebar_label:"Scheduler"},o=void 0,s={unversionedId:"build/core/oracle-chain/scheduler",id:"build/core/oracle-chain/scheduler",title:"OracleChain Scheduler",description:"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting.",source:"@site/docs/build/core/oracle-chain/scheduler.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/scheduler",permalink:"/build/core/oracle-chain/scheduler",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"scheduler",title:"OracleChain Scheduler",sidebar_label:"Scheduler"},sidebar:"docs",previous:{title:"Memory database",permalink:"/build/core/oracle-chain/memory-table"},next:{title:"Service",permalink:"/build/core/oracle-chain/service"}},l={},c=[],m={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting."),(0,r.kt)("p",null,"It's modeled as finite state machine."),(0,r.kt)("p",null,"Three main state are represented:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDLE"),": When the process is waiting a new tick to be triggered based on some interval"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Polling"),": When the process must fetch data from external sources"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Summary"),": When the process must aggregate the entire polling transactions for a given interval")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Mainnet and Testnet can have different values based on environment variables."),(0,r.kt)("p",{parentName:"admonition"},"This is due to simulate quicker events and summary."),(0,r.kt)("p",{parentName:"admonition"},"For example,"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"on Mainnet: each polling is triggered each minute and the summary each day at 00:00 UTC."),(0,r.kt)("li",{parentName:"ul"},"on Testnet: each polling is triggered each 10s and the summary each minute.\n:::")),(0,r.kt)("p",{parentName:"admonition"},"For each actionable state, the process determines if the current running node is in charge to fetch or emit the transaction, based on the election algorithm."),(0,r.kt)("p",{parentName:"admonition"},"Also to avoid any useless transactions, the process identifies if a new transaction must be emitted regarding the freshness of the information retrieved from the Oracle services."),(0,r.kt)("p",{parentName:"admonition"},"You can find below a schema representing this finite state machine and its related events.")),(0,r.kt)("mermaid",{value:'stateDiagram-v2\n [*] --\x3e Idle\n Idle --\x3e Idle: "tick\n\n state "Is summary time ?" as Is_Summary_Time\n\n state if_state <>\n Idle --\x3e Is_Summary_Time\n Is_Summary_Time --\x3e if_state\n if_state --\x3e Summary: "Yes"\n if_state --\x3e Polling: "No"\n\n\n state Polling {\n state if_state_polling <>\n state "Is polling trigger node ?" as IsPollingTriggerNode\n state "Fetching data" as FetchData\n state if_state_polling_new_data <>\n state "Is new data ?" as IsNewData\n state "Send oracle transaction" as SendOracleTransaction\n\n [*] --\x3e IsPollingTriggerNode\n IsPollingTriggerNode --\x3e if_state_polling\n if_state_polling --\x3e [*]: "No"\n if_state_polling --\x3e FetchData: "Yes"\n FetchData --\x3e IsNewData\n\n IsNewData --\x3e if_state_polling_new_data\n if_state_polling_new_data --\x3e [*]: "No"\n if_state_polling_new_data --\x3e SendOracleTransaction: "Yes"\n SendOracleTransaction --\x3e [*]\n }\n\n Polling --\x3e Idle\n\n\n state Summary {\n state if_state_summary <>\n state "Is summary trigger node ?" as IsSummaryTriggerNode\n state "Send summary transaction" as SendSummaryTransaction\n\n [*] --\x3e IsSummaryTriggerNode\n IsSummaryTriggerNode --\x3e if_state_summary\n if_state_summary --\x3e [*]: "No"\n if_state_summary --\x3e SendSummaryTransaction: "Yes"\n SendSummaryTransaction --\x3e [*]\n }\n\n Summary --\x3e Idle'}),(0,r.kt)("p",null,":::note"))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/2d63ea61.317c32d5.js b/assets/js/2d63ea61.d487f77f.js similarity index 97% rename from assets/js/2d63ea61.317c32d5.js rename to assets/js/2d63ea61.d487f77f.js index e9fe1c6ce..e1415c2c8 100644 --- a/assets/js/2d63ea61.317c32d5.js +++ b/assets/js/2d63ea61.d487f77f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2971],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),d=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=d(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=d(r),y=n,b=u["".concat(c,".").concat(y)]||u[y]||p[y]||o;return r?a.createElement(b,l(l({ref:t},s),{},{components:r})):a.createElement(b,l({ref:t},s))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=y;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var d=2;d{r.r(t),r.d(t,{Badge:()=>y,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var a=r(7462),n=r(7294),o=r(3905);r(8209);const l={id:"authorized-key",title:"AuthorizedKey",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/objects/authorized-key",id:"build/api/schema/objects/authorized-key",title:"AuthorizedKey",description:"[AuthorizedKey] represents a authorized public key with the encrypted secret key for this given key.",source:"@site/docs/build/api/schema/objects/authorized-key.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/authorized-key",permalink:"/build/api/schema/objects/authorized-key",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"authorized-key",title:"AuthorizedKey",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"SortOrder",permalink:"/build/api/schema/enums/sort-order"},next:{title:"Balance",permalink:"/build/api/schema/objects/balance"}},d={},s=[{value:"Fields",id:"fields",level:3},{value:'AuthorizedKey.encryptedSecretKeyHex ',id:"code-style-fontweight-normal-authorizedkeybencryptedsecretkeybcodehex-",level:4},{value:'AuthorizedKey.publicKeyPublicKey ',id:"code-style-fontweight-normal-authorizedkeybpublickeybcodepublickey-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),y=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:s,Bullet:u,SpecifiedBy:p,Badge:y},h="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(h,(0,a.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[AuthorizedKey]"," represents a authorized public key with the encrypted secret key for this given key.\nBy decrypting this secret key, the authorized public key will be able to decrypt its related secret"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type AuthorizedKey {\n encryptedSecretKey: Hex\n publicKey: PublicKey\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-authorizedkeybencryptedsecretkeybcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"AuthorizedKey.",(0,o.kt)("b",null,"encryptedSecretKey"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(y,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-authorizedkeybpublickeybcodepublickey-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"AuthorizedKey.",(0,o.kt)("b",null,"publicKey"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,o.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,o.kt)(y,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ownership"},(0,o.kt)("inlineCode",{parentName:"a"},"Ownership"))," ",(0,o.kt)(y,{class:"secondary",text:"object",mdxType:"Badge"})))}m.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2971],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),d=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=d(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=d(r),y=n,b=u["".concat(c,".").concat(y)]||u[y]||p[y]||o;return r?a.createElement(b,l(l({ref:t},s),{},{components:r})):a.createElement(b,l({ref:t},s))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=y;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:n,l[1]=i;for(var d=2;d{r.r(t),r.d(t,{Badge:()=>y,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var a=r(7462),n=r(7294),o=r(3905);r(8209);const l={id:"authorized-key",title:"AuthorizedKey",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/objects/authorized-key",id:"build/api/schema/objects/authorized-key",title:"AuthorizedKey",description:"[AuthorizedKey] represents a authorized public key with the encrypted secret key for this given key.",source:"@site/docs/build/api/schema/objects/authorized-key.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/authorized-key",permalink:"/build/api/schema/objects/authorized-key",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"authorized-key",title:"AuthorizedKey",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"SortOrder",permalink:"/build/api/schema/enums/sort-order"},next:{title:"Balance",permalink:"/build/api/schema/objects/balance"}},d={},s=[{value:"Fields",id:"fields",level:3},{value:'AuthorizedKey.encryptedSecretKeyHex ',id:"code-style-fontweight-normal-authorizedkeybencryptedsecretkeybcodehex-",level:4},{value:'AuthorizedKey.publicKeyPublicKey ',id:"code-style-fontweight-normal-authorizedkeybpublickeybcodepublickey-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),y=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:s,Bullet:u,SpecifiedBy:p,Badge:y},h="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(h,(0,a.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[AuthorizedKey]"," represents a authorized public key with the encrypted secret key for this given key.\nBy decrypting this secret key, the authorized public key will be able to decrypt its related secret"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type AuthorizedKey {\n encryptedSecretKey: Hex\n publicKey: PublicKey\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-authorizedkeybencryptedsecretkeybcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"AuthorizedKey.",(0,o.kt)("b",null,"encryptedSecretKey"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(y,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-authorizedkeybpublickeybcodepublickey-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"AuthorizedKey.",(0,o.kt)("b",null,"publicKey"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,o.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,o.kt)(y,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ownership"},(0,o.kt)("inlineCode",{parentName:"a"},"Ownership"))," ",(0,o.kt)(y,{class:"secondary",text:"object",mdxType:"Badge"})))}m.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/2f55ba46.b79d99cc.js b/assets/js/2f55ba46.a23b6c37.js similarity index 97% rename from assets/js/2f55ba46.b79d99cc.js rename to assets/js/2f55ba46.a23b6c37.js index 2b90bde4f..ebda2995f 100644 --- a/assets/js/2f55ba46.b79d99cc.js +++ b/assets/js/2f55ba46.a23b6c37.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6898],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),f=a,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"version",title:"version",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/queries/version",id:"build/api/schema/queries/version",title:"version",description:"List protocol, transaction and code versions",source:"@site/docs/build/api/schema/queries/version.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/version",permalink:"/build/api/schema/queries/version",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"version",title:"version",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactions",permalink:"/build/api/schema/queries/transactions"},next:{title:"Address",permalink:"/build/api/schema/scalars/address"}},l={},p=[{value:"Type",id:"type",level:3},{value:'Version ',id:"version-",level:4}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:u,SpecifiedBy:d,Badge:f},v="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(v,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List protocol, transaction and code versions"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"version: Version\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"version-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/version"},(0,o.kt)("inlineCode",{parentName:"a"},"Version"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Version]"," represents code, transaction and protocol version")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6898],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),f=a,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"version",title:"version",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/queries/version",id:"build/api/schema/queries/version",title:"version",description:"List protocol, transaction and code versions",source:"@site/docs/build/api/schema/queries/version.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/version",permalink:"/build/api/schema/queries/version",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"version",title:"version",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactions",permalink:"/build/api/schema/queries/transactions"},next:{title:"Address",permalink:"/build/api/schema/scalars/address"}},l={},p=[{value:"Type",id:"type",level:3},{value:'Version ',id:"version-",level:4}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:u,SpecifiedBy:d,Badge:f},v="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(v,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List protocol, transaction and code versions"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"version: Version\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"version-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/version"},(0,o.kt)("inlineCode",{parentName:"a"},"Version"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Version]"," represents code, transaction and protocol version")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/2fdf8aec.3d53e858.js b/assets/js/2fdf8aec.4467995e.js similarity index 98% rename from assets/js/2fdf8aec.3d53e858.js rename to assets/js/2fdf8aec.4467995e.js index 5219a3573..581e371ab 100644 --- a/assets/js/2fdf8aec.3d53e858.js +++ b/assets/js/2fdf8aec.4467995e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1328],{3905:(e,r,t)=>{t.d(r,{Zo:()=>p,kt:()=>f});var n=t(7294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=n.createContext({}),u=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(l.Provider,{value:r},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(t),m=a,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||o;return t?n.createElement(f,i(i({ref:r},p),{},{components:t})):n.createElement(f,i({ref:r},p))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=m;var c={};for(var l in r)hasOwnProperty.call(r,l)&&(c[l]=r[l]);c.originalType=e,c[s]="string"==typeof e?e:a,i[1]=c;for(var u=2;u{t.r(r),t.d(r,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var n=t(7462),a=(t(7294),t(3905));t(8209);const o={id:"oracle-chain",title:"OracleChain"},i=void 0,c={unversionedId:"build/core/oracle-chain/oracle-chain",id:"build/core/oracle-chain/oracle-chain",title:"OracleChain",description:"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.",source:"@site/docs/build/core/oracle-chain/README.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/",permalink:"/build/core/oracle-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-chain",title:"OracleChain"},sidebar:"docs",previous:{title:"Transaction context retrieval",permalink:"/build/core/mining/transaction-context"},next:{title:"Memory database",permalink:"/build/core/oracle-chain/memory-table"}},l={},u=[],p={toc:u},s="wrapper";function d(e){let{components:r,...t}=e;return(0,a.kt)(s,(0,n.Z)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain."),(0,a.kt)("p",null,"It's built around three main components:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"List of ",(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/service"},"services")," or provider"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/scheduler"},"Scheduler")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/memory-table"},"InMemory database"))))}d.isMDXComponent=!0},8209:(e,r,t)=>{t(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1328],{3905:(e,r,t)=>{t.d(r,{Zo:()=>p,kt:()=>f});var n=t(7294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=n.createContext({}),u=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(l.Provider,{value:r},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(t),m=a,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||o;return t?n.createElement(f,i(i({ref:r},p),{},{components:t})):n.createElement(f,i({ref:r},p))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=m;var c={};for(var l in r)hasOwnProperty.call(r,l)&&(c[l]=r[l]);c.originalType=e,c[s]="string"==typeof e?e:a,i[1]=c;for(var u=2;u{t.r(r),t.d(r,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var n=t(7462),a=(t(7294),t(3905));t(8209);const o={id:"oracle-chain",title:"OracleChain"},i=void 0,c={unversionedId:"build/core/oracle-chain/oracle-chain",id:"build/core/oracle-chain/oracle-chain",title:"OracleChain",description:"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.",source:"@site/docs/build/core/oracle-chain/README.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/",permalink:"/build/core/oracle-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-chain",title:"OracleChain"},sidebar:"docs",previous:{title:"Transaction context retrieval",permalink:"/build/core/mining/transaction-context"},next:{title:"Memory database",permalink:"/build/core/oracle-chain/memory-table"}},l={},u=[],p={toc:u},s="wrapper";function d(e){let{components:r,...t}=e;return(0,a.kt)(s,(0,n.Z)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain."),(0,a.kt)("p",null,"It's built around three main components:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"List of ",(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/service"},"services")," or provider"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/scheduler"},"Scheduler")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/build/core/oracle-chain/memory-table"},"InMemory database"))))}d.isMDXComponent=!0},8209:(e,r,t)=>{t(7294)}}]); \ No newline at end of file diff --git a/assets/js/300a963c.14633cff.js b/assets/js/300a963c.a468f04b.js similarity index 97% rename from assets/js/300a963c.14633cff.js rename to assets/js/300a963c.a468f04b.js index 58643984d..0dbd702a2 100644 --- a/assets/js/300a963c.14633cff.js +++ b/assets/js/300a963c.a468f04b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5254],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=i(r),f=a,m=u["".concat(s,".").concat(f)]||u[f]||p[f]||o;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:a,l[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const l={id:"uco-transfer",title:"UcoTransfer",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/objects/uco-transfer",id:"build/api/schema/objects/uco-transfer",title:"UcoTransfer",description:"[UCOTransfer] represents the an asset transfer",source:"@site/docs/build/api/schema/objects/uco-transfer.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-transfer",permalink:"/build/api/schema/objects/uco-transfer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"uco-transfer",title:"UcoTransfer",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoLedger",permalink:"/build/api/schema/objects/uco-ledger"},next:{title:"UnspentOutput",permalink:"/build/api/schema/objects/unspent-output"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoTransfer.amountInt ',id:"code-style-fontweight-normal-ucotransferbamountbcodeint-",level:4},{value:'UcoTransfer.toAddress ',id:"code-style-fontweight-normal-ucotransferbtobcodeaddress-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[UCOTransfer]"," represents the an asset transfer"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoTransfer {\n amount: Int\n to: Address\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucotransferbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoTransfer.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucotransferbtobcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoTransfer.",(0,o.kt)("b",null,"to"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoLedger"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5254],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=i(r),f=a,m=u["".concat(s,".").concat(f)]||u[f]||p[f]||o;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:a,l[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const l={id:"uco-transfer",title:"UcoTransfer",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/objects/uco-transfer",id:"build/api/schema/objects/uco-transfer",title:"UcoTransfer",description:"[UCOTransfer] represents the an asset transfer",source:"@site/docs/build/api/schema/objects/uco-transfer.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-transfer",permalink:"/build/api/schema/objects/uco-transfer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"uco-transfer",title:"UcoTransfer",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoLedger",permalink:"/build/api/schema/objects/uco-ledger"},next:{title:"UnspentOutput",permalink:"/build/api/schema/objects/unspent-output"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoTransfer.amountInt ',id:"code-style-fontweight-normal-ucotransferbamountbcodeint-",level:4},{value:'UcoTransfer.toAddress ',id:"code-style-fontweight-normal-ucotransferbtobcodeaddress-",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[UCOTransfer]"," represents the an asset transfer"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoTransfer {\n amount: Int\n to: Address\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucotransferbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoTransfer.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucotransferbtobcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoTransfer.",(0,o.kt)("b",null,"to"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoLedger"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/310207c7.b890e1f8.js b/assets/js/310207c7.ee94769d.js similarity index 96% rename from assets/js/310207c7.b890e1f8.js rename to assets/js/310207c7.ee94769d.js index 5a1c841fe..258f2f330 100644 --- a/assets/js/310207c7.b890e1f8.js +++ b/assets/js/310207c7.ee94769d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5986],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,c(c({ref:t},p),{},{components:r})):n.createElement(m,c({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=f;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,c[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"fees",title:"Smart Contracts - Fees",sidebar_label:"Fees",sidebar_position:4},c=void 0,i={unversionedId:"build/smart-contracts/fees",id:"build/smart-contracts/fees",title:"Smart Contracts - Fees",description:"",source:"@site/docs/build/smart-contracts/fees.md",sourceDirName:"build/smart-contracts",slug:"/build/smart-contracts/fees",permalink:"/build/smart-contracts/fees",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"fees",title:"Smart Contracts - Fees",sidebar_label:"Fees",sidebar_position:4},sidebar:"docs",previous:{title:"Mock form",permalink:"/build/smart-contracts/playground/mock-form"},next:{title:"Testnet",permalink:"/build/testnet"}},s={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"todo",type:"danger"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5986],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,c(c({ref:t},p),{},{components:r})):n.createElement(m,c({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=f;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,c[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"fees",title:"Smart Contracts - Fees",sidebar_label:"Fees",sidebar_position:4},c=void 0,i={unversionedId:"build/smart-contracts/fees",id:"build/smart-contracts/fees",title:"Smart Contracts - Fees",description:"",source:"@site/docs/build/smart-contracts/fees.md",sourceDirName:"build/smart-contracts",slug:"/build/smart-contracts/fees",permalink:"/build/smart-contracts/fees",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"fees",title:"Smart Contracts - Fees",sidebar_label:"Fees",sidebar_position:4},sidebar:"docs",previous:{title:"Mock form",permalink:"/build/smart-contracts/playground/mock-form"},next:{title:"Testnet",permalink:"/build/testnet"}},s={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"todo",type:"danger"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/3247e900.3f926fd2.js b/assets/js/3247e900.1dc12107.js similarity index 98% rename from assets/js/3247e900.3f926fd2.js rename to assets/js/3247e900.1dc12107.js index 69818fc1b..2b5ffedb4 100644 --- a/assets/js/3247e900.3f926fd2.js +++ b/assets/js/3247e900.1dc12107.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8992],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=a.createContext({}),i=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(c.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=i(n),u=o,b=m["".concat(c,".").concat(u)]||m[u]||p[u]||r;return n?a.createElement(b,l(l({ref:t},d),{},{components:n})):a.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[m]="string"==typeof e?e:o,l[1]=s;for(var i=2;i{n.r(t),n.d(t,{Badge:()=>u,Bullet:()=>m,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=n(7462),o=n(7294),r=n(3905);n(8209);const l={id:"transaction-movement",title:"TransactionMovement",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/transaction-movement",id:"build/api/schema/objects/transaction-movement",title:"TransactionMovement",description:"[TransactionMovement] represents ledger transaction movement",source:"@site/docs/build/api/schema/objects/transaction-movement.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-movement",permalink:"/build/api/schema/objects/transaction-movement",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-movement",title:"TransactionMovement",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionInput",permalink:"/build/api/schema/objects/transaction-input"},next:{title:"TransactionSummary",permalink:"/build/api/schema/objects/transaction-summary"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionMovement.amountInt ',id:"code-style-fontweight-normal-transactionmovementbamountbcodeint-",level:4},{value:'TransactionMovement.toAddress ',id:"code-style-fontweight-normal-transactionmovementbtobcodeaddress-",level:4},{value:'TransactionMovement.tokenAddressAddress ',id:"code-style-fontweight-normal-transactionmovementbtokenaddressbcodeaddress-",level:4},{value:'TransactionMovement.tokenIdInt ',id:"code-style-fontweight-normal-transactionmovementbtokenidbcodeint-",level:4},{value:'TransactionMovement.typeString ',id:"code-style-fontweight-normal-transactionmovementbtypebcodestring-",level:4},{value:"Member of",id:"member-of",level:3}],m=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:m,SpecifiedBy:p,Badge:u},k="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(k,(0,a.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[TransactionMovement]"," represents ledger transaction movement\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"TO: asset transfer recipient"),(0,r.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,r.kt)("li",{parentName:"ul"},"Type: UCO/token"),(0,r.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,r.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionMovement {\n amount: Int\n to: Address\n tokenAddress: Address\n tokenId: Int\n type: String\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbamountbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"amount"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtobcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"to"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtokenaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"tokenAddress"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtokenidbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"tokenId"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"type"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8992],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>b});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=a.createContext({}),i=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(c.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=i(n),u=o,b=m["".concat(c,".").concat(u)]||m[u]||p[u]||r;return n?a.createElement(b,l(l({ref:t},d),{},{components:n})):a.createElement(b,l({ref:t},d))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[m]="string"==typeof e?e:o,l[1]=s;for(var i=2;i{n.r(t),n.d(t,{Badge:()=>u,Bullet:()=>m,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=n(7462),o=n(7294),r=n(3905);n(8209);const l={id:"transaction-movement",title:"TransactionMovement",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/transaction-movement",id:"build/api/schema/objects/transaction-movement",title:"TransactionMovement",description:"[TransactionMovement] represents ledger transaction movement",source:"@site/docs/build/api/schema/objects/transaction-movement.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-movement",permalink:"/build/api/schema/objects/transaction-movement",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-movement",title:"TransactionMovement",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionInput",permalink:"/build/api/schema/objects/transaction-input"},next:{title:"TransactionSummary",permalink:"/build/api/schema/objects/transaction-summary"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionMovement.amountInt ',id:"code-style-fontweight-normal-transactionmovementbamountbcodeint-",level:4},{value:'TransactionMovement.toAddress ',id:"code-style-fontweight-normal-transactionmovementbtobcodeaddress-",level:4},{value:'TransactionMovement.tokenAddressAddress ',id:"code-style-fontweight-normal-transactionmovementbtokenaddressbcodeaddress-",level:4},{value:'TransactionMovement.tokenIdInt ',id:"code-style-fontweight-normal-transactionmovementbtokenidbcodeint-",level:4},{value:'TransactionMovement.typeString ',id:"code-style-fontweight-normal-transactionmovementbtypebcodestring-",level:4},{value:"Member of",id:"member-of",level:3}],m=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:m,SpecifiedBy:p,Badge:u},k="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(k,(0,a.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[TransactionMovement]"," represents ledger transaction movement\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"TO: asset transfer recipient"),(0,r.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,r.kt)("li",{parentName:"ul"},"Type: UCO/token"),(0,r.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,r.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionMovement {\n amount: Int\n to: Address\n tokenAddress: Address\n tokenId: Int\n type: String\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbamountbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"amount"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtobcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"to"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtokenaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"tokenAddress"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtokenidbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"tokenId"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionmovementbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"TransactionMovement.",(0,r.kt)("b",null,"type"))),(0,r.kt)(m,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/32bd85cf.568874b3.js b/assets/js/32bd85cf.b7f46bb8.js similarity index 98% rename from assets/js/32bd85cf.568874b3.js rename to assets/js/32bd85cf.b7f46bb8.js index 6cd87b153..7fd3dfedd 100644 --- a/assets/js/32bd85cf.568874b3.js +++ b/assets/js/32bd85cf.b7f46bb8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8227],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return a?r.createElement(f,l(l({ref:t},p),{},{components:a})):r.createElement(f,l({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),o=a(3905);a(8209);const l={id:"boolean",title:"Boolean",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/scalars/boolean",id:"build/api/schema/scalars/boolean",title:"Boolean",description:"The Boolean scalar type represents true or false.",source:"@site/docs/build/api/schema/scalars/boolean.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/boolean",permalink:"/build/api/schema/scalars/boolean",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"boolean",title:"Boolean",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Address",permalink:"/build/api/schema/scalars/address"},next:{title:"Content",permalink:"/build/api/schema/scalars/content"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Boolean")," scalar type represents ",(0,o.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"false"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Boolean\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/directives/include"},(0,o.kt)("inlineCode",{parentName:"a"},"include"))," ",(0,o.kt)(m,{class:"secondary",text:"directive",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/directives/skip"},(0,o.kt)("inlineCode",{parentName:"a"},"skip"))," ",(0,o.kt)(m,{class:"secondary",text:"directive",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8227],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return a?r.createElement(f,l(l({ref:t},p),{},{components:a})):r.createElement(f,l({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),o=a(3905);a(8209);const l={id:"boolean",title:"Boolean",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/scalars/boolean",id:"build/api/schema/scalars/boolean",title:"Boolean",description:"The Boolean scalar type represents true or false.",source:"@site/docs/build/api/schema/scalars/boolean.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/boolean",permalink:"/build/api/schema/scalars/boolean",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"boolean",title:"Boolean",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Address",permalink:"/build/api/schema/scalars/address"},next:{title:"Content",permalink:"/build/api/schema/scalars/content"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Boolean")," scalar type represents ",(0,o.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"false"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Boolean\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/directives/include"},(0,o.kt)("inlineCode",{parentName:"a"},"include"))," ",(0,o.kt)(m,{class:"secondary",text:"directive",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/directives/skip"},(0,o.kt)("inlineCode",{parentName:"a"},"skip"))," ",(0,o.kt)(m,{class:"secondary",text:"directive",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/36739131.4babf849.js b/assets/js/36739131.0630d706.js similarity index 99% rename from assets/js/36739131.4babf849.js rename to assets/js/36739131.0630d706.js index b7bfe8eb7..c3fcb4e7e 100644 --- a/assets/js/36739131.4babf849.js +++ b/assets/js/36739131.0630d706.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5888],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=i.createContext({}),l=function(e){var t=i.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=l(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),h=l(a),p=n,m=h["".concat(s,".").concat(p)]||h[p]||u[p]||o;return a?i.createElement(m,r(r({ref:t},d),{},{components:a})):i.createElement(m,r({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[h]="string"==typeof e?e:n,r[1]=c;for(var l=2;l{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var i=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"patents",title:"Patents",sidebar_position:3},r=void 0,c={unversionedId:"learn/patents",id:"learn/patents",title:"Patents",description:"12 patents to build a new ecosystem",source:"@site/docs/learn/patents.md",sourceDirName:"learn",slug:"/learn/patents",permalink:"/learn/patents",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"patents",title:"Patents",sidebar_position:3},sidebar:"docs",previous:{title:"Ecosystem",permalink:"/learn/ecosystem"},next:{title:"Transaction chains",permalink:"/learn/transaction-chain"}},s={},l=[{value:"12 patents to build a new ecosystem",id:"12-patents-to-build-a-new-ecosystem",level:2},{value:"Archethic, a Humanitarian and Community Project",id:"archethic-a-humanitarian-and-community-project",level:2},{value:"List of patents",id:"list-of-patents",level:2},{value:"Blockchain",id:"blockchain",level:3},{value:"Method of transaction validation relating to Transactions Chains through a decentralized network.",id:"method-of-transaction-validation-relating-to-transactions-chains-through-a-decentralized-network",level:4},{value:"Process management of smart-contracts through transactions chains",id:"process-management-of-smart-contracts-through-transactions-chains",level:4},{value:"Atomic validation of transaction chains through a decentralized network",id:"atomic-validation-of-transaction-chains-through-a-decentralized-network",level:4},{value:"Method associated with the Digital identity management of an individual, a connected object, an organization, a service through a decentralized network",id:"method-associated-with-the-digital-identity-management-of-an-individual-a-connected-object-an-organization-a-service-through-a-decentralized-network",level:4},{value:"Method of securing transactions through knowledge and through cross-capabilities across a decentralized network",id:"method-of-securing-transactions-through-knowledge-and-through-cross-capabilities-across-a-decentralized-network",level:4},{value:"Biometrics",id:"biometrics",level:3},{value:"Method of Biometric Authentication without disclosure through a decentralized network",id:"method-of-biometric-authentication-without-disclosure-through-a-decentralized-network",level:4},{value:"Biometric adaptive authentication device using ultrasound, photographs in visible light of contrast and infrared, without disclosure through a decentralized network",id:"biometric-adaptive-authentication-device-using-ultrasound-photographs-in-visible-light-of-contrast-and-infrared-without-disclosure-through-a-decentralized-network",level:4},{value:"Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements.",id:"device-for-the-reproducible-positioning-of-at-least-one-finger-of-an-individual-while-taking-the-biometric-measurements",level:4},{value:"Device for Biometric ultrasonic testing and vital signs verification.",id:"device-for-biometric-ultrasonic-testing-and-vital-signs-verification",level:4},{value:"Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis.",id:"device-for-biometric-authentication-and-reliability-of-measurements-by-visible-and-infrared-light-photography-spectrometry-and-differential-analysis",level:4},{value:"Hardware",id:"hardware",level:3},{value:"Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network.",id:"communication-device-for-communicating-with-other-devices-and-enabling-nearby-transactions-and-creating-a-mesh-network",level:4},{value:"Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system.",id:"mechanical-and-electrical-coupling-device-to-connect-to-a-computer-periphery-without-damaging-the-host-system",level:4}],d={toc:l},h="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,i.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"12-patents-to-build-a-new-ecosystem"},"12 patents to build a new ecosystem"),(0,n.kt)("p",null,"Archethic is based on more than 4 years of research and 12 international patents.\n5 patents aim at removing all logins, passwords and identification cards that pollute and weaken our environment by replacing them with a universal biometric identification, unfalsifiable and guaranteeing the privacy of users."),(0,n.kt)("p",null,"5 other patents, concern the implementation of a real decentralized network, governed by mathematics, resilient to cyber-attacks and allowing to reduce the consumption of the current Internet."),(0,n.kt)("p",null,"Finally, two patents aim to allow current applications to migrate or interface effortlessly to this new network. Each application will no longer need to master all the technologies to launch its service (identity management, inventory management, payments, interface with external suppliers, etc.) but will be able to rely on a universal exchange platform capable, through smart-contracts, of instantly matching all offers to each request. "),(0,n.kt)("h2",{id:"archethic-a-humanitarian-and-community-project"},"Archethic, a Humanitarian and Community Project"),(0,n.kt)("p",null,"Once the risk of a fork is removed, all the patents will be transferred to the heritage of the open source technologies, this heritage should likely be transferred to the OIN (Open Invention Network) or equivalent. The entire source code will be AGPL licensed."),(0,n.kt)("h2",{id:"list-of-patents"},"List of patents"),(0,n.kt)("h3",{id:"blockchain"},"Blockchain"),(0,n.kt)("h4",{id:"method-of-transaction-validation-relating-to-transactions-chains-through-a-decentralized-network"},"Method of transaction validation relating to Transactions Chains through a decentralized network."),(0,n.kt)("p",null,"Transaction validation relating to one or more transactions chains in a unitary and asynchronous way by the elimination of all the limitations of Blockchain technology. The process allows enhanced security and confidentiality, in particular by integrating the constraints in terms of geolocation and number of the messages validation.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/7a/b1/b1/191f1d76b07922/FR3049089B1.pdf"},"FR3049089 (A1); US2019044735; WO2017162931")),(0,n.kt)("h4",{id:"process-management-of-smart-contracts-through-transactions-chains"},"Process management of smart-contracts through transactions chains"),(0,n.kt)("p",null,"Digital identities - exchange of value - delegations management, authorizations and revocations - electronic votes management - delivery of goods/supply chain - organizations - health data management - reputation management and certification.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/a6/d6/f3/5210d526791d88/FR3049101A1.pdf"},"FR3049101 (A1)")),(0,n.kt)("h4",{id:"atomic-validation-of-transaction-chains-through-a-decentralized-network"},"Atomic validation of transaction chains through a decentralized network"),(0,n.kt)("p",null,"Consensus ARCH (Atomic Rotating Commitment Heuristic Election), optimized and geo-secure replication process - self-repair network and data - Prediction Module and Supervised Multicast Network Layer (P2P Protocol).",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/cf/e1/14/f4943679e7ecb9/FR3098972A1.pdf"},"FR3098972 (A1)")),(0,n.kt)("h4",{id:"method-associated-with-the-digital-identity-management-of-an-individual-a-connected-object-an-organization-a-service-through-a-decentralized-network"},"Method associated with the Digital identity management of an individual, a connected object, an organization, a service through a decentralized network"),(0,n.kt)("p",null,"Identification-authentication-registration of unique or multiple digital identities for an individual or an object on an external device - exchange of values without disclosure - condition management - management of members, owners, multi-signatures, reputation, certification and recertification of a digital identity - management of mutable external identifiers through digital identity.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/3f/64/99/5d6d7f66e5c6a9/FR3049088A1.pdf"},"FR3049088 (A1)")),(0,n.kt)("h4",{id:"method-of-securing-transactions-through-knowledge-and-through-cross-capabilities-across-a-decentralized-network"},"Method of securing transactions through knowledge and through cross-capabilities across a decentralized network"),(0,n.kt)("p",null,"Cryptographic process to cross-reference the knowledge and capabilities of the devices so as to prohibit any unauthorized operation, renew and permanently forfeit all cryptographic keys of all devices, remove correlation elements of time, value, and actors involved (privacy wheel), initialize cryptographic keys for a decentralized network without using an external device to the system, minimize the exposure of public keys related to private keys of the device, to reset a device and revoke a user.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/86/18/ee/c63fde292d1186/FR3049087A1.pdf"},"FR3049087 (A1)")),(0,n.kt)("h3",{id:"biometrics"},"Biometrics"),(0,n.kt)("h4",{id:"method-of-biometric-authentication-without-disclosure-through-a-decentralized-network"},"Method of Biometric Authentication without disclosure through a decentralized network"),(0,n.kt)("p",null,"A method of not having to reveal all or part of the biometric measurements of an individual - integrating the compensations of the biometric measurements and lifelong morphological adaptability of an individual - never having to store any biometric data or any biometric measurement or a cryptographic key relating to an individual - making it possible to record several fingers of the same individual without disclosure and allowing operations without a network and without an individual having never used any device before.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/ca/b7/36/99a19c0295592c/FR3049086A1.pdf"},"FR3049086 (A1)")),(0,n.kt)("h4",{id:"biometric-adaptive-authentication-device-using-ultrasound-photographs-in-visible-light-of-contrast-and-infrared-without-disclosure-through-a-decentralized-network"},"Biometric adaptive authentication device using ultrasound, photographs in visible light of contrast and infrared, without disclosure through a decentralized network"),(0,n.kt)("p",null,"A Biometric authentication device without any disclosure obtained from ultrasounds and photograph of the venous network of the finger, of the lateral fingerprint of the finger and configured to take a photograph of the infrared intrinsic emission of the finger, to check the heart rate and perform an analysis, Multireferential spectrometry of the finger.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/95/a6/f7/7ada4308bbc1cb/FR3049090A1.pdf"},"FR3049090 (A1); CN108780501; CN109074478; US2019089539; WO2017162930")),(0,n.kt)("h4",{id:"device-for-the-reproducible-positioning-of-at-least-one-finger-of-an-individual-while-taking-the-biometric-measurements"},"Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/f9/37/a9/d1afa7dacdfc54/FR3049093A1.pdf"},"FR3049093 (A1)")),(0,n.kt)("h4",{id:"device-for-biometric-ultrasonic-testing-and-vital-signs-verification"},"Device for Biometric ultrasonic testing and vital signs verification."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/15/01/34/51b6fe0fa7d90e/FR3049091A1.pdf"},"FR3049091 (A1)")),(0,n.kt)("h4",{id:"device-for-biometric-authentication-and-reliability-of-measurements-by-visible-and-infrared-light-photography-spectrometry-and-differential-analysis"},"Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/26/f8/c9/9174c1c37723bf/FR3049092A1.pdf"},"FR3049092 (A1)")),(0,n.kt)("h3",{id:"hardware"},"Hardware"),(0,n.kt)("h4",{id:"communication-device-for-communicating-with-other-devices-and-enabling-nearby-transactions-and-creating-a-mesh-network"},"Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/95/c5/fd/7ecba7b274353a/FR3049085A1.pdf"},"FR3049085 (A1)")),(0,n.kt)("h4",{id:"mechanical-and-electrical-coupling-device-to-connect-to-a-computer-periphery-without-damaging-the-host-system"},"Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/19/62/34/66e7c6051da9c8/FR3049121A1.pdf"},"FR3049121 (A1)")))}u.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5888],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=i.createContext({}),l=function(e){var t=i.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=l(e.components);return i.createElement(s.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),h=l(a),p=n,m=h["".concat(s,".").concat(p)]||h[p]||u[p]||o;return a?i.createElement(m,r(r({ref:t},d),{},{components:a})):i.createElement(m,r({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,r=new Array(o);r[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[h]="string"==typeof e?e:n,r[1]=c;for(var l=2;l{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var i=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"patents",title:"Patents",sidebar_position:3},r=void 0,c={unversionedId:"learn/patents",id:"learn/patents",title:"Patents",description:"12 patents to build a new ecosystem",source:"@site/docs/learn/patents.md",sourceDirName:"learn",slug:"/learn/patents",permalink:"/learn/patents",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"patents",title:"Patents",sidebar_position:3},sidebar:"docs",previous:{title:"Ecosystem",permalink:"/learn/ecosystem"},next:{title:"Transaction chains",permalink:"/learn/transaction-chain"}},s={},l=[{value:"12 patents to build a new ecosystem",id:"12-patents-to-build-a-new-ecosystem",level:2},{value:"Archethic, a Humanitarian and Community Project",id:"archethic-a-humanitarian-and-community-project",level:2},{value:"List of patents",id:"list-of-patents",level:2},{value:"Blockchain",id:"blockchain",level:3},{value:"Method of transaction validation relating to Transactions Chains through a decentralized network.",id:"method-of-transaction-validation-relating-to-transactions-chains-through-a-decentralized-network",level:4},{value:"Process management of smart-contracts through transactions chains",id:"process-management-of-smart-contracts-through-transactions-chains",level:4},{value:"Atomic validation of transaction chains through a decentralized network",id:"atomic-validation-of-transaction-chains-through-a-decentralized-network",level:4},{value:"Method associated with the Digital identity management of an individual, a connected object, an organization, a service through a decentralized network",id:"method-associated-with-the-digital-identity-management-of-an-individual-a-connected-object-an-organization-a-service-through-a-decentralized-network",level:4},{value:"Method of securing transactions through knowledge and through cross-capabilities across a decentralized network",id:"method-of-securing-transactions-through-knowledge-and-through-cross-capabilities-across-a-decentralized-network",level:4},{value:"Biometrics",id:"biometrics",level:3},{value:"Method of Biometric Authentication without disclosure through a decentralized network",id:"method-of-biometric-authentication-without-disclosure-through-a-decentralized-network",level:4},{value:"Biometric adaptive authentication device using ultrasound, photographs in visible light of contrast and infrared, without disclosure through a decentralized network",id:"biometric-adaptive-authentication-device-using-ultrasound-photographs-in-visible-light-of-contrast-and-infrared-without-disclosure-through-a-decentralized-network",level:4},{value:"Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements.",id:"device-for-the-reproducible-positioning-of-at-least-one-finger-of-an-individual-while-taking-the-biometric-measurements",level:4},{value:"Device for Biometric ultrasonic testing and vital signs verification.",id:"device-for-biometric-ultrasonic-testing-and-vital-signs-verification",level:4},{value:"Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis.",id:"device-for-biometric-authentication-and-reliability-of-measurements-by-visible-and-infrared-light-photography-spectrometry-and-differential-analysis",level:4},{value:"Hardware",id:"hardware",level:3},{value:"Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network.",id:"communication-device-for-communicating-with-other-devices-and-enabling-nearby-transactions-and-creating-a-mesh-network",level:4},{value:"Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system.",id:"mechanical-and-electrical-coupling-device-to-connect-to-a-computer-periphery-without-damaging-the-host-system",level:4}],d={toc:l},h="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,i.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"12-patents-to-build-a-new-ecosystem"},"12 patents to build a new ecosystem"),(0,n.kt)("p",null,"Archethic is based on more than 4 years of research and 12 international patents.\n5 patents aim at removing all logins, passwords and identification cards that pollute and weaken our environment by replacing them with a universal biometric identification, unfalsifiable and guaranteeing the privacy of users."),(0,n.kt)("p",null,"5 other patents, concern the implementation of a real decentralized network, governed by mathematics, resilient to cyber-attacks and allowing to reduce the consumption of the current Internet."),(0,n.kt)("p",null,"Finally, two patents aim to allow current applications to migrate or interface effortlessly to this new network. Each application will no longer need to master all the technologies to launch its service (identity management, inventory management, payments, interface with external suppliers, etc.) but will be able to rely on a universal exchange platform capable, through smart-contracts, of instantly matching all offers to each request. "),(0,n.kt)("h2",{id:"archethic-a-humanitarian-and-community-project"},"Archethic, a Humanitarian and Community Project"),(0,n.kt)("p",null,"Once the risk of a fork is removed, all the patents will be transferred to the heritage of the open source technologies, this heritage should likely be transferred to the OIN (Open Invention Network) or equivalent. The entire source code will be AGPL licensed."),(0,n.kt)("h2",{id:"list-of-patents"},"List of patents"),(0,n.kt)("h3",{id:"blockchain"},"Blockchain"),(0,n.kt)("h4",{id:"method-of-transaction-validation-relating-to-transactions-chains-through-a-decentralized-network"},"Method of transaction validation relating to Transactions Chains through a decentralized network."),(0,n.kt)("p",null,"Transaction validation relating to one or more transactions chains in a unitary and asynchronous way by the elimination of all the limitations of Blockchain technology. The process allows enhanced security and confidentiality, in particular by integrating the constraints in terms of geolocation and number of the messages validation.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/7a/b1/b1/191f1d76b07922/FR3049089B1.pdf"},"FR3049089 (A1); US2019044735; WO2017162931")),(0,n.kt)("h4",{id:"process-management-of-smart-contracts-through-transactions-chains"},"Process management of smart-contracts through transactions chains"),(0,n.kt)("p",null,"Digital identities - exchange of value - delegations management, authorizations and revocations - electronic votes management - delivery of goods/supply chain - organizations - health data management - reputation management and certification.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/a6/d6/f3/5210d526791d88/FR3049101A1.pdf"},"FR3049101 (A1)")),(0,n.kt)("h4",{id:"atomic-validation-of-transaction-chains-through-a-decentralized-network"},"Atomic validation of transaction chains through a decentralized network"),(0,n.kt)("p",null,"Consensus ARCH (Atomic Rotating Commitment Heuristic Election), optimized and geo-secure replication process - self-repair network and data - Prediction Module and Supervised Multicast Network Layer (P2P Protocol).",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/cf/e1/14/f4943679e7ecb9/FR3098972A1.pdf"},"FR3098972 (A1)")),(0,n.kt)("h4",{id:"method-associated-with-the-digital-identity-management-of-an-individual-a-connected-object-an-organization-a-service-through-a-decentralized-network"},"Method associated with the Digital identity management of an individual, a connected object, an organization, a service through a decentralized network"),(0,n.kt)("p",null,"Identification-authentication-registration of unique or multiple digital identities for an individual or an object on an external device - exchange of values without disclosure - condition management - management of members, owners, multi-signatures, reputation, certification and recertification of a digital identity - management of mutable external identifiers through digital identity.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/3f/64/99/5d6d7f66e5c6a9/FR3049088A1.pdf"},"FR3049088 (A1)")),(0,n.kt)("h4",{id:"method-of-securing-transactions-through-knowledge-and-through-cross-capabilities-across-a-decentralized-network"},"Method of securing transactions through knowledge and through cross-capabilities across a decentralized network"),(0,n.kt)("p",null,"Cryptographic process to cross-reference the knowledge and capabilities of the devices so as to prohibit any unauthorized operation, renew and permanently forfeit all cryptographic keys of all devices, remove correlation elements of time, value, and actors involved (privacy wheel), initialize cryptographic keys for a decentralized network without using an external device to the system, minimize the exposure of public keys related to private keys of the device, to reset a device and revoke a user.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/86/18/ee/c63fde292d1186/FR3049087A1.pdf"},"FR3049087 (A1)")),(0,n.kt)("h3",{id:"biometrics"},"Biometrics"),(0,n.kt)("h4",{id:"method-of-biometric-authentication-without-disclosure-through-a-decentralized-network"},"Method of Biometric Authentication without disclosure through a decentralized network"),(0,n.kt)("p",null,"A method of not having to reveal all or part of the biometric measurements of an individual - integrating the compensations of the biometric measurements and lifelong morphological adaptability of an individual - never having to store any biometric data or any biometric measurement or a cryptographic key relating to an individual - making it possible to record several fingers of the same individual without disclosure and allowing operations without a network and without an individual having never used any device before.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/ca/b7/36/99a19c0295592c/FR3049086A1.pdf"},"FR3049086 (A1)")),(0,n.kt)("h4",{id:"biometric-adaptive-authentication-device-using-ultrasound-photographs-in-visible-light-of-contrast-and-infrared-without-disclosure-through-a-decentralized-network"},"Biometric adaptive authentication device using ultrasound, photographs in visible light of contrast and infrared, without disclosure through a decentralized network"),(0,n.kt)("p",null,"A Biometric authentication device without any disclosure obtained from ultrasounds and photograph of the venous network of the finger, of the lateral fingerprint of the finger and configured to take a photograph of the infrared intrinsic emission of the finger, to check the heart rate and perform an analysis, Multireferential spectrometry of the finger.",(0,n.kt)("br",null),"\nRef: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/95/a6/f7/7ada4308bbc1cb/FR3049090A1.pdf"},"FR3049090 (A1); CN108780501; CN109074478; US2019089539; WO2017162930")),(0,n.kt)("h4",{id:"device-for-the-reproducible-positioning-of-at-least-one-finger-of-an-individual-while-taking-the-biometric-measurements"},"Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/f9/37/a9/d1afa7dacdfc54/FR3049093A1.pdf"},"FR3049093 (A1)")),(0,n.kt)("h4",{id:"device-for-biometric-ultrasonic-testing-and-vital-signs-verification"},"Device for Biometric ultrasonic testing and vital signs verification."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/15/01/34/51b6fe0fa7d90e/FR3049091A1.pdf"},"FR3049091 (A1)")),(0,n.kt)("h4",{id:"device-for-biometric-authentication-and-reliability-of-measurements-by-visible-and-infrared-light-photography-spectrometry-and-differential-analysis"},"Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/26/f8/c9/9174c1c37723bf/FR3049092A1.pdf"},"FR3049092 (A1)")),(0,n.kt)("h3",{id:"hardware"},"Hardware"),(0,n.kt)("h4",{id:"communication-device-for-communicating-with-other-devices-and-enabling-nearby-transactions-and-creating-a-mesh-network"},"Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/95/c5/fd/7ecba7b274353a/FR3049085A1.pdf"},"FR3049085 (A1)")),(0,n.kt)("h4",{id:"mechanical-and-electrical-coupling-device-to-connect-to-a-computer-periphery-without-damaging-the-host-system"},"Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system."),(0,n.kt)("p",null,"Ref: ",(0,n.kt)("a",{parentName:"p",href:"https://patentimages.storage.googleapis.com/19/62/34/66e7c6051da9c8/FR3049121A1.pdf"},"FR3049121 (A1)")))}u.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/378b5e98.6a40ee45.js b/assets/js/378b5e98.d998a6a5.js similarity index 99% rename from assets/js/378b5e98.6a40ee45.js rename to assets/js/378b5e98.d998a6a5.js index 460ee9e8b..0addb4894 100644 --- a/assets/js/378b5e98.6a40ee45.js +++ b/assets/js/378b5e98.d998a6a5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7482],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var i=n.createContext({}),c=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(a),u=o,b=p["".concat(i,".").concat(u)]||p[u]||m[u]||r;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,l=new Array(r);l[0]=u;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>c,contentTitle:()=>s,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var n=a(7462),o=a(7294),r=a(3905);a(8209);const l={id:"transaction",title:"Transaction",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/transaction",id:"build/api/schema/objects/transaction",title:"Transaction",description:"[Transaction] represents a unitary transaction in the Archethic network.",source:"@site/docs/build/api/schema/objects/transaction.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction",permalink:"/build/api/schema/objects/transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction",title:"Transaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionSummary",permalink:"/build/api/schema/objects/transaction-summary"},next:{title:"UcoData",permalink:"/build/api/schema/objects/uco-data"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Transaction.addressAddress ',id:"code-style-fontweight-normal-transactionbaddressbcodeaddress-",level:4},{value:'Transaction.balanceBalance ',id:"code-style-fontweight-normal-transactionbbalancebcodebalance-",level:4},{value:'Transaction.chainLengthInt ',id:"code-style-fontweight-normal-transactionbchainlengthbcodeint-",level:4},{value:'Transaction.crossValidationStamps[CrossValidationStamp] ',id:"code-style-fontweight-normal-transactionbcrossvalidationstampsbcodecrossvalidationstamp--",level:4},{value:'Transaction.dataData ',id:"code-style-fontweight-normal-transactionbdatabcodedata-",level:4},{value:'Transaction.inputs[TransactionInput] ',id:"code-style-fontweight-normal-transactionbinputsbcodetransactioninput--",level:4},{value:'Transaction.inputs.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-",level:5},{value:'Transaction.originSignatureHex ',id:"code-style-fontweight-normal-transactionboriginsignaturebcodehex-",level:4},{value:'Transaction.previousAddressAddress ',id:"code-style-fontweight-normal-transactionbpreviousaddressbcodeaddress-",level:4},{value:'Transaction.previousPublicKeyPublicKey ',id:"code-style-fontweight-normal-transactionbpreviouspublickeybcodepublickey-",level:4},{value:'Transaction.previousSignatureHex ',id:"code-style-fontweight-normal-transactionbprevioussignaturebcodehex-",level:4},{value:'Transaction.typeString ',id:"code-style-fontweight-normal-transactionbtypebcodestring-",level:4},{value:'Transaction.validationStampValidationStamp ',id:"code-style-fontweight-normal-transactionbvalidationstampbcodevalidationstamp-",level:4},{value:'Transaction.versionInt ',id:"code-style-fontweight-normal-transactionbversionbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},h="wrapper";function y(e){let{components:t,...a}=e;return(0,r.kt)(h,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[Transaction]"," represents a unitary transaction in the Archethic network."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type Transaction {\n address: Address\n balance: Balance\n chainLength: Int\n crossValidationStamps: [CrossValidationStamp]\n data: Data\n inputs(\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionInput]\n originSignature: Hex\n previousAddress: Address\n previousPublicKey: PublicKey\n previousSignature: Hex\n type: String\n validationStamp: ValidationStamp\n version: Int\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"address"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbbalancebcodebalance-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"balance"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/balance"},(0,r.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbchainlengthbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"chainLength"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbcrossvalidationstampsbcodecrossvalidationstamp--"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"crossValidationStamps"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/cross-validation-stamp"},(0,r.kt)("inlineCode",{parentName:"a"},"[CrossValidationStamp]"))," ",(0,r.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbdatabcodedata-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"data"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/data"},(0,r.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbinputsbcodetransactioninput--"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"inputs"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-input"},(0,r.kt)("inlineCode",{parentName:"a"},"[TransactionInput]"))," ",(0,r.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null,(0,r.kt)("h5",{parentName:"blockquote",id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-"},(0,r.kt)("a",{parentName:"h5",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.inputs.",(0,r.kt)("b",null,"limit"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/pos-integer"},(0,r.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"}))),(0,r.kt)("h5",{id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-"},(0,r.kt)("a",{parentName:"h5",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.inputs.",(0,r.kt)("b",null,"pagingOffset"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/non-neg-integer"},(0,r.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionboriginsignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"originSignature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbpreviousaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousAddress"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbpreviouspublickeybcodepublickey-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousPublicKey"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,r.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbprevioussignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousSignature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"type"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbvalidationstampbcodevalidationstamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"validationStamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/validation-stamp"},(0,r.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"version"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"returned-by"},"Returned by"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/last-transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"lastTransaction"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,r.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"transaction"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,r.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transactions"},(0,r.kt)("inlineCode",{parentName:"a"},"transactions"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7482],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var i=n.createContext({}),c=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(a),u=o,b=p["".concat(i,".").concat(u)]||p[u]||m[u]||r;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,l=new Array(r);l[0]=u;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>c,contentTitle:()=>s,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var n=a(7462),o=a(7294),r=a(3905);a(8209);const l={id:"transaction",title:"Transaction",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/transaction",id:"build/api/schema/objects/transaction",title:"Transaction",description:"[Transaction] represents a unitary transaction in the Archethic network.",source:"@site/docs/build/api/schema/objects/transaction.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction",permalink:"/build/api/schema/objects/transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction",title:"Transaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionSummary",permalink:"/build/api/schema/objects/transaction-summary"},next:{title:"UcoData",permalink:"/build/api/schema/objects/uco-data"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Transaction.addressAddress ',id:"code-style-fontweight-normal-transactionbaddressbcodeaddress-",level:4},{value:'Transaction.balanceBalance ',id:"code-style-fontweight-normal-transactionbbalancebcodebalance-",level:4},{value:'Transaction.chainLengthInt ',id:"code-style-fontweight-normal-transactionbchainlengthbcodeint-",level:4},{value:'Transaction.crossValidationStamps[CrossValidationStamp] ',id:"code-style-fontweight-normal-transactionbcrossvalidationstampsbcodecrossvalidationstamp--",level:4},{value:'Transaction.dataData ',id:"code-style-fontweight-normal-transactionbdatabcodedata-",level:4},{value:'Transaction.inputs[TransactionInput] ',id:"code-style-fontweight-normal-transactionbinputsbcodetransactioninput--",level:4},{value:'Transaction.inputs.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-",level:5},{value:'Transaction.originSignatureHex ',id:"code-style-fontweight-normal-transactionboriginsignaturebcodehex-",level:4},{value:'Transaction.previousAddressAddress ',id:"code-style-fontweight-normal-transactionbpreviousaddressbcodeaddress-",level:4},{value:'Transaction.previousPublicKeyPublicKey ',id:"code-style-fontweight-normal-transactionbpreviouspublickeybcodepublickey-",level:4},{value:'Transaction.previousSignatureHex ',id:"code-style-fontweight-normal-transactionbprevioussignaturebcodehex-",level:4},{value:'Transaction.typeString ',id:"code-style-fontweight-normal-transactionbtypebcodestring-",level:4},{value:'Transaction.validationStampValidationStamp ',id:"code-style-fontweight-normal-transactionbvalidationstampbcodevalidationstamp-",level:4},{value:'Transaction.versionInt ',id:"code-style-fontweight-normal-transactionbversionbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},h="wrapper";function y(e){let{components:t,...a}=e;return(0,r.kt)(h,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[Transaction]"," represents a unitary transaction in the Archethic network."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type Transaction {\n address: Address\n balance: Balance\n chainLength: Int\n crossValidationStamps: [CrossValidationStamp]\n data: Data\n inputs(\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionInput]\n originSignature: Hex\n previousAddress: Address\n previousPublicKey: PublicKey\n previousSignature: Hex\n type: String\n validationStamp: ValidationStamp\n version: Int\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"address"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbbalancebcodebalance-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"balance"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/balance"},(0,r.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbchainlengthbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"chainLength"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbcrossvalidationstampsbcodecrossvalidationstamp--"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"crossValidationStamps"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/cross-validation-stamp"},(0,r.kt)("inlineCode",{parentName:"a"},"[CrossValidationStamp]"))," ",(0,r.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbdatabcodedata-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"data"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/data"},(0,r.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbinputsbcodetransactioninput--"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"inputs"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-input"},(0,r.kt)("inlineCode",{parentName:"a"},"[TransactionInput]"))," ",(0,r.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null,(0,r.kt)("h5",{parentName:"blockquote",id:"code-style-fontweight-normal-transactioninputsblimitbcodeposinteger-"},(0,r.kt)("a",{parentName:"h5",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.inputs.",(0,r.kt)("b",null,"limit"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/pos-integer"},(0,r.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"}))),(0,r.kt)("h5",{id:"code-style-fontweight-normal-transactioninputsbpagingoffsetbcodenonneginteger-"},(0,r.kt)("a",{parentName:"h5",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.inputs.",(0,r.kt)("b",null,"pagingOffset"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/non-neg-integer"},(0,r.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionboriginsignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"originSignature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbpreviousaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousAddress"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbpreviouspublickeybcodepublickey-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousPublicKey"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,r.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbprevioussignaturebcodehex-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"previousSignature"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,r.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"type"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbvalidationstampbcodevalidationstamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"validationStamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/validation-stamp"},(0,r.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,r.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-transactionbversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"Transaction.",(0,r.kt)("b",null,"version"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"returned-by"},"Returned by"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/last-transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"lastTransaction"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,r.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction"},(0,r.kt)("inlineCode",{parentName:"a"},"transaction"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,r.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transactions"},(0,r.kt)("inlineCode",{parentName:"a"},"transactions"))," ",(0,r.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/410469d2.3a762a8e.js b/assets/js/410469d2.b5bd10ed.js similarity index 97% rename from assets/js/410469d2.3a762a8e.js rename to assets/js/410469d2.b5bd10ed.js index 5e9306986..176412467 100644 --- a/assets/js/410469d2.3a762a8e.js +++ b/assets/js/410469d2.b5bd10ed.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6328],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"p2p-sampling",title:"P2P availability sampling"},o=void 0,l={unversionedId:"build/core/beacon-chain/p2p-sampling",id:"build/core/beacon-chain/p2p-sampling",title:"P2P availability sampling",description:"Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor.",source:"@site/docs/build/core/beacon-chain/p2p-sampling.md",sourceDirName:"build/core/beacon-chain",slug:"/build/core/beacon-chain/p2p-sampling",permalink:"/build/core/beacon-chain/p2p-sampling",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"p2p-sampling",title:"P2P availability sampling"},sidebar:"docs",previous:{title:"BeaconChain",permalink:"/build/core/beacon-chain/"},next:{title:"Bootstrap",permalink:"/build/core/bootstrap"}},c={},s=[{value:"Heartbeat",id:"heartbeat",level:2},{value:"Aggregation",id:"aggregation",level:2}],p={toc:s},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor."),(0,a.kt)("h2",{id:"heartbeat"},"Heartbeat"),(0,a.kt)("p",null,"So periodically (when a transaction is confirmed or before a slot creation), the nodes of a given subset perform P2P availability sampling of the given peers. "),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If multiple transactions arrive to a given subset quickly, a timespan of 3s from the previous sampling is used, to determine if we need to sample availability again ")),(0,a.kt)("mermaid",{value:"sequenceDiagram\n Subset node->>+Supervised node: Ping\n Supervised node->>+Subset node: Ok"}),(0,a.kt)("p",null,"A timeout of 1s is given in which a node should respond otherwise it will considered as locally offline by the beacon chain"),(0,a.kt)("h2",{id:"aggregation"},"Aggregation"),(0,a.kt)("p",null,"During the transaction generation of the BeaconChain summary, we aggregate multiple slots into a common structure."),(0,a.kt)("p",null,"All the aggregated P2P samples are accumulated to determine the frequencies of availability and determine the average."),(0,a.kt)("p",null,"So during the ",(0,a.kt)("a",{parentName:"p",href:"/learn/p2p/self-repair"},"Self-Repair"),", we are using those summary and aggregated data to determine if a node is considered as available for the next epoch/cycle."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6328],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"p2p-sampling",title:"P2P availability sampling"},o=void 0,l={unversionedId:"build/core/beacon-chain/p2p-sampling",id:"build/core/beacon-chain/p2p-sampling",title:"P2P availability sampling",description:"Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor.",source:"@site/docs/build/core/beacon-chain/p2p-sampling.md",sourceDirName:"build/core/beacon-chain",slug:"/build/core/beacon-chain/p2p-sampling",permalink:"/build/core/beacon-chain/p2p-sampling",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"p2p-sampling",title:"P2P availability sampling"},sidebar:"docs",previous:{title:"BeaconChain",permalink:"/build/core/beacon-chain/"},next:{title:"Bootstrap",permalink:"/build/core/bootstrap"}},c={},s=[{value:"Heartbeat",id:"heartbeat",level:2},{value:"Aggregation",id:"aggregation",level:2}],p={toc:s},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor."),(0,a.kt)("h2",{id:"heartbeat"},"Heartbeat"),(0,a.kt)("p",null,"So periodically (when a transaction is confirmed or before a slot creation), the nodes of a given subset perform P2P availability sampling of the given peers. "),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If multiple transactions arrive to a given subset quickly, a timespan of 3s from the previous sampling is used, to determine if we need to sample availability again ")),(0,a.kt)("mermaid",{value:"sequenceDiagram\n Subset node->>+Supervised node: Ping\n Supervised node->>+Subset node: Ok"}),(0,a.kt)("p",null,"A timeout of 1s is given in which a node should respond otherwise it will considered as locally offline by the beacon chain"),(0,a.kt)("h2",{id:"aggregation"},"Aggregation"),(0,a.kt)("p",null,"During the transaction generation of the BeaconChain summary, we aggregate multiple slots into a common structure."),(0,a.kt)("p",null,"All the aggregated P2P samples are accumulated to determine the frequencies of availability and determine the average."),(0,a.kt)("p",null,"So during the ",(0,a.kt)("a",{parentName:"p",href:"/learn/p2p/self-repair"},"Self-Repair"),", we are using those summary and aggregated data to determine if a node is considered as available for the next epoch/cycle."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/41e024b6.f66330cf.js b/assets/js/41e024b6.e220f692.js similarity index 98% rename from assets/js/41e024b6.f66330cf.js rename to assets/js/41e024b6.e220f692.js index a06950e73..7b756818b 100644 --- a/assets/js/41e024b6.f66330cf.js +++ b/assets/js/41e024b6.e220f692.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7793],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,i(i({ref:t},s),{},{components:r})):n.createElement(f,i({ref:t},s))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"automation",title:"Automate deployments"},i=void 0,c={unversionedId:"participate/aeweb/automation",id:"participate/aeweb/automation",title:"Automate deployments",description:"AEWeb's CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.",source:"@site/docs/participate/aeweb/automation.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/automation",permalink:"/participate/aeweb/automation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"automation",title:"Automate deployments"},sidebar:"docs",previous:{title:"AEWeb Front End",permalink:"/participate/aeweb/usage/aeweb-front"},next:{title:"Archethic's bridge",permalink:"/participate/bridge/"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"AEWeb's CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.\nHowever, if you need to deploy often a website, the CLI might not be the great tool."),(0,o.kt)("p",null,"To resolve this issue, we have planed a way to automate the deployment of your websites using Github's Actions."),(0,o.kt)("p",null,"This is a simple automation that allow you to deploy to Archethic decentralized web hosting. Under the hood, it's running some part of the AEWeb CLI features."),(0,o.kt)("p",null,"You can decide when your codebase will be deployed on Archethic, for instance foreach push or validated pull-request, or after each release."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/marketplace/actions/archethic-web"},"Check our Github Action")," to discover how to use it and leverage continuous deployment on Archethic."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7793],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,i(i({ref:t},s),{},{components:r})):n.createElement(f,i({ref:t},s))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"automation",title:"Automate deployments"},i=void 0,c={unversionedId:"participate/aeweb/automation",id:"participate/aeweb/automation",title:"Automate deployments",description:"AEWeb's CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.",source:"@site/docs/participate/aeweb/automation.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/automation",permalink:"/participate/aeweb/automation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"automation",title:"Automate deployments"},sidebar:"docs",previous:{title:"AEWeb Front End",permalink:"/participate/aeweb/usage/aeweb-front"},next:{title:"Archethic's bridge",permalink:"/participate/bridge/"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"AEWeb's CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.\nHowever, if you need to deploy often a website, the CLI might not be the great tool."),(0,o.kt)("p",null,"To resolve this issue, we have planed a way to automate the deployment of your websites using Github's Actions."),(0,o.kt)("p",null,"This is a simple automation that allow you to deploy to Archethic decentralized web hosting. Under the hood, it's running some part of the AEWeb CLI features."),(0,o.kt)("p",null,"You can decide when your codebase will be deployed on Archethic, for instance foreach push or validated pull-request, or after each release."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/marketplace/actions/archethic-web"},"Check our Github Action")," to discover how to use it and leverage continuous deployment on Archethic."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/441b3d3d.dc4b7ed7.js b/assets/js/441b3d3d.eac79287.js similarity index 99% rename from assets/js/441b3d3d.dc4b7ed7.js rename to assets/js/441b3d3d.eac79287.js index 3cdba9cfb..61ab9621f 100644 --- a/assets/js/441b3d3d.dc4b7ed7.js +++ b/assets/js/441b3d3d.eac79287.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2488],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),h=a,m=d["".concat(s,".").concat(h)]||d[h]||u[h]||i;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));r(8209);const i={id:"ledger-wallet",title:"Ledger wallet"},o="Introduction",l={unversionedId:"build/clients/ledger-wallet/ledger-wallet",id:"build/clients/ledger-wallet/ledger-wallet",title:"Ledger wallet",description:"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets.",source:"@site/docs/build/clients/ledger-wallet/README.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/",permalink:"/build/clients/ledger-wallet/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"ledger-wallet",title:"Ledger wallet"},sidebar:"docs",previous:{title:"Clients",permalink:"/category/clients"},next:{title:"Ledger Application API",permalink:"/build/clients/ledger-wallet/api"}},s={},c=[{value:"Synopsis",id:"synopsis",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Installation Instructions",id:"installation-instructions",level:2},{value:"Testing",id:"testing",level:2},{value:"Demo",id:"demo",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets."),(0,a.kt)("p",null,"Types of software wallets include web (or crypto exchange) wallets, mobile wallets, and desktop wallets. A hardware wallet is a physical device that secures access to your cryptos offline (",(0,a.kt)("a",{parentName:"p",href:"https://www.fool.com/investing/stock-market/market-sectors/financials/blockchain-stocks/blockchain-wallet/#:~:text=There%20are%20two%20basic%20types,access%20to%20your%20cryptos%20offline."},"source"),"). This guide explains interaction and testing of hardware wallet, specifically the Ledger Device (Nano S) with archethic testnet."),(0,a.kt)("p",null,"A Ledger Device is a hardware root of trust based wallet that is considered one of the most secure ways to store your digital assets. Ledger uses an offline, or cold storage, method of generating private keys, making it a preferred method for many crypto users. "),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://i.imgur.com/hlFqBsS.png",alt:null})),(0,a.kt)("p",null,"As given in the figure, there are 3 important components in order to support ledger device for a given blockchain."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Bolos Application\nThis application is written in C and resides on the physical Ledger device. For Archethic's blockchain, this can be found on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger"},"Archethic's github")," and the functional documentation for the app can be found on the official ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-docs/blob/docusaurus/development/wallets/hardware/ledger/archethic_bolos_app.md"},"docs repository"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Companion App\nThis is the application which acts like a bridge of communication between user/blockchain and the Bolos application mentioned above. For Archethic's blockchain, this is ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/ledger-cli-app"},"ALCA (CLI)")," and Flutter based ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic_wallet"},"Wallet (GUI)"),".\n")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Remote backend\nThis is the node which accepts data (signed transactions) from the Companion app mentioned above in order to include it into the blockchain. For Archethic's blockchain, it is the testnet node. Once transaction is published, the data can be verified on ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/explorer"},"archethic.net"),"."))),(0,a.kt)("h2",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"This guide will help you to connect your Ledger device to ALCA, dedicated Command Line Interface (CLI). ALCA (Archethic Ledger CLI App) enables you to Send and Receive UCOs on Archethic Testnet with the Ledger Device."),(0,a.kt)("p",null,"Soon, ALCA will be replaced by Archethic's Wallet, which is GUI-based, thus enabling non-tech users to experiment with Archethic's testnet."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"This is a developer guide and not for general public. This guide assumes the reader has a prior knowledge of ArchEthic and Ledger Ecosystem.")),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"A more general public guide will soon be released once security audit for developer release is done and GUI support for Ledger Device is added to current Archethic's Wallet (Mobile + Desktop)")),(0,a.kt)("p",null,"Before You Start, Make Sure:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"You\u2019ve ",(0,a.kt)("a",{parentName:"li",href:"https://support.ledger.com/hc/en-us/articles/360000613793?docs=true"},"initialized")," your Ledger Device."),(0,a.kt)("li",{parentName:"ul"},"The latest firmware is ",(0,a.kt)("a",{parentName:"li",href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true"},"installed")," (Ledger Nano S)."),(0,a.kt)("li",{parentName:"ul"},"Archethic Bolos App is ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-ledger"},"loaded")," on Ledger (Tested with Nano S only)."),(0,a.kt)("li",{parentName:"ul"},"Install the latest version of ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/ledger-cli-app"},"ALCA"),"."),(0,a.kt)("li",{parentName:"ul"},"Nodejs (v14.0+)")),(0,a.kt)("h2",{id:"installation-instructions"},"Installation Instructions"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Clone the repository from ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/ledger-cli-app.git"},"github")),(0,a.kt)("li",{parentName:"ul"},"Run ",(0,a.kt)("inlineCode",{parentName:"li"},"yarn")," or ",(0,a.kt)("inlineCode",{parentName:"li"},"npm install")," from root folder of the project"),(0,a.kt)("li",{parentName:"ul"},"Run ",(0,a.kt)("inlineCode",{parentName:"li"},"npm link")),(0,a.kt)("li",{parentName:"ul"},"Use it as ledger_cli (commands)")),(0,a.kt)("h2",{id:"testing"},"Testing"),(0,a.kt)("p",null,"From Terminal use it as ",(0,a.kt)("inlineCode",{parentName:"p"},"ledger_cli (about | getAppVersion | getPublicKey | getArchAddress | sendTxn)")),(0,a.kt)("h2",{id:"demo"},"Demo"),(0,a.kt)("p",null,"The demo shows various screens a user will be shown for getting origin public key, onchain wallet address and performing signature on transaction involving single UCO transfer at a time between 2 parties."),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://i.imgur.com/gk8Q9Ku.gif",alt:null})))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2488],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),h=a,m=d["".concat(s,".").concat(h)]||d[h]||u[h]||i;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));r(8209);const i={id:"ledger-wallet",title:"Ledger wallet"},o="Introduction",l={unversionedId:"build/clients/ledger-wallet/ledger-wallet",id:"build/clients/ledger-wallet/ledger-wallet",title:"Ledger wallet",description:"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets.",source:"@site/docs/build/clients/ledger-wallet/README.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/",permalink:"/build/clients/ledger-wallet/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"ledger-wallet",title:"Ledger wallet"},sidebar:"docs",previous:{title:"Clients",permalink:"/category/clients"},next:{title:"Ledger Application API",permalink:"/build/clients/ledger-wallet/api"}},s={},c=[{value:"Synopsis",id:"synopsis",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Installation Instructions",id:"installation-instructions",level:2},{value:"Testing",id:"testing",level:2},{value:"Demo",id:"demo",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets."),(0,a.kt)("p",null,"Types of software wallets include web (or crypto exchange) wallets, mobile wallets, and desktop wallets. A hardware wallet is a physical device that secures access to your cryptos offline (",(0,a.kt)("a",{parentName:"p",href:"https://www.fool.com/investing/stock-market/market-sectors/financials/blockchain-stocks/blockchain-wallet/#:~:text=There%20are%20two%20basic%20types,access%20to%20your%20cryptos%20offline."},"source"),"). This guide explains interaction and testing of hardware wallet, specifically the Ledger Device (Nano S) with archethic testnet."),(0,a.kt)("p",null,"A Ledger Device is a hardware root of trust based wallet that is considered one of the most secure ways to store your digital assets. Ledger uses an offline, or cold storage, method of generating private keys, making it a preferred method for many crypto users. "),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://i.imgur.com/hlFqBsS.png",alt:null})),(0,a.kt)("p",null,"As given in the figure, there are 3 important components in order to support ledger device for a given blockchain."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Bolos Application\nThis application is written in C and resides on the physical Ledger device. For Archethic's blockchain, this can be found on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-ledger"},"Archethic's github")," and the functional documentation for the app can be found on the official ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-docs/blob/docusaurus/development/wallets/hardware/ledger/archethic_bolos_app.md"},"docs repository"),".")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Companion App\nThis is the application which acts like a bridge of communication between user/blockchain and the Bolos application mentioned above. For Archethic's blockchain, this is ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/ledger-cli-app"},"ALCA (CLI)")," and Flutter based ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic_wallet"},"Wallet (GUI)"),".\n")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Remote backend\nThis is the node which accepts data (signed transactions) from the Companion app mentioned above in order to include it into the blockchain. For Archethic's blockchain, it is the testnet node. Once transaction is published, the data can be verified on ",(0,a.kt)("a",{parentName:"p",href:"https://testnet.archethic.net/explorer"},"archethic.net"),"."))),(0,a.kt)("h2",{id:"synopsis"},"Synopsis"),(0,a.kt)("p",null,"This guide will help you to connect your Ledger device to ALCA, dedicated Command Line Interface (CLI). ALCA (Archethic Ledger CLI App) enables you to Send and Receive UCOs on Archethic Testnet with the Ledger Device."),(0,a.kt)("p",null,"Soon, ALCA will be replaced by Archethic's Wallet, which is GUI-based, thus enabling non-tech users to experiment with Archethic's testnet."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"This is a developer guide and not for general public. This guide assumes the reader has a prior knowledge of ArchEthic and Ledger Ecosystem.")),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"A more general public guide will soon be released once security audit for developer release is done and GUI support for Ledger Device is added to current Archethic's Wallet (Mobile + Desktop)")),(0,a.kt)("p",null,"Before You Start, Make Sure:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"You\u2019ve ",(0,a.kt)("a",{parentName:"li",href:"https://support.ledger.com/hc/en-us/articles/360000613793?docs=true"},"initialized")," your Ledger Device."),(0,a.kt)("li",{parentName:"ul"},"The latest firmware is ",(0,a.kt)("a",{parentName:"li",href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true"},"installed")," (Ledger Nano S)."),(0,a.kt)("li",{parentName:"ul"},"Archethic Bolos App is ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-ledger"},"loaded")," on Ledger (Tested with Nano S only)."),(0,a.kt)("li",{parentName:"ul"},"Install the latest version of ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/ledger-cli-app"},"ALCA"),"."),(0,a.kt)("li",{parentName:"ul"},"Nodejs (v14.0+)")),(0,a.kt)("h2",{id:"installation-instructions"},"Installation Instructions"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Clone the repository from ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/ledger-cli-app.git"},"github")),(0,a.kt)("li",{parentName:"ul"},"Run ",(0,a.kt)("inlineCode",{parentName:"li"},"yarn")," or ",(0,a.kt)("inlineCode",{parentName:"li"},"npm install")," from root folder of the project"),(0,a.kt)("li",{parentName:"ul"},"Run ",(0,a.kt)("inlineCode",{parentName:"li"},"npm link")),(0,a.kt)("li",{parentName:"ul"},"Use it as ledger_cli (commands)")),(0,a.kt)("h2",{id:"testing"},"Testing"),(0,a.kt)("p",null,"From Terminal use it as ",(0,a.kt)("inlineCode",{parentName:"p"},"ledger_cli (about | getAppVersion | getPublicKey | getArchAddress | sendTxn)")),(0,a.kt)("h2",{id:"demo"},"Demo"),(0,a.kt)("p",null,"The demo shows various screens a user will be shown for getting origin public key, onchain wallet address and performing signature on transaction involving single UCO transfer at a time between 2 parties."),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://i.imgur.com/gk8Q9Ku.gif",alt:null})))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/44c96576.a5f332f9.js b/assets/js/44c96576.64e39ec9.js similarity index 99% rename from assets/js/44c96576.a5f332f9.js rename to assets/js/44c96576.64e39ec9.js index d1710181e..08ba92623 100644 --- a/assets/js/44c96576.a5f332f9.js +++ b/assets/js/44c96576.64e39ec9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5352],{3905:(t,e,n)=>{n.d(e,{Zo:()=>u,kt:()=>g});var A=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(t);e&&(A=A.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,A)}return n}function c(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(A=0;A=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var i=A.createContext({}),l=function(t){var e=A.useContext(i),n=e;return t&&(n="function"==typeof t?t(e):c(c({},e),t)),n},u=function(t){var e=l(t.components);return A.createElement(i.Provider,{value:e},t.children)},p="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return A.createElement(A.Fragment,{},e)}},d=A.forwardRef((function(t,e){var n=t.components,r=t.mdxType,o=t.originalType,i=t.parentName,u=a(t,["components","mdxType","originalType","parentName"]),p=l(n),d=r,g=p["".concat(i,".").concat(d)]||p[d]||s[d]||o;return n?A.createElement(g,c(c({ref:e},u),{},{components:n})):A.createElement(g,c({ref:e},u))}));function g(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=n.length,c=new Array(o);c[0]=d;var a={};for(var i in e)hasOwnProperty.call(e,i)&&(a[i]=e[i]);a.originalType=t,a[p]="string"==typeof t?t:r,c[1]=a;for(var l=2;l{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>s,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var A=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"functions",title:"Smart Contracts Playground - Functions",sidebar_label:"Function calls",sidebar_position:3},c=void 0,a={unversionedId:"build/smart-contracts/playground/functions",id:"build/smart-contracts/playground/functions",title:"Smart Contracts Playground - Functions",description:"Since 1.3, we introduced the capability to have some public functions in to smart contract code.",source:"@site/docs/build/smart-contracts/playground/function.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/functions",permalink:"/build/smart-contracts/playground/functions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"functions",title:"Smart Contracts Playground - Functions",sidebar_label:"Function calls",sidebar_position:3},sidebar:"docs",previous:{title:"Deploy",permalink:"/build/smart-contracts/playground/deploy"},next:{title:"Transaction form",permalink:"/build/smart-contracts/playground/transaction-form"}},i={},l=[],u={toc:l},p="wrapper";function s(t){let{components:e,...o}=t;return(0,r.kt)(p,(0,A.Z)({},u,o,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Since 1.3, we introduced the capability to have some public functions in to smart contract code."),(0,r.kt)("p",null,"The playground have been updated to support this feature and be able to test it by calling those functions."),(0,r.kt)("p",null,"Let's create a small smart contract that use function to export some data to the user"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, on: increment(), as: []\n\nactions triggered_by: transaction, on: increment() do\n counter = String.to_number(contract.content) + 1\n Contract.set_content String.from_number(counter)\nend\n\nexport fun counter() do\n Json.to_string([counter: contract.content])\nend\n")),(0,r.kt)("p",null,"Firstly, we initiate a transaction to increment the counter and update the contract"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that send a transaction to increment a counter",src:n(2008).Z,width:"3596",height:"2390"})),(0,r.kt)("p",null,"Now to test the function, we are going to open the function panel by clicking on the function button:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"the trigger button",src:n(1823).Z,width:"112",height:"94"})),(0,r.kt)("p",null,"We can see the function panel on the left with the list of function availables to be called"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a function panel opened",src:n(1205).Z,width:"3596",height:"2390"})),(0,r.kt)("p",null,'After clicking on "Execute", we can see in the console the return of the function'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a function executed",src:n(9978).Z,width:"3596",height:"2390"})))}s.isMDXComponent=!0},1823:(t,e,n)=>{n.d(e,{Z:()=>A});const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABeCAYAAAD7RpANAAAKpWlDQ1BJQ0MgUHJvZmlsZQAASImVlwdQk9kWx+/3pYcECAm9hRqKIJ0AUkIPRZAOohKSAKGEEBJU7MriCq4oIiKgLuiqgIIVkLViwcKiYK8bZBFR18WCDZX3BYbg7pv33rwzc3N+c3LvOefeuXfm/wFARnNEomxYFYAcoUQcFeRLT0hMouOGABZoAgqwBsocbr6IFRkZBhCb8n+397cBJPc3bOS5/v3//2oUHj+fCwAUiXAqL5+bg/BRZMi4IrEEAFQFEjdZKBHJuR1hmhhpEOFuOadPskzOqZP8bmJOTJQfAGg8AHgShyNOB4BEQ+L0Am46kofkhLCdkCcQIsxD2CsnJxfxpN0IWyBzRAjL8zNTv8uT/recqYqcHE66gif3MmF4f0G+KJuz+P88jv9tOdnSqRrmyCBliIOj5PWQM7ublRuqYGHq7IgpFvAme5JzhjQ4doq5+X5JU8zj+Icq1mbPDpviNEEgW5FHwo6ZYn5+QPQUi3OjFLXSxH6sKeaIp+tKs2IV8Qw+W5G/MCMmfooLBHGzpzg/Kzp0eo6fIi6WRin65wuDfKfrBir2npP/3X4FbMVaSUZMsGLvnOn++ULWdM78BEVvPL5/wPScWMV8kcRXUUuUHamYz88OUsTzC6IVayXIhZxeG6k4w0xOSOQUAwEIBxzAlfAXSeTN++WKFosF6RkSOgt5VXw6W8i1nUF3sHNwBED+RievwMi1ibcHaVOmY8XJyJV+MT4+3jodC74GwKFXABA/T8cYjQCoMAC4tIwrFRdMxtDyHwwgAhVAA9rAAJgAC2ADHIAL8AA+IACEgAgQAxLBfMAFGSAHiMFCsBSsAsWgFGwEW0A12Al2gX3gADgM2sAJcBZcBFfBdXALPAAyMAhegBHwHoxBEISDyBAV0oYMITPIGnKAmJAXFACFQVFQIpQCpUNCSAothdZApVA5VA3VQQ3QIeg4dBa6DPVC96B+aBh6A32GUTAJpsH6sDk8E2bCLDgUjoHnwelwHlwIF8Eb4Cq4Ht4Pt8Jn4avwLVgGv4BHUQClhNJAGaFsUEyUHyoClYRKQ4lRy1ElqEpUPaoZ1YHqQt1AyVAvUZ/QWDQVTUfboD3QwehYNBedh16OXo+uRu9Dt6LPo2+g+9Ej6G8YMkYPY41xx7AxCZh0zEJMMaYSswdzDHMBcwsziHmPxWI1sAysKzYYm4jNxC7Brsdux7Zgz2B7sQPYURwOp42zxnniInAcnARXjNuG2487jevDDeI+4pXwhngHfCA+CS/Er8ZX4hvxp/B9+CH8GEGVYEZwJ0QQeITFhDLCbkIH4RphkDBGpBAZRE9iDDGTuIpYRWwmXiA+JL5VUlIyVnJTmqMkUFqpVKV0UOmSUr/SJ5IayYrkR0omSUkbSHtJZ0j3SG/JZLI52YecRJaQN5AbyOfIj8kflanKtspsZZ7yCuUa5VblPuVXKgQVMxWWynyVQpVKlSMq11ReqhJUzVX9VDmqy1VrVI+r3lEdpVAp9pQISg5lPaWRcpnyTA2nZq4WoMZTK1LbpXZObYCKoppQ/ahc6hrqbuoF6iANS2PQ2LRMWintAK2HNqKupu6kHqe+SL1G/aS6TAOlYa7B1sjWKNM4rHFb47OmviZLk6+5TrNZs0/zg5aulo8WX6tEq0XrltZnbbp2gHaW9ibtNu1HOmgdK505Ogt1duhc0HmpS9P10OXqluge1r2vB+tZ6UXpLdHbpdetN6pvoB+kL9Lfpn9O/6WBhoGPQaZBhcEpg2FDqqGXocCwwvC04XO6Op1Fz6ZX0c/TR4z0jIKNpEZ1Rj1GY8YM41jj1cYtxo9MiCZMkzSTCpNOkxFTQ9Nw06WmTab3zQhmTLMMs61mXWYfzBnm8eZrzdvMnzG0GGxGIaOJ8dCCbOFtkWdRb3HTEmvJtMyy3G553Qq2crbKsKqxumYNW7tYC6y3W/fOwMxwmyGcUT/jjg3JhmVTYNNk02+rYRtmu9q2zfbVTNOZSTM3zeya+c3O2S7bbrfdA3s1+xD71fYd9m8crBy4DjUONx3JjoGOKxzbHV87WTvxnXY43XWmOoc7r3XudP7q4uoidml2GXY1dU1xrXW9w6QxI5nrmZfcMG6+bivcTrh9cndxl7gfdv/Lw8Yjy6PR49ksxiz+rN2zBjyNPTmedZ4yL7pXitfPXjJvI2+Od733Ex8TH57PHp8hliUrk7Wf9crXzlfse8z3g5+73zK/M/4o/yD/Ev+eALWA2IDqgMeBxoHpgU2BI0HOQUuCzgRjgkODNwXfYeuzuewG9kiIa8iykPOhpNDo0OrQJ2FWYeKwjnA4PCR8c/jD2WazhbPbIkAEO2JzxKNIRmRe5K9zsHMi59TMeRplH7U0qiuaGr0gujH6fYxvTFnMg1iLWGlsZ5xKXHJcQ9yHeP/48nhZwsyEZQlXE3USBYntSbikuKQ9SaNzA+ZumTuY7JxcnHx7HmPeonmX5+vMz55/coHKAs6CIymYlPiUxpQvnAhOPWc0lZ1amzrC9eNu5b7g+fAqeMN8T345fyjNM6087Vm6Z/rm9OEM74zKjJcCP0G14HVmcObOzA9ZEVl7s8az47NbcvA5KTnHhWrCLOH5XIPcRbm9ImtRsUiW5563JW9EHCrekw/lz8tvl9AQMdQttZD+IO0v8CqoKfi4MG7hkUWURcJF3YutFq9bPFQYWPjLEvQS7pLOpUZLVy3tX8ZaVrccWp66vHOFyYqiFYMrg1buW0VclbXqt9V2q8tXv1sTv6ajSL9oZdHAD0E/NBUrF4uL76z1WLvzR/SPgh971jmu27buWwmv5EqpXWll6Zf13PVXfrL/qeqn8Q1pG3rKXMp2bMRuFG68vcl7075ySnlh+cDm8M2tFfSKkop3WxZsuVzpVLlzK3GrdKusKqyqfZvpto3bvlRnVN+q8a1pqdWrXVf7YTtve98Onx3NO/V3lu78/LPg57t1QXWt9eb1lbuwuwp2Pd0dt7vrF+YvDXt09pTu+bpXuFe2L2rf+QbXhoZGvcayJrhJ2jS8P3n/9QP+B9qbbZrrWjRaSg+Cg9KDzw+lHLp9OPRw5xHmkeajZkdrj1GPlbRCrYtbR9oy2mTtie29x0OOd3Z4dBz71fbXvSeMTtScVD9Zdop4qujU+OnC06NnRGdenk0/O9C5oPPBuYRzN8/POd9zIfTCpYuBF891sbpOX/K8dOKy++XjV5hX2q66XG3tdu4+9pvzb8d6XHpar7lea7/udr2jd1bvqT7vvrM3/G9cvMm+efXW7Fu9t2Nv372TfEd2l3f32b3se6/vF9wfe7DyIeZhySPVR5WP9R7X/275e4vMRXay37+/+0n0kwcD3IEXf+T/8WWw6Cn5aeWQ4VDDM4dnJ4YDh68/n/t88IXoxdjL4j8pf9a+snh19C+fv7pHEkYGX4tfj79Z/1b77d53Tu86RyNHH7/PeT/2oeSj9sd9n5ifuj7Hfx4aW/gF96Xqq+XXjm+h3x6O54yPizhizoQUQCEDTksD4M1eAMiJAFCvI/ph7qSGnjBoUvdPEPhPPKmzJ8wFgGbEyaWQXAoekUtYHwCUER+B+BgfADs6KsaU3p3Q5nLDIl8pzdTjvLztfd8kdeAfNqnbv+v7nx7Is8ql/9/9vwC01QYO/dnrkQAAAIplWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAAAHCgAwAEAAAAAQAAAF4AAAAAQVNDSUkAAABTY3JlZW5zaG90ADOtIgAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+OTQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTEyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CvHe0K8AAAAcaURPVAAAAAIAAAAAAAAALwAAACgAAAAvAAAALwAAAex9UtyPAAABuElEQVR4AeyYUUrDQBRFpxtJ8NMN+KUuRHEfIn5KcR+iC6nZSLIBdQXKC0x5DEYzSGXO6x0onaSTcuee3te8bE5Ozz6TBtKBj7f3tBFAJLtZtABy2QkgnJ0ACmAEB+B70H+gAMIdgMtXAgUQ7gBcvhIogHAH4PKVQAGEOwCXrwQKINwBuHwlUADhDsDlK4ECCHcALl8JFEC4A3D5SqAAwh2Ay1cCBRDuAFy+EiiAcAfg8pVAAWzfgcuL89R3Xer7Lo3jlMZpSrvXoX3hKxSGT+DN9dUMrvTCQO6GYQZafkY6Dg1wCZ4H9LB99Ie4eViAVi4NoB9WNnMpzeftHLmchgXo02fl8un5JTObwRpgG+Vn+0WQSUiAZfoMnoHKw25q7JUHuYyGBPhT+jK0+7vbeaoEZkcaes9wTNISIF9CG5JeLSVcAn8rn9UONX5BOIBrymfjTKrkCWCVXe0tDgXw2Mqn/ZywAPNNiM+ENem+PfC9n63zrYS/jjzHASx7uFrz6U9eyv3iAPoWodzMmmMBXOPSAdf8NYHlU5kDSv2Xr8YlcMmV8gaG/HhsaY/fnQ8D8Nj6vwzTAH4BAAD//7rSIMsAAAJWSURBVO2ZUU4CQRBEl4tI/PQCfiEH0XgPY/w0xnsYPQhyEbiAegJNuZnQdGZrhy+6druThWV6ZqmtR09DWFxeXf924nF/d9stlxf/d7Hb7bu39w/xO2qT//P13S3UAQIcAJYAPECcQ0wS4PPLa5VdqdLN57bD4WN9s+pwIFQ+BJMAWMDA+KHt08LBPA9xLI81EWM2AP02Cxi2yp4eH474eMBHyUAv5AF6MBaK99lXGfLYbm0FY0wFHrRODuBQ/8PNIjysfvTwqAQPquUBWiBD/e+Apz+za2yudb1dc+7zWQKE6b7nYWysejEnWkgDPKX/WeNrvRB5te0TmicFsKWChuDBDIQaRGmAtpe19C9fsQCGdRi3oQQxNMBiLEyuxakAfd8roGpVyX6O1LScaywsQGtqbWv01TRmuL0ezC7wivH2w4Cxlooua8/5HBagNdSbDcM8wBpka6y9HsZr8+2c2nva60U5DwvwlIppqRYAX170x2a7Hfy3Au+LeWxOFHjQERYgxPmeBVC7fd8PYXSJse2zzJvic2iAvgprAFqqr7ZuKmOhAcJkBnHu8OBPeIAQif61XvVbJs7LVoovGnMPCYBzh8TuPwEydwRyCVAAEpOYAJk7ArkEKACJSUyAzB2BXAIUgMQkJkDmjkAuAQpAYhITIHNHIJcABSAxiQmQuSOQS4ACkJjEBMjcEcglQAFITGICZO4I5BKgACQmMQEydwRyCVAAEpOYAJk7ArkEKACJSUyAzB2BXAIUgMQkJkDmjkAuAQpAYhITIHNHIJcABSAxiQD4B7G2G45A/ZFmAAAAAElFTkSuQmCC"},2008:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_example1-8e7185753db9849b034705c5f540ae77.png"},1205:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_panel-3d1f5c7d5ecc007093c9cd538e14ccad.png"},9978:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_panel2-125e7cc112e2a73e0bf30f17ace555bd.png"},8209:(t,e,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5352],{3905:(t,e,n)=>{n.d(e,{Zo:()=>u,kt:()=>g});var A=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(t);e&&(A=A.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,A)}return n}function c(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(A=0;A=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var i=A.createContext({}),l=function(t){var e=A.useContext(i),n=e;return t&&(n="function"==typeof t?t(e):c(c({},e),t)),n},u=function(t){var e=l(t.components);return A.createElement(i.Provider,{value:e},t.children)},p="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return A.createElement(A.Fragment,{},e)}},d=A.forwardRef((function(t,e){var n=t.components,r=t.mdxType,o=t.originalType,i=t.parentName,u=a(t,["components","mdxType","originalType","parentName"]),p=l(n),d=r,g=p["".concat(i,".").concat(d)]||p[d]||s[d]||o;return n?A.createElement(g,c(c({ref:e},u),{},{components:n})):A.createElement(g,c({ref:e},u))}));function g(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=n.length,c=new Array(o);c[0]=d;var a={};for(var i in e)hasOwnProperty.call(e,i)&&(a[i]=e[i]);a.originalType=t,a[p]="string"==typeof t?t:r,c[1]=a;for(var l=2;l{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>s,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var A=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"functions",title:"Smart Contracts Playground - Functions",sidebar_label:"Function calls",sidebar_position:3},c=void 0,a={unversionedId:"build/smart-contracts/playground/functions",id:"build/smart-contracts/playground/functions",title:"Smart Contracts Playground - Functions",description:"Since 1.3, we introduced the capability to have some public functions in to smart contract code.",source:"@site/docs/build/smart-contracts/playground/function.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/functions",permalink:"/build/smart-contracts/playground/functions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"functions",title:"Smart Contracts Playground - Functions",sidebar_label:"Function calls",sidebar_position:3},sidebar:"docs",previous:{title:"Deploy",permalink:"/build/smart-contracts/playground/deploy"},next:{title:"Transaction form",permalink:"/build/smart-contracts/playground/transaction-form"}},i={},l=[],u={toc:l},p="wrapper";function s(t){let{components:e,...o}=t;return(0,r.kt)(p,(0,A.Z)({},u,o,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Since 1.3, we introduced the capability to have some public functions in to smart contract code."),(0,r.kt)("p",null,"The playground have been updated to support this feature and be able to test it by calling those functions."),(0,r.kt)("p",null,"Let's create a small smart contract that use function to export some data to the user"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\ncondition triggered_by: transaction, on: increment(), as: []\n\nactions triggered_by: transaction, on: increment() do\n counter = String.to_number(contract.content) + 1\n Contract.set_content String.from_number(counter)\nend\n\nexport fun counter() do\n Json.to_string([counter: contract.content])\nend\n")),(0,r.kt)("p",null,"Firstly, we initiate a transaction to increment the counter and update the contract"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that send a transaction to increment a counter",src:n(2008).Z,width:"3596",height:"2390"})),(0,r.kt)("p",null,"Now to test the function, we are going to open the function panel by clicking on the function button:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"the trigger button",src:n(1823).Z,width:"112",height:"94"})),(0,r.kt)("p",null,"We can see the function panel on the left with the list of function availables to be called"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a function panel opened",src:n(1205).Z,width:"3596",height:"2390"})),(0,r.kt)("p",null,'After clicking on "Execute", we can see in the console the return of the function'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a function executed",src:n(9978).Z,width:"3596",height:"2390"})))}s.isMDXComponent=!0},1823:(t,e,n)=>{n.d(e,{Z:()=>A});const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABeCAYAAAD7RpANAAAKpWlDQ1BJQ0MgUHJvZmlsZQAASImVlwdQk9kWx+/3pYcECAm9hRqKIJ0AUkIPRZAOohKSAKGEEBJU7MriCq4oIiKgLuiqgIIVkLViwcKiYK8bZBFR18WCDZX3BYbg7pv33rwzc3N+c3LvOefeuXfm/wFARnNEomxYFYAcoUQcFeRLT0hMouOGABZoAgqwBsocbr6IFRkZBhCb8n+397cBJPc3bOS5/v3//2oUHj+fCwAUiXAqL5+bg/BRZMi4IrEEAFQFEjdZKBHJuR1hmhhpEOFuOadPskzOqZP8bmJOTJQfAGg8AHgShyNOB4BEQ+L0Am46kofkhLCdkCcQIsxD2CsnJxfxpN0IWyBzRAjL8zNTv8uT/recqYqcHE66gif3MmF4f0G+KJuz+P88jv9tOdnSqRrmyCBliIOj5PWQM7ublRuqYGHq7IgpFvAme5JzhjQ4doq5+X5JU8zj+Icq1mbPDpviNEEgW5FHwo6ZYn5+QPQUi3OjFLXSxH6sKeaIp+tKs2IV8Qw+W5G/MCMmfooLBHGzpzg/Kzp0eo6fIi6WRin65wuDfKfrBir2npP/3X4FbMVaSUZMsGLvnOn++ULWdM78BEVvPL5/wPScWMV8kcRXUUuUHamYz88OUsTzC6IVayXIhZxeG6k4w0xOSOQUAwEIBxzAlfAXSeTN++WKFosF6RkSOgt5VXw6W8i1nUF3sHNwBED+RievwMi1ibcHaVOmY8XJyJV+MT4+3jodC74GwKFXABA/T8cYjQCoMAC4tIwrFRdMxtDyHwwgAhVAA9rAAJgAC2ADHIAL8AA+IACEgAgQAxLBfMAFGSAHiMFCsBSsAsWgFGwEW0A12Al2gX3gADgM2sAJcBZcBFfBdXALPAAyMAhegBHwHoxBEISDyBAV0oYMITPIGnKAmJAXFACFQVFQIpQCpUNCSAothdZApVA5VA3VQQ3QIeg4dBa6DPVC96B+aBh6A32GUTAJpsH6sDk8E2bCLDgUjoHnwelwHlwIF8Eb4Cq4Ht4Pt8Jn4avwLVgGv4BHUQClhNJAGaFsUEyUHyoClYRKQ4lRy1ElqEpUPaoZ1YHqQt1AyVAvUZ/QWDQVTUfboD3QwehYNBedh16OXo+uRu9Dt6LPo2+g+9Ej6G8YMkYPY41xx7AxCZh0zEJMMaYSswdzDHMBcwsziHmPxWI1sAysKzYYm4jNxC7Brsdux7Zgz2B7sQPYURwOp42zxnniInAcnARXjNuG2487jevDDeI+4pXwhngHfCA+CS/Er8ZX4hvxp/B9+CH8GEGVYEZwJ0QQeITFhDLCbkIH4RphkDBGpBAZRE9iDDGTuIpYRWwmXiA+JL5VUlIyVnJTmqMkUFqpVKV0UOmSUr/SJ5IayYrkR0omSUkbSHtJZ0j3SG/JZLI52YecRJaQN5AbyOfIj8kflanKtspsZZ7yCuUa5VblPuVXKgQVMxWWynyVQpVKlSMq11ReqhJUzVX9VDmqy1VrVI+r3lEdpVAp9pQISg5lPaWRcpnyTA2nZq4WoMZTK1LbpXZObYCKoppQ/ahc6hrqbuoF6iANS2PQ2LRMWintAK2HNqKupu6kHqe+SL1G/aS6TAOlYa7B1sjWKNM4rHFb47OmviZLk6+5TrNZs0/zg5aulo8WX6tEq0XrltZnbbp2gHaW9ibtNu1HOmgdK505Ogt1duhc0HmpS9P10OXqluge1r2vB+tZ6UXpLdHbpdetN6pvoB+kL9Lfpn9O/6WBhoGPQaZBhcEpg2FDqqGXocCwwvC04XO6Op1Fz6ZX0c/TR4z0jIKNpEZ1Rj1GY8YM41jj1cYtxo9MiCZMkzSTCpNOkxFTQ9Nw06WmTab3zQhmTLMMs61mXWYfzBnm8eZrzdvMnzG0GGxGIaOJ8dCCbOFtkWdRb3HTEmvJtMyy3G553Qq2crbKsKqxumYNW7tYC6y3W/fOwMxwmyGcUT/jjg3JhmVTYNNk02+rYRtmu9q2zfbVTNOZSTM3zeya+c3O2S7bbrfdA3s1+xD71fYd9m8crBy4DjUONx3JjoGOKxzbHV87WTvxnXY43XWmOoc7r3XudP7q4uoidml2GXY1dU1xrXW9w6QxI5nrmZfcMG6+bivcTrh9cndxl7gfdv/Lw8Yjy6PR49ksxiz+rN2zBjyNPTmedZ4yL7pXitfPXjJvI2+Od733Ex8TH57PHp8hliUrk7Wf9crXzlfse8z3g5+73zK/M/4o/yD/Ev+eALWA2IDqgMeBxoHpgU2BI0HOQUuCzgRjgkODNwXfYeuzuewG9kiIa8iykPOhpNDo0OrQJ2FWYeKwjnA4PCR8c/jD2WazhbPbIkAEO2JzxKNIRmRe5K9zsHMi59TMeRplH7U0qiuaGr0gujH6fYxvTFnMg1iLWGlsZ5xKXHJcQ9yHeP/48nhZwsyEZQlXE3USBYntSbikuKQ9SaNzA+ZumTuY7JxcnHx7HmPeonmX5+vMz55/coHKAs6CIymYlPiUxpQvnAhOPWc0lZ1amzrC9eNu5b7g+fAqeMN8T345fyjNM6087Vm6Z/rm9OEM74zKjJcCP0G14HVmcObOzA9ZEVl7s8az47NbcvA5KTnHhWrCLOH5XIPcRbm9ImtRsUiW5563JW9EHCrekw/lz8tvl9AQMdQttZD+IO0v8CqoKfi4MG7hkUWURcJF3YutFq9bPFQYWPjLEvQS7pLOpUZLVy3tX8ZaVrccWp66vHOFyYqiFYMrg1buW0VclbXqt9V2q8tXv1sTv6ajSL9oZdHAD0E/NBUrF4uL76z1WLvzR/SPgh971jmu27buWwmv5EqpXWll6Zf13PVXfrL/qeqn8Q1pG3rKXMp2bMRuFG68vcl7075ySnlh+cDm8M2tFfSKkop3WxZsuVzpVLlzK3GrdKusKqyqfZvpto3bvlRnVN+q8a1pqdWrXVf7YTtve98Onx3NO/V3lu78/LPg57t1QXWt9eb1lbuwuwp2Pd0dt7vrF+YvDXt09pTu+bpXuFe2L2rf+QbXhoZGvcayJrhJ2jS8P3n/9QP+B9qbbZrrWjRaSg+Cg9KDzw+lHLp9OPRw5xHmkeajZkdrj1GPlbRCrYtbR9oy2mTtie29x0OOd3Z4dBz71fbXvSeMTtScVD9Zdop4qujU+OnC06NnRGdenk0/O9C5oPPBuYRzN8/POd9zIfTCpYuBF891sbpOX/K8dOKy++XjV5hX2q66XG3tdu4+9pvzb8d6XHpar7lea7/udr2jd1bvqT7vvrM3/G9cvMm+efXW7Fu9t2Nv372TfEd2l3f32b3se6/vF9wfe7DyIeZhySPVR5WP9R7X/275e4vMRXay37+/+0n0kwcD3IEXf+T/8WWw6Cn5aeWQ4VDDM4dnJ4YDh68/n/t88IXoxdjL4j8pf9a+snh19C+fv7pHEkYGX4tfj79Z/1b77d53Tu86RyNHH7/PeT/2oeSj9sd9n5ifuj7Hfx4aW/gF96Xqq+XXjm+h3x6O54yPizhizoQUQCEDTksD4M1eAMiJAFCvI/ph7qSGnjBoUvdPEPhPPKmzJ8wFgGbEyaWQXAoekUtYHwCUER+B+BgfADs6KsaU3p3Q5nLDIl8pzdTjvLztfd8kdeAfNqnbv+v7nx7Is8ql/9/9vwC01QYO/dnrkQAAAIplWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAAAHCgAwAEAAAAAQAAAF4AAAAAQVNDSUkAAABTY3JlZW5zaG90ADOtIgAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+OTQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTEyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CvHe0K8AAAAcaURPVAAAAAIAAAAAAAAALwAAACgAAAAvAAAALwAAAex9UtyPAAABuElEQVR4AeyYUUrDQBRFpxtJ8NMN+KUuRHEfIn5KcR+iC6nZSLIBdQXKC0x5DEYzSGXO6x0onaSTcuee3te8bE5Ozz6TBtKBj7f3tBFAJLtZtABy2QkgnJ0ACmAEB+B70H+gAMIdgMtXAgUQ7gBcvhIogHAH4PKVQAGEOwCXrwQKINwBuHwlUADhDsDlK4ECCHcALl8JFEC4A3D5SqAAwh2Ay1cCBRDuAFy+EiiAcAfg8pVAAWzfgcuL89R3Xer7Lo3jlMZpSrvXoX3hKxSGT+DN9dUMrvTCQO6GYQZafkY6Dg1wCZ4H9LB99Ie4eViAVi4NoB9WNnMpzeftHLmchgXo02fl8un5JTObwRpgG+Vn+0WQSUiAZfoMnoHKw25q7JUHuYyGBPhT+jK0+7vbeaoEZkcaes9wTNISIF9CG5JeLSVcAn8rn9UONX5BOIBrymfjTKrkCWCVXe0tDgXw2Mqn/ZywAPNNiM+ENem+PfC9n63zrYS/jjzHASx7uFrz6U9eyv3iAPoWodzMmmMBXOPSAdf8NYHlU5kDSv2Xr8YlcMmV8gaG/HhsaY/fnQ8D8Nj6vwzTAH4BAAD//7rSIMsAAAJWSURBVO2ZUU4CQRBEl4tI/PQCfiEH0XgPY/w0xnsYPQhyEbiAegJNuZnQdGZrhy+6druThWV6ZqmtR09DWFxeXf924nF/d9stlxf/d7Hb7bu39w/xO2qT//P13S3UAQIcAJYAPECcQ0wS4PPLa5VdqdLN57bD4WN9s+pwIFQ+BJMAWMDA+KHt08LBPA9xLI81EWM2AP02Cxi2yp4eH474eMBHyUAv5AF6MBaK99lXGfLYbm0FY0wFHrRODuBQ/8PNIjysfvTwqAQPquUBWiBD/e+Apz+za2yudb1dc+7zWQKE6b7nYWysejEnWkgDPKX/WeNrvRB5te0TmicFsKWChuDBDIQaRGmAtpe19C9fsQCGdRi3oQQxNMBiLEyuxakAfd8roGpVyX6O1LScaywsQGtqbWv01TRmuL0ezC7wivH2w4Cxlooua8/5HBagNdSbDcM8wBpka6y9HsZr8+2c2nva60U5DwvwlIppqRYAX170x2a7Hfy3Au+LeWxOFHjQERYgxPmeBVC7fd8PYXSJse2zzJvic2iAvgprAFqqr7ZuKmOhAcJkBnHu8OBPeIAQif61XvVbJs7LVoovGnMPCYBzh8TuPwEydwRyCVAAEpOYAJk7ArkEKACJSUyAzB2BXAIUgMQkJkDmjkAuAQpAYhITIHNHIJcABSAxiQmQuSOQS4ACkJjEBMjcEcglQAFITGICZO4I5BKgACQmMQEydwRyCVAAEpOYAJk7ArkEKACJSUyAzB2BXAIUgMQkJkDmjkAuAQpAYhITIHNHIJcABSAxiQD4B7G2G45A/ZFmAAAAAElFTkSuQmCC"},2008:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_example1-8e7185753db9849b034705c5f540ae77.png"},1205:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_panel-3d1f5c7d5ecc007093c9cd538e14ccad.png"},9978:(t,e,n)=>{n.d(e,{Z:()=>A});const A=n.p+"assets/images/playground_function_panel2-125e7cc112e2a73e0bf30f17ace555bd.png"},8209:(t,e,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/45e94216.1b01c570.js b/assets/js/45e94216.bcb4a71c.js similarity index 98% rename from assets/js/45e94216.1b01c570.js rename to assets/js/45e94216.bcb4a71c.js index 04bfaf834..e324a5705 100644 --- a/assets/js/45e94216.1b01c570.js +++ b/assets/js/45e94216.bcb4a71c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4439],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=n(7294),i=n(3905);n(8209);const o={id:"non-neg-integer",title:"NonNegInteger",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/scalars/non-neg-integer",id:"build/api/schema/scalars/non-neg-integer",title:"NonNegInteger",description:"The [Non Negative Integer] scalar type represents a non negative number",source:"@site/docs/build/api/schema/scalars/non-neg-integer.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/non-neg-integer",permalink:"/build/api/schema/scalars/non-neg-integer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"non-neg-integer",title:"NonNegInteger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Int",permalink:"/build/api/schema/scalars/int"},next:{title:"P2pAvailabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities"}},s={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},g="wrapper";function b(e){let{components:t,...n}=e;return(0,i.kt)(g,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Non Negative Integer]"," scalar type represents a non negative number"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar NonNegInteger\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,i.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4439],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=n(7294),i=n(3905);n(8209);const o={id:"non-neg-integer",title:"NonNegInteger",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/scalars/non-neg-integer",id:"build/api/schema/scalars/non-neg-integer",title:"NonNegInteger",description:"The [Non Negative Integer] scalar type represents a non negative number",source:"@site/docs/build/api/schema/scalars/non-neg-integer.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/non-neg-integer",permalink:"/build/api/schema/scalars/non-neg-integer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"non-neg-integer",title:"NonNegInteger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Int",permalink:"/build/api/schema/scalars/int"},next:{title:"P2pAvailabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities"}},s={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},g="wrapper";function b(e){let{components:t,...n}=e;return(0,i.kt)(g,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Non Negative Integer]"," scalar type represents a non negative number"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar NonNegInteger\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,i.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/484af1f2.b5ff9e27.js b/assets/js/484af1f2.8e3fa63a.js similarity index 99% rename from assets/js/484af1f2.b5ff9e27.js rename to assets/js/484af1f2.8e3fa63a.js index 2f047a023..098c7d580 100644 --- a/assets/js/484af1f2.b5ff9e27.js +++ b/assets/js/484af1f2.8e3fa63a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3305],{3905:(e,t,a)=>{a.d(t,{Zo:()=>g,kt:()=>N});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var M=n.createContext({}),c=function(e){var t=n.useContext(M),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},g=function(e){var t=c(e.components);return n.createElement(M.Provider,{value:t},e.children)},I="mdxType",l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,M=e.parentName,g=s(e,["components","mdxType","originalType","parentName"]),I=c(a),h=i,N=I["".concat(M,".").concat(h)]||I[h]||l[h]||o;return a?n.createElement(N,r(r({ref:t},g),{},{components:a})):n.createElement(N,r({ref:t},g))}));function N(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=h;var s={};for(var M in t)hasOwnProperty.call(t,M)&&(s[M]=t[M]);s.originalType=e,s[I]="string"==typeof e?e:i,r[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>M,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=a(7462),i=(a(7294),a(3905));a(8209);const o={id:"bridge",title:"Archethic Bridge $UCO one-way"},r=void 0,s={unversionedId:"FAQ/bridge",id:"FAQ/bridge",title:"Archethic Bridge $UCO one-way",description:"General",source:"@site/docs/FAQ/bridge.md",sourceDirName:"FAQ",slug:"/FAQ/bridge",permalink:"/FAQ/bridge",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"bridge",title:"Archethic Bridge $UCO one-way"},sidebar:"docs",previous:{title:"Archethic Bridge 2-ways",permalink:"/FAQ/bridge-2-ways"},next:{title:"Wallet",permalink:"/FAQ/wallet"}},M={},c=[{value:"General",id:"general",level:2},{value:"What is Archethic Bridge $UCO one-way?",id:"what-is-archethic-bridge-uco-one-way",level:3},{value:"how to access the Archethic Bridge $UCO one-way?",id:"how-to-access-the-archethic-bridge-uco-one-way",level:3},{value:"How long is the predetermined time?",id:"how-long-is-the-predetermined-time",level:3},{value:"Which blockchain is better to bridge my UCOs?",id:"which-blockchain-is-better-to-bridge-my-ucos",level:3},{value:"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?",id:"can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"What types of assets can be moved across the crypto bridge on the Archethic blockchain?",id:"what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"What are the fees associated with using the crypto bridge on the Archethic blockchain?",id:"what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?",id:"i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address",level:3},{value:"Metamask",id:"metamask",level:2},{value:"Will the Archethic Network be available on Metamask?",id:"will-the-archethic-network-be-available-on-metamask",level:3},{value:"How can I add a network on Metamask?",id:"how-can-i-add-a-network-on-metamask",level:3},{value:"How to install Metamask?",id:"how-to-install-metamask",level:3},{value:"Issues management",id:"issues-management",level:2},{value:"What happens if a problem occurs, or I refuse a transaction during the transfer?",id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer",level:3},{value:"If I sent the tokens to a wrong Mainnet address, what to do?",id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do",level:3},{value:"What if I want to reset the process?",id:"what-if-i-want-to-reset-the-process",level:3},{value:"Can I help the developers analyze the problems?",id:"can-i-help-the-developers-analyze-the-problems",level:3},{value:"Dev",id:"dev",level:2},{value:"How can developers use Archethic bridge to create new decentralized applications?",id:"how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications",level:3},{value:"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?",id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet",level:3}],g={toc:c},I="wrapper";function l(e){let{components:t,...o}=e;return(0,i.kt)(I,(0,n.Z)({},g,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"general"},"General"),(0,i.kt)("h3",{id:"what-is-archethic-bridge-uco-one-way"},(0,i.kt)("strong",{parentName:"h3"},"What is Archethic Bridge $UCO one-way?")),(0,i.kt)("p",null,"Archethic's bridge relies on atomic swap technology to have a transactional agreement used in the cryptocurrency to transfer funds after acknowledgment of a cryptographic proof of payment.\nThis acknowledgment must be done in a predetermined time (known as timelock).\nAfter this time, you can claim your funds, so your UCO will be refunded into your ERC20 wallet."),(0,i.kt)("h3",{id:"how-to-access-the-archethic-bridge-uco-one-way"},(0,i.kt)("strong",{parentName:"h3"},"how to access the Archethic Bridge $UCO one-way?")),(0,i.kt)("p",null,"You can access the bridge at : ",(0,i.kt)("a",{parentName:"p",href:"https://bridge.archethic.net"},"https://bridge.archethic.net")),(0,i.kt)("h3",{id:"how-long-is-the-predetermined-time"},(0,i.kt)("strong",{parentName:"h3"},"How long is the predetermined time?")),(0,i.kt)("p",null,"The timelock lasts 2 hours."),(0,i.kt)("h3",{id:"which-blockchain-is-better-to-bridge-my-ucos"},(0,i.kt)("strong",{parentName:"h3"},"Which blockchain is better to bridge my UCOs?")),(0,i.kt)("p",null,"Using the 3 blockchains, the result will be the same, but fees are not the same between ETH/MATIC/BSC.\nMATIC has the lowest fees."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"bridge-blockchains",src:a(2909).Z,width:"111",height:"102"})),(0,i.kt)("h3",{id:"can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"Archethic\u2019s bridge leverages Atomic Swap, which is a way to bring safely assets between chains."),(0,i.kt)("p",null,"By using the bridge, you will create contract on ETH/BSC/MATIC and transfer your UCO in there. This contract is called \u201cHashed Time-locked contract\u201d where the funds will be locked until the reveal of a secret or after lock time."),(0,i.kt)("p",null,"Once done, the same will be done on Archethic side. The two chains are now ready to transfer assets.\nThe transfer itself consists of revealing the private part of the secret encoded in the contracts, to allow the exchange."),(0,i.kt)("p",null,"Once the secret is revealed in one chain, the second can proceed to the reveal, as the secret is now public.\nAtomic swap provides secure transfers between chains as there is no pool holding all the assets but hard-coding of recipients and rules in a one-time contract."),(0,i.kt)("h3",{id:"what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"What types of assets can be moved across the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"Only UCOs can be \u201cbridged\u201d."),(0,i.kt)("h3",{id:"what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"What are the fees associated with using the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"You would have to pay the fees on ETH/BSC/MATIC to transfers your UCO and proceed to the transfer.\nHowever, you won\u2019t have to pay the fees on Archethic, which is the purpose of the bridge: to get funds on the Archethic\u2019s network."),(0,i.kt)("h3",{id:"i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address"},(0,i.kt)("strong",{parentName:"h3"},"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?")),(0,i.kt)("p",null,"On the wallet app, from the version 2.0.8, the network is displayed in the main menu (click on the burger icon to access to the main menu)."),(0,i.kt)("h2",{id:"metamask"},"Metamask"),(0,i.kt)("h3",{id:"will-the-archethic-network-be-available-on-metamask"},(0,i.kt)("strong",{parentName:"h3"},"Will the Archethic Network be available on Metamask?")),(0,i.kt)("p",null,"No, Archethic blockchain is not Ethereum Virtual Machine (EVM) compatible."),(0,i.kt)("h3",{id:"how-can-i-add-a-network-on-metamask"},(0,i.kt)("strong",{parentName:"h3"},"How can I add a network on Metamask?")),(0,i.kt)("p",null,"Here is a link giving a tutorial to add a custom network RPC on Metamask : ",(0,i.kt)("a",{parentName:"p",href:"https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC"},"https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC")),(0,i.kt)("h3",{id:"how-to-install-metamask"},(0,i.kt)("strong",{parentName:"h3"},"How to install Metamask?")),(0,i.kt)("p",null,"Here is a link giving a tutorial to install Metamask : ",(0,i.kt)("a",{parentName:"p",href:"https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet"},"https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet")),(0,i.kt)("h2",{id:"issues-management"},"Issues management"),(0,i.kt)("h3",{id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer"},(0,i.kt)("strong",{parentName:"h3"},"What happens if a problem occurs, or I refuse a transaction during the transfer?")),(0,i.kt)("p",null,'During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "REFUND" button available on your Archethic Bridge application.'),(0,i.kt)("h3",{id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do"},(0,i.kt)("strong",{parentName:"h3"},"If I sent the tokens to a wrong Mainnet address, what to do?")),(0,i.kt)("p",null,"You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1)."),(0,i.kt)("h3",{id:"what-if-i-want-to-reset-the-process"},(0,i.kt)("strong",{parentName:"h3"},"What if I want to reset the process?")),(0,i.kt)("p",null,"The bridge will only allow one transfer at a time. If you have started a transfer, you must complete it before you can start a new one."),(0,i.kt)("p",null,"In some cases, a transfer in progress can be resumed at a later stage, for example if you have declined a transaction in your wallet or closed your browser."),(0,i.kt)("p",null,"If you don't want to continue the current transfer, you can use the 'clear local storage' option to reset the transfer tool and start a new transfer."),(0,i.kt)("p",null,"Warning: If you clear your local memory, the funds associated with the unfinished transfer will be lost."),(0,i.kt)("h3",{id:"can-i-help-the-developers-analyze-the-problems"},(0,i.kt)("strong",{parentName:"h3"},"Can I help the developers analyze the problems?")),(0,i.kt)("p",null,"You can help developers improve the application by submitting information that describes the state of the application. "),(0,i.kt)("p",null,"To do this, you can export your local storage with the option available on the interface."),(0,i.kt)("h2",{id:"dev"},"Dev"),(0,i.kt)("h3",{id:"how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications"},(0,i.kt)("strong",{parentName:"h3"},"How can developers use Archethic bridge to create new decentralized applications?")),(0,i.kt)("p",null,"Developers can use blockchain bridges to create new decentralized applications by connecting different blockchain networks to enable the movement of assets, data, and information across them. "),(0,i.kt)("p",null,"This allows for the creation of interoperable DApps that can utilize the features and capabilities of multiple blockchain networks. "),(0,i.kt)("p",null,"Developers can use smart contract or atomic swap technology to facilitate the transfer of assets across different networks, and can also use cross-chain data oracles to access off-chain data on different networks."),(0,i.kt)("h3",{id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet"},(0,i.kt)("strong",{parentName:"h3"},"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?")),(0,i.kt)("p",null,"The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don\u2019t forget the 24 words) and create/import a wallet on the Testnet network."))}l.isMDXComponent=!0},2909:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTExcHgiIGhlaWdodD0iMTAycHgiIHZpZXdCb3g9IjAgMCAxMTEgMTAyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkJsb2NrY2hhbjwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cmVjdCBpZD0icGF0aC0xIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMjgiPjwvcmVjdD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJCcmlkZ2UiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJCbG9ja2NoYW4iPgogICAgICAgICAgICA8ZyBpZD0iQlNDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS4wMDAwMDAsIDAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSIjRjNCQTJGIiBjeD0iMjQiIGN5PSIyNCIgcj0iMjQiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikljb25zX3gyRl9pY29uLTI0X3gyRl9uZXR3b3Jrc194MkZfYmluYW5jZV94NUZfc21hcnRfeDVGX2NoYWluIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgOC4wMDAwMDApIiBmaWxsPSIjMTMxNDE1Ij4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjIxMDY2MywxOC41NTQ3OTY3IEwyNS44NDEzNTI0LDIyLjE2NTg1MzcgTDE2LDMyIEw2LjE2OTA1MDcyLDIyLjE2NTg1MzcgTDkuNzg5MzM2OCwxOC41NTQ3OTY3IEwxNiwyNC43Njc0Nzk3IEwyMi4yMjEwNjYzLDE4LjU1NDc5NjcgWiBNMTYsMTIuMzMxNzA3MyBMMTkuNjcyMzAxNywxNi4wMDUyMDMzIEwxOS42NzIzMDE3LDE2LjAwNTIwMzMgTDE5LjY3MjMwMTcsMTYuMDA1MjAzMyBMMTYsMTkuNjc4Njk5MiBMMTIuMzM4MTAxNCwxNi4wMTU2MDk4IEwxMi4zMzgxMDE0LDE2LjAwNTIwMzMgTDEyLjMzODEwMTQsMTYuMDA1MjAzMyBMMTIuOTgzMDk0OSwxNS4zNiBMMTMuMjk1MTg4NiwxNS4wNDc4MDQ5IEwxNiwxMi4zMzE3MDczIFogTTMuNjIwMjg2MDksMTIuMzgzNzM5OCBMNy4yNDA1NzIxNywxNi4wMDUyMDMzIEwzLjYyMDI4NjA5LDE5LjYxNjI2MDIgTDAsMTUuOTk0Nzk2NyBMMy42MjAyODYwOSwxMi4zODM3Mzk4IFogTTI4LjM3OTcxMzksMTIuMzgzNzM5OCBMMzIsMTYuMDA1MjAzMyBMMjguMzc5NzEzOSwxOS42MTYyNjAyIEwyNC43NTk0Mjc4LDE1Ljk5NDc5NjcgTDI4LjM3OTcxMzksMTIuMzgzNzM5OCBaIE0xNiwwIEwyNS44MzA5NDkzLDkuODM0MTQ2MzQgTDIyLjIxMDY2MzIsMTMuNDU1NjA5OCBMMTYsNy4yMzI1MjAzMyBMOS43ODkzMzY4LDEzLjQ0NTIwMzMgTDYuMTY5MDUwNzIsOS44MzQxNDYzNCBMMTYsMCBaIiBpZD0iQ29tYmluZWQtU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBpZD0iUG9seWdvbiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjMuMDAwMDAwLCA1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy45OTA1NTgsMCBMMjMuOTkwNTU4LDAgQzM3LjI1MTQ3NzIsMCA0OCwxMC43NDY0MDk2IDQ4LDI0LjAwNDcyMTYgTDQ4LDI0LjAwNDcyMTYgQzQ4LDM3LjI2MzAzMzYgMzcuMjUxNDc3Miw0OCAyNCw0OCBMMjQsNDggQzEwLjczOTA4MzksNDggMCwzNy4yNTM1OTA0IDAsMjQuMDA0NzIxNiBMMCwyNC4wMDQ3MjE2IEMtMC4wMDk0Mzg4NzkxLDEwLjc0NjQwOTYgMTAuNzM5MDgzOSwwIDIzLjk5MDU1OCwwIFoiIGlkPSJQYXRoIiBmaWxsPSIjODI0N0U1IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJDbGlwcGVkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgMTAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU1ZHSURfMV8iPjwvZz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTcwNTE5NCw4LjUyNzU3Nzk0IEMyMy41ODQ1MDkyLDguMTkxODQ2NTIgMjIuODM1MTg0Niw4LjE5MTg0NjUyIDIyLjE3MjMyMDYsOC41Mjc1Nzc5NCBMMTcuNTAzNDUyNCwxMS4yOTAxNjc5IEwxNC4zMzMyMzMzLDEzLjA0NTU2MzUgTDkuNzUwODI1NTgsMTUuNzk4NTYxMiBDOS4xNjQ4MTUzNywxNi4xMzQyOTI2IDguNDE1NDkwODQsMTYuMTM0MjkyNiA3Ljc1MjYyNjg0LDE1Ljc5ODU2MTIgTDQuMTY5MzE4NTIsMTMuNjIxMTAzMSBDMy41ODMzMDgzMiwxMy4yODUzNzE3IDMuMTcwMjE5MTUsMTIuNjEzOTA4OSAzLjE3MDIxOTE1LDExLjg2NTcwNzQgTDMuMTcwMjE5MTUsNy42ODM0NTMyNCBDMy4xNzAyMTkxNSw3LjAxMTk5MDQxIDMuNTA2NDU0NTIsNi4zNTAxMTk5IDQuMTY5MzE4NTIsNS45MjgwNTc1NSBMNy43NTI2MjY4NCwzLjgzNjkzMDQ2IEM4LjMzODYzNzA1LDMuNTAxMTk5MDQgOS4wODc5NjE1NywzLjUwMTE5OTA0IDkuNzUwODI1NTgsMy44MzY5MzA0NiBMMTMuMzM0MTMzOSw2LjAxNDM4ODQ5IEMxMy45MjAxNDQxLDYuMzUwMTE5OSAxNC4zMzMyMzMzLDcuMDIxNTgyNzMgMTQuMzMzMjMzMyw3Ljc2OTc4NDE3IEwxNC4zMzMyMzMzLDEwLjUzMjM3NDEgTDE3LjUwMzQ1MjQsOC42OTA2NDc0OCBMMTcuNTAzNDUyNCw1Ljg1MTMxODk0IEMxNy41MDM0NTI0LDUuMTc5ODU2MTIgMTcuMTY3MjE3MSw0LjUxNzk4NTYxIDE2LjUwNDM1Myw0LjA5NTkyMzI2IEw5LjgzNzI4NjEsMC4xNjMwNjk1NDQgQzkuMjUxMjc1ODksLTAuMTcyNjYxODcxIDguNTAxOTUxMzcsLTAuMTcyNjYxODcxIDcuODM5MDg3MzYsMC4xNjMwNjk1NDQgTDEuMDA4NzA2MDksNC4xODIyNTQyIEMwLjM0NTg0MjA4OSw0LjUxNzk4NTYxIDAuMDA5NjA2NzI0NzEsNS4xODk0NDg0NCAwLjAwOTYwNjcyNDcxLDUuODUxMzE4OTQgTDAuMDA5NjA2NzI0NzEsMTMuNzA3NDM0MSBDMC4wMDk2MDY3MjQ3MSwxNC4zNzg4OTY5IDAuMzQ1ODQyMDg5LDE1LjA0MDc2NzQgMS4wMDg3MDYwOSwxNS40NjI4Mjk3IEw3Ljc2MjIzMzU2LDE5LjM5NTY4MzUgQzguMzQ4MjQzNzcsMTkuNzMxNDE0OSA5LjA5NzU2ODMsMTkuNzMxNDE0OSA5Ljc2MDQzMjMsMTkuMzk1NjgzNSBMMTQuMzQyODQsMTYuNzE5NDI0NSBMMTcuNTEzMDU5MSwxNC44Nzc2OTc4IEwyMi4wOTU0NjY4LDEyLjIwMTQzODggQzIyLjY4MTQ3NywxMS44NjU3MDc0IDIzLjQzMDgwMTYsMTEuODY1NzA3NCAyNC4wOTM2NjU2LDEyLjIwMTQzODggTDI3LjY3Njk3MzksMTQuMjkyNTY1OSBDMjguMjYyOTg0MSwxNC42MjgyOTc0IDI4LjY3NjA3MzMsMTUuMjk5NzYwMiAyOC42NzYwNzMzLDE2LjA0Nzk2MTYgTDI4LjY3NjA3MzMsMjAuMjMwMjE1OCBDMjguNjc2MDczMywyMC45MDE2Nzg3IDI4LjMzOTgzNzksMjEuNTYzNTQ5MiAyNy42NzY5NzM5LDIxLjk4NTYxMTUgTDI0LjE4MDEyNjEsMjQuMDc2NzM4NiBDMjMuNTk0MTE1OSwyNC40MTI0NyAyMi44NDQ3OTE0LDI0LjQxMjQ3IDIyLjE4MTkyNzMsMjQuMDc2NzM4NiBMMTguNTg5MDEyMywyMS45ODU2MTE1IEMxOC4wMDMwMDIxLDIxLjY0OTg4MDEgMTcuNTg5OTEyOSwyMC45Nzg0MTczIDE3LjU4OTkxMjksMjAuMjMwMjE1OCBMMTcuNTg5OTEyOSwxNy41NTM5NTY4IEwxNC40MTk2OTM4LDE5LjM5NTY4MzUgTDE0LjQxOTY5MzgsMjIuMTU4MjczNCBDMTQuNDE5NjkzOCwyMi44Mjk3MzYyIDE0Ljc1NTkyOTIsMjMuNDkxNjA2NyAxNS40MTg3OTMyLDIzLjkxMzY2OTEgTDIyLjE3MjMyMDYsMjcuODQ2NTIyOCBDMjIuNzU4MzMwOCwyOC4xODIyNTQyIDIzLjUwNzY1NTQsMjguMTgyMjU0MiAyNC4xNzA1MTk0LDI3Ljg0NjUyMjggTDMwLjkyNDA0NjgsMjMuOTEzNjY5MSBDMzEuNTEwMDU3LDIzLjU3NzkzNzYgMzEuOTIzMTQ2MiwyMi45MDY0NzQ4IDMxLjkyMzE0NjIsMjIuMTU4MjczNCBMMzEuOTIzMTQ2MiwxNC4yMTU4MjczIEMzMS45MjMxNDYyLDEzLjU0NDM2NDUgMzEuNTg2OTEwOCwxMi44ODI0OTQgMzAuOTI0MDQ2OCwxMi40NjA0MzE3IEwyNC4xNzA1MTk0LDguNTI3NTc3OTQgWiIgaWQ9IlBhdGgiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkV0aGVyZXVtIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNTQuMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC00NSI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0iIzYyN0VFQSIgY3g9IjI0IiBjeT0iMjQiIHI9IjI0Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMjQuNzQ3OTQ5NyAxOS4zMDIzNTEgMzUuOTkzNDM5IDI0LjMyODA0ODEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF8xXyIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMTMuNTAyNDYwNCAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfMl8iIGZpbGwtb3BhY2l0eT0iMC42MDIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMi45NDkxNTI1IDI0Ljc0Nzk0OTcgNDEuOTkwMTU4NiAzNiAyNi40MjA5OTUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfM18iIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyA0MS45OTAxNTg2IDI0Ljc0Nzk0OTcgMzIuOTQ5MTUyNSAxMy41MDI0NjA0IDI2LjQyMDk5NTEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF80XyIgZmlsbC1vcGFjaXR5PSIwLjIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMC44NTYyMDU2IDM1Ljk5MzQzOSAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF81XyIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxNCAyNC4yMTk3NjE1IDI1IDMxIDI1IDE5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3305],{3905:(e,t,a)=>{a.d(t,{Zo:()=>g,kt:()=>N});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var M=n.createContext({}),c=function(e){var t=n.useContext(M),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},g=function(e){var t=c(e.components);return n.createElement(M.Provider,{value:t},e.children)},I="mdxType",l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,M=e.parentName,g=s(e,["components","mdxType","originalType","parentName"]),I=c(a),h=i,N=I["".concat(M,".").concat(h)]||I[h]||l[h]||o;return a?n.createElement(N,r(r({ref:t},g),{},{components:a})):n.createElement(N,r({ref:t},g))}));function N(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=h;var s={};for(var M in t)hasOwnProperty.call(t,M)&&(s[M]=t[M]);s.originalType=e,s[I]="string"==typeof e?e:i,r[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>M,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=a(7462),i=(a(7294),a(3905));a(8209);const o={id:"bridge",title:"Archethic Bridge $UCO one-way"},r=void 0,s={unversionedId:"FAQ/bridge",id:"FAQ/bridge",title:"Archethic Bridge $UCO one-way",description:"General",source:"@site/docs/FAQ/bridge.md",sourceDirName:"FAQ",slug:"/FAQ/bridge",permalink:"/FAQ/bridge",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"bridge",title:"Archethic Bridge $UCO one-way"},sidebar:"docs",previous:{title:"Archethic Bridge 2-ways",permalink:"/FAQ/bridge-2-ways"},next:{title:"Wallet",permalink:"/FAQ/wallet"}},M={},c=[{value:"General",id:"general",level:2},{value:"What is Archethic Bridge $UCO one-way?",id:"what-is-archethic-bridge-uco-one-way",level:3},{value:"how to access the Archethic Bridge $UCO one-way?",id:"how-to-access-the-archethic-bridge-uco-one-way",level:3},{value:"How long is the predetermined time?",id:"how-long-is-the-predetermined-time",level:3},{value:"Which blockchain is better to bridge my UCOs?",id:"which-blockchain-is-better-to-bridge-my-ucos",level:3},{value:"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?",id:"can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"What types of assets can be moved across the crypto bridge on the Archethic blockchain?",id:"what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"What are the fees associated with using the crypto bridge on the Archethic blockchain?",id:"what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain",level:3},{value:"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?",id:"i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address",level:3},{value:"Metamask",id:"metamask",level:2},{value:"Will the Archethic Network be available on Metamask?",id:"will-the-archethic-network-be-available-on-metamask",level:3},{value:"How can I add a network on Metamask?",id:"how-can-i-add-a-network-on-metamask",level:3},{value:"How to install Metamask?",id:"how-to-install-metamask",level:3},{value:"Issues management",id:"issues-management",level:2},{value:"What happens if a problem occurs, or I refuse a transaction during the transfer?",id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer",level:3},{value:"If I sent the tokens to a wrong Mainnet address, what to do?",id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do",level:3},{value:"What if I want to reset the process?",id:"what-if-i-want-to-reset-the-process",level:3},{value:"Can I help the developers analyze the problems?",id:"can-i-help-the-developers-analyze-the-problems",level:3},{value:"Dev",id:"dev",level:2},{value:"How can developers use Archethic bridge to create new decentralized applications?",id:"how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications",level:3},{value:"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?",id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet",level:3}],g={toc:c},I="wrapper";function l(e){let{components:t,...o}=e;return(0,i.kt)(I,(0,n.Z)({},g,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"general"},"General"),(0,i.kt)("h3",{id:"what-is-archethic-bridge-uco-one-way"},(0,i.kt)("strong",{parentName:"h3"},"What is Archethic Bridge $UCO one-way?")),(0,i.kt)("p",null,"Archethic's bridge relies on atomic swap technology to have a transactional agreement used in the cryptocurrency to transfer funds after acknowledgment of a cryptographic proof of payment.\nThis acknowledgment must be done in a predetermined time (known as timelock).\nAfter this time, you can claim your funds, so your UCO will be refunded into your ERC20 wallet."),(0,i.kt)("h3",{id:"how-to-access-the-archethic-bridge-uco-one-way"},(0,i.kt)("strong",{parentName:"h3"},"how to access the Archethic Bridge $UCO one-way?")),(0,i.kt)("p",null,"You can access the bridge at : ",(0,i.kt)("a",{parentName:"p",href:"https://bridge.archethic.net"},"https://bridge.archethic.net")),(0,i.kt)("h3",{id:"how-long-is-the-predetermined-time"},(0,i.kt)("strong",{parentName:"h3"},"How long is the predetermined time?")),(0,i.kt)("p",null,"The timelock lasts 2 hours."),(0,i.kt)("h3",{id:"which-blockchain-is-better-to-bridge-my-ucos"},(0,i.kt)("strong",{parentName:"h3"},"Which blockchain is better to bridge my UCOs?")),(0,i.kt)("p",null,"Using the 3 blockchains, the result will be the same, but fees are not the same between ETH/MATIC/BSC.\nMATIC has the lowest fees."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"bridge-blockchains",src:a(2909).Z,width:"111",height:"102"})),(0,i.kt)("h3",{id:"can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"Archethic\u2019s bridge leverages Atomic Swap, which is a way to bring safely assets between chains."),(0,i.kt)("p",null,"By using the bridge, you will create contract on ETH/BSC/MATIC and transfer your UCO in there. This contract is called \u201cHashed Time-locked contract\u201d where the funds will be locked until the reveal of a secret or after lock time."),(0,i.kt)("p",null,"Once done, the same will be done on Archethic side. The two chains are now ready to transfer assets.\nThe transfer itself consists of revealing the private part of the secret encoded in the contracts, to allow the exchange."),(0,i.kt)("p",null,"Once the secret is revealed in one chain, the second can proceed to the reveal, as the secret is now public.\nAtomic swap provides secure transfers between chains as there is no pool holding all the assets but hard-coding of recipients and rules in a one-time contract."),(0,i.kt)("h3",{id:"what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"What types of assets can be moved across the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"Only UCOs can be \u201cbridged\u201d."),(0,i.kt)("h3",{id:"what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"},"What are the fees associated with using the crypto bridge on the Archethic blockchain?")),(0,i.kt)("p",null,"You would have to pay the fees on ETH/BSC/MATIC to transfers your UCO and proceed to the transfer.\nHowever, you won\u2019t have to pay the fees on Archethic, which is the purpose of the bridge: to get funds on the Archethic\u2019s network."),(0,i.kt)("h3",{id:"i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address"},(0,i.kt)("strong",{parentName:"h3"},"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?")),(0,i.kt)("p",null,"On the wallet app, from the version 2.0.8, the network is displayed in the main menu (click on the burger icon to access to the main menu)."),(0,i.kt)("h2",{id:"metamask"},"Metamask"),(0,i.kt)("h3",{id:"will-the-archethic-network-be-available-on-metamask"},(0,i.kt)("strong",{parentName:"h3"},"Will the Archethic Network be available on Metamask?")),(0,i.kt)("p",null,"No, Archethic blockchain is not Ethereum Virtual Machine (EVM) compatible."),(0,i.kt)("h3",{id:"how-can-i-add-a-network-on-metamask"},(0,i.kt)("strong",{parentName:"h3"},"How can I add a network on Metamask?")),(0,i.kt)("p",null,"Here is a link giving a tutorial to add a custom network RPC on Metamask : ",(0,i.kt)("a",{parentName:"p",href:"https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC"},"https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC")),(0,i.kt)("h3",{id:"how-to-install-metamask"},(0,i.kt)("strong",{parentName:"h3"},"How to install Metamask?")),(0,i.kt)("p",null,"Here is a link giving a tutorial to install Metamask : ",(0,i.kt)("a",{parentName:"p",href:"https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet"},"https://www.coindesk.com/learn/how-to-set-up-a-metamask-wallet")),(0,i.kt)("h2",{id:"issues-management"},"Issues management"),(0,i.kt)("h3",{id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer"},(0,i.kt)("strong",{parentName:"h3"},"What happens if a problem occurs, or I refuse a transaction during the transfer?")),(0,i.kt)("p",null,'During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "REFUND" button available on your Archethic Bridge application.'),(0,i.kt)("h3",{id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do"},(0,i.kt)("strong",{parentName:"h3"},"If I sent the tokens to a wrong Mainnet address, what to do?")),(0,i.kt)("p",null,"You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1)."),(0,i.kt)("h3",{id:"what-if-i-want-to-reset-the-process"},(0,i.kt)("strong",{parentName:"h3"},"What if I want to reset the process?")),(0,i.kt)("p",null,"The bridge will only allow one transfer at a time. If you have started a transfer, you must complete it before you can start a new one."),(0,i.kt)("p",null,"In some cases, a transfer in progress can be resumed at a later stage, for example if you have declined a transaction in your wallet or closed your browser."),(0,i.kt)("p",null,"If you don't want to continue the current transfer, you can use the 'clear local storage' option to reset the transfer tool and start a new transfer."),(0,i.kt)("p",null,"Warning: If you clear your local memory, the funds associated with the unfinished transfer will be lost."),(0,i.kt)("h3",{id:"can-i-help-the-developers-analyze-the-problems"},(0,i.kt)("strong",{parentName:"h3"},"Can I help the developers analyze the problems?")),(0,i.kt)("p",null,"You can help developers improve the application by submitting information that describes the state of the application. "),(0,i.kt)("p",null,"To do this, you can export your local storage with the option available on the interface."),(0,i.kt)("h2",{id:"dev"},"Dev"),(0,i.kt)("h3",{id:"how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications"},(0,i.kt)("strong",{parentName:"h3"},"How can developers use Archethic bridge to create new decentralized applications?")),(0,i.kt)("p",null,"Developers can use blockchain bridges to create new decentralized applications by connecting different blockchain networks to enable the movement of assets, data, and information across them. "),(0,i.kt)("p",null,"This allows for the creation of interoperable DApps that can utilize the features and capabilities of multiple blockchain networks. "),(0,i.kt)("p",null,"Developers can use smart contract or atomic swap technology to facilitate the transfer of assets across different networks, and can also use cross-chain data oracles to access off-chain data on different networks."),(0,i.kt)("h3",{id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet"},(0,i.kt)("strong",{parentName:"h3"},"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?")),(0,i.kt)("p",null,"The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don\u2019t forget the 24 words) and create/import a wallet on the Testnet network."))}l.isMDXComponent=!0},2909:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTExcHgiIGhlaWdodD0iMTAycHgiIHZpZXdCb3g9IjAgMCAxMTEgMTAyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkJsb2NrY2hhbjwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cmVjdCBpZD0icGF0aC0xIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMjgiPjwvcmVjdD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJCcmlkZ2UiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJCbG9ja2NoYW4iPgogICAgICAgICAgICA8ZyBpZD0iQlNDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS4wMDAwMDAsIDAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSIjRjNCQTJGIiBjeD0iMjQiIGN5PSIyNCIgcj0iMjQiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikljb25zX3gyRl9pY29uLTI0X3gyRl9uZXR3b3Jrc194MkZfYmluYW5jZV94NUZfc21hcnRfeDVGX2NoYWluIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgOC4wMDAwMDApIiBmaWxsPSIjMTMxNDE1Ij4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjIxMDY2MywxOC41NTQ3OTY3IEwyNS44NDEzNTI0LDIyLjE2NTg1MzcgTDE2LDMyIEw2LjE2OTA1MDcyLDIyLjE2NTg1MzcgTDkuNzg5MzM2OCwxOC41NTQ3OTY3IEwxNiwyNC43Njc0Nzk3IEwyMi4yMjEwNjYzLDE4LjU1NDc5NjcgWiBNMTYsMTIuMzMxNzA3MyBMMTkuNjcyMzAxNywxNi4wMDUyMDMzIEwxOS42NzIzMDE3LDE2LjAwNTIwMzMgTDE5LjY3MjMwMTcsMTYuMDA1MjAzMyBMMTYsMTkuNjc4Njk5MiBMMTIuMzM4MTAxNCwxNi4wMTU2MDk4IEwxMi4zMzgxMDE0LDE2LjAwNTIwMzMgTDEyLjMzODEwMTQsMTYuMDA1MjAzMyBMMTIuOTgzMDk0OSwxNS4zNiBMMTMuMjk1MTg4NiwxNS4wNDc4MDQ5IEwxNiwxMi4zMzE3MDczIFogTTMuNjIwMjg2MDksMTIuMzgzNzM5OCBMNy4yNDA1NzIxNywxNi4wMDUyMDMzIEwzLjYyMDI4NjA5LDE5LjYxNjI2MDIgTDAsMTUuOTk0Nzk2NyBMMy42MjAyODYwOSwxMi4zODM3Mzk4IFogTTI4LjM3OTcxMzksMTIuMzgzNzM5OCBMMzIsMTYuMDA1MjAzMyBMMjguMzc5NzEzOSwxOS42MTYyNjAyIEwyNC43NTk0Mjc4LDE1Ljk5NDc5NjcgTDI4LjM3OTcxMzksMTIuMzgzNzM5OCBaIE0xNiwwIEwyNS44MzA5NDkzLDkuODM0MTQ2MzQgTDIyLjIxMDY2MzIsMTMuNDU1NjA5OCBMMTYsNy4yMzI1MjAzMyBMOS43ODkzMzY4LDEzLjQ0NTIwMzMgTDYuMTY5MDUwNzIsOS44MzQxNDYzNCBMMTYsMCBaIiBpZD0iQ29tYmluZWQtU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBpZD0iUG9seWdvbiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjMuMDAwMDAwLCA1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy45OTA1NTgsMCBMMjMuOTkwNTU4LDAgQzM3LjI1MTQ3NzIsMCA0OCwxMC43NDY0MDk2IDQ4LDI0LjAwNDcyMTYgTDQ4LDI0LjAwNDcyMTYgQzQ4LDM3LjI2MzAzMzYgMzcuMjUxNDc3Miw0OCAyNCw0OCBMMjQsNDggQzEwLjczOTA4MzksNDggMCwzNy4yNTM1OTA0IDAsMjQuMDA0NzIxNiBMMCwyNC4wMDQ3MjE2IEMtMC4wMDk0Mzg4NzkxLDEwLjc0NjQwOTYgMTAuNzM5MDgzOSwwIDIzLjk5MDU1OCwwIFoiIGlkPSJQYXRoIiBmaWxsPSIjODI0N0U1IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJDbGlwcGVkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgMTAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU1ZHSURfMV8iPjwvZz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTcwNTE5NCw4LjUyNzU3Nzk0IEMyMy41ODQ1MDkyLDguMTkxODQ2NTIgMjIuODM1MTg0Niw4LjE5MTg0NjUyIDIyLjE3MjMyMDYsOC41Mjc1Nzc5NCBMMTcuNTAzNDUyNCwxMS4yOTAxNjc5IEwxNC4zMzMyMzMzLDEzLjA0NTU2MzUgTDkuNzUwODI1NTgsMTUuNzk4NTYxMiBDOS4xNjQ4MTUzNywxNi4xMzQyOTI2IDguNDE1NDkwODQsMTYuMTM0MjkyNiA3Ljc1MjYyNjg0LDE1Ljc5ODU2MTIgTDQuMTY5MzE4NTIsMTMuNjIxMTAzMSBDMy41ODMzMDgzMiwxMy4yODUzNzE3IDMuMTcwMjE5MTUsMTIuNjEzOTA4OSAzLjE3MDIxOTE1LDExLjg2NTcwNzQgTDMuMTcwMjE5MTUsNy42ODM0NTMyNCBDMy4xNzAyMTkxNSw3LjAxMTk5MDQxIDMuNTA2NDU0NTIsNi4zNTAxMTk5IDQuMTY5MzE4NTIsNS45MjgwNTc1NSBMNy43NTI2MjY4NCwzLjgzNjkzMDQ2IEM4LjMzODYzNzA1LDMuNTAxMTk5MDQgOS4wODc5NjE1NywzLjUwMTE5OTA0IDkuNzUwODI1NTgsMy44MzY5MzA0NiBMMTMuMzM0MTMzOSw2LjAxNDM4ODQ5IEMxMy45MjAxNDQxLDYuMzUwMTE5OSAxNC4zMzMyMzMzLDcuMDIxNTgyNzMgMTQuMzMzMjMzMyw3Ljc2OTc4NDE3IEwxNC4zMzMyMzMzLDEwLjUzMjM3NDEgTDE3LjUwMzQ1MjQsOC42OTA2NDc0OCBMMTcuNTAzNDUyNCw1Ljg1MTMxODk0IEMxNy41MDM0NTI0LDUuMTc5ODU2MTIgMTcuMTY3MjE3MSw0LjUxNzk4NTYxIDE2LjUwNDM1Myw0LjA5NTkyMzI2IEw5LjgzNzI4NjEsMC4xNjMwNjk1NDQgQzkuMjUxMjc1ODksLTAuMTcyNjYxODcxIDguNTAxOTUxMzcsLTAuMTcyNjYxODcxIDcuODM5MDg3MzYsMC4xNjMwNjk1NDQgTDEuMDA4NzA2MDksNC4xODIyNTQyIEMwLjM0NTg0MjA4OSw0LjUxNzk4NTYxIDAuMDA5NjA2NzI0NzEsNS4xODk0NDg0NCAwLjAwOTYwNjcyNDcxLDUuODUxMzE4OTQgTDAuMDA5NjA2NzI0NzEsMTMuNzA3NDM0MSBDMC4wMDk2MDY3MjQ3MSwxNC4zNzg4OTY5IDAuMzQ1ODQyMDg5LDE1LjA0MDc2NzQgMS4wMDg3MDYwOSwxNS40NjI4Mjk3IEw3Ljc2MjIzMzU2LDE5LjM5NTY4MzUgQzguMzQ4MjQzNzcsMTkuNzMxNDE0OSA5LjA5NzU2ODMsMTkuNzMxNDE0OSA5Ljc2MDQzMjMsMTkuMzk1NjgzNSBMMTQuMzQyODQsMTYuNzE5NDI0NSBMMTcuNTEzMDU5MSwxNC44Nzc2OTc4IEwyMi4wOTU0NjY4LDEyLjIwMTQzODggQzIyLjY4MTQ3NywxMS44NjU3MDc0IDIzLjQzMDgwMTYsMTEuODY1NzA3NCAyNC4wOTM2NjU2LDEyLjIwMTQzODggTDI3LjY3Njk3MzksMTQuMjkyNTY1OSBDMjguMjYyOTg0MSwxNC42MjgyOTc0IDI4LjY3NjA3MzMsMTUuMjk5NzYwMiAyOC42NzYwNzMzLDE2LjA0Nzk2MTYgTDI4LjY3NjA3MzMsMjAuMjMwMjE1OCBDMjguNjc2MDczMywyMC45MDE2Nzg3IDI4LjMzOTgzNzksMjEuNTYzNTQ5MiAyNy42NzY5NzM5LDIxLjk4NTYxMTUgTDI0LjE4MDEyNjEsMjQuMDc2NzM4NiBDMjMuNTk0MTE1OSwyNC40MTI0NyAyMi44NDQ3OTE0LDI0LjQxMjQ3IDIyLjE4MTkyNzMsMjQuMDc2NzM4NiBMMTguNTg5MDEyMywyMS45ODU2MTE1IEMxOC4wMDMwMDIxLDIxLjY0OTg4MDEgMTcuNTg5OTEyOSwyMC45Nzg0MTczIDE3LjU4OTkxMjksMjAuMjMwMjE1OCBMMTcuNTg5OTEyOSwxNy41NTM5NTY4IEwxNC40MTk2OTM4LDE5LjM5NTY4MzUgTDE0LjQxOTY5MzgsMjIuMTU4MjczNCBDMTQuNDE5NjkzOCwyMi44Mjk3MzYyIDE0Ljc1NTkyOTIsMjMuNDkxNjA2NyAxNS40MTg3OTMyLDIzLjkxMzY2OTEgTDIyLjE3MjMyMDYsMjcuODQ2NTIyOCBDMjIuNzU4MzMwOCwyOC4xODIyNTQyIDIzLjUwNzY1NTQsMjguMTgyMjU0MiAyNC4xNzA1MTk0LDI3Ljg0NjUyMjggTDMwLjkyNDA0NjgsMjMuOTEzNjY5MSBDMzEuNTEwMDU3LDIzLjU3NzkzNzYgMzEuOTIzMTQ2MiwyMi45MDY0NzQ4IDMxLjkyMzE0NjIsMjIuMTU4MjczNCBMMzEuOTIzMTQ2MiwxNC4yMTU4MjczIEMzMS45MjMxNDYyLDEzLjU0NDM2NDUgMzEuNTg2OTEwOCwxMi44ODI0OTQgMzAuOTI0MDQ2OCwxMi40NjA0MzE3IEwyNC4xNzA1MTk0LDguNTI3NTc3OTQgWiIgaWQ9IlBhdGgiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkV0aGVyZXVtIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNTQuMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC00NSI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0iIzYyN0VFQSIgY3g9IjI0IiBjeT0iMjQiIHI9IjI0Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMjQuNzQ3OTQ5NyAxOS4zMDIzNTEgMzUuOTkzNDM5IDI0LjMyODA0ODEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF8xXyIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMTMuNTAyNDYwNCAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfMl8iIGZpbGwtb3BhY2l0eT0iMC42MDIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMi45NDkxNTI1IDI0Ljc0Nzk0OTcgNDEuOTkwMTU4NiAzNiAyNi40MjA5OTUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfM18iIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyA0MS45OTAxNTg2IDI0Ljc0Nzk0OTcgMzIuOTQ5MTUyNSAxMy41MDI0NjA0IDI2LjQyMDk5NTEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF80XyIgZmlsbC1vcGFjaXR5PSIwLjIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMC44NTYyMDU2IDM1Ljk5MzQzOSAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF81XyIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxNCAyNC4yMTk3NjE1IDI1IDMxIDI1IDE5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/4ad6f564.85c9a485.js b/assets/js/4ad6f564.20c06c34.js similarity index 97% rename from assets/js/4ad6f564.85c9a485.js rename to assets/js/4ad6f564.20c06c34.js index 5020f01c3..ba9c96bef 100644 --- a/assets/js/4ad6f564.85c9a485.js +++ b/assets/js/4ad6f564.20c06c34.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[932],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),s=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return r?a.createElement(f,c(c({ref:t},d),{},{components:r})):a.createElement(f,c({ref:t},d))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:n,c[1]=l;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>d});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"oracle-services",title:"OracleServices",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/objects/oracle-services",id:"build/api/schema/objects/oracle-services",title:"OracleServices",description:"No description",source:"@site/docs/build/api/schema/objects/oracle-services.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/oracle-services",permalink:"/build/api/schema/objects/oracle-services",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-services",title:"OracleServices",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"OracleData",permalink:"/build/api/schema/objects/oracle-data"},next:{title:"Ownership",permalink:"/build/api/schema/objects/ownership"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'OracleServices.ucoUcoData ',id:"code-style-fontweight-normal-oracleservicesbucobcodeucodata-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"No description"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type OracleServices {\n uco: UcoData\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-oracleservicesbucobcodeucodata-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"OracleServices.",(0,o.kt)("b",null,"uco"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-data"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoData"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-data"},(0,o.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[932],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),s=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return r?a.createElement(f,c(c({ref:t},d),{},{components:r})):a.createElement(f,c({ref:t},d))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:n,c[1]=l;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>d});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"oracle-services",title:"OracleServices",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/objects/oracle-services",id:"build/api/schema/objects/oracle-services",title:"OracleServices",description:"No description",source:"@site/docs/build/api/schema/objects/oracle-services.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/oracle-services",permalink:"/build/api/schema/objects/oracle-services",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-services",title:"OracleServices",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"OracleData",permalink:"/build/api/schema/objects/oracle-data"},next:{title:"Ownership",permalink:"/build/api/schema/objects/ownership"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'OracleServices.ucoUcoData ',id:"code-style-fontweight-normal-oracleservicesbucobcodeucodata-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"No description"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type OracleServices {\n uco: UcoData\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-oracleservicesbucobcodeucodata-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"OracleServices.",(0,o.kt)("b",null,"uco"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-data"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoData"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-data"},(0,o.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/4bf323b4.ab143a49.js b/assets/js/4bf323b4.d17fe127.js similarity index 99% rename from assets/js/4bf323b4.ab143a49.js rename to assets/js/4bf323b4.d17fe127.js index 7cf463d6d..cee6cabd0 100644 --- a/assets/js/4bf323b4.ab143a49.js +++ b/assets/js/4bf323b4.d17fe127.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1601],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(k,l(l({ref:t},c),{},{components:n})):a.createElement(k,l({ref:t},c))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"language",title:"Smart Contracts - Language",sidebar_label:"Language",sidebar_position:2},l=void 0,o={unversionedId:"build/smart-contracts/language/language",id:"build/smart-contracts/language/language",title:"Smart Contracts - Language",description:"A Smart Contract is defined as followed:",source:"@site/docs/build/smart-contracts/language/README.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/",permalink:"/build/smart-contracts/language/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:2,frontMatter:{id:"language",title:"Smart Contracts - Language",sidebar_label:"Language",sidebar_position:2},sidebar:"docs",previous:{title:"Smart Contracts",permalink:"/build/smart-contracts/"},next:{title:"Triggers",permalink:"/build/smart-contracts/language/triggers"}},s={},p=[{value:"Version attribute",id:"version-attribute",level:2},{value:"Basic Types",id:"basic-types",level:2},{value:"Hexadecimals",id:"hexadecimals",level:2},{value:"ASCII character in string",id:"ascii-character-in-string",level:3},{value:"Comparaison",id:"comparaison",level:2},{value:"Arithmetic",id:"arithmetic",level:2},{value:"Ranges",id:"ranges",level:2},{value:"Loop",id:"loop",level:2},{value:"Variables & Scopes",id:"variables--scopes",level:2},{value:"Lists",id:"lists",level:2},{value:"Maps",id:"maps",level:2},{value:"Functions",id:"functions",level:2},{value:"Internal Functions",id:"internal-functions",level:3},{value:"Exported Functions",id:"exported-functions",level:3},{value:"Library",id:"library",level:2},{value:"Reserved keywords",id:"reserved-keywords",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"A Smart Contract is defined as followed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"1 version attribute"),(0,i.kt)("li",{parentName:"ul"},"n ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/actions"},"actions")," block (maximum, one per ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/triggers"},"trigger"),")"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#inherit"},"condition inherit")," block"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#transaction"},"condition transaction")," block"),(0,i.kt)("li",{parentName:"ul"},"n ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#transaction"},"condition transaction on")," block"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#oracle"},"condition oracle")," block")),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"actions")," blocks contain the code to execute when a specific event is triggered."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition inherit")," block is used to check the outgoing transaction (result) of the contract."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition transaction")," block is used to check the incoming transaction that triggered the contract."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition oracle")," block is used to check the incoming oracle transaction when there is an action triggered by oracle."),(0,i.kt)("h2",{id:"version-attribute"},"Version attribute"),(0,i.kt)("p",null,"A version attribute must be specified on the first line of the code. This version is used by the interpreter to have the right behavior in case of breaking changes."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n# Rest of the code\n")),(0,i.kt)("h2",{id:"basic-types"},"Basic Types"),(0,i.kt)("p",null,"This language is based on a functional language (elixir), but we added some imperative twist to it, to make it friendlier!"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Comments are lines that start with a ",(0,i.kt)("inlineCode",{parentName:"li"},"#")),(0,i.kt)("li",{parentName:"ul"},"Strings are double quoted ",(0,i.kt)("inlineCode",{parentName:"li"},'"I am a string"')),(0,i.kt)("li",{parentName:"ul"},"String interpolation ",(0,i.kt)("inlineCode",{parentName:"li"},'"hello #{name}"')),(0,i.kt)("li",{parentName:"ul"},"Integers & Floats can use ",(0,i.kt)("inlineCode",{parentName:"li"},"_")," at your convenience ",(0,i.kt)("inlineCode",{parentName:"li"},"10_000")," ",(0,i.kt)("inlineCode",{parentName:"li"},"10_000.0")),(0,i.kt)("li",{parentName:"ul"},"Floats can use the scientific format: ",(0,i.kt)("inlineCode",{parentName:"li"},"1.0e2 == 100")),(0,i.kt)("li",{parentName:"ul"},"Booleans syntax: ",(0,i.kt)("inlineCode",{parentName:"li"},"true")," / ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},"The absence of value: ",(0,i.kt)("inlineCode",{parentName:"li"},"nil"))),(0,i.kt)("h2",{id:"hexadecimals"},"Hexadecimals"),(0,i.kt)("p",null,"In the Archethic blockchain, we extensively uses hexadecimals to convert all addresses, public keys or hashes on the user-facing interfaces. A Smart Contract is one of these interfaces."),(0,i.kt)("p",null,"To reduce the possibility of errors when comparing hexadecimals (",(0,i.kt)("inlineCode",{parentName:"p"},'"000ABCD" != "000abcd"')," even if it's actually the same value), we introduced a new syntax: ",(0,i.kt)("inlineCode",{parentName:"p"},"0x"),". The goal of this syntax is only to facilitate comparaison: ",(0,i.kt)("inlineCode",{parentName:"p"},"0x000ABCD == 0x000abcd"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'# don\'t\ntransaction.address == "000ABCD123"\n\n# do\ntransaction.address == 0x000ABCD123 # no quotes!\n')),(0,i.kt)("p",null,"So whenever you write a hexadecimal value by hand, prefix it with ",(0,i.kt)("inlineCode",{parentName:"p"},"0x"),"."),(0,i.kt)("h3",{id:"ascii-character-in-string"},"ASCII character in string"),(0,i.kt)("p",null,"If you need to use some specific character in a string, you can use their hexadecimal representation by prefixing the hexadecimal with ",(0,i.kt)("inlineCode",{parentName:"p"},"\\x")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'"hello" == "\\x68\\x65\\x6C\\x6C\\x6F"\n# true\n')),(0,i.kt)("h2",{id:"comparaison"},"Comparaison"),(0,i.kt)("p",null,"We compare by value, which means you can pretty much compare anything and it will work as you expect."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 == 1.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"[1,2] == [1,2]")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'[name: "John"] == [name: "John"]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"true != false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if do ... end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if do ... else ... end"))),(0,i.kt)("h2",{id:"arithmetic"},"Arithmetic"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 + 2 == 3")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"2.0 - 1.1 == 0.9")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 * 2.0 == 2")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 / 1 == 1.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 / 0")," contract failure")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The arithmetic is done with the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/ericmj/decimal"},"Decimal library")," to ensure there is no floating point precision issue.\n",(0,i.kt)("strong",{parentName:"p"},"The only thing to keep in mind is that we truncate at decimal 8."))),(0,i.kt)("h2",{id:"ranges"},"Ranges"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1..5")," is equivalent to ",(0,i.kt)("inlineCode",{parentName:"li"},"[1,2,3,4,5]"))),(0,i.kt)("h2",{id:"loop"},"Loop"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for name in names do ... end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for i in 1..10 do ... end"))),(0,i.kt)("h2",{id:"variables--scopes"},"Variables & Scopes"),(0,i.kt)("p",null,"Variables are not typed, you can assign any value to them."),(0,i.kt)("p",null,"Variables are mutable, if you update a variable declared in a parent scope, it will also update the value of this variable for the parent scope."),(0,i.kt)("p",null,"A new scope is created every time you enter a new block (",(0,i.kt)("inlineCode",{parentName:"p"},"do .. end"),"). A scope can access (read/write) the variables declared in its parent's scope, but not its child's scope."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'names = ["Tom", "Jerry", ""]\ntext = ""\nfor name in names do # ENTER SCOPE 1\n if name != "" do # ENTER SCOPE 1.1\n new_line = "\\n"\n text = "#{name}#{new_line}"\n end # EXIT SCOPE 1.1\n # new_line does not exists here\nend # EXIT SCOPE 1\n# test = "Tom\\nJerry\\n"\n# name and new_line does not exists here\n')),(0,i.kt)("p",null,"Here's the tree of scopes and variables for the above example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"[SCOPE 0]\n\u251c\u2500\u2500 names\n\u251c\u2500\u2500 text\n\u2514\u2500\u2500 [SCOPE 1]\n \u251c\u2500\u2500 name\n \u2514\u2500\u2500 [SCOPE 1.1]\n \u2514\u2500\u2500 new_line\n")),(0,i.kt)("h2",{id:"lists"},"Lists"),(0,i.kt)("p",null,"The list is the data structure to work with collections. The syntax is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[1, 2]"),". An empty list is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),".\nThere is a ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#list"},"List module")," in the library to manipulate lists."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Lists are actually ",(0,i.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Linked_list"},"Linked Lists"),".")),(0,i.kt)("h2",{id:"maps"},"Maps"),(0,i.kt)("p",null,"The map is the key-value data structure in the Smart Contract language. The syntax is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[key1: 1, key2: 2]")," or if key starts with a number: ",(0,i.kt)("inlineCode",{parentName:"p"},'["00001abc...": 1]'),". The keys must be strings.\nThere is 3 ways to retrieve a value:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"map.property")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'map["property"]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'Map.get(map, "property")'))),(0,i.kt)("p",null,"We suggest to use the 1st syntax as often as possible. Use the 2nd or 3rd when dealing with dynamic properties."),(0,i.kt)("p",null,"There is a ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#map"},"Map module")," module in the library to manipulate maps."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Since the maps and the lists have a very close syntax, it is impossible to differentiate an empty map from an empty list. So, for semantic reasons, to create an empty map, use the ",(0,i.kt)("inlineCode",{parentName:"p"},"Map.new()")," function call.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"The brackets are mostly optional! ",(0,i.kt)("inlineCode",{parentName:"p"},"key1: 1, key2: 2")," will work as well. But if you have a nested map, you cannot omit them!")),(0,i.kt)("h2",{id:"functions"},"Functions"),(0,i.kt)("p",null,"In the Archethic Smart Contract Language, you can declare 2 types of functions:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Internal Functions declared with the ",(0,i.kt)("inlineCode",{parentName:"li"},"fun")," keyword"),(0,i.kt)("li",{parentName:"ul"},"Exported Functions declared with the ",(0,i.kt)("inlineCode",{parentName:"li"},"export fun")," keyword")),(0,i.kt)("h3",{id:"internal-functions"},"Internal Functions"),(0,i.kt)("p",null,"Internal functions are functions that are only available in the Smart Contract. They are not callable from the outside."),(0,i.kt)("p",null,"They are declared with the ",(0,i.kt)("inlineCode",{parentName:"p"},"fun")," keyword and can be called from the ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions"},"Action")," or ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/condition"},"Condition")," blocks."),(0,i.kt)("p",null,"They can have 0 argument:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'fun hello() do\n "Hello World!"\nend\n')),(0,i.kt)("p",null,"Or more:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"fun sum(a, b) do\n a + b\nend\n")),(0,i.kt)("p",null,"You can also have the same function name with different signature:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"fun sum(a, b) do\n a + b\nend\n\nfun sum(list) do\n acc = 0\n for i in list do\n acc = acc + i\n end\n acc\nend\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"These functions aren't able to call another internal function")," but can call an Exported one."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Internal functions are able to use ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"library module")," functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"I/O")," but not the functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"UPDATE_CONTRACT"),".")),(0,i.kt)("h3",{id:"exported-functions"},"Exported Functions"),(0,i.kt)("p",null,"Exported functions are callable from the Smart Contract but also through the outside via the JSON-RPC API.\nThey are declared like internal function but with the ",(0,i.kt)("inlineCode",{parentName:"p"},"export fun")," syntax."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"export fun get_current_count() do\n String.to_number contract.content\nend\n")),(0,i.kt)("p",null,"Unlike internal functions, they can be called from any block of code."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"External functions are not able to use ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"library module")," functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"I/O")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"Transaction"),".")),(0,i.kt)("h2",{id:"library"},"Library"),(0,i.kt)("p",null,"You may use any functions from the library. The syntax is ",(0,i.kt)("inlineCode",{parentName:"p"},"Module.function(arg1, arg2)"),"."),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"The parenthesis are actually optional! ",(0,i.kt)("inlineCode",{parentName:"p"},"Module.function arg1, arg2")," will work as well.")),(0,i.kt)("p",null,"To see the list of functions available in the Smart Contract Language, check the ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"Library page"),"."),(0,i.kt)("h2",{id:"reserved-keywords"},"Reserved keywords"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"do")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"else"))),(0,i.kt)("p",null,"... to be completed"))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1601],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(k,l(l({ref:t},c),{},{components:n})):a.createElement(k,l({ref:t},c))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>p});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"language",title:"Smart Contracts - Language",sidebar_label:"Language",sidebar_position:2},l=void 0,o={unversionedId:"build/smart-contracts/language/language",id:"build/smart-contracts/language/language",title:"Smart Contracts - Language",description:"A Smart Contract is defined as followed:",source:"@site/docs/build/smart-contracts/language/README.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/",permalink:"/build/smart-contracts/language/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:2,frontMatter:{id:"language",title:"Smart Contracts - Language",sidebar_label:"Language",sidebar_position:2},sidebar:"docs",previous:{title:"Smart Contracts",permalink:"/build/smart-contracts/"},next:{title:"Triggers",permalink:"/build/smart-contracts/language/triggers"}},s={},p=[{value:"Version attribute",id:"version-attribute",level:2},{value:"Basic Types",id:"basic-types",level:2},{value:"Hexadecimals",id:"hexadecimals",level:2},{value:"ASCII character in string",id:"ascii-character-in-string",level:3},{value:"Comparaison",id:"comparaison",level:2},{value:"Arithmetic",id:"arithmetic",level:2},{value:"Ranges",id:"ranges",level:2},{value:"Loop",id:"loop",level:2},{value:"Variables & Scopes",id:"variables--scopes",level:2},{value:"Lists",id:"lists",level:2},{value:"Maps",id:"maps",level:2},{value:"Functions",id:"functions",level:2},{value:"Internal Functions",id:"internal-functions",level:3},{value:"Exported Functions",id:"exported-functions",level:3},{value:"Library",id:"library",level:2},{value:"Reserved keywords",id:"reserved-keywords",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"A Smart Contract is defined as followed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"1 version attribute"),(0,i.kt)("li",{parentName:"ul"},"n ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/actions"},"actions")," block (maximum, one per ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/triggers"},"trigger"),")"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#inherit"},"condition inherit")," block"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#transaction"},"condition transaction")," block"),(0,i.kt)("li",{parentName:"ul"},"n ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#transaction"},"condition transaction on")," block"),(0,i.kt)("li",{parentName:"ul"},"0 or 1 ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/condition#oracle"},"condition oracle")," block")),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"actions")," blocks contain the code to execute when a specific event is triggered."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition inherit")," block is used to check the outgoing transaction (result) of the contract."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition transaction")," block is used to check the incoming transaction that triggered the contract."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition oracle")," block is used to check the incoming oracle transaction when there is an action triggered by oracle."),(0,i.kt)("h2",{id:"version-attribute"},"Version attribute"),(0,i.kt)("p",null,"A version attribute must be specified on the first line of the code. This version is used by the interpreter to have the right behavior in case of breaking changes."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"@version 1\n# Rest of the code\n")),(0,i.kt)("h2",{id:"basic-types"},"Basic Types"),(0,i.kt)("p",null,"This language is based on a functional language (elixir), but we added some imperative twist to it, to make it friendlier!"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Comments are lines that start with a ",(0,i.kt)("inlineCode",{parentName:"li"},"#")),(0,i.kt)("li",{parentName:"ul"},"Strings are double quoted ",(0,i.kt)("inlineCode",{parentName:"li"},'"I am a string"')),(0,i.kt)("li",{parentName:"ul"},"String interpolation ",(0,i.kt)("inlineCode",{parentName:"li"},'"hello #{name}"')),(0,i.kt)("li",{parentName:"ul"},"Integers & Floats can use ",(0,i.kt)("inlineCode",{parentName:"li"},"_")," at your convenience ",(0,i.kt)("inlineCode",{parentName:"li"},"10_000")," ",(0,i.kt)("inlineCode",{parentName:"li"},"10_000.0")),(0,i.kt)("li",{parentName:"ul"},"Floats can use the scientific format: ",(0,i.kt)("inlineCode",{parentName:"li"},"1.0e2 == 100")),(0,i.kt)("li",{parentName:"ul"},"Booleans syntax: ",(0,i.kt)("inlineCode",{parentName:"li"},"true")," / ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},"The absence of value: ",(0,i.kt)("inlineCode",{parentName:"li"},"nil"))),(0,i.kt)("h2",{id:"hexadecimals"},"Hexadecimals"),(0,i.kt)("p",null,"In the Archethic blockchain, we extensively uses hexadecimals to convert all addresses, public keys or hashes on the user-facing interfaces. A Smart Contract is one of these interfaces."),(0,i.kt)("p",null,"To reduce the possibility of errors when comparing hexadecimals (",(0,i.kt)("inlineCode",{parentName:"p"},'"000ABCD" != "000abcd"')," even if it's actually the same value), we introduced a new syntax: ",(0,i.kt)("inlineCode",{parentName:"p"},"0x"),". The goal of this syntax is only to facilitate comparaison: ",(0,i.kt)("inlineCode",{parentName:"p"},"0x000ABCD == 0x000abcd"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'# don\'t\ntransaction.address == "000ABCD123"\n\n# do\ntransaction.address == 0x000ABCD123 # no quotes!\n')),(0,i.kt)("p",null,"So whenever you write a hexadecimal value by hand, prefix it with ",(0,i.kt)("inlineCode",{parentName:"p"},"0x"),"."),(0,i.kt)("h3",{id:"ascii-character-in-string"},"ASCII character in string"),(0,i.kt)("p",null,"If you need to use some specific character in a string, you can use their hexadecimal representation by prefixing the hexadecimal with ",(0,i.kt)("inlineCode",{parentName:"p"},"\\x")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'"hello" == "\\x68\\x65\\x6C\\x6C\\x6F"\n# true\n')),(0,i.kt)("h2",{id:"comparaison"},"Comparaison"),(0,i.kt)("p",null,"We compare by value, which means you can pretty much compare anything and it will work as you expect."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 == 1.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"[1,2] == [1,2]")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'[name: "John"] == [name: "John"]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"true != false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if do ... end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if do ... else ... end"))),(0,i.kt)("h2",{id:"arithmetic"},"Arithmetic"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 + 2 == 3")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"2.0 - 1.1 == 0.9")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 * 2.0 == 2")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 / 1 == 1.0")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1 / 0")," contract failure")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The arithmetic is done with the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/ericmj/decimal"},"Decimal library")," to ensure there is no floating point precision issue.\n",(0,i.kt)("strong",{parentName:"p"},"The only thing to keep in mind is that we truncate at decimal 8."))),(0,i.kt)("h2",{id:"ranges"},"Ranges"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1..5")," is equivalent to ",(0,i.kt)("inlineCode",{parentName:"li"},"[1,2,3,4,5]"))),(0,i.kt)("h2",{id:"loop"},"Loop"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for name in names do ... end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for i in 1..10 do ... end"))),(0,i.kt)("h2",{id:"variables--scopes"},"Variables & Scopes"),(0,i.kt)("p",null,"Variables are not typed, you can assign any value to them."),(0,i.kt)("p",null,"Variables are mutable, if you update a variable declared in a parent scope, it will also update the value of this variable for the parent scope."),(0,i.kt)("p",null,"A new scope is created every time you enter a new block (",(0,i.kt)("inlineCode",{parentName:"p"},"do .. end"),"). A scope can access (read/write) the variables declared in its parent's scope, but not its child's scope."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'names = ["Tom", "Jerry", ""]\ntext = ""\nfor name in names do # ENTER SCOPE 1\n if name != "" do # ENTER SCOPE 1.1\n new_line = "\\n"\n text = "#{name}#{new_line}"\n end # EXIT SCOPE 1.1\n # new_line does not exists here\nend # EXIT SCOPE 1\n# test = "Tom\\nJerry\\n"\n# name and new_line does not exists here\n')),(0,i.kt)("p",null,"Here's the tree of scopes and variables for the above example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"[SCOPE 0]\n\u251c\u2500\u2500 names\n\u251c\u2500\u2500 text\n\u2514\u2500\u2500 [SCOPE 1]\n \u251c\u2500\u2500 name\n \u2514\u2500\u2500 [SCOPE 1.1]\n \u2514\u2500\u2500 new_line\n")),(0,i.kt)("h2",{id:"lists"},"Lists"),(0,i.kt)("p",null,"The list is the data structure to work with collections. The syntax is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[1, 2]"),". An empty list is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),".\nThere is a ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#list"},"List module")," in the library to manipulate lists."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Lists are actually ",(0,i.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Linked_list"},"Linked Lists"),".")),(0,i.kt)("h2",{id:"maps"},"Maps"),(0,i.kt)("p",null,"The map is the key-value data structure in the Smart Contract language. The syntax is: ",(0,i.kt)("inlineCode",{parentName:"p"},"[key1: 1, key2: 2]")," or if key starts with a number: ",(0,i.kt)("inlineCode",{parentName:"p"},'["00001abc...": 1]'),". The keys must be strings.\nThere is 3 ways to retrieve a value:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"map.property")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'map["property"]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},'Map.get(map, "property")'))),(0,i.kt)("p",null,"We suggest to use the 1st syntax as often as possible. Use the 2nd or 3rd when dealing with dynamic properties."),(0,i.kt)("p",null,"There is a ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#map"},"Map module")," module in the library to manipulate maps."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Since the maps and the lists have a very close syntax, it is impossible to differentiate an empty map from an empty list. So, for semantic reasons, to create an empty map, use the ",(0,i.kt)("inlineCode",{parentName:"p"},"Map.new()")," function call.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"The brackets are mostly optional! ",(0,i.kt)("inlineCode",{parentName:"p"},"key1: 1, key2: 2")," will work as well. But if you have a nested map, you cannot omit them!")),(0,i.kt)("h2",{id:"functions"},"Functions"),(0,i.kt)("p",null,"In the Archethic Smart Contract Language, you can declare 2 types of functions:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Internal Functions declared with the ",(0,i.kt)("inlineCode",{parentName:"li"},"fun")," keyword"),(0,i.kt)("li",{parentName:"ul"},"Exported Functions declared with the ",(0,i.kt)("inlineCode",{parentName:"li"},"export fun")," keyword")),(0,i.kt)("h3",{id:"internal-functions"},"Internal Functions"),(0,i.kt)("p",null,"Internal functions are functions that are only available in the Smart Contract. They are not callable from the outside."),(0,i.kt)("p",null,"They are declared with the ",(0,i.kt)("inlineCode",{parentName:"p"},"fun")," keyword and can be called from the ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions"},"Action")," or ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/condition"},"Condition")," blocks."),(0,i.kt)("p",null,"They can have 0 argument:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'fun hello() do\n "Hello World!"\nend\n')),(0,i.kt)("p",null,"Or more:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"fun sum(a, b) do\n a + b\nend\n")),(0,i.kt)("p",null,"You can also have the same function name with different signature:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"fun sum(a, b) do\n a + b\nend\n\nfun sum(list) do\n acc = 0\n for i in list do\n acc = acc + i\n end\n acc\nend\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"These functions aren't able to call another internal function")," but can call an Exported one."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Internal functions are able to use ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"library module")," functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"I/O")," but not the functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"UPDATE_CONTRACT"),".")),(0,i.kt)("h3",{id:"exported-functions"},"Exported Functions"),(0,i.kt)("p",null,"Exported functions are callable from the Smart Contract but also through the outside via the JSON-RPC API.\nThey are declared like internal function but with the ",(0,i.kt)("inlineCode",{parentName:"p"},"export fun")," syntax."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"export fun get_current_count() do\n String.to_number contract.content\nend\n")),(0,i.kt)("p",null,"Unlike internal functions, they can be called from any block of code."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"External functions are not able to use ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"library module")," functions tagged as ",(0,i.kt)("inlineCode",{parentName:"p"},"I/O")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"Transaction"),".")),(0,i.kt)("h2",{id:"library"},"Library"),(0,i.kt)("p",null,"You may use any functions from the library. The syntax is ",(0,i.kt)("inlineCode",{parentName:"p"},"Module.function(arg1, arg2)"),"."),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"The parenthesis are actually optional! ",(0,i.kt)("inlineCode",{parentName:"p"},"Module.function arg1, arg2")," will work as well.")),(0,i.kt)("p",null,"To see the list of functions available in the Smart Contract Language, check the ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library"},"Library page"),"."),(0,i.kt)("h2",{id:"reserved-keywords"},"Reserved keywords"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"for")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"do")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"end")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"if")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"else"))),(0,i.kt)("p",null,"... to be completed"))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/4c0f205c.ee0463c4.js b/assets/js/4c0f205c.2c39320a.js similarity index 97% rename from assets/js/4c0f205c.ee0463c4.js rename to assets/js/4c0f205c.2c39320a.js index ae3ba2e65..04f06bbdf 100644 --- a/assets/js/4c0f205c.ee0463c4.js +++ b/assets/js/4c0f205c.2c39320a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2217],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,k=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(k,l(l({ref:t},d),{},{components:n})):r.createElement(k,l({ref:t},d))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"token",title:"token",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/queries/token",id:"build/api/schema/queries/token",title:"token",description:"Query the network to find a token's data",source:"@site/docs/build/api/schema/queries/token.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/token",permalink:"/build/api/schema/queries/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token",title:"token",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"sharedSecrets",permalink:"/build/api/schema/queries/shared-secrets"},next:{title:"transactionChain",permalink:"/build/api/schema/queries/transaction-chain"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'token.addressAddress! ',id:"code-style-fontweight-normal-tokenbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Token ',id:"token-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(f,(0,r.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a token's data"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"token(\n address: Address!\n): Token\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"token.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"token-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[token]"," represents a token metadata.\nIt includes:"),(0,o.kt)("ul",{parentName:"blockquote"},(0,o.kt)("li",{parentName:"ul"},"genesis: Genesis address to the token"),(0,o.kt)("li",{parentName:"ul"},"name: Name of the token"),(0,o.kt)("li",{parentName:"ul"},"symbol: Symbol of the token"),(0,o.kt)("li",{parentName:"ul"},"supply: Supply of the token"),(0,o.kt)("li",{parentName:"ul"},"type: Type of the token"),(0,o.kt)("li",{parentName:"ul"},"decimals: Number of decimals of the token"),(0,o.kt)("li",{parentName:"ul"},"properties: Properties of the token (if any)"),(0,o.kt)("li",{parentName:"ul"},"collection: List of properties for a collection (if any)"),(0,o.kt)("li",{parentName:"ul"},"ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,o.kt)("li",{parentName:"ul"},"id: Unique identification of the token on the chain"))))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2217],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,k=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(k,l(l({ref:t},d),{},{components:n})):r.createElement(k,l({ref:t},d))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"token",title:"token",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/queries/token",id:"build/api/schema/queries/token",title:"token",description:"Query the network to find a token's data",source:"@site/docs/build/api/schema/queries/token.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/token",permalink:"/build/api/schema/queries/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token",title:"token",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"sharedSecrets",permalink:"/build/api/schema/queries/shared-secrets"},next:{title:"transactionChain",permalink:"/build/api/schema/queries/transaction-chain"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'token.addressAddress! ',id:"code-style-fontweight-normal-tokenbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Token ',id:"token-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(f,(0,r.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a token's data"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"token(\n address: Address!\n): Token\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"token.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"token-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[token]"," represents a token metadata.\nIt includes:"),(0,o.kt)("ul",{parentName:"blockquote"},(0,o.kt)("li",{parentName:"ul"},"genesis: Genesis address to the token"),(0,o.kt)("li",{parentName:"ul"},"name: Name of the token"),(0,o.kt)("li",{parentName:"ul"},"symbol: Symbol of the token"),(0,o.kt)("li",{parentName:"ul"},"supply: Supply of the token"),(0,o.kt)("li",{parentName:"ul"},"type: Type of the token"),(0,o.kt)("li",{parentName:"ul"},"decimals: Number of decimals of the token"),(0,o.kt)("li",{parentName:"ul"},"properties: Properties of the token (if any)"),(0,o.kt)("li",{parentName:"ul"},"collection: List of properties for a collection (if any)"),(0,o.kt)("li",{parentName:"ul"},"ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,o.kt)("li",{parentName:"ul"},"id: Unique identification of the token on the chain"))))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/4d54d076.e8dbc213.js b/assets/js/4d54d076.f8a1f211.js similarity index 98% rename from assets/js/4d54d076.e8dbc213.js rename to assets/js/4d54d076.f8a1f211.js index d80db9b76..8243b098d 100644 --- a/assets/js/4d54d076.e8dbc213.js +++ b/assets/js/4d54d076.f8a1f211.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7080],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=o,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?r.createElement(h,a(a({ref:t},c),{},{components:n})):r.createElement(h,a({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"contributing",title:"Contributing"},a=void 0,l={unversionedId:"contributing",id:"contributing",title:"Contributing",description:"This documentation is maintained by the Archethic Foundation. It's an open source project and aims to be the most extensive",source:"@site/docs/contributing.md",sourceDirName:".",slug:"/contributing",permalink:"/contributing",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"contributing",title:"Contributing"},sidebar:"docs",previous:{title:"Wallet",permalink:"/FAQ/wallet"}},s={},u=[{value:"How to contribute",id:"how-to-contribute",level:2},{value:"Guidelines",id:"guidelines",level:3},{value:"Diagrams",id:"diagrams",level:3}],c={toc:u},d="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This documentation is maintained by the Archethic Foundation. It's an open source project and aims to be the most extensive\nresources of knowledge on Archethic and its ecosystem."),(0,o.kt)("p",null,"We welcome contributions from anyone and are grateful for even the smallest of improvement from typo issues, to proposals, to enhance explaination or create diagrams, etc.\nTherefore, pull requests, discussions, and contributions from the community are encouraged."),(0,o.kt)("h2",{id:"how-to-contribute"},"How to contribute"),(0,o.kt)("p",null,"You can contribute on the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-docs"},"archethic-foundation/archethic-docs repository"),". The documentation is build with ",(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"Docusaurus")," and each page is written in Markdown which is an easy to learn syntax extension to plain text that make creating links, rendering images and nice looking formatting example."),(0,o.kt)("h3",{id:"guidelines"},"Guidelines"),(0,o.kt)("p",null,"There are few basic ground-rules for contributing:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"No ",(0,o.kt)("inlineCode",{parentName:"li"},"--force")," pushes or modifying the Git history"),(0,o.kt)("li",{parentName:"ol"},"Pull requests are preferred to issues, especially for small changes such as typos. Issues should be used for generic or broad-based changes or missing content. Suggestions and requests are encouraged."),(0,o.kt)("li",{parentName:"ol"},"Please ",(0,o.kt)("inlineCode",{parentName:"li"},"fork")," or use ",(0,o.kt)("inlineCode",{parentName:"li"},"non-main branches"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"Significant modifications"),", even by contributors, ought to be subject to a pull request to solicit feedback from other contributors."),(0,o.kt)("li",{parentName:"ol"},"Pull requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor."),(0,o.kt)("li",{parentName:"ol"},"Contributors should attempt to adhere to the prevailing MarkDown style, language, and layout."),(0,o.kt)("li",{parentName:"ol"},"Correct grammar should be used at all times. Pull requests with typos will not be merged until fixed."),(0,o.kt)("li",{parentName:"ol"},"Care should be taken to remain as objective and informative as possible. There should be no editorializing, and external bias should not be present.")),(0,o.kt)("h3",{id:"diagrams"},"Diagrams"),(0,o.kt)("p",null,"The documentation supports also diagram through the use or ",(0,o.kt)("a",{parentName:"p",href:"https://mermaid-js.github.io"},"Mermaid")," which permits to create diagram with markdown code:"),(0,o.kt)("p",null,"Inserting this code:"),(0,o.kt)("p",null,"```mermaid",(0,o.kt)("br",null),"sequenceDiagram",(0,o.kt)("br",null),"\xa0\xa0\xa0Alice->>John: Hello John, how are you? ",(0,o.kt)("br",null),"\xa0\xa0\xa0John--\x3e>Alice: Great!",(0,o.kt)("br",null),"\xa0\xa0\xa0Alice-)John: See you later!",(0,o.kt)("br",null),"```"),(0,o.kt)("p",null,"will output this diagram"),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>John: Hello John, how are you?\n John--\x3e>Alice: Great!\n Alice-)John: See you later!"}),(0,o.kt)("p",null,"To help you design them you can leverage an ",(0,o.kt)("a",{parentName:"p",href:"https://mermaid.live/"},"editor")," to visualize the diagrams."))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7080],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=o,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?r.createElement(h,a(a({ref:t},c),{},{components:n})):r.createElement(h,a({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"contributing",title:"Contributing"},a=void 0,l={unversionedId:"contributing",id:"contributing",title:"Contributing",description:"This documentation is maintained by the Archethic Foundation. It's an open source project and aims to be the most extensive",source:"@site/docs/contributing.md",sourceDirName:".",slug:"/contributing",permalink:"/contributing",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"contributing",title:"Contributing"},sidebar:"docs",previous:{title:"Wallet",permalink:"/FAQ/wallet"}},s={},u=[{value:"How to contribute",id:"how-to-contribute",level:2},{value:"Guidelines",id:"guidelines",level:3},{value:"Diagrams",id:"diagrams",level:3}],c={toc:u},d="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This documentation is maintained by the Archethic Foundation. It's an open source project and aims to be the most extensive\nresources of knowledge on Archethic and its ecosystem."),(0,o.kt)("p",null,"We welcome contributions from anyone and are grateful for even the smallest of improvement from typo issues, to proposals, to enhance explaination or create diagrams, etc.\nTherefore, pull requests, discussions, and contributions from the community are encouraged."),(0,o.kt)("h2",{id:"how-to-contribute"},"How to contribute"),(0,o.kt)("p",null,"You can contribute on the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-docs"},"archethic-foundation/archethic-docs repository"),". The documentation is build with ",(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"Docusaurus")," and each page is written in Markdown which is an easy to learn syntax extension to plain text that make creating links, rendering images and nice looking formatting example."),(0,o.kt)("h3",{id:"guidelines"},"Guidelines"),(0,o.kt)("p",null,"There are few basic ground-rules for contributing:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"No ",(0,o.kt)("inlineCode",{parentName:"li"},"--force")," pushes or modifying the Git history"),(0,o.kt)("li",{parentName:"ol"},"Pull requests are preferred to issues, especially for small changes such as typos. Issues should be used for generic or broad-based changes or missing content. Suggestions and requests are encouraged."),(0,o.kt)("li",{parentName:"ol"},"Please ",(0,o.kt)("inlineCode",{parentName:"li"},"fork")," or use ",(0,o.kt)("inlineCode",{parentName:"li"},"non-main branches"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"Significant modifications"),", even by contributors, ought to be subject to a pull request to solicit feedback from other contributors."),(0,o.kt)("li",{parentName:"ol"},"Pull requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor."),(0,o.kt)("li",{parentName:"ol"},"Contributors should attempt to adhere to the prevailing MarkDown style, language, and layout."),(0,o.kt)("li",{parentName:"ol"},"Correct grammar should be used at all times. Pull requests with typos will not be merged until fixed."),(0,o.kt)("li",{parentName:"ol"},"Care should be taken to remain as objective and informative as possible. There should be no editorializing, and external bias should not be present.")),(0,o.kt)("h3",{id:"diagrams"},"Diagrams"),(0,o.kt)("p",null,"The documentation supports also diagram through the use or ",(0,o.kt)("a",{parentName:"p",href:"https://mermaid-js.github.io"},"Mermaid")," which permits to create diagram with markdown code:"),(0,o.kt)("p",null,"Inserting this code:"),(0,o.kt)("p",null,"```mermaid",(0,o.kt)("br",null),"sequenceDiagram",(0,o.kt)("br",null),"\xa0\xa0\xa0Alice->>John: Hello John, how are you? ",(0,o.kt)("br",null),"\xa0\xa0\xa0John--\x3e>Alice: Great!",(0,o.kt)("br",null),"\xa0\xa0\xa0Alice-)John: See you later!",(0,o.kt)("br",null),"```"),(0,o.kt)("p",null,"will output this diagram"),(0,o.kt)("mermaid",{value:"sequenceDiagram\n Alice->>John: Hello John, how are you?\n John--\x3e>Alice: Great!\n Alice-)John: See you later!"}),(0,o.kt)("p",null,"To help you design them you can leverage an ",(0,o.kt)("a",{parentName:"p",href:"https://mermaid.live/"},"editor")," to visualize the diagrams."))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/5037eb2b.5fff2e78.js b/assets/js/5037eb2b.0b00f1bd.js similarity index 98% rename from assets/js/5037eb2b.5fff2e78.js rename to assets/js/5037eb2b.0b00f1bd.js index 6cc1208d2..a028f3f83 100644 --- a/assets/js/5037eb2b.5fff2e78.js +++ b/assets/js/5037eb2b.0b00f1bd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[246],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=i,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||o;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:i,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(7462),i=(r(7294),r(3905));r(8209);const o={id:"election",title:"Election"},a=void 0,l={unversionedId:"build/core/election",id:"build/core/election",title:"Election",description:"Archethic provides rotating algorithm to elect validation and storage nodes.",source:"@site/docs/build/core/election.md",sourceDirName:"build/core",slug:"/build/core/election",permalink:"/build/core/election",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"election",title:"Election"},sidebar:"docs",previous:{title:"Archethic's database",permalink:"/build/core/database"},next:{title:"CD",permalink:"/build/core/governance/code-proposals-cd"}},c={},s=[{value:"Heuristic constraints",id:"heuristic-constraints",level:2},{value:"Low-Level integrations",id:"low-level-integrations",level:2},{value:"Hypergeomtric distribution",id:"hypergeomtric-distribution",level:3}],u={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic provides rotating algorithm to elect validation and storage nodes. "),(0,i.kt)("p",null,"Validation and Storage Election algorithm provides also list of heuristic constraints to fine grained elections. "),(0,i.kt)("h2",{id:"heuristic-constraints"},"Heuristic constraints"),(0,i.kt)("p",null,"An ETS table is used to store the last constraints values for a faster lookup."),(0,i.kt)("p",null,"Storage constraints are defined by:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"minimum storage geographical patches"),(0,i.kt)("li",{parentName:"ul"},"minimum storage average by geographical patch"),(0,i.kt)("li",{parentName:"ul"},"number of replicast")),(0,i.kt)("p",null,"Validation constraints are defined by:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"minimum validation geographical patch distribution"),(0,i.kt)("li",{parentName:"ul"},"minimum validation nodes"),(0,i.kt)("li",{parentName:"ul"},"validation number based on a given transaction")),(0,i.kt)("h2",{id:"low-level-integrations"},"Low-Level integrations"),(0,i.kt)("p",null,"Sometimes for performance issue, we are leveraging low-level programming in C, to perform fast computation."),(0,i.kt)("h3",{id:"hypergeomtric-distribution"},"Hypergeomtric distribution"),(0,i.kt)("p",null,"For example, the Hypergeometric Distribution simulation is computed in C and wrapped in an Erlang port communication.\nBut for better simulation lookup, a cache is provided as process to hold the last value for a given number of nodes.\nIf the number of nodes changes, the hypergeometric distribution will be trigger."),(0,i.kt)("p",null,"The C program is using ",(0,i.kt)("inlineCode",{parentName:"p"},"GMP")," for big float arithemetic operations and ",(0,i.kt)("inlineCode",{parentName:"p"},"OMP")," for parallel computations to make it efficient."),(0,i.kt)("mermaid",{value:"sequenceDiagram\n Election->>+Process: Run simulation for N nodes\n alt with cache value\n Process--\x3e>Election: Retrieve cached value\n else without cache value\n Process->>C: Run simultation\n end\n"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[246],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=i,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||o;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:i,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(7462),i=(r(7294),r(3905));r(8209);const o={id:"election",title:"Election"},a=void 0,l={unversionedId:"build/core/election",id:"build/core/election",title:"Election",description:"Archethic provides rotating algorithm to elect validation and storage nodes.",source:"@site/docs/build/core/election.md",sourceDirName:"build/core",slug:"/build/core/election",permalink:"/build/core/election",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"election",title:"Election"},sidebar:"docs",previous:{title:"Archethic's database",permalink:"/build/core/database"},next:{title:"CD",permalink:"/build/core/governance/code-proposals-cd"}},c={},s=[{value:"Heuristic constraints",id:"heuristic-constraints",level:2},{value:"Low-Level integrations",id:"low-level-integrations",level:2},{value:"Hypergeomtric distribution",id:"hypergeomtric-distribution",level:3}],u={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic provides rotating algorithm to elect validation and storage nodes. "),(0,i.kt)("p",null,"Validation and Storage Election algorithm provides also list of heuristic constraints to fine grained elections. "),(0,i.kt)("h2",{id:"heuristic-constraints"},"Heuristic constraints"),(0,i.kt)("p",null,"An ETS table is used to store the last constraints values for a faster lookup."),(0,i.kt)("p",null,"Storage constraints are defined by:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"minimum storage geographical patches"),(0,i.kt)("li",{parentName:"ul"},"minimum storage average by geographical patch"),(0,i.kt)("li",{parentName:"ul"},"number of replicast")),(0,i.kt)("p",null,"Validation constraints are defined by:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"minimum validation geographical patch distribution"),(0,i.kt)("li",{parentName:"ul"},"minimum validation nodes"),(0,i.kt)("li",{parentName:"ul"},"validation number based on a given transaction")),(0,i.kt)("h2",{id:"low-level-integrations"},"Low-Level integrations"),(0,i.kt)("p",null,"Sometimes for performance issue, we are leveraging low-level programming in C, to perform fast computation."),(0,i.kt)("h3",{id:"hypergeomtric-distribution"},"Hypergeomtric distribution"),(0,i.kt)("p",null,"For example, the Hypergeometric Distribution simulation is computed in C and wrapped in an Erlang port communication.\nBut for better simulation lookup, a cache is provided as process to hold the last value for a given number of nodes.\nIf the number of nodes changes, the hypergeometric distribution will be trigger."),(0,i.kt)("p",null,"The C program is using ",(0,i.kt)("inlineCode",{parentName:"p"},"GMP")," for big float arithemetic operations and ",(0,i.kt)("inlineCode",{parentName:"p"},"OMP")," for parallel computations to make it efficient."),(0,i.kt)("mermaid",{value:"sequenceDiagram\n Election->>+Process: Run simulation for N nodes\n alt with cache value\n Process--\x3e>Election: Retrieve cached value\n else without cache value\n Process->>C: Run simultation\n end\n"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/55620597.34aa18c0.js b/assets/js/55620597.e0da184f.js similarity index 97% rename from assets/js/55620597.34aa18c0.js rename to assets/js/55620597.e0da184f.js index 56ee404d1..6251e2295 100644 --- a/assets/js/55620597.34aa18c0.js +++ b/assets/js/55620597.e0da184f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8342],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),s=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(r),f=n,m=d["".concat(l,".").concat(f)]||d[f]||u[f]||o;return r?a.createElement(m,c(c({ref:t},p),{},{components:r})):a.createElement(m,c({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:n,c[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>c,metadata:()=>l,toc:()=>p});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"oracle-update",title:"oracleUpdate",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/subscriptions/oracle-update",id:"build/api/schema/subscriptions/oracle-update",title:"oracleUpdate",description:"Subscribe to be notified when a new oracle data is stored",source:"@site/docs/build/api/schema/subscriptions/oracle-update.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/oracle-update",permalink:"/build/api/schema/subscriptions/oracle-update",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-update",title:"oracleUpdate",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionType",permalink:"/build/api/schema/scalars/transaction-type"},next:{title:"transactionConfirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed"}},s={},p=[{value:"Type",id:"type",level:3},{value:'OracleData ',id:"oracledata-",level:4}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,a.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a new oracle data is stored"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"oracleUpdate: OracleData\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"oracledata-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-data"},(0,o.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[OracleData]"," represents an oracle data.")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8342],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),s=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(r),f=n,m=d["".concat(l,".").concat(f)]||d[f]||u[f]||o;return r?a.createElement(m,c(c({ref:t},p),{},{components:r})):a.createElement(m,c({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:n,c[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>c,metadata:()=>l,toc:()=>p});var a=r(7462),n=r(7294),o=r(3905);r(8209);const c={id:"oracle-update",title:"oracleUpdate",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/subscriptions/oracle-update",id:"build/api/schema/subscriptions/oracle-update",title:"oracleUpdate",description:"Subscribe to be notified when a new oracle data is stored",source:"@site/docs/build/api/schema/subscriptions/oracle-update.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/oracle-update",permalink:"/build/api/schema/subscriptions/oracle-update",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-update",title:"oracleUpdate",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionType",permalink:"/build/api/schema/scalars/transaction-type"},next:{title:"transactionConfirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed"}},s={},p=[{value:"Type",id:"type",level:3},{value:'OracleData ',id:"oracledata-",level:4}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,a.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a new oracle data is stored"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"oracleUpdate: OracleData\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"oracledata-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-data"},(0,o.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[OracleData]"," represents an oracle data.")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/56f0859a.657b94c9.js b/assets/js/56f0859a.a741d6af.js similarity index 98% rename from assets/js/56f0859a.657b94c9.js rename to assets/js/56f0859a.a741d6af.js index debc9954a..ee564760c 100644 --- a/assets/js/56f0859a.657b94c9.js +++ b/assets/js/56f0859a.a741d6af.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5050],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>f});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function s(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var c=n.createContext({}),l=function(t){var e=n.useContext(c),a=e;return t&&(a="function"==typeof t?t(e):s(s({},e),t)),a},d=function(t){var e=l(t.components);return n.createElement(c.Provider,{value:e},t.children)},p="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,c=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),p=l(a),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return a?n.createElement(f,s(s({ref:e},d),{},{components:a})):n.createElement(f,s({ref:e},d))}));function f(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,s=new Array(o);s[0]=m;var i={};for(var c in e)hasOwnProperty.call(e,c)&&(i[c]=e[c]);i.originalType=t,i[p]="string"==typeof t?t:r,s[1]=i;for(var l=2;l{a.r(e),a.d(e,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const s={id:"transaction-attestation",title:"TransactionAttestation",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/objects/transaction-attestation",id:"build/api/schema/objects/transaction-attestation",title:"TransactionAttestation",description:"[TransactionAttestation] represents an attestation when a transaction is successfully validated and stored.",source:"@site/docs/build/api/schema/objects/transaction-attestation.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-attestation",permalink:"/build/api/schema/objects/transaction-attestation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-attestation",title:"TransactionAttestation",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Token",permalink:"/build/api/schema/objects/token"},next:{title:"TransactionError",permalink:"/build/api/schema/objects/transaction-error"}},l={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionAttestation.addressAddress ',id:"code-style-fontweight-normal-transactionattestationbaddressbcodeaddress-",level:4},{value:'TransactionAttestation.maxConfirmationsInt ',id:"code-style-fontweight-normal-transactionattestationbmaxconfirmationsbcodeint-",level:4},{value:'TransactionAttestation.nbConfirmationsInt ',id:"code-style-fontweight-normal-transactionattestationbnbconfirmationsbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=t=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:t.url,title:"Specified by "+t.url},"\u2398")),m=t=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+t.class},t.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(t){let{components:e,...a}=t;return(0,o.kt)(b,(0,n.Z)({},f,a,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionAttestation]"," represents an attestation when a transaction is successfully validated and stored.\nFew attestations can be received with differents confirmations to ensure a better security of the replication."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionAttestation {\n address: Address\n maxConfirmations: Int\n nbConfirmations: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbmaxconfirmationsbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"maxConfirmations"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbnbconfirmationsbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"nbConfirmations"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-confirmed"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionConfirmed"))," ",(0,o.kt)(m,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(t,e,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5050],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>f});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function s(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var c=n.createContext({}),l=function(t){var e=n.useContext(c),a=e;return t&&(a="function"==typeof t?t(e):s(s({},e),t)),a},d=function(t){var e=l(t.components);return n.createElement(c.Provider,{value:e},t.children)},p="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,c=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),p=l(a),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return a?n.createElement(f,s(s({ref:e},d),{},{components:a})):n.createElement(f,s({ref:e},d))}));function f(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,s=new Array(o);s[0]=m;var i={};for(var c in e)hasOwnProperty.call(e,c)&&(i[c]=e[c]);i.originalType=t,i[p]="string"==typeof t?t:r,s[1]=i;for(var l=2;l{a.r(e),a.d(e,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const s={id:"transaction-attestation",title:"TransactionAttestation",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/objects/transaction-attestation",id:"build/api/schema/objects/transaction-attestation",title:"TransactionAttestation",description:"[TransactionAttestation] represents an attestation when a transaction is successfully validated and stored.",source:"@site/docs/build/api/schema/objects/transaction-attestation.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-attestation",permalink:"/build/api/schema/objects/transaction-attestation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-attestation",title:"TransactionAttestation",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Token",permalink:"/build/api/schema/objects/token"},next:{title:"TransactionError",permalink:"/build/api/schema/objects/transaction-error"}},l={},d=[{value:"Fields",id:"fields",level:3},{value:'TransactionAttestation.addressAddress ',id:"code-style-fontweight-normal-transactionattestationbaddressbcodeaddress-",level:4},{value:'TransactionAttestation.maxConfirmationsInt ',id:"code-style-fontweight-normal-transactionattestationbmaxconfirmationsbcodeint-",level:4},{value:'TransactionAttestation.nbConfirmationsInt ',id:"code-style-fontweight-normal-transactionattestationbnbconfirmationsbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=t=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:t.url,title:"Specified by "+t.url},"\u2398")),m=t=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+t.class},t.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(t){let{components:e,...a}=t;return(0,o.kt)(b,(0,n.Z)({},f,a,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionAttestation]"," represents an attestation when a transaction is successfully validated and stored.\nFew attestations can be received with differents confirmations to ensure a better security of the replication."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionAttestation {\n address: Address\n maxConfirmations: Int\n nbConfirmations: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbmaxconfirmationsbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"maxConfirmations"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionattestationbnbconfirmationsbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TransactionAttestation.",(0,o.kt)("b",null,"nbConfirmations"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-confirmed"},(0,o.kt)("inlineCode",{parentName:"a"},"transactionConfirmed"))," ",(0,o.kt)(m,{class:"secondary",text:"subscription",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(t,e,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/57fb9911.c16384ac.js b/assets/js/57fb9911.a9cc012e.js similarity index 98% rename from assets/js/57fb9911.c16384ac.js rename to assets/js/57fb9911.a9cc012e.js index 2bf33df93..a673f6a87 100644 --- a/assets/js/57fb9911.c16384ac.js +++ b/assets/js/57fb9911.a9cc012e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4889],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),c=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(f,l(l({ref:t},d),{},{components:n})):r.createElement(f,l({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>g,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"ledger-operations",title:"LedgerOperations",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/ledger-operations",id:"build/api/schema/objects/ledger-operations",title:"LedgerOperations",description:"[LedgerOperations] represents the ledger operations performed by the transaction",source:"@site/docs/build/api/schema/objects/ledger-operations.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ledger-operations",permalink:"/build/api/schema/objects/ledger-operations",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"ledger-operations",title:"LedgerOperations",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Endpoint",permalink:"/build/api/schema/objects/endpoint"},next:{title:"Ledger",permalink:"/build/api/schema/objects/ledger"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'LedgerOperations.feeInt ',id:"code-style-fontweight-normal-ledgeroperationsbfeebcodeint-",level:4},{value:'LedgerOperations.transactionMovements[TransactionMovement] ',id:"code-style-fontweight-normal-ledgeroperationsbtransactionmovementsbcodetransactionmovement--",level:4},{value:'LedgerOperations.unspentOutputs[UnspentOutput] ',id:"code-style-fontweight-normal-ledgeroperationsbunspentoutputsbcodeunspentoutput--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function g(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[LedgerOperations]"," represents the ledger operations performed by the transaction\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Transaction movements: assets transfers"),(0,o.kt)("li",{parentName:"ul"},"Unspent outputs: remaining unspent outputs"),(0,o.kt)("li",{parentName:"ul"},"Fee: transaction fee")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type LedgerOperations {\n fee: Int\n transactionMovements: [TransactionMovement]\n unspentOutputs: [UnspentOutput]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbfeebcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"fee"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbtransactionmovementsbcodetransactionmovement--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"transactionMovements"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-movement"},(0,o.kt)("inlineCode",{parentName:"a"},"[TransactionMovement]"))," ",(0,o.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbunspentoutputsbcodeunspentoutput--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"unspentOutputs"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/unspent-output"},(0,o.kt)("inlineCode",{parentName:"a"},"[UnspentOutput]"))," ",(0,o.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,o.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}g.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4889],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),c=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(f,l(l({ref:t},d),{},{components:n})):r.createElement(f,l({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>s,default:()=>g,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"ledger-operations",title:"LedgerOperations",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/ledger-operations",id:"build/api/schema/objects/ledger-operations",title:"LedgerOperations",description:"[LedgerOperations] represents the ledger operations performed by the transaction",source:"@site/docs/build/api/schema/objects/ledger-operations.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ledger-operations",permalink:"/build/api/schema/objects/ledger-operations",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"ledger-operations",title:"LedgerOperations",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Endpoint",permalink:"/build/api/schema/objects/endpoint"},next:{title:"Ledger",permalink:"/build/api/schema/objects/ledger"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'LedgerOperations.feeInt ',id:"code-style-fontweight-normal-ledgeroperationsbfeebcodeint-",level:4},{value:'LedgerOperations.transactionMovements[TransactionMovement] ',id:"code-style-fontweight-normal-ledgeroperationsbtransactionmovementsbcodetransactionmovement--",level:4},{value:'LedgerOperations.unspentOutputs[UnspentOutput] ',id:"code-style-fontweight-normal-ledgeroperationsbunspentoutputsbcodeunspentoutput--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function g(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[LedgerOperations]"," represents the ledger operations performed by the transaction\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Transaction movements: assets transfers"),(0,o.kt)("li",{parentName:"ul"},"Unspent outputs: remaining unspent outputs"),(0,o.kt)("li",{parentName:"ul"},"Fee: transaction fee")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type LedgerOperations {\n fee: Int\n transactionMovements: [TransactionMovement]\n unspentOutputs: [UnspentOutput]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbfeebcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"fee"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbtransactionmovementsbcodetransactionmovement--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"transactionMovements"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-movement"},(0,o.kt)("inlineCode",{parentName:"a"},"[TransactionMovement]"))," ",(0,o.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ledgeroperationsbunspentoutputsbcodeunspentoutput--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"LedgerOperations.",(0,o.kt)("b",null,"unspentOutputs"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/unspent-output"},(0,o.kt)("inlineCode",{parentName:"a"},"[UnspentOutput]"))," ",(0,o.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,o.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}g.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/59ac5e04.ae0c5941.js b/assets/js/59ac5e04.67c0f95b.js similarity index 97% rename from assets/js/59ac5e04.ae0c5941.js rename to assets/js/59ac5e04.67c0f95b.js index b4492945c..3126a2db7 100644 --- a/assets/js/59ac5e04.ae0c5941.js +++ b/assets/js/59ac5e04.67c0f95b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9199],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),s=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,o=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,h=u["".concat(o,".").concat(m)]||u[m]||p[m]||l;return n?r.createElement(h,i(i({ref:t},d),{},{components:n})):r.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const l={id:"commands",title:"ADPU commands"},i=void 0,c={unversionedId:"build/clients/ledger-wallet/commands",id:"build/clients/ledger-wallet/commands",title:"ADPU commands",description:"APDU commands",source:"@site/docs/build/clients/ledger-wallet/commands.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/commands",permalink:"/build/clients/ledger-wallet/commands",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"commands",title:"ADPU commands"},sidebar:"docs",previous:{title:"Ledger Application API",permalink:"/build/clients/ledger-wallet/api"},next:{title:"Archethic's wallet access",permalink:"/build/clients/wallet-access"}},o={},s=[{value:"APDU commands",id:"apdu-commands",level:2},{value:"Get Origin Public Key",id:"get-origin-public-key",level:3},{value:"Get Archethic Account Address",id:"get-archethic-account-address",level:3},{value:"Get Signature",id:"get-signature",level:3}],d={toc:s},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"apdu-commands"},"APDU commands"),(0,a.kt)("h3",{id:"get-origin-public-key"},"Get Origin Public Key"),(0,a.kt)("p",null,"APDU Command ","[bytes]",":"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 02"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = 00"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = 00"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = 00")))),(0,a.kt)("p",null,"APDU Response = Encoded Origin Public Key i.e., encode(o_{pub}) "),(0,a.kt)("h3",{id:"get-archethic-account-address"},"Get Archethic Account Address"),(0,a.kt)("p",null,"APDU Command ","[bytes]"," = "),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 04"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = hash_type (for addr) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = address_index (for bip44) ","[4 bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = len(ewk",(0,a.kt)("em",{parentName:"th"},"{aes}+ew"),"{aes}) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"ewk_{aes} ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ew_{aes} ","[bytes]")))),(0,a.kt)("p",null,"APDU Response = Encoded Archethic Account Address i.e., arch_address "),(0,a.kt)("h3",{id:"get-signature"},"Get Signature"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 08"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = hash_type (of tx_hash) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = address_index (for bip44) ","[4 bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = len(tx",(0,a.kt)("em",{parentName:"th"},"hash+ewk"),"{aes}+ew_{aes}) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"tx_hash ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ewk_{aes} ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ew_{aes} ","[bytes]")))),(0,a.kt)("p",null,"APDU Response = ASN DER Signature || Corresponding public key from whose private key the signature was made, i.e., encode(pub_key)"))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9199],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),s=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,o=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,h=u["".concat(o,".").concat(m)]||u[m]||p[m]||l;return n?r.createElement(h,i(i({ref:t},d),{},{components:n})):r.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const l={id:"commands",title:"ADPU commands"},i=void 0,c={unversionedId:"build/clients/ledger-wallet/commands",id:"build/clients/ledger-wallet/commands",title:"ADPU commands",description:"APDU commands",source:"@site/docs/build/clients/ledger-wallet/commands.md",sourceDirName:"build/clients/ledger-wallet",slug:"/build/clients/ledger-wallet/commands",permalink:"/build/clients/ledger-wallet/commands",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"commands",title:"ADPU commands"},sidebar:"docs",previous:{title:"Ledger Application API",permalink:"/build/clients/ledger-wallet/api"},next:{title:"Archethic's wallet access",permalink:"/build/clients/wallet-access"}},o={},s=[{value:"APDU commands",id:"apdu-commands",level:2},{value:"Get Origin Public Key",id:"get-origin-public-key",level:3},{value:"Get Archethic Account Address",id:"get-archethic-account-address",level:3},{value:"Get Signature",id:"get-signature",level:3}],d={toc:s},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"apdu-commands"},"APDU commands"),(0,a.kt)("h3",{id:"get-origin-public-key"},"Get Origin Public Key"),(0,a.kt)("p",null,"APDU Command ","[bytes]",":"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 02"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = 00"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = 00"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = 00")))),(0,a.kt)("p",null,"APDU Response = Encoded Origin Public Key i.e., encode(o_{pub}) "),(0,a.kt)("h3",{id:"get-archethic-account-address"},"Get Archethic Account Address"),(0,a.kt)("p",null,"APDU Command ","[bytes]"," = "),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 04"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = hash_type (for addr) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = address_index (for bip44) ","[4 bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = len(ewk",(0,a.kt)("em",{parentName:"th"},"{aes}+ew"),"{aes}) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"ewk_{aes} ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ew_{aes} ","[bytes]")))),(0,a.kt)("p",null,"APDU Response = Encoded Archethic Account Address i.e., arch_address "),(0,a.kt)("h3",{id:"get-signature"},"Get Signature"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"CLA = E0"),(0,a.kt)("th",{parentName:"tr",align:null},"INS = 08"),(0,a.kt)("th",{parentName:"tr",align:null},"P1 = hash_type (of tx_hash) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"P2 = address_index (for bip44) ","[4 bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"Lc = len(tx",(0,a.kt)("em",{parentName:"th"},"hash+ewk"),"{aes}+ew_{aes}) ","[1 byte]"),(0,a.kt)("th",{parentName:"tr",align:null},"tx_hash ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ewk_{aes} ","[bytes]"),(0,a.kt)("th",{parentName:"tr",align:null},"ew_{aes} ","[bytes]")))),(0,a.kt)("p",null,"APDU Response = ASN DER Signature || Corresponding public key from whose private key the signature was made, i.e., encode(pub_key)"))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/5eea7269.53325f97.js b/assets/js/5eea7269.50a08f79.js similarity index 99% rename from assets/js/5eea7269.53325f97.js rename to assets/js/5eea7269.50a08f79.js index 8e17e4dde..52f550cc1 100644 --- a/assets/js/5eea7269.53325f97.js +++ b/assets/js/5eea7269.50a08f79.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6748],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var d=a.createContext({}),i=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=i(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,d=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=i(n),m=o,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||r;return n?a.createElement(k,l(l({ref:t},u),{},{components:n})):a.createElement(k,l({ref:t},u))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=m;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var i=2;i{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>c,assets:()=>i,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var a=n(7462),o=n(7294),r=n(3905);n(8209);const l={id:"unspent-output",title:"UnspentOutput",hide_table_of_contents:!1},s=void 0,d={unversionedId:"build/api/schema/objects/unspent-output",id:"build/api/schema/objects/unspent-output",title:"UnspentOutput",description:"[UnspentOutput] represents the remaining unspent output of the transaction.",source:"@site/docs/build/api/schema/objects/unspent-output.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/unspent-output",permalink:"/build/api/schema/objects/unspent-output",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"unspent-output",title:"UnspentOutput",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoTransfer",permalink:"/build/api/schema/objects/uco-transfer"},next:{title:"ValidationStamp",permalink:"/build/api/schema/objects/validation-stamp"}},i={},u=[{value:"Fields",id:"fields",level:3},{value:'UnspentOutput.amountInt ',id:"code-style-fontweight-normal-unspentoutputbamountbcodeint-",level:4},{value:'UnspentOutput.fromAddress ',id:"code-style-fontweight-normal-unspentoutputbfrombcodeaddress-",level:4},{value:'UnspentOutput.timestampTimestamp ',id:"code-style-fontweight-normal-unspentoutputbtimestampbcodetimestamp-",level:4},{value:'UnspentOutput.tokenAddressAddress ',id:"code-style-fontweight-normal-unspentoutputbtokenaddressbcodeaddress-",level:4},{value:'UnspentOutput.tokenIdInt ',id:"code-style-fontweight-normal-unspentoutputbtokenidbcodeint-",level:4},{value:'UnspentOutput.typeString ',id:"code-style-fontweight-normal-unspentoutputbtypebcodestring-",level:4},{value:'UnspentOutput.versionInt ',id:"code-style-fontweight-normal-unspentoutputbversionbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),c=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:u,Bullet:p,SpecifiedBy:c,Badge:m},f="wrapper";function b(e){let{components:t,...n}=e;return(0,r.kt)(f,(0,a.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[UnspentOutput]"," represents the remaining unspent output of the transaction.\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,r.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,r.kt)("li",{parentName:"ul"},"Type: UCO/token"),(0,r.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,r.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted."),(0,r.kt)("li",{parentName:"ul"},"Timestamp: Date time when the UTXO created/manipulated"),(0,r.kt)("li",{parentName:"ul"},"Version: Version of the UTXO data structure")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type UnspentOutput {\n amount: Int\n from: Address\n timestamp: Timestamp\n tokenAddress: Address\n tokenId: Int\n type: String\n version: Int\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbamountbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"amount"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbfrombcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"from"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtimestampbcodetimestamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"timestamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,r.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtokenaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"tokenAddress"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtokenidbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"tokenId"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"type"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"version"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6748],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var d=a.createContext({}),i=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=i(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,d=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=i(n),m=o,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||r;return n?a.createElement(k,l(l({ref:t},u),{},{components:n})):a.createElement(k,l({ref:t},u))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=m;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var i=2;i{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>c,assets:()=>i,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var a=n(7462),o=n(7294),r=n(3905);n(8209);const l={id:"unspent-output",title:"UnspentOutput",hide_table_of_contents:!1},s=void 0,d={unversionedId:"build/api/schema/objects/unspent-output",id:"build/api/schema/objects/unspent-output",title:"UnspentOutput",description:"[UnspentOutput] represents the remaining unspent output of the transaction.",source:"@site/docs/build/api/schema/objects/unspent-output.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/unspent-output",permalink:"/build/api/schema/objects/unspent-output",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"unspent-output",title:"UnspentOutput",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoTransfer",permalink:"/build/api/schema/objects/uco-transfer"},next:{title:"ValidationStamp",permalink:"/build/api/schema/objects/validation-stamp"}},i={},u=[{value:"Fields",id:"fields",level:3},{value:'UnspentOutput.amountInt ',id:"code-style-fontweight-normal-unspentoutputbamountbcodeint-",level:4},{value:'UnspentOutput.fromAddress ',id:"code-style-fontweight-normal-unspentoutputbfrombcodeaddress-",level:4},{value:'UnspentOutput.timestampTimestamp ',id:"code-style-fontweight-normal-unspentoutputbtimestampbcodetimestamp-",level:4},{value:'UnspentOutput.tokenAddressAddress ',id:"code-style-fontweight-normal-unspentoutputbtokenaddressbcodeaddress-",level:4},{value:'UnspentOutput.tokenIdInt ',id:"code-style-fontweight-normal-unspentoutputbtokenidbcodeint-",level:4},{value:'UnspentOutput.typeString ',id:"code-style-fontweight-normal-unspentoutputbtypebcodestring-",level:4},{value:'UnspentOutput.versionInt ',id:"code-style-fontweight-normal-unspentoutputbversionbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),c=e=>(0,r.kt)(o.Fragment,null,"Specification",(0,r.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,r.kt)(o.Fragment,null,(0,r.kt)("span",{class:"badge badge--"+e.class},e.text)),k={toc:u,Bullet:p,SpecifiedBy:c,Badge:m},f="wrapper";function b(e){let{components:t,...n}=e;return(0,r.kt)(f,(0,a.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"[UnspentOutput]"," represents the remaining unspent output of the transaction.\nIt includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"From: transaction which send the amount of assets"),(0,r.kt)("li",{parentName:"ul"},"Amount: asset amount"),(0,r.kt)("li",{parentName:"ul"},"Type: UCO/token"),(0,r.kt)("li",{parentName:"ul"},"token address: address of the token if the type is token"),(0,r.kt)("li",{parentName:"ul"},"token id: It is the id for a token which is allocated when the token is minted."),(0,r.kt)("li",{parentName:"ul"},"Timestamp: Date time when the UTXO created/manipulated"),(0,r.kt)("li",{parentName:"ul"},"Version: Version of the UTXO data structure")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-graphql"},"type UnspentOutput {\n amount: Int\n from: Address\n timestamp: Timestamp\n tokenAddress: Address\n tokenId: Int\n type: String\n version: Int\n}\n")),(0,r.kt)("h3",{id:"fields"},"Fields"),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbamountbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"amount"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbfrombcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"from"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtimestampbcodetimestamp-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"timestamp"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,r.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtokenaddressbcodeaddress-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"tokenAddress"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,r.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtokenidbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"tokenId"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbtypebcodestring-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"type"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,r.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h4",{id:"code-style-fontweight-normal-unspentoutputbversionbcodeint-"},(0,r.kt)("a",{parentName:"h4",href:"#"},(0,r.kt)("code",{style:{fontWeight:"normal"}},"UnspentOutput.",(0,r.kt)("b",null,"version"))),(0,r.kt)(p,{mdxType:"Bullet"}),(0,r.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,r.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,r.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,r.kt)("blockquote",null),(0,r.kt)("h3",{id:"member-of"},"Member of"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,r.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,r.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/5fe1ab02.51a85f80.js b/assets/js/5fe1ab02.5be26fde.js similarity index 98% rename from assets/js/5fe1ab02.51a85f80.js rename to assets/js/5fe1ab02.5be26fde.js index 95d311006..d8dc98ab6 100644 --- a/assets/js/5fe1ab02.51a85f80.js +++ b/assets/js/5fe1ab02.5be26fde.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2926],{3905:(t,n,e)=>{e.d(n,{Zo:()=>c,kt:()=>u});var a=e(7294);function i(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function o(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,a)}return e}function r(t){for(var n=1;n=0||(i[e]=t[e]);return i}(t,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(i[e]=t[e])}return i}var d=a.createContext({}),l=function(t){var n=a.useContext(d),e=n;return t&&(e="function"==typeof t?t(n):r(r({},n),t)),e},c=function(t){var n=l(t.components);return a.createElement(d.Provider,{value:n},t.children)},m="mdxType",p={inlineCode:"code",wrapper:function(t){var n=t.children;return a.createElement(a.Fragment,{},n)}},f=a.forwardRef((function(t,n){var e=t.components,i=t.mdxType,o=t.originalType,d=t.parentName,c=s(t,["components","mdxType","originalType","parentName"]),m=l(e),f=i,u=m["".concat(d,".").concat(f)]||m[f]||p[f]||o;return e?a.createElement(u,r(r({ref:n},c),{},{components:e})):a.createElement(u,r({ref:n},c))}));function u(t,n){var e=arguments,i=n&&n.mdxType;if("string"==typeof t||i){var o=e.length,r=new Array(o);r[0]=f;var s={};for(var d in n)hasOwnProperty.call(n,d)&&(s[d]=n[d]);s.originalType=t,s[m]="string"==typeof t?t:i,r[1]=s;for(var l=2;l{e.r(n),e.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=e(7462),i=(e(7294),e(3905));e(8209);const o={id:"mining",title:"Mining"},r=void 0,s={unversionedId:"build/core/mining/mining",id:"build/core/mining/mining",title:"Mining",description:"Transaction validation (aka Mining) defines processes and validations algorithms.",source:"@site/docs/build/core/mining/README.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/",permalink:"/build/core/mining/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"mining",title:"Mining"},sidebar:"docs",previous:{title:"Code Proposals",permalink:"/build/core/governance/code-proposals"},next:{title:"Pending transaction validation",permalink:"/build/core/mining/transaction-validation"}},d={},l=[{value:"Standalone validation workflow",id:"standalone-validation-workflow",level:2},{value:"Distributed validation",id:"distributed-validation",level:2},{value:"Worflow",id:"worflow",level:3},{value:"FSM",id:"fsm",level:3}],c={toc:l},m="wrapper";function p(t){let{components:n,...e}=t;return(0,i.kt)(m,(0,a.Z)({},c,e,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Transaction validation (aka Mining) defines processes and validations algorithms."),(0,i.kt)("p",null,"Once a transaction is under validation a given process is dedicated to this transaction.\nDepending of the number of validation nodes several validation implementation are defined."),(0,i.kt)("p",null,"Along with validation workflow and processes, this context defines high levels functions to get the validation nodes and to assert their election."),(0,i.kt)("h2",{id:"standalone-validation-workflow"},"Standalone validation workflow"),(0,i.kt)("p",null,"When there is not only a single validation nodes (during the network initialization), a process is spawn to manage the transaction validation as a Task to run it (fire-off)"),(0,i.kt)("mermaid",{value:"stateDiagram-v2\n direction LR\n [*] --\x3e Idle\n Idle --\x3e ValidateTransaction\n ValidateTransaction: Validate transaction\n ValidateTransaction --\x3e Replicate\n Replicate --\x3e Replicate: Wait confirmations\n Replicate --\x3e NotifyAttestation\n NotifyAttestation: Notify transaction attestation\n NotifyAttestation --\x3e [*]\n"}),(0,i.kt)("h2",{id:"distributed-validation"},"Distributed validation"),(0,i.kt)("h3",{id:"worflow"},"Worflow"),(0,i.kt)("mermaid",{value:"sequenceDiagram\n Client->>+WelcomeNode: Submit new transaction\n par send transaction\n WelcomeNode->>+Coordinator: \n and \n WelcomeNode->>+CrossValidationNode: \n end\n WelcomeNode ->>-Client: Transaction submited\n\n par build context \n Coordinator ->>+PreviousStorageNode: Fetch previous transaction\n Coordinator ->>+PreviousStorageNode: Fetch unspent outputs\n and\n CrossValidationNode ->>+PreviousStorageNode: Fetch previous transaction\n CrossValidationNode ->>+PreviousStorageNode: Fetch unspent outputs\n CrossValidationNode ->>+Coordinator: Notify context and availability\n end\n \n \n Coordinator ->>+Coordinator: Build validation stamp\n Coordinator ->>+CrossValidationNode: Send validation stamp\n\n par wait validation stamp\n CrossValidationNode ->>+CrossValidationNode: Cross validate the stamp\n CrossValidationNode ->>+CrossValidationNode: Notify cross validation stamp\n CrossValidationNode ->>+Coordinator: Notify cross validation stamp\n end\n\n par chain replication \n Coordinator ->>+ChainStorageNode: Replicate transaction\n CrossValidationNode ->>+ChainStorageNode: Replicate transaction\n end\n\n ChainStorageNode ->>+ChainStorageNode: Validate transaction and store transaction\n alt transaction valid \n ChainStorageNode ->>+ CrossValidationNode: Replication confirmation\n ChainStorageNode ->>+ Coordinator: Replication confirmation\n end\n\n par notify replication\n CrossValidationNode--\x3e+WelcomeNode: Confirm replication\n Coordinator--\x3e+WelcomeNode: Confirm replication\n CrossValidationNode--\x3e+PreviousStorageNode: Confirm replication\n Coordinator--\x3e+PreviousStorageNode: Confirm replication\n CrossValidationNode--\x3e+BeaconChain: Confirm replication\n Coordinator--\x3e+BeaconChain: Confirm replication\n end\n\n WelcomeNode--\x3eClient: Notify replication confirmations"}),(0,i.kt)("h3",{id:"fsm"},"FSM"),(0,i.kt)("p",null,"When there are multiple validation nodes, a distributed workflow process is spawn as FSM to define the states and evolution of the ARCH consensus algorithm."),(0,i.kt)("p",null,"This FSM process is ran by all the validation nodes."),(0,i.kt)("p",null,"Therefore each validation maintains a ",(0,i.kt)("inlineCode",{parentName:"p"},"Registry")," of all the pending transaction validation processes, to be able to redirect P2P messages to the right process."),(0,i.kt)("mermaid",{value:"stateDiagram-v2\n state role_state <>\n state join_state <>\n\n [*] --\x3e Idle\n\n Idle --\x3e Idle: Prevalidate transaction & Build context\n Idle --\x3e role_state\n\n role_state --\x3e Coordinator: first of elected validation nodes\n role_state --\x3e CrossValidationNode: other node\n\n state Coordinator {\n state if_state_enough_context <>\n [*] --\x3e WaitContext\n\n WaitContext: Waiting context and confirmations\n WaitContext --\x3e WaitContext: Add context and node confirmation\n\n EnoughContextAndConfirmations: Enough context and confirmations ?\n\n WaitContext --\x3e EnoughContextAndConfirmations\n EnoughContextAndConfirmations --\x3e if_state_enough_context\n\n if_state_enough_context --\x3e CreateValidationStamp: yes\n if_state_enough_context --\x3e WaitContext: no\n\n CreateValidationStamp: Create validation stamp\n CreateValidationStamp --\x3e NotifyValidationStamp\n NotifyValidationStamp: Notify validation stamp \n NotifyValidationStamp --\x3e [*]\n }\n\n CrossValidationNode: Cross Validation Node\n state CrossValidationNode {\n [*] --\x3e NotifyContext\n NotifyContext: Notify transaction context\n\n NotifyContext --\x3e WaitValidationStamp\n WaitValidationStamp: Wait validation stamp to validate\n\n WaitValidationStamp --\x3e ValidateValidationStamp\n ValidateValidationStamp: Verify validations tamp\n\n ValidateValidationStamp --\x3e ValidateValidationStamp: create cross validation stamp\n ValidateValidationStamp --\x3e SendCrossValidationStamp\n SendCrossValidationStamp: Send the cross validation stamp to all\n SendCrossValidationStamp --\x3e [*]\n }\n\n Coordinator --\x3e join_state\n CrossValidationNode --\x3e join_state\n\n\n join_state --\x3e WaitCrossValidationStamps\n\n WaitCrossValidationStamps: Wait cross validation stamps\n state WaitCrossValidationStamps {\n state if_state_enough <>\n state if_state_atomic_commitment <>\n \n [*] --\x3e WaitingStamps\n WaitingStamps: Wait\n\n WaitingStamps --\x3e WaitingStamps: Add cross validation stamp\n WaitingStamps --\x3e EnoughStamps\n\n EnoughStamps: Enough cross validation stamps ?\n\n EnoughStamps --\x3e if_state_enough\n\n if_state_enough --\x3e AtomicCommitmentReached: yes \n if_state_enough --\x3e WaitingStamps: no \n \n AtomicCommitmentReached: Atomic commitment reached ? \n \n AtomicCommitmentReached --\x3e if_state_atomic_commitment \n \n if_state_atomic_commitment --\x3e [*]: yes \n if_state_atomic_commitment --\x3e [*]: no\n }\n\n WaitCrossValidationStamps --\x3e Replication\n\n state Replication {\n [*] --\x3e NotifyTransaction\n NotifyTransaction: Notify transaction\n WaitAck: Waiting replicas confirmations\n WaitAck --\x3e WaitAck: Add ack\n\n NotifyTransaction --\x3e WaitAck\n\n state if_state_enough_replicas <>\n EnoughConfirmations: Enough confirmations ?\n WaitAck --\x3e EnoughConfirmations\n\n EnoughConfirmations --\x3e if_state_enough_replicas\n NotifyAttestation: Notify replication attestation\n if_state_enough_replicas --\x3e NotifyAttestation: yes\n if_state_enough_replicas --\x3e WaitAck: no\n NotifyAttestation --\x3e [*]\n }\n"}))}p.isMDXComponent=!0},8209:(t,n,e)=>{e(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2926],{3905:(t,n,e)=>{e.d(n,{Zo:()=>c,kt:()=>u});var a=e(7294);function i(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function o(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,a)}return e}function r(t){for(var n=1;n=0||(i[e]=t[e]);return i}(t,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(i[e]=t[e])}return i}var d=a.createContext({}),l=function(t){var n=a.useContext(d),e=n;return t&&(e="function"==typeof t?t(n):r(r({},n),t)),e},c=function(t){var n=l(t.components);return a.createElement(d.Provider,{value:n},t.children)},m="mdxType",p={inlineCode:"code",wrapper:function(t){var n=t.children;return a.createElement(a.Fragment,{},n)}},f=a.forwardRef((function(t,n){var e=t.components,i=t.mdxType,o=t.originalType,d=t.parentName,c=s(t,["components","mdxType","originalType","parentName"]),m=l(e),f=i,u=m["".concat(d,".").concat(f)]||m[f]||p[f]||o;return e?a.createElement(u,r(r({ref:n},c),{},{components:e})):a.createElement(u,r({ref:n},c))}));function u(t,n){var e=arguments,i=n&&n.mdxType;if("string"==typeof t||i){var o=e.length,r=new Array(o);r[0]=f;var s={};for(var d in n)hasOwnProperty.call(n,d)&&(s[d]=n[d]);s.originalType=t,s[m]="string"==typeof t?t:i,r[1]=s;for(var l=2;l{e.r(n),e.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=e(7462),i=(e(7294),e(3905));e(8209);const o={id:"mining",title:"Mining"},r=void 0,s={unversionedId:"build/core/mining/mining",id:"build/core/mining/mining",title:"Mining",description:"Transaction validation (aka Mining) defines processes and validations algorithms.",source:"@site/docs/build/core/mining/README.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/",permalink:"/build/core/mining/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"mining",title:"Mining"},sidebar:"docs",previous:{title:"Code Proposals",permalink:"/build/core/governance/code-proposals"},next:{title:"Pending transaction validation",permalink:"/build/core/mining/transaction-validation"}},d={},l=[{value:"Standalone validation workflow",id:"standalone-validation-workflow",level:2},{value:"Distributed validation",id:"distributed-validation",level:2},{value:"Worflow",id:"worflow",level:3},{value:"FSM",id:"fsm",level:3}],c={toc:l},m="wrapper";function p(t){let{components:n,...e}=t;return(0,i.kt)(m,(0,a.Z)({},c,e,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Transaction validation (aka Mining) defines processes and validations algorithms."),(0,i.kt)("p",null,"Once a transaction is under validation a given process is dedicated to this transaction.\nDepending of the number of validation nodes several validation implementation are defined."),(0,i.kt)("p",null,"Along with validation workflow and processes, this context defines high levels functions to get the validation nodes and to assert their election."),(0,i.kt)("h2",{id:"standalone-validation-workflow"},"Standalone validation workflow"),(0,i.kt)("p",null,"When there is not only a single validation nodes (during the network initialization), a process is spawn to manage the transaction validation as a Task to run it (fire-off)"),(0,i.kt)("mermaid",{value:"stateDiagram-v2\n direction LR\n [*] --\x3e Idle\n Idle --\x3e ValidateTransaction\n ValidateTransaction: Validate transaction\n ValidateTransaction --\x3e Replicate\n Replicate --\x3e Replicate: Wait confirmations\n Replicate --\x3e NotifyAttestation\n NotifyAttestation: Notify transaction attestation\n NotifyAttestation --\x3e [*]\n"}),(0,i.kt)("h2",{id:"distributed-validation"},"Distributed validation"),(0,i.kt)("h3",{id:"worflow"},"Worflow"),(0,i.kt)("mermaid",{value:"sequenceDiagram\n Client->>+WelcomeNode: Submit new transaction\n par send transaction\n WelcomeNode->>+Coordinator: \n and \n WelcomeNode->>+CrossValidationNode: \n end\n WelcomeNode ->>-Client: Transaction submited\n\n par build context \n Coordinator ->>+PreviousStorageNode: Fetch previous transaction\n Coordinator ->>+PreviousStorageNode: Fetch unspent outputs\n and\n CrossValidationNode ->>+PreviousStorageNode: Fetch previous transaction\n CrossValidationNode ->>+PreviousStorageNode: Fetch unspent outputs\n CrossValidationNode ->>+Coordinator: Notify context and availability\n end\n \n \n Coordinator ->>+Coordinator: Build validation stamp\n Coordinator ->>+CrossValidationNode: Send validation stamp\n\n par wait validation stamp\n CrossValidationNode ->>+CrossValidationNode: Cross validate the stamp\n CrossValidationNode ->>+CrossValidationNode: Notify cross validation stamp\n CrossValidationNode ->>+Coordinator: Notify cross validation stamp\n end\n\n par chain replication \n Coordinator ->>+ChainStorageNode: Replicate transaction\n CrossValidationNode ->>+ChainStorageNode: Replicate transaction\n end\n\n ChainStorageNode ->>+ChainStorageNode: Validate transaction and store transaction\n alt transaction valid \n ChainStorageNode ->>+ CrossValidationNode: Replication confirmation\n ChainStorageNode ->>+ Coordinator: Replication confirmation\n end\n\n par notify replication\n CrossValidationNode--\x3e+WelcomeNode: Confirm replication\n Coordinator--\x3e+WelcomeNode: Confirm replication\n CrossValidationNode--\x3e+PreviousStorageNode: Confirm replication\n Coordinator--\x3e+PreviousStorageNode: Confirm replication\n CrossValidationNode--\x3e+BeaconChain: Confirm replication\n Coordinator--\x3e+BeaconChain: Confirm replication\n end\n\n WelcomeNode--\x3eClient: Notify replication confirmations"}),(0,i.kt)("h3",{id:"fsm"},"FSM"),(0,i.kt)("p",null,"When there are multiple validation nodes, a distributed workflow process is spawn as FSM to define the states and evolution of the ARCH consensus algorithm."),(0,i.kt)("p",null,"This FSM process is ran by all the validation nodes."),(0,i.kt)("p",null,"Therefore each validation maintains a ",(0,i.kt)("inlineCode",{parentName:"p"},"Registry")," of all the pending transaction validation processes, to be able to redirect P2P messages to the right process."),(0,i.kt)("mermaid",{value:"stateDiagram-v2\n state role_state <>\n state join_state <>\n\n [*] --\x3e Idle\n\n Idle --\x3e Idle: Prevalidate transaction & Build context\n Idle --\x3e role_state\n\n role_state --\x3e Coordinator: first of elected validation nodes\n role_state --\x3e CrossValidationNode: other node\n\n state Coordinator {\n state if_state_enough_context <>\n [*] --\x3e WaitContext\n\n WaitContext: Waiting context and confirmations\n WaitContext --\x3e WaitContext: Add context and node confirmation\n\n EnoughContextAndConfirmations: Enough context and confirmations ?\n\n WaitContext --\x3e EnoughContextAndConfirmations\n EnoughContextAndConfirmations --\x3e if_state_enough_context\n\n if_state_enough_context --\x3e CreateValidationStamp: yes\n if_state_enough_context --\x3e WaitContext: no\n\n CreateValidationStamp: Create validation stamp\n CreateValidationStamp --\x3e NotifyValidationStamp\n NotifyValidationStamp: Notify validation stamp \n NotifyValidationStamp --\x3e [*]\n }\n\n CrossValidationNode: Cross Validation Node\n state CrossValidationNode {\n [*] --\x3e NotifyContext\n NotifyContext: Notify transaction context\n\n NotifyContext --\x3e WaitValidationStamp\n WaitValidationStamp: Wait validation stamp to validate\n\n WaitValidationStamp --\x3e ValidateValidationStamp\n ValidateValidationStamp: Verify validations tamp\n\n ValidateValidationStamp --\x3e ValidateValidationStamp: create cross validation stamp\n ValidateValidationStamp --\x3e SendCrossValidationStamp\n SendCrossValidationStamp: Send the cross validation stamp to all\n SendCrossValidationStamp --\x3e [*]\n }\n\n Coordinator --\x3e join_state\n CrossValidationNode --\x3e join_state\n\n\n join_state --\x3e WaitCrossValidationStamps\n\n WaitCrossValidationStamps: Wait cross validation stamps\n state WaitCrossValidationStamps {\n state if_state_enough <>\n state if_state_atomic_commitment <>\n \n [*] --\x3e WaitingStamps\n WaitingStamps: Wait\n\n WaitingStamps --\x3e WaitingStamps: Add cross validation stamp\n WaitingStamps --\x3e EnoughStamps\n\n EnoughStamps: Enough cross validation stamps ?\n\n EnoughStamps --\x3e if_state_enough\n\n if_state_enough --\x3e AtomicCommitmentReached: yes \n if_state_enough --\x3e WaitingStamps: no \n \n AtomicCommitmentReached: Atomic commitment reached ? \n \n AtomicCommitmentReached --\x3e if_state_atomic_commitment \n \n if_state_atomic_commitment --\x3e [*]: yes \n if_state_atomic_commitment --\x3e [*]: no\n }\n\n WaitCrossValidationStamps --\x3e Replication\n\n state Replication {\n [*] --\x3e NotifyTransaction\n NotifyTransaction: Notify transaction\n WaitAck: Waiting replicas confirmations\n WaitAck --\x3e WaitAck: Add ack\n\n NotifyTransaction --\x3e WaitAck\n\n state if_state_enough_replicas <>\n EnoughConfirmations: Enough confirmations ?\n WaitAck --\x3e EnoughConfirmations\n\n EnoughConfirmations --\x3e if_state_enough_replicas\n NotifyAttestation: Notify replication attestation\n if_state_enough_replicas --\x3e NotifyAttestation: yes\n if_state_enough_replicas --\x3e WaitAck: no\n NotifyAttestation --\x3e [*]\n }\n"}))}p.isMDXComponent=!0},8209:(t,n,e)=>{e(7294)}}]); \ No newline at end of file diff --git a/assets/js/61e43ac9.407432e5.js b/assets/js/61e43ac9.3fc8451f.js similarity index 97% rename from assets/js/61e43ac9.407432e5.js rename to assets/js/61e43ac9.3fc8451f.js index a3121f777..ce4e457bd 100644 --- a/assets/js/61e43ac9.407432e5.js +++ b/assets/js/61e43ac9.3fc8451f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[81],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),f=n,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||o;return a?r.createElement(m,l(l({ref:t},p),{},{components:a})):r.createElement(m,l({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),o=a(3905);a(8209);const l={id:"float",title:"Float",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/scalars/float",id:"build/api/schema/scalars/float",title:"Float",description:"The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.",source:"@site/docs/build/api/schema/scalars/float.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/float",permalink:"/build/api/schema/scalars/float",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"float",title:"Float",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Content",permalink:"/build/api/schema/scalars/content"},next:{title:"Hash",permalink:"/build/api/schema/scalars/hash"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Float")," scalar type represents signed double-precision fractional values as specified by ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/IEEE_floating_point"},"IEEE 754"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Float\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-data"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoData"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[81],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),f=n,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||o;return a?r.createElement(m,l(l({ref:t},p),{},{components:a})):r.createElement(m,l({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:n,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),o=a(3905);a(8209);const l={id:"float",title:"Float",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/scalars/float",id:"build/api/schema/scalars/float",title:"Float",description:"The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.",source:"@site/docs/build/api/schema/scalars/float.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/float",permalink:"/build/api/schema/scalars/float",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"float",title:"Float",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Content",permalink:"/build/api/schema/scalars/content"},next:{title:"Hash",permalink:"/build/api/schema/scalars/hash"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(b,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Float")," scalar type represents signed double-precision fractional values as specified by ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/IEEE_floating_point"},"IEEE 754"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Float\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-data"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoData"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/65c808a4.26737a29.js b/assets/js/65c808a4.d576851c.js similarity index 97% rename from assets/js/65c808a4.26737a29.js rename to assets/js/65c808a4.d576851c.js index 3ad2b69d3..e286a2496 100644 --- a/assets/js/65c808a4.26737a29.js +++ b/assets/js/65c808a4.d576851c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5630],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>s,default:()=>b,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"transactions",title:"transactions",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/queries/transactions",id:"build/api/schema/queries/transactions",title:"transactions",description:"Query the network to find all the transactions locally stored",source:"@site/docs/build/api/schema/queries/transactions.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transactions",permalink:"/build/api/schema/queries/transactions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transactions",title:"transactions",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transaction",permalink:"/build/api/schema/queries/transaction"},next:{title:"version",permalink:"/build/api/schema/queries/version"}},l={},p=[{value:"Arguments",id:"arguments",level:3},{value:'transactions.pagePosInteger ',id:"code-style-fontweight-normal-transactionsbpagebcodeposinteger-",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find all the transactions locally stored"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactions(\n page: PosInteger\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionsbpagebcodeposinteger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactions.",(0,o.kt)("b",null,"page"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,o.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5630],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>s,default:()=>b,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"transactions",title:"transactions",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/queries/transactions",id:"build/api/schema/queries/transactions",title:"transactions",description:"Query the network to find all the transactions locally stored",source:"@site/docs/build/api/schema/queries/transactions.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transactions",permalink:"/build/api/schema/queries/transactions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transactions",title:"transactions",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transaction",permalink:"/build/api/schema/queries/transaction"},next:{title:"version",permalink:"/build/api/schema/queries/version"}},l={},p=[{value:"Arguments",id:"arguments",level:3},{value:'transactions.pagePosInteger ',id:"code-style-fontweight-normal-transactionsbpagebcodeposinteger-",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find all the transactions locally stored"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactions(\n page: PosInteger\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionsbpagebcodeposinteger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactions.",(0,o.kt)("b",null,"page"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,o.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/66076425.39215876.js b/assets/js/66076425.7a04d023.js similarity index 97% rename from assets/js/66076425.39215876.js rename to assets/js/66076425.7a04d023.js index 6c79b8ada..068353ee6 100644 --- a/assets/js/66076425.39215876.js +++ b/assets/js/66076425.7a04d023.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3168],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=p(a),u=n,y=m["".concat(l,".").concat(u)]||m[u]||d[u]||i;return a?r.createElement(y,s(s({ref:t},c),{},{components:a})):r.createElement(y,s({ref:t},c))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[m]="string"==typeof e?e:n,s[1]=o;for(var p=2;p{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>m,SpecifiedBy:()=>d,assets:()=>p,contentTitle:()=>o,default:()=>b,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var r=a(7462),n=a(7294),i=a(3905);a(8209);const s={id:"timestamp",title:"Timestamp",hide_table_of_contents:!1},o=void 0,l={unversionedId:"build/api/schema/scalars/timestamp",id:"build/api/schema/scalars/timestamp",title:"Timestamp",description:"The [Timestamp] scalar type represents a UNIX timestamp in seconds",source:"@site/docs/build/api/schema/scalars/timestamp.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/timestamp",permalink:"/build/api/schema/scalars/timestamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"timestamp",title:"Timestamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"String",permalink:"/build/api/schema/scalars/string"},next:{title:"TokenProperties",permalink:"/build/api/schema/scalars/token-properties"}},p={},c=[{value:"Member of",id:"member-of",level:3}],m=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:c,Bullet:m,SpecifiedBy:d,Badge:u},f="wrapper";function b(e){let{components:t,...a}=e;return(0,i.kt)(f,(0,r.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Timestamp]"," scalar type represents a UNIX timestamp in seconds"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Timestamp\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"beaconChainSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,i.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-data"},(0,i.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/oracle-data"},(0,i.kt)("inlineCode",{parentName:"a"},"oracleData"))," ",(0,i.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,i.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3168],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=p(a),u=n,y=m["".concat(l,".").concat(u)]||m[u]||d[u]||i;return a?r.createElement(y,s(s({ref:t},c),{},{components:a})):r.createElement(y,s({ref:t},c))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[m]="string"==typeof e?e:n,s[1]=o;for(var p=2;p{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>m,SpecifiedBy:()=>d,assets:()=>p,contentTitle:()=>o,default:()=>b,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var r=a(7462),n=a(7294),i=a(3905);a(8209);const s={id:"timestamp",title:"Timestamp",hide_table_of_contents:!1},o=void 0,l={unversionedId:"build/api/schema/scalars/timestamp",id:"build/api/schema/scalars/timestamp",title:"Timestamp",description:"The [Timestamp] scalar type represents a UNIX timestamp in seconds",source:"@site/docs/build/api/schema/scalars/timestamp.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/timestamp",permalink:"/build/api/schema/scalars/timestamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"timestamp",title:"Timestamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"String",permalink:"/build/api/schema/scalars/string"},next:{title:"TokenProperties",permalink:"/build/api/schema/scalars/token-properties"}},p={},c=[{value:"Member of",id:"member-of",level:3}],m=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:c,Bullet:m,SpecifiedBy:d,Badge:u},f="wrapper";function b(e){let{components:t,...a}=e;return(0,i.kt)(f,(0,r.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Timestamp]"," scalar type represents a UNIX timestamp in seconds"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Timestamp\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"beaconChainSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,i.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/oracle-data"},(0,i.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/oracle-data"},(0,i.kt)("inlineCode",{parentName:"a"},"oracleData"))," ",(0,i.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,i.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(m,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/6638f55a.3652f3f8.js b/assets/js/6638f55a.18ac5644.js similarity index 97% rename from assets/js/6638f55a.3652f3f8.js rename to assets/js/6638f55a.18ac5644.js index 89a0fd5ea..cc9cfee80 100644 --- a/assets/js/6638f55a.3652f3f8.js +++ b/assets/js/6638f55a.18ac5644.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7486],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),d=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=d(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||i;return n?r.createElement(f,l(l({ref:t},s),{},{components:n})):r.createElement(f,l({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var d=2;d{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>d,contentTitle:()=>o,default:()=>b,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var r=n(7462),a=n(7294),i=n(3905);n(8209);const l={id:"include",title:"include",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/directives/include",id:"build/api/schema/directives/include",title:"include",description:"Directs the executor to include this field or fragment only when the if argument is true.",source:"@site/docs/build/api/schema/directives/include.mdx",sourceDirName:"build/api/schema/directives",slug:"/build/api/schema/directives/include",permalink:"/build/api/schema/directives/include",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"include",title:"include",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Schema Documentation",permalink:"/schema"},next:{title:"skip",permalink:"/build/api/schema/directives/skip"}},d={},s=[{value:"Arguments",id:"arguments",level:3},{value:'include.ifBoolean! ',id:"code-style-fontweight-normal-includebifbcodeboolean--",level:4}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:s,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,i.kt)(y,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Directs the executor to include this field or fragment only when the ",(0,i.kt)("inlineCode",{parentName:"p"},"if")," argument is true."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"directive @include(\n if: Boolean!\n)\n")),(0,i.kt)("h3",{id:"arguments"},"Arguments"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-includebifbcodeboolean--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"include.",(0,i.kt)("b",null,"if"))),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,i.kt)("inlineCode",{parentName:"a"},"Boolean!"))," ",(0,i.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,i.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"Included when true.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7486],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),d=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=d(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||i;return n?r.createElement(f,l(l({ref:t},s),{},{components:n})):r.createElement(f,l({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var d=2;d{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>d,contentTitle:()=>o,default:()=>b,frontMatter:()=>l,metadata:()=>c,toc:()=>s});var r=n(7462),a=n(7294),i=n(3905);n(8209);const l={id:"include",title:"include",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/directives/include",id:"build/api/schema/directives/include",title:"include",description:"Directs the executor to include this field or fragment only when the if argument is true.",source:"@site/docs/build/api/schema/directives/include.mdx",sourceDirName:"build/api/schema/directives",slug:"/build/api/schema/directives/include",permalink:"/build/api/schema/directives/include",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"include",title:"include",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Schema Documentation",permalink:"/schema"},next:{title:"skip",permalink:"/build/api/schema/directives/skip"}},d={},s=[{value:"Arguments",id:"arguments",level:3},{value:'include.ifBoolean! ',id:"code-style-fontweight-normal-includebifbcodeboolean--",level:4}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:s,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,i.kt)(y,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Directs the executor to include this field or fragment only when the ",(0,i.kt)("inlineCode",{parentName:"p"},"if")," argument is true."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"directive @include(\n if: Boolean!\n)\n")),(0,i.kt)("h3",{id:"arguments"},"Arguments"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-includebifbcodeboolean--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"include.",(0,i.kt)("b",null,"if"))),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,i.kt)("inlineCode",{parentName:"a"},"Boolean!"))," ",(0,i.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,i.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"Included when true.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/66545c3d.b8b47866.js b/assets/js/66545c3d.392862a4.js similarity index 98% rename from assets/js/66545c3d.b8b47866.js rename to assets/js/66545c3d.392862a4.js index 0e7c5f33d..6dbc75b8f 100644 --- a/assets/js/66545c3d.b8b47866.js +++ b/assets/js/66545c3d.392862a4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7045],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>u});var o=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=o.createContext({}),c=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(i.Provider,{value:t},e.children)},p="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,u=p["".concat(i,".").concat(m)]||p[m]||k[m]||l;return n?o.createElement(u,r(r({ref:t},d),{},{components:n})):o.createElement(u,r({ref:t},d))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,r=new Array(l);r[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>k,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=n(7462),a=n(7294),l=n(3905);n(8209);const r={id:"token",title:"Token",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/token",id:"build/api/schema/objects/token",title:"Token",description:"[token] represents a token metadata.",source:"@site/docs/build/api/schema/objects/token.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token",permalink:"/build/api/schema/objects/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token",title:"Token",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenTransfer",permalink:"/build/api/schema/objects/token-transfer"},next:{title:"TransactionAttestation",permalink:"/build/api/schema/objects/transaction-attestation"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Token.collection[TokenProperties] ',id:"code-style-fontweight-normal-tokenbcollectionbcodetokenproperties--",level:4},{value:'Token.decimalsInt ',id:"code-style-fontweight-normal-tokenbdecimalsbcodeint-",level:4},{value:'Token.genesisAddress ',id:"code-style-fontweight-normal-tokenbgenesisbcodeaddress-",level:4},{value:'Token.idString ',id:"code-style-fontweight-normal-tokenbidbcodestring-",level:4},{value:'Token.nameString ',id:"code-style-fontweight-normal-tokenbnamebcodestring-",level:4},{value:'Token.ownerships[Ownership] ',id:"code-style-fontweight-normal-tokenbownershipsbcodeownership--",level:4},{value:'Token.propertiesTokenProperties ',id:"code-style-fontweight-normal-tokenbpropertiesbcodetokenproperties-",level:4},{value:'Token.supplyInt ',id:"code-style-fontweight-normal-tokenbsupplybcodeint-",level:4},{value:'Token.symbolString ',id:"code-style-fontweight-normal-tokenbsymbolbcodestring-",level:4},{value:'Token.typeString ',id:"code-style-fontweight-normal-tokenbtypebcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,l.kt)(a.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),k=e=>(0,l.kt)(a.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(a.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),u={toc:d,Bullet:p,SpecifiedBy:k,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,l.kt)(y,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[token]"," represents a token metadata.\nIt includes:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"genesis: Genesis address to the token"),(0,l.kt)("li",{parentName:"ul"},"name: Name of the token"),(0,l.kt)("li",{parentName:"ul"},"symbol: Symbol of the token"),(0,l.kt)("li",{parentName:"ul"},"supply: Supply of the token"),(0,l.kt)("li",{parentName:"ul"},"type: Type of the token"),(0,l.kt)("li",{parentName:"ul"},"decimals: Number of decimals of the token"),(0,l.kt)("li",{parentName:"ul"},"properties: Properties of the token (if any)"),(0,l.kt)("li",{parentName:"ul"},"collection: List of properties for a collection (if any)"),(0,l.kt)("li",{parentName:"ul"},"ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,l.kt)("li",{parentName:"ul"},"id: Unique identification of the token on the chain")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type Token {\n collection: [TokenProperties]\n decimals: Int\n genesis: Address\n id: String\n name: String\n ownerships: [Ownership]\n properties: TokenProperties\n supply: Int\n symbol: String\n type: String\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbcollectionbcodetokenproperties--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"collection"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/token-properties"},(0,l.kt)("inlineCode",{parentName:"a"},"[TokenProperties]"))," ",(0,l.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbdecimalsbcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"decimals"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbgenesisbcodeaddress-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"genesis"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,l.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbidbcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"id"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbnamebcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"name"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbownershipsbcodeownership--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"ownerships"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ownership"},(0,l.kt)("inlineCode",{parentName:"a"},"[Ownership]"))," ",(0,l.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbpropertiesbcodetokenproperties-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"properties"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/token-properties"},(0,l.kt)("inlineCode",{parentName:"a"},"TokenProperties"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbsupplybcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"supply"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbsymbolbcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"symbol"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbtypebcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"type"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/token"},(0,l.kt)("inlineCode",{parentName:"a"},"token"))," ",(0,l.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7045],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>u});var o=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=o.createContext({}),c=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(i.Provider,{value:t},e.children)},p="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,u=p["".concat(i,".").concat(m)]||p[m]||k[m]||l;return n?o.createElement(u,r(r({ref:t},d),{},{components:n})):o.createElement(u,r({ref:t},d))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,r=new Array(l);r[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>k,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=n(7462),a=n(7294),l=n(3905);n(8209);const r={id:"token",title:"Token",hide_table_of_contents:!1},s=void 0,i={unversionedId:"build/api/schema/objects/token",id:"build/api/schema/objects/token",title:"Token",description:"[token] represents a token metadata.",source:"@site/docs/build/api/schema/objects/token.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token",permalink:"/build/api/schema/objects/token",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token",title:"Token",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenTransfer",permalink:"/build/api/schema/objects/token-transfer"},next:{title:"TransactionAttestation",permalink:"/build/api/schema/objects/transaction-attestation"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Token.collection[TokenProperties] ',id:"code-style-fontweight-normal-tokenbcollectionbcodetokenproperties--",level:4},{value:'Token.decimalsInt ',id:"code-style-fontweight-normal-tokenbdecimalsbcodeint-",level:4},{value:'Token.genesisAddress ',id:"code-style-fontweight-normal-tokenbgenesisbcodeaddress-",level:4},{value:'Token.idString ',id:"code-style-fontweight-normal-tokenbidbcodestring-",level:4},{value:'Token.nameString ',id:"code-style-fontweight-normal-tokenbnamebcodestring-",level:4},{value:'Token.ownerships[Ownership] ',id:"code-style-fontweight-normal-tokenbownershipsbcodeownership--",level:4},{value:'Token.propertiesTokenProperties ',id:"code-style-fontweight-normal-tokenbpropertiesbcodetokenproperties-",level:4},{value:'Token.supplyInt ',id:"code-style-fontweight-normal-tokenbsupplybcodeint-",level:4},{value:'Token.symbolString ',id:"code-style-fontweight-normal-tokenbsymbolbcodestring-",level:4},{value:'Token.typeString ',id:"code-style-fontweight-normal-tokenbtypebcodestring-",level:4},{value:"Returned by",id:"returned-by",level:3}],p=()=>(0,l.kt)(a.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),k=e=>(0,l.kt)(a.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(a.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),u={toc:d,Bullet:p,SpecifiedBy:k,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,l.kt)(y,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[token]"," represents a token metadata.\nIt includes:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"genesis: Genesis address to the token"),(0,l.kt)("li",{parentName:"ul"},"name: Name of the token"),(0,l.kt)("li",{parentName:"ul"},"symbol: Symbol of the token"),(0,l.kt)("li",{parentName:"ul"},"supply: Supply of the token"),(0,l.kt)("li",{parentName:"ul"},"type: Type of the token"),(0,l.kt)("li",{parentName:"ul"},"decimals: Number of decimals of the token"),(0,l.kt)("li",{parentName:"ul"},"properties: Properties of the token (if any)"),(0,l.kt)("li",{parentName:"ul"},"collection: List of properties for a collection (if any)"),(0,l.kt)("li",{parentName:"ul"},"ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,l.kt)("li",{parentName:"ul"},"id: Unique identification of the token on the chain")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type Token {\n collection: [TokenProperties]\n decimals: Int\n genesis: Address\n id: String\n name: String\n ownerships: [Ownership]\n properties: TokenProperties\n supply: Int\n symbol: String\n type: String\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbcollectionbcodetokenproperties--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"collection"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/token-properties"},(0,l.kt)("inlineCode",{parentName:"a"},"[TokenProperties]"))," ",(0,l.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbdecimalsbcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"decimals"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbgenesisbcodeaddress-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"genesis"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,l.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbidbcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"id"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbnamebcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"name"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbownershipsbcodeownership--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"ownerships"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ownership"},(0,l.kt)("inlineCode",{parentName:"a"},"[Ownership]"))," ",(0,l.kt)(m,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbpropertiesbcodetokenproperties-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"properties"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/token-properties"},(0,l.kt)("inlineCode",{parentName:"a"},"TokenProperties"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbsupplybcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"supply"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbsymbolbcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"symbol"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-tokenbtypebcodestring-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Token.",(0,l.kt)("b",null,"type"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,l.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/token"},(0,l.kt)("inlineCode",{parentName:"a"},"token"))," ",(0,l.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/6aade8bf.8594a04c.js b/assets/js/6aade8bf.cdcd3b04.js similarity index 98% rename from assets/js/6aade8bf.8594a04c.js rename to assets/js/6aade8bf.cdcd3b04.js index c25dcfed6..989792cea 100644 --- a/assets/js/6aade8bf.8594a04c.js +++ b/assets/js/6aade8bf.cdcd3b04.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6518],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),p=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(c.Provider,{value:t},e.children)},m="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),m=p(r),d=n,h=m["".concat(c,".").concat(d)]||m[d]||s[d]||o;return r?a.createElement(h,l(l({ref:t},u),{},{components:r})):a.createElement(h,l({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"memory-table",title:"OracleChain Memory Tables",sidebar_label:"Memory database"},l=void 0,i={unversionedId:"build/core/oracle-chain/memory-table",id:"build/core/oracle-chain/memory-table",title:"OracleChain Memory Tables",description:"OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.",source:"@site/docs/build/core/oracle-chain/mem_table.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/memory-table",permalink:"/build/core/oracle-chain/memory-table",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"memory-table",title:"OracleChain Memory Tables",sidebar_label:"Memory database"},sidebar:"docs",previous:{title:"OracleChain",permalink:"/build/core/oracle-chain/"},next:{title:"Scheduler",permalink:"/build/core/oracle-chain/scheduler"}},c={},p=[],u={toc:p},m="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"OracleChain component provides ",(0,n.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/scheduler"},"scheduler")," and ",(0,n.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/service"},"services")," to maintain transaction chain and real world data integration."),(0,n.kt)("p",null,"But we need a way to access quickly this information for better computation latency."),(0,n.kt)("p",null,"For this purpose, the OracleChain service maintains a memory table using ETS to hold the information according to their date."),(0,n.kt)("p",null,"It represented in that way:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Timestamp"),(0,n.kt)("th",{parentName:"tr",align:null},"Service"),(0,n.kt)("th",{parentName:"tr",align:null},"Data")))),(0,n.kt)("p",null,"For example for the UCO service we may have:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Timestamp"),(0,n.kt)("th",{parentName:"tr",align:null},"Service"),(0,n.kt)("th",{parentName:"tr",align:null},"Data"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1622801400"),(0,n.kt)("td",{parentName:"tr",align:null},"UCO"),(0,n.kt)("td",{parentName:"tr",align:null},'%{ "eur" => 0.02 }')))),(0,n.kt)("p",null,"The table is loading after each oracle or oracle summary transaction and during the bootstrap for faster computation."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"The transaction's fee algorithm is using this cached information to provide this computation quickly")))}s.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6518],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),p=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=p(e.components);return a.createElement(c.Provider,{value:t},e.children)},m="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),m=p(r),d=n,h=m["".concat(c,".").concat(d)]||m[d]||s[d]||o;return r?a.createElement(h,l(l({ref:t},u),{},{components:r})):a.createElement(h,l({ref:t},u))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[m]="string"==typeof e?e:n,l[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"memory-table",title:"OracleChain Memory Tables",sidebar_label:"Memory database"},l=void 0,i={unversionedId:"build/core/oracle-chain/memory-table",id:"build/core/oracle-chain/memory-table",title:"OracleChain Memory Tables",description:"OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.",source:"@site/docs/build/core/oracle-chain/mem_table.md",sourceDirName:"build/core/oracle-chain",slug:"/build/core/oracle-chain/memory-table",permalink:"/build/core/oracle-chain/memory-table",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"memory-table",title:"OracleChain Memory Tables",sidebar_label:"Memory database"},sidebar:"docs",previous:{title:"OracleChain",permalink:"/build/core/oracle-chain/"},next:{title:"Scheduler",permalink:"/build/core/oracle-chain/scheduler"}},c={},p=[],u={toc:p},m="wrapper";function s(e){let{components:t,...r}=e;return(0,n.kt)(m,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"OracleChain component provides ",(0,n.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/scheduler"},"scheduler")," and ",(0,n.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/service"},"services")," to maintain transaction chain and real world data integration."),(0,n.kt)("p",null,"But we need a way to access quickly this information for better computation latency."),(0,n.kt)("p",null,"For this purpose, the OracleChain service maintains a memory table using ETS to hold the information according to their date."),(0,n.kt)("p",null,"It represented in that way:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Timestamp"),(0,n.kt)("th",{parentName:"tr",align:null},"Service"),(0,n.kt)("th",{parentName:"tr",align:null},"Data")))),(0,n.kt)("p",null,"For example for the UCO service we may have:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Timestamp"),(0,n.kt)("th",{parentName:"tr",align:null},"Service"),(0,n.kt)("th",{parentName:"tr",align:null},"Data"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"1622801400"),(0,n.kt)("td",{parentName:"tr",align:null},"UCO"),(0,n.kt)("td",{parentName:"tr",align:null},'%{ "eur" => 0.02 }')))),(0,n.kt)("p",null,"The table is loading after each oracle or oracle summary transaction and during the bootstrap for faster computation."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"The transaction's fee algorithm is using this cached information to provide this computation quickly")))}s.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/6efc9e6d.f69ec375.js b/assets/js/6efc9e6d.ef89e8a7.js similarity index 97% rename from assets/js/6efc9e6d.f69ec375.js rename to assets/js/6efc9e6d.ef89e8a7.js index e63b2f792..4c782ad2c 100644 --- a/assets/js/6efc9e6d.f69ec375.js +++ b/assets/js/6efc9e6d.ef89e8a7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[844],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=r.createContext({}),s=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||i;return a?r.createElement(b,l(l({ref:t},p),{},{components:a})):r.createElement(b,l({ref:t},p))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=m;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[d]="string"==typeof e?e:n,l[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const l={id:"public-key",title:"PublicKey",hide_table_of_contents:!1},c=void 0,o={unversionedId:"build/api/schema/scalars/public-key",id:"build/api/schema/scalars/public-key",title:"PublicKey",description:"The [PublicKey] scalar type represents a public key.",source:"@site/docs/build/api/schema/scalars/public-key.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/public-key",permalink:"/build/api/schema/scalars/public-key",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"public-key",title:"PublicKey",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"PosInteger",permalink:"/build/api/schema/scalars/pos-integer"},next:{title:"String",permalink:"/build/api/schema/scalars/string"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},y="wrapper";function f(e){let{components:t,...a}=e;return(0,i.kt)(y,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[PublicKey]"," scalar type represents a public key.\nThe PublicKey appears in a JSON response as Base16 formatted string. The parsed public key will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar PublicKey\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/authorized-key"},(0,i.kt)("inlineCode",{parentName:"a"},"AuthorizedKey"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/cross-validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"CrossValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,i.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/shared-secrets"},(0,i.kt)("inlineCode",{parentName:"a"},"SharedSecrets"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,i.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[844],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=r.createContext({}),s=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||i;return a?r.createElement(b,l(l({ref:t},p),{},{components:a})):r.createElement(b,l({ref:t},p))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=m;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[d]="string"==typeof e?e:n,l[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const l={id:"public-key",title:"PublicKey",hide_table_of_contents:!1},c=void 0,o={unversionedId:"build/api/schema/scalars/public-key",id:"build/api/schema/scalars/public-key",title:"PublicKey",description:"The [PublicKey] scalar type represents a public key.",source:"@site/docs/build/api/schema/scalars/public-key.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/public-key",permalink:"/build/api/schema/scalars/public-key",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"public-key",title:"PublicKey",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"PosInteger",permalink:"/build/api/schema/scalars/pos-integer"},next:{title:"String",permalink:"/build/api/schema/scalars/string"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},y="wrapper";function f(e){let{components:t,...a}=e;return(0,i.kt)(y,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[PublicKey]"," scalar type represents a public key.\nThe PublicKey appears in a JSON response as Base16 formatted string. The parsed public key will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar PublicKey\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/authorized-key"},(0,i.kt)("inlineCode",{parentName:"a"},"AuthorizedKey"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/cross-validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"CrossValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,i.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/shared-secrets"},(0,i.kt)("inlineCode",{parentName:"a"},"SharedSecrets"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,i.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/6fa4dae1.9d3ce132.js b/assets/js/6fa4dae1.2aee737b.js similarity index 99% rename from assets/js/6fa4dae1.9d3ce132.js rename to assets/js/6fa4dae1.2aee737b.js index b3b1bcf86..0dea5c462 100644 --- a/assets/js/6fa4dae1.9d3ce132.js +++ b/assets/js/6fa4dae1.2aee737b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9255],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(n),u=i,f=p["".concat(l,".").concat(u)]||p[u]||h[u]||r;return n?a.createElement(f,o(o({ref:t},d),{},{components:n})):a.createElement(f,o({ref:t},d))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:i,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"transaction-validation",title:"Pending transaction validation"},o=void 0,c={unversionedId:"build/core/mining/transaction-validation",id:"build/core/mining/transaction-validation",title:"Pending transaction validation",description:"When a transaction is under validation a process is started to perform the ARCH consensus workflow.",source:"@site/docs/build/core/mining/pending-transaction-validation.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/transaction-validation",permalink:"/build/core/mining/transaction-validation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-validation",title:"Pending transaction validation"},sidebar:"docs",previous:{title:"Mining",permalink:"/build/core/mining/"},next:{title:"Proof of Work algorithm",permalink:"/build/core/mining/proof-of-work"}},l={},s=[{value:"Smart contract verification",id:"smart-contract-verification",level:2},{value:"Transaction type verification",id:"transaction-type-verification",level:2},{value:"Node transaction verification",id:"node-transaction-verification",level:3},{value:"Node shared secrets transaction verification",id:"node-shared-secrets-transaction-verification",level:3},{value:"Token transaction verification",id:"token-transaction-verification",level:3},{value:"Oracle transaction verification",id:"oracle-transaction-verification",level:3},{value:"OracleSummary transaction verification",id:"oraclesummary-transaction-verification",level:3},{value:"Code proposal transaction verification",id:"code-proposal-transaction-verification",level:3},{value:"Code approval transaction verification",id:"code-approval-transaction-verification",level:3}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"When a transaction is under validation a process is started to perform the ARCH consensus workflow."),(0,i.kt)("p",null,"At the beginning of this workflow, a prior validation is done to detect if the transaction is errornous according of several implementations based on the type of the transactions and other criterias."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Check of the previous signature"),(0,i.kt)("li",{parentName:"ol"},"Check if there is smart contract, of its validity"),(0,i.kt)("li",{parentName:"ol"},"Check the content size does not exceed the threshold defined in the configuration"),(0,i.kt)("li",{parentName:"ol"},"Provide verification based on the transaction type")),(0,i.kt)("h2",{id:"smart-contract-verification"},"Smart contract verification"),(0,i.kt)("p",null,"If a transaction contains smart contract, it needs to verify certains things to be sure the smart contract is valid and the nodes will be able to interpret the contract, for example:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Parse the contract and determines its validity"),(0,i.kt)("li",{parentName:"ul"},"If an ownership and its secret have been encoded for the node shared storage nonce public key, so they will be able create new transaction on the chain")),(0,i.kt)("h2",{id:"transaction-type-verification"},"Transaction type verification"),(0,i.kt)("h3",{id:"node-transaction-verification"},"Node transaction verification"),(0,i.kt)("p",null,'Before to join the network, node must submit a transaction with a type "node".\nThe following checks are performed:'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding of the transaction's content"),(0,i.kt)("li",{parentName:"ul"},"Assert the origin key is authorized along with the certification. (See ",(0,i.kt)("a",{parentName:"li",href:"/learn/cryptography/hardware-root-of-trust"},"Hardware Root of Trust"),")"),(0,i.kt)("li",{parentName:"ul"},"Check if there are not already existing nodes with the same ip, port and public key")),(0,i.kt)("h3",{id:"node-shared-secrets-transaction-verification"},"Node shared secrets transaction verification"),(0,i.kt)("p",null,"Periodically the nodes submit a renewal of node shared secrets through a transaction.\nThe following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding of the transactio's content"),(0,i.kt)("li",{parentName:"ul"},"Check is the new authorized node proposed are available")),(0,i.kt)("h3",{id:"token-transaction-verification"},"Token transaction verification"),(0,i.kt)("p",null,'To create a new asset (Token), a transaction with a type "token" is submitted to the network.'),(0,i.kt)("p",null,"The nodes asserts the content of the Token transactions respects the formatting to be able for the node to interpret it and mint tokens."),(0,i.kt)("h3",{id:"oracle-transaction-verification"},"Oracle transaction verification"),(0,i.kt)("p",null,"When the OracleChain polled some external data and build a transaction to propose the new changes, the nodes will assert the content from the services data are correct regarding the service SLA. (See ",(0,i.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/service"},"OracleChain Service"),")"),(0,i.kt)("h3",{id:"oraclesummary-transaction-verification"},"OracleSummary transaction verification"),(0,i.kt)("p",null,"Periodically, after a cycle/epoch, the nodes submit a transaction which summarizes the entire oracle chain data for this epoch.\nThen the nodes have to assert the changes through:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Fetching the entire oracle chain for this epoch"),(0,i.kt)("li",{parentName:"ul"},"Assert the aggregated content in the oracle chain summary matches the data from all the transaction in the oracle chain ")),(0,i.kt)("h3",{id:"code-proposal-transaction-verification"},"Code proposal transaction verification"),(0,i.kt)("p",null,"When a new upgrade of the network is proposed, a transaction embeds the changes and is sent to the network. (See: On-Chain Governance "),(0,i.kt)("p",null,"The following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding the proposal changes (like Git patch)"),(0,i.kt)("li",{parentName:"ul"},"Assert the validity of the changes: format, conformity with the latest Git commit")),(0,i.kt)("h3",{id:"code-approval-transaction-verification"},"Code approval transaction verification"),(0,i.kt)("p",null,"When an updated have been proposed, technical commitee member can vote for a proposal, then a transaction is sent. (See: On-Chain Governance)"),(0,i.kt)("p",null,"The following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Check if the approver is a member of the technical commitee,"),(0,i.kt)("li",{parentName:"ul"},"Check if the proposal exists"),(0,i.kt)("li",{parentName:"ul"},"Check if the proposal hasn't been signed by the approver earlier")))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9255],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(n),u=i,f=p["".concat(l,".").concat(u)]||p[u]||h[u]||r;return n?a.createElement(f,o(o({ref:t},d),{},{components:n})):a.createElement(f,o({ref:t},d))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:i,o[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>s});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"transaction-validation",title:"Pending transaction validation"},o=void 0,c={unversionedId:"build/core/mining/transaction-validation",id:"build/core/mining/transaction-validation",title:"Pending transaction validation",description:"When a transaction is under validation a process is started to perform the ARCH consensus workflow.",source:"@site/docs/build/core/mining/pending-transaction-validation.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/transaction-validation",permalink:"/build/core/mining/transaction-validation",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-validation",title:"Pending transaction validation"},sidebar:"docs",previous:{title:"Mining",permalink:"/build/core/mining/"},next:{title:"Proof of Work algorithm",permalink:"/build/core/mining/proof-of-work"}},l={},s=[{value:"Smart contract verification",id:"smart-contract-verification",level:2},{value:"Transaction type verification",id:"transaction-type-verification",level:2},{value:"Node transaction verification",id:"node-transaction-verification",level:3},{value:"Node shared secrets transaction verification",id:"node-shared-secrets-transaction-verification",level:3},{value:"Token transaction verification",id:"token-transaction-verification",level:3},{value:"Oracle transaction verification",id:"oracle-transaction-verification",level:3},{value:"OracleSummary transaction verification",id:"oraclesummary-transaction-verification",level:3},{value:"Code proposal transaction verification",id:"code-proposal-transaction-verification",level:3},{value:"Code approval transaction verification",id:"code-approval-transaction-verification",level:3}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"When a transaction is under validation a process is started to perform the ARCH consensus workflow."),(0,i.kt)("p",null,"At the beginning of this workflow, a prior validation is done to detect if the transaction is errornous according of several implementations based on the type of the transactions and other criterias."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Check of the previous signature"),(0,i.kt)("li",{parentName:"ol"},"Check if there is smart contract, of its validity"),(0,i.kt)("li",{parentName:"ol"},"Check the content size does not exceed the threshold defined in the configuration"),(0,i.kt)("li",{parentName:"ol"},"Provide verification based on the transaction type")),(0,i.kt)("h2",{id:"smart-contract-verification"},"Smart contract verification"),(0,i.kt)("p",null,"If a transaction contains smart contract, it needs to verify certains things to be sure the smart contract is valid and the nodes will be able to interpret the contract, for example:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Parse the contract and determines its validity"),(0,i.kt)("li",{parentName:"ul"},"If an ownership and its secret have been encoded for the node shared storage nonce public key, so they will be able create new transaction on the chain")),(0,i.kt)("h2",{id:"transaction-type-verification"},"Transaction type verification"),(0,i.kt)("h3",{id:"node-transaction-verification"},"Node transaction verification"),(0,i.kt)("p",null,'Before to join the network, node must submit a transaction with a type "node".\nThe following checks are performed:'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding of the transaction's content"),(0,i.kt)("li",{parentName:"ul"},"Assert the origin key is authorized along with the certification. (See ",(0,i.kt)("a",{parentName:"li",href:"/learn/cryptography/hardware-root-of-trust"},"Hardware Root of Trust"),")"),(0,i.kt)("li",{parentName:"ul"},"Check if there are not already existing nodes with the same ip, port and public key")),(0,i.kt)("h3",{id:"node-shared-secrets-transaction-verification"},"Node shared secrets transaction verification"),(0,i.kt)("p",null,"Periodically the nodes submit a renewal of node shared secrets through a transaction.\nThe following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding of the transactio's content"),(0,i.kt)("li",{parentName:"ul"},"Check is the new authorized node proposed are available")),(0,i.kt)("h3",{id:"token-transaction-verification"},"Token transaction verification"),(0,i.kt)("p",null,'To create a new asset (Token), a transaction with a type "token" is submitted to the network.'),(0,i.kt)("p",null,"The nodes asserts the content of the Token transactions respects the formatting to be able for the node to interpret it and mint tokens."),(0,i.kt)("h3",{id:"oracle-transaction-verification"},"Oracle transaction verification"),(0,i.kt)("p",null,"When the OracleChain polled some external data and build a transaction to propose the new changes, the nodes will assert the content from the services data are correct regarding the service SLA. (See ",(0,i.kt)("a",{parentName:"p",href:"/build/core/oracle-chain/service"},"OracleChain Service"),")"),(0,i.kt)("h3",{id:"oraclesummary-transaction-verification"},"OracleSummary transaction verification"),(0,i.kt)("p",null,"Periodically, after a cycle/epoch, the nodes submit a transaction which summarizes the entire oracle chain data for this epoch.\nThen the nodes have to assert the changes through:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Fetching the entire oracle chain for this epoch"),(0,i.kt)("li",{parentName:"ul"},"Assert the aggregated content in the oracle chain summary matches the data from all the transaction in the oracle chain ")),(0,i.kt)("h3",{id:"code-proposal-transaction-verification"},"Code proposal transaction verification"),(0,i.kt)("p",null,"When a new upgrade of the network is proposed, a transaction embeds the changes and is sent to the network. (See: On-Chain Governance "),(0,i.kt)("p",null,"The following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Decoding the proposal changes (like Git patch)"),(0,i.kt)("li",{parentName:"ul"},"Assert the validity of the changes: format, conformity with the latest Git commit")),(0,i.kt)("h3",{id:"code-approval-transaction-verification"},"Code approval transaction verification"),(0,i.kt)("p",null,"When an updated have been proposed, technical commitee member can vote for a proposal, then a transaction is sent. (See: On-Chain Governance)"),(0,i.kt)("p",null,"The following checks are performed:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Check if the approver is a member of the technical commitee,"),(0,i.kt)("li",{parentName:"ul"},"Check if the proposal exists"),(0,i.kt)("li",{parentName:"ul"},"Check if the proposal hasn't been signed by the approver earlier")))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/70e1f15f.24c95cc9.js b/assets/js/70e1f15f.19bcd286.js similarity index 97% rename from assets/js/70e1f15f.24c95cc9.js rename to assets/js/70e1f15f.19bcd286.js index ef4800979..8efa454a5 100644 --- a/assets/js/70e1f15f.24c95cc9.js +++ b/assets/js/70e1f15f.19bcd286.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1592],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>g});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var d=n.createContext({}),i=function(e){var t=n.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=i(e.components);return n.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,d=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),p=i(r),m=o,g=p["".concat(d,".").concat(m)]||p[m]||u[m]||a;return r?n.createElement(g,l(l({ref:t},s),{},{components:r})):n.createElement(g,l({ref:t},s))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var c={};for(var d in t)hasOwnProperty.call(t,d)&&(c[d]=t[d]);c.originalType=e,c[p]="string"==typeof e?e:o,l[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>d,toc:()=>s});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"ledger",title:"Ledger",hide_table_of_contents:!1},c=void 0,d={unversionedId:"build/api/schema/objects/ledger",id:"build/api/schema/objects/ledger",title:"Ledger",description:"[Ledger] represents the ledger operations to perform",source:"@site/docs/build/api/schema/objects/ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ledger",permalink:"/build/api/schema/objects/ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"ledger",title:"Ledger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"LedgerOperations",permalink:"/build/api/schema/objects/ledger-operations"},next:{title:"Node",permalink:"/build/api/schema/objects/node"}},i={},s=[{value:"Fields",id:"fields",level:3},{value:'Ledger.tokenTokenLedger ',id:"code-style-fontweight-normal-ledgerbtokenbcodetokenledger-",level:4},{value:'Ledger.ucoUcoLedger ',id:"code-style-fontweight-normal-ledgerbucobcodeucoledger-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),g={toc:s,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},g,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"[Ledger]"," represents the ledger operations to perform"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Ledger {\n token: TokenLedger\n uco: UcoLedger\n}\n")),(0,a.kt)("h3",{id:"fields"},"Fields"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-ledgerbtokenbcodetokenledger-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Ledger.",(0,a.kt)("b",null,"token"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"TokenLedger"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-ledgerbucobcodeucoledger-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Ledger.",(0,a.kt)("b",null,"uco"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"UcoLedger"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,a.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1592],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>g});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var d=n.createContext({}),i=function(e){var t=n.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=i(e.components);return n.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,d=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),p=i(r),m=o,g=p["".concat(d,".").concat(m)]||p[m]||u[m]||a;return r?n.createElement(g,l(l({ref:t},s),{},{components:r})):n.createElement(g,l({ref:t},s))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var c={};for(var d in t)hasOwnProperty.call(t,d)&&(c[d]=t[d]);c.originalType=e,c[p]="string"==typeof e?e:o,l[1]=c;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>c,default:()=>f,frontMatter:()=>l,metadata:()=>d,toc:()=>s});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"ledger",title:"Ledger",hide_table_of_contents:!1},c=void 0,d={unversionedId:"build/api/schema/objects/ledger",id:"build/api/schema/objects/ledger",title:"Ledger",description:"[Ledger] represents the ledger operations to perform",source:"@site/docs/build/api/schema/objects/ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ledger",permalink:"/build/api/schema/objects/ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"ledger",title:"Ledger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"LedgerOperations",permalink:"/build/api/schema/objects/ledger-operations"},next:{title:"Node",permalink:"/build/api/schema/objects/node"}},i={},s=[{value:"Fields",id:"fields",level:3},{value:'Ledger.tokenTokenLedger ',id:"code-style-fontweight-normal-ledgerbtokenbcodetokenledger-",level:4},{value:'Ledger.ucoUcoLedger ',id:"code-style-fontweight-normal-ledgerbucobcodeucoledger-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),g={toc:s,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},g,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"[Ledger]"," represents the ledger operations to perform"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Ledger {\n token: TokenLedger\n uco: UcoLedger\n}\n")),(0,a.kt)("h3",{id:"fields"},"Fields"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-ledgerbtokenbcodetokenledger-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Ledger.",(0,a.kt)("b",null,"token"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"TokenLedger"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h4",{id:"code-style-fontweight-normal-ledgerbucobcodeucoledger-"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"Ledger.",(0,a.kt)("b",null,"uco"))),(0,a.kt)(p,{mdxType:"Bullet"}),(0,a.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-ledger"},(0,a.kt)("inlineCode",{parentName:"a"},"UcoLedger"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,a.kt)("blockquote",null),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,a.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/710ae1bb.50d8bf17.js b/assets/js/710ae1bb.50d8bf17.js deleted file mode 100644 index 51062beb1..000000000 --- a/assets/js/710ae1bb.50d8bf17.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[847],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(a),h=n,y=d["".concat(s,".").concat(h)]||d[h]||u[h]||o;return a?r.createElement(y,i(i({ref:t},c),{},{components:a})):r.createElement(y,i({ref:t},c))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"cryptography",title:"Cryptography"},i=void 0,l={unversionedId:"learn/cryptography/cryptography",id:"learn/cryptography/cryptography",title:"Cryptography",description:"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.",source:"@site/docs/learn/cryptography/README.md",sourceDirName:"learn/cryptography",slug:"/learn/cryptography/",permalink:"/learn/cryptography/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"cryptography",title:"Cryptography"},sidebar:"docs",previous:{title:"Proof of Work",permalink:"/learn/arch-consensus/proof-of-work"},next:{title:"Harware Root of Trust",permalink:"/learn/cryptography/hardware-root-of-trust"}},s={},p=[{value:"Quantum-Safe",id:"quantum-safe",level:2},{value:"Non-Discolure of public keys",id:"non-discolure-of-public-keys",level:3},{value:"Origin Devices",id:"origin-devices",level:3},{value:"Adaptative",id:"adaptative",level:2},{value:"Public keys",id:"public-keys",level:3},{value:"Hashes",id:"hashes",level:3},{value:"Transaction addresses",id:"transaction-addresses",level:3},{value:"Default algorithms",id:"default-algorithms",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography."),(0,n.kt)("h2",{id:"quantum-safe"},"Quantum-Safe"),(0,n.kt)("h3",{id:"non-discolure-of-public-keys"},"Non-Discolure of public keys"),(0,n.kt)("p",null,"Archethic ",(0,n.kt)("a",{parentName:"p",href:"/learn/transaction-chain"},"TransactionChains")," uses a non-disclosure mechanism of public keys using chains of cryptography.\nEach transaction contains an address, which is a hash of the next public key and the previous public key.\nTherefore, we don't have way to know which public key is used for a given transaction until a next one is coming."),(0,n.kt)("h3",{id:"origin-devices"},"Origin Devices"),(0,n.kt)("p",null,"In order to build a transaction, we need to known multiple temporary private keys a key to provide a signature based on the previous private key and a signature based on an origin device private key.\nOrigin device can be categorized in several families: software, hardware, biometrics. (See ",(0,n.kt)("a",{parentName:"p",href:"/learn/arch-consensus/proof-of-work"},"Proof of Work"),")"),(0,n.kt)("p",null,"So to be allowed to generate a transaction, the task of a quantum computer potentially capable of ",(0,n.kt)("strong",{parentName:"p"},"breaking")," private keys should be considerably more complex"),(0,n.kt)("h2",{id:"adaptative"},"Adaptative"),(0,n.kt)("p",null,"In order to be backward compatible and to evolve the network as the cryptographic research progesses and to provide the choice of cryptographic algorithms to people, organizations or countries, Archethic is a versioned cryptography or metadata cryptography."),(0,n.kt)("p",null,"While this word sounds complex, it's not hard to get it."),(0,n.kt)("h3",{id:"public-keys"},"Public keys"),(0,n.kt)("p",null,"Each public key is prepended by some additional bytes to inform some metadata or algorithm versioning.\nThis includes:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a byte to indicate the elliptic curve used (i.e Ed25519, NIST, secp256k1)"),(0,n.kt)("li",{parentName:"ul"},"a byte to indicate the origin of the generation (i.e software, hardware, ...)")),(0,n.kt)("h3",{id:"hashes"},"Hashes"),(0,n.kt)("p",null,"Like the public keys, cryptographic hashes are also versioned with a byte of to identify which algorithms is used (i.e SHA-256).\nThis information helps to determine the length of a hash and to perform some checks for the validition and for the encoding/decoding of the data."),(0,n.kt)("h3",{id:"transaction-addresses"},"Transaction addresses"),(0,n.kt)("p",null,"While transaction addresses are often represented as hashes, Archethic provide a new level of information inside the transaction's address. A byte is prepending the hash with an information regarding the elliptic curve used to generate the public key related."),(0,n.kt)("p",null,"You may be wondering why would we need this kind of information."),(0,n.kt)("p",null,"So, in order to be really adaptative and based on the non-disclosure mechanism offered by the transaction chain, we need to know which elliptic was used for a previous transaction to be able to reproduce the previous public key."),(0,n.kt)("p",null,"For example, imagine we have a transaction address encoded in that way, using a ",(0,n.kt)("inlineCode",{parentName:"p"},"secp256k1")," elliptic"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Hash algorithm"),(0,n.kt)("th",{parentName:"tr",align:null},"Digest"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01309F1C765967AC7")))),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Reminder: a transaction address is the hash of the next public key")),(0,n.kt)("p",null,"For a new transaction coming after, if now, we want to use the ",(0,n.kt)("inlineCode",{parentName:"p"},"ed25519")," elliptic curve, we need to know which was used before. For this reason, we have two possibility:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"keep an history of the previous transaction and curves (",(0,n.kt)("em",{parentName:"li"},"not really pratical and not scalable"),")"),(0,n.kt)("li",{parentName:"ul"},"add a byte in front of each transaction's address to the curve used")),(0,n.kt)("p",null,"So with a new model:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Curve type"),(0,n.kt)("th",{parentName:"tr",align:null},"Hash algorithm"),(0,n.kt)("th",{parentName:"tr",align:null},"Digest"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01309F1C765967AC7")))),(0,n.kt)("p",null,"Now we are able to compute the previous public key, with the curve ",(0,n.kt)("inlineCode",{parentName:"p"},"secp256k1")," and continues with new elliptic curve along the way."),(0,n.kt)("p",null,"This will be even more pratical with On-Chain Decentralized Wallet (",(0,n.kt)("inlineCode",{parentName:"p"},"Keychain"),") to support multiple derived keys and custom algorithms."),(0,n.kt)("h2",{id:"default-algorithms"},"Default algorithms"),(0,n.kt)("p",null,"Except for hardware compatability issues (HSM, etc..), EdDSA signatures, Curve25519 and AES256 will be used by default on the network."))}u.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/710ae1bb.b3d0bda0.js b/assets/js/710ae1bb.b3d0bda0.js new file mode 100644 index 000000000..ee112ddbe --- /dev/null +++ b/assets/js/710ae1bb.b3d0bda0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[847],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(a),h=n,y=d["".concat(s,".").concat(h)]||d[h]||u[h]||o;return a?r.createElement(y,i(i({ref:t},c),{},{components:a})):r.createElement(y,i({ref:t},c))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"cryptography",title:"Cryptography"},i=void 0,l={unversionedId:"learn/cryptography/cryptography",id:"learn/cryptography/cryptography",title:"Cryptography",description:"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.",source:"@site/docs/learn/cryptography/README.md",sourceDirName:"learn/cryptography",slug:"/learn/cryptography/",permalink:"/learn/cryptography/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"cryptography",title:"Cryptography"},sidebar:"docs",previous:{title:"Proof of Work",permalink:"/learn/arch-consensus/proof-of-work"},next:{title:"Hardware Root of Trust",permalink:"/learn/cryptography/hardware-root-of-trust"}},s={},p=[{value:"Quantum-Safe",id:"quantum-safe",level:2},{value:"Non-Discolure of public keys",id:"non-discolure-of-public-keys",level:3},{value:"Origin Devices",id:"origin-devices",level:3},{value:"Adaptative",id:"adaptative",level:2},{value:"Public keys",id:"public-keys",level:3},{value:"Hashes",id:"hashes",level:3},{value:"Transaction addresses",id:"transaction-addresses",level:3},{value:"Default algorithms",id:"default-algorithms",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography."),(0,n.kt)("h2",{id:"quantum-safe"},"Quantum-Safe"),(0,n.kt)("h3",{id:"non-discolure-of-public-keys"},"Non-Discolure of public keys"),(0,n.kt)("p",null,"Archethic ",(0,n.kt)("a",{parentName:"p",href:"/learn/transaction-chain"},"TransactionChains")," uses a non-disclosure mechanism of public keys using chains of cryptography.\nEach transaction contains an address, which is a hash of the next public key and the previous public key.\nTherefore, we don't have way to know which public key is used for a given transaction until a next one is coming."),(0,n.kt)("h3",{id:"origin-devices"},"Origin Devices"),(0,n.kt)("p",null,"In order to build a transaction, we need to known multiple temporary private keys a key to provide a signature based on the previous private key and a signature based on an origin device private key.\nOrigin device can be categorized in several families: software, hardware, biometrics. (See ",(0,n.kt)("a",{parentName:"p",href:"/learn/arch-consensus/proof-of-work"},"Proof of Work"),")"),(0,n.kt)("p",null,"So to be allowed to generate a transaction, the task of a quantum computer potentially capable of ",(0,n.kt)("strong",{parentName:"p"},"breaking")," private keys should be considerably more complex"),(0,n.kt)("h2",{id:"adaptative"},"Adaptative"),(0,n.kt)("p",null,"In order to be backward compatible and to evolve the network as the cryptographic research progesses and to provide the choice of cryptographic algorithms to people, organizations or countries, Archethic is a versioned cryptography or metadata cryptography."),(0,n.kt)("p",null,"While this word sounds complex, it's not hard to get it."),(0,n.kt)("h3",{id:"public-keys"},"Public keys"),(0,n.kt)("p",null,"Each public key is prepended by some additional bytes to inform some metadata or algorithm versioning.\nThis includes:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"a byte to indicate the elliptic curve used (i.e Ed25519, NIST, secp256k1)"),(0,n.kt)("li",{parentName:"ul"},"a byte to indicate the origin of the generation (i.e software, hardware, ...)")),(0,n.kt)("h3",{id:"hashes"},"Hashes"),(0,n.kt)("p",null,"Like the public keys, cryptographic hashes are also versioned with a byte of to identify which algorithms is used (i.e SHA-256).\nThis information helps to determine the length of a hash and to perform some checks for the validition and for the encoding/decoding of the data."),(0,n.kt)("h3",{id:"transaction-addresses"},"Transaction addresses"),(0,n.kt)("p",null,"While transaction addresses are often represented as hashes, Archethic provide a new level of information inside the transaction's address. A byte is prepending the hash with an information regarding the elliptic curve used to generate the public key related."),(0,n.kt)("p",null,"You may be wondering why would we need this kind of information."),(0,n.kt)("p",null,"So, in order to be really adaptative and based on the non-disclosure mechanism offered by the transaction chain, we need to know which elliptic was used for a previous transaction to be able to reproduce the previous public key."),(0,n.kt)("p",null,"For example, imagine we have a transaction address encoded in that way, using a ",(0,n.kt)("inlineCode",{parentName:"p"},"secp256k1")," elliptic"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Hash algorithm"),(0,n.kt)("th",{parentName:"tr",align:null},"Digest"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01309F1C765967AC7")))),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Reminder: a transaction address is the hash of the next public key")),(0,n.kt)("p",null,"For a new transaction coming after, if now, we want to use the ",(0,n.kt)("inlineCode",{parentName:"p"},"ed25519")," elliptic curve, we need to know which was used before. For this reason, we have two possibility:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"keep an history of the previous transaction and curves (",(0,n.kt)("em",{parentName:"li"},"not really pratical and not scalable"),")"),(0,n.kt)("li",{parentName:"ul"},"add a byte in front of each transaction's address to the curve used")),(0,n.kt)("p",null,"So with a new model:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Curve type"),(0,n.kt)("th",{parentName:"tr",align:null},"Hash algorithm"),(0,n.kt)("th",{parentName:"tr",align:null},"Digest"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01"),(0,n.kt)("td",{parentName:"tr",align:null},"01309F1C765967AC7")))),(0,n.kt)("p",null,"Now we are able to compute the previous public key, with the curve ",(0,n.kt)("inlineCode",{parentName:"p"},"secp256k1")," and continues with new elliptic curve along the way."),(0,n.kt)("p",null,"This will be even more pratical with On-Chain Decentralized Wallet (",(0,n.kt)("inlineCode",{parentName:"p"},"Keychain"),") to support multiple derived keys and custom algorithms."),(0,n.kt)("h2",{id:"default-algorithms"},"Default algorithms"),(0,n.kt)("p",null,"Except for hardware compatability issues (HSM, etc..), EdDSA signatures, Curve25519 and AES256 will be used by default on the network."))}u.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/72ec880a.4fd5a8b7.js b/assets/js/72ec880a.5d59cddf.js similarity index 99% rename from assets/js/72ec880a.4fd5a8b7.js rename to assets/js/72ec880a.5d59cddf.js index e9efb329c..fb53f3b64 100644 --- a/assets/js/72ec880a.4fd5a8b7.js +++ b/assets/js/72ec880a.5d59cddf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[420],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>A});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),p=r,A=u["".concat(l,".").concat(p)]||u[p]||m[p]||o;return n?a.createElement(A,i(i({ref:t},d),{},{components:n})):a.createElement(A,i({ref:t},d))}));function A(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"mock-form",title:"Smart Contracts Playground - Mock form",sidebar_label:"Mock form",sidebar_position:100},i=void 0,s={unversionedId:"build/smart-contracts/playground/mock-form",id:"build/smart-contracts/playground/mock-form",title:"Smart Contracts Playground - Mock form",description:"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc.",source:"@site/docs/build/smart-contracts/playground/mock-form.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/mock-form",permalink:"/build/smart-contracts/playground/mock-form",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:100,frontMatter:{id:"mock-form",title:"Smart Contracts Playground - Mock form",sidebar_label:"Mock form",sidebar_position:100},sidebar:"docs",previous:{title:"Transaction form",permalink:"/build/smart-contracts/playground/transaction-form"},next:{title:"Fees",permalink:"/build/smart-contracts/fees"}},l={},c=[{value:"Example: Time.now/0",id:"example-timenow0",level:2},{value:"Example: Chain.get_genesis_address/1",id:"example-chainget_genesis_address1",level:2}],d={toc:c},u="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(u,(0,a.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc."),(0,r.kt)("p",null,"The mock form is part of the trigger panel."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"the mock form is display",src:n(1604).Z,width:"415",height:"96"})),(0,r.kt)("p",null,"These functions must be mocked to test Smart Contracts that use them:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_genesis_address1-io"},"Chain.get_genesis_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_first_transaction_address1-io"},"Chain.get_first_transaction_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_genesis_public_key1-io"},"Chain.get_genesis_public_key/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#now0"},"Time.now/0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch_id_from_address1-io"},"Token.fetch_id_from_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch1-io"},"Http.fetch/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch_many1-io"},"Http.fetch_many/1"))),(0,r.kt)("p",null,"A function can be mocked multiple times, for example to mock multiple different inputs."),(0,r.kt)("h2",{id:"example-timenow0"},"Example: Time.now/0"),(0,r.kt)("p",null,"Time.now/0 can be mocked to simulate a future execution of the contract. This one is actually optional, the playground will use current time if it is not set."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\nactions triggered_by: interval, at: "* * * * *" do \n Contract.set_content(Time.now())\nend\n')),(0,r.kt)("p",null,"All you need to do is fill the expected output (seconds since epoch):"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"mocking the Time.now/0",src:n(2171).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"Then click on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Add")," button, then ",(0,r.kt)("inlineCode",{parentName:"p"},"trigger")," to test the Smart Contract:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Time.now/0 is mocked",src:n(2537).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"We can see via the console that the mock was called as expected."),(0,r.kt)("h2",{id:"example-chainget_genesis_address1"},"Example: Chain.get_genesis_address/1"),(0,r.kt)("p",null,"Let's see an example with a function that takes an argument.\nIn the form you specify the output for a given input. Let's try it!"),(0,r.kt)("p",null,"The screenshot below mocked the function with these values: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"input: ",(0,r.kt)("inlineCode",{parentName:"li"},"00002223BBD4EC3D64AE597696C7D7ADE1CEE65C639D885450AD2D7B75592AC76AFA")),(0,r.kt)("li",{parentName:"ul"},"output: ",(0,r.kt)("inlineCode",{parentName:"li"},"MOCKED"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\nactions triggered_by: interval, at: "* * * * *" do\n Contract.set_content(Chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa)) \nend\n')),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that used Chain.get_genesis_address/1 is tested",src:n(8745).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"We can see via the console that the mock was called as expected."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that used Chain.get_genesis_address/1 is tested",src:n(4847).Z,width:"3600",height:"2390"})))}m.isMDXComponent=!0},1604:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ8AAABgCAYAAADCUX/sAAAUTklEQVR4Xu3dB1xW1f8H8M/DRkBRwYGK4MItmjO3mKk4cY8cpakNzfpnZVauzMbvV64ys6zU3Bv31tyJe0uImjMVURkiPP/vucajCP64D6I943N9+Sp47nPuOe9z4eM59zz3GrzzlzKCGwUoQAEKUOAZChgeFz7OLs5wcnaGg6MTHB0dYDAYnmG1eCgKUIACFLBWAWNKClLkb3JyMu4lJSHpblK6pqQLHxU4bjncJXAcrbXdrDcFKEABCliQgAqhhLg4CaJ7plqlCR8XNze4ubtxlGNBncaqUIACFLAFAaPRiMT4eCQmJGrNMYWPq4SOm7u7LbSRbaAABShAAQsVUCMgFUBa+Dg5OyGHpydHPBbaWawWBShAAVsRUCOgO7duS/gUKGX0ypUTDg68xmMrnct2UIACFLBkgZSUZBh8i5Q35vD0sOR6sm4UoAAFKGBjAga/4pWNzi4uNtYsNocCFKAABSxZwFCkVFWjA5dVW3IfsW4UoAAFbE7A4B9UzWhwcLC5hrFBFKAABShguQKGomVq8PY6lts/rBkFKEABmxRg+Nhkt7JRFKAABSxbgOFj2f3D2lGAAhSwSQGGj012KxtFAQpQwLIFGD6W3T+sHQUoQAGbFDArfMJqD0H1oJa4cD0S4xf3yhDE1SkHhnVbBmdHFyzc9iV2n1iarXAjXlqNLYdmY/3+adlaLgujAAUoQIFnJ5Cl8FHV+8/8brgaezZdTSsFhqBLw+Ha9xk+z64jeSQKUIAC1iRgdvhUKhaCpOS72HZkPjYe+CVdW7s3GgW/vKWQx8uP4WNNZwLrSgEKUOAZCpgdPhUCGuBg1Eb45yuHcY9MvTk7uuLjbsux/eh81K/YLU34OBgc0Si4B8oVrY/cngVxJeYM9pwMl7/L0jQ3X64ANK8+AIV9yyIlOQmnL0Zg5Z7JuBX/t7bfo9NuvrmKon/oJFyOicJPq97BvZS78HD1xgvP9UFQoRrwdM+Na7cu4PfDc/HHqfBnSMtDUYACFKDA4wSyFD4zN36MPk2/xn8WdMfVm9GmsstLMHVtMByTl7+O11pOThM+3UNGo5x/PS1sLl6LRPFCVVBegmjD/p+xJuJHrYwC3sXQv8V3uH77IiJOroCriwfqlOuAG/L1xGWvymNZk9OET84cvhgQ+i3i78bi+xVvIjEpTitHfS+fdwAiTq/GjVsXUT6gPgIKVMS0NUNw4vwOng0UoAAFKPAvC2QpfEb+1gIfdlmC7UcWYMOBn01N6CLB4+GaCwu3f4UhHWabwiewQCX0az4Ry/d8i62HZpn2b1fnAwTLNN7n8zrhdvw19Gj8GfzylMTXC3sg8d79IKlZpi3a1HobP6wYhMhLEabw2X5sAfpLmQ4OTvhewu52wg1tfxVIQzsvxLKd47Ht6DztezlccqJfi0k4ELk+TX3/ZXsengIUoIDdCmQpfEbMbI6w2u+iiO+DqTcnBxd8JKvcVkjAnPrrjzTh07RqP9Qu1xEjZzSX60X3H6GqNjXSeSvsF8zeNAKHzmzCqB7rsfHgr1j7z0hI7eMkU3mVizdG9JXDMlUXrYXPzmOLtZFM0XzlZcTzBqIuHTCVqabchnVdij8v7ce8LZ8i5s5lu+1cNpwCFKCApQpkOXxK+FWTqbf/mqbeyvrXRfdGozFmTlu4OLmnCZ+uDUagYN6Ssm/XNA6OMmoZ3XODTLtNxeGoTXin/UwJopHY/+fax3qp8FGjnbiEm/B0y4PD0Zswa9PwNPuHBPdGSHAv7Xvn/j6KyAt/YL+Meq7cPGOp/cB6UYACFLArgSyHj1pAMLTLYtPUW8d6w5DLwxc/rBwkK90KpQmfbg1HokCeEunCRz09dXSPDdpU2OGozdoo6LeNn8iChg3/M3yS7iVq15VqlQmTEVV7fCf/H335YJr3+OQsItd6GqCEX1UE5K8IB4MBS3eNk1HTIrvqYDaWAhSggCUKZDl8VGPU1Ju/TH1NWPIKhnVZhtURU7Rf7o+GT7Oq/fF82fYYMTMU9x6adlOLAt4Om47Zm0fhyJnNGNVzHVbvnZpuCXfLGoNwSkYvx89t06bdth6eg3X7foK7a068234WrsuigolL+2i+bi5ect0nL67Fnkdyyj3te+o6UM/Gn8squ/wY+VuoJfYD60QBClDArgSeKHxSp96W75qEZtUGyJRbmLZw4NHwKVagMl5tPh7LdskigCP3FwGorV2d9xBcvAm+nNcZsXFX0a/ZROT08ME3i3qarg2VlOm9V2R6b/r6D3Ekeku6pdZq9NO61mC5vjMGe0+vRClZXv3yi19h/tbPZGn1CtOx1N0Z1Oo6ho9dnd9sLAUoYKECTxQ+aupNrXpzcXKTayvHMEWWO6vt0fBR31Mr2UoXfh47TyzGJVlqXbJQVVQIbChLrX/RrvmozV8WMPSVkLpyI0qCY6V27ahuhU64efsqJoX3TbfUWr1H1WFQm2kyCvLCV3JNySB/3gmbAQdHZy3o7iTEIDB/JVQq1lg+f7QA4bvHW2hXsFoUoAAF7EfgicJHMampt+pBrbBkxzfYIcufHxc+KiRCKveSD5nWk+mvAtrKtT0nwrH7ZNp7v/nlKYWm1fqjcN4gbfRz6q89WLX3exlRXdfKzujebqmjo40Hpsu03RRtFV3Tav1QyKc03Jw9ZFruAv6QUdG2I3O1AONGAQpQgAL/roBZ4fPvVpVHpwAFKEABWxFg+NhKT7IdFKAABaxIgOFjRZ3FqlKAAhSwFQGGj630JNtBAQpQwIoEGD5W1FmsKgUoQAFbEWD42EpPsh0UoAAFrEiA4WNFncWqUoACFLAVAYaPrfQk20EBClDAigQYPlbUWawqBShAAVsRYPjYSk+yHRSgAAWsSIDhY0WdxapSgAIUsBUBho+t9CTbQQEKUMCKBBg+VtRZrCoFKEABWxFg+NhKT7IdFKAABaxIgOFjRZ3FqlKAAhSwFQGGj630JNtBAQpQwIoEGD5W1FmsKgUoQAFbEWD42EpPsh0UoAAFrEiA4WNFncWqUoACFLAVAYaPrfQk20EBClDAigQYPlbUWawqBShAAVsRYPjYSk+yHRSgAAWsSCDL4fN82fYoXjAYvrmKIp93gBU1mVWlAAUoQIEnFbh0IwpXY6IReSkCO48tMrs4s8PHJ2dh9Gw8FldvnsOxc9vx17XjuHDtlNkH5hsoQAEKUMB6BQrlLYVCPkEo618HuTzy4ee17+HmnSu6G2RW+KhRTr/QCVi+cwL2/blW90G4IwUoQAEK2K5AjdJt0LDiS5i8/HXE3Lmkq6Fmhc97HeZiTcRU7Itco6tw7kQBClCAAvYhUFsuxVQp0QwTlr6iq8G6w6dO2Q4oUaiaDK2G6CqYO1GAAhSggH0JDGz9EzYdnIGDURsybbju8OnXbCK2HpmDo2e3Zlood6AABShAAfsTqCnTbwEFgjF70/BMG687fD7pvgJfzO2E+Lu3Mi2UO1CAAhSggP0J+OTyR+8XvsCX8ztn2njd4TP25a14/6e6mRbIHShAAQpQwH4F9GYFw8d+zxG2nAIUoEC2CzB8sp2UBVKAAhSgQGYCDJ/MhPg6BShAAQpkuwDDJ9tJWSAFKEABCmQmwPDJTIivU4ACFKBAtgswfLKdlAU+bYHcHgVx487FbD/MwDY/wy9Pcfy28RNdH35rUuUVFMlXDj+uejvDuhgMDvis92Z8F/4aoq8cyvb6Ps0Cw2oPgZOjC+ZuGf00D8Oy7ViA4WPHnW+tTdd70prTvvzegRgc9qt8Pu0Ooi5G4Nf1QzN9O8MnUyLuQIHHCuj9OeZSa55EFiOg96Q1p8IvPvcqqgW1xLbDcxFSuTc+ndVKguj2/yyC4WOOMPelQFoBvT/HDB+eORYjoPekNafCQ+RmuCf/2o0th2ZhSIfZWPD7WOw5udxUhKODE1RAVQhoCEdHJxyO3oKkpAT4+ZQ0TbsV8S2L0GqvI79M3f198yxW7ZmMvs3HPXba7Tm5uWL9Cl2RO6cf4hNv4+T5nViy82sk3UtIV/XgYi+gTvlOss8uqFuTGOXPgaj12LD/F7R9/v9QrEBlCctYLN0xDsfPb9fe7+meB6HV35TnaVWRr1IQeXE/wneOw53EGO11NxcvtKo5CCX8qsFgAI6f3YHluycgIekOHp12a1KlL6pLOE9ZORBXYs6YQ8t9KZChgN6fY4YPT6B/TaBgnhJwc/Y0HV89ruP75W+avk5Iuo2L109nuX5F81XAgBbfYsqKgfjz0j6oaz9x8TcwdfVgU5nql3H5gPryy3kSrsWeR42g1igf2ABnLh/Qwie3lx/eDpuOo9FbsfP4InluSX40q9pf/uubYfj45Q3CwNZTJTx+xvFzO5DbsyDa1H4X2+S+iOv2TcswfDrWGyb7bsPafT9K2FRBy5oDEZcQK3WaiMsSCM2qDUBer0IYO7edhIkD3pJ2JCTFYc3eH7TymjzXFy5Obhi3uLd8ZcQbLX9AUvJdrJU70HtJUL1Y9VVEXz6MOVtGpQmfxpVfRs0ybfGD+FyOicqyM99IgYcFGD48Hyxe4KWQMfKv9AfhU7xgZflX/L4H4SPTY9N1XKN5XENb13wb5QLqYszsMO2XcqNKvdBYpt4+m9MWt+Kvw9MtN4Z2XoQ5m0dpo437m0G7RhQbd1ULn1Y139JGGF8v6qmVobZKgSHo0nB4huGjAjVQbqy4/eh8U7W6NxqFu/cSM7zIr0Y+Het9iJEzQ7WRidqGdJiD0xf2YuG2L7Svy/rXRY/GY/DBtPrag7s6N/hE7rPYQWuD2jzd8+L9jvMwY/0wbeTUPWQ0PpfXb//zepkidVCjdCvtjvSpIx/1MMhGlV7CpGX9cOlGpMWfK6yg9QgwfKynr1jTfwT0nrR6wBwMjhjaZTEi5Zf4uoiftLfky10ML4WMwlKZolLhEJg/WHs44vAZzZHw0A1zVWj5eBfWwqdvs3G4dD0Sy3aNNx1WhdawrksfO+2mnupY0q+q9oj5gnlLoriMZg5ErXts+DSv/oYEZGtT+WrkcujMZmw+NEP7XuoIToVPw4o9tJHa+CVqlPNgGySjIfWcLdXuioGN0r2euqcKn3JF68FoTJHQyo1pa4bgxPkdeki5DwV0Cej9Oea0my5O7vQsBPSetHrqElS4Fno3uT9yeHSLvnJEgqM/iuaviAGhkzIIn8ESPkW08Onz4tcyMohC+O4H4ZPDNRc+7haeYfhUCGyIjnU/lEeP/K6NXtSoQl3LUdNlGS1vViOf0Oqv49PZbR4Jn00SPjMzDB8VHhOWvpymWQNbT8MheYaKg1zDKutfW17vk2HbVfiULlwT38s1npDgXgjIXwH/XdgD95IT9bByHwpkKqD355jhkykld3hWAnpPWj316Vz/YxSTabzP5rTT/pWfujWs1FMWGPSRaauO2nWTYV2WYNbmEfKLe6Npn8FtZdot/m8tfFrWGIjiMor55qFpNzWy6NpwRIbho8LqVkKMTOWNMJXXvdGnMu0Wny3hU06m4DrV/wifz+tomlZT13WGyLTbrI3DJXwctfAbK+2Ok4UKalPTdmr68Kv5XdCq1lumz/mohQvvhM3AjmML5AnFP+ph5T4UyFRA788xwydTSu7wrAQ61B2KeVvHPPHhnOXi+7AuS7WptdV7p6Qpz1sWDLwnv6hXy8X6TQenyzWQd1FWRhLhuybguiw4qC4LDqqWao5TF/Zo4ZNHFgwMbjcDR2QabPuxhfCWKbWWspJM/cLP6EOmnep9hMK+pTFvyxhZfRarXR9qFNxDFjAcxC/r3k+34s3ckY9BrkmpBQdxUvbqCGmb0YCmsqDA1cVDW3CQ+nps/DVZcPCjdj1IvX7x2in8tumTdKvd1IKDFrJybtyiXrgae/aJ7VkABRg+PAfsViC4WGPtovyX87vKCrZz6RzU6MRDrneMW9wLDy+1zu1VADG3r+DgmQ0oKMuqU+9w4C9LrZvLUutCPkFwdnLVlm1XkmOoOyY8eocDL3cftKszRBYdVMKtuGuIOL0GZ68eQWcZrUScXoUVe75NUx9zw0eN4lTwtZARWaAsw1abWskXLtekUhcYqNdb1hiEYn5VkJKSItd0tmOFrOZTn29Kf4cDg6yOmyLXvG6nWQVotycPG/7EAgyfJyZkAfYmoD4fkyTTY8kp9zJsurpu4y5Lw1Ons+zNh+2lgB4Bho8eJe5DAQpQgALZKsDwyVZOFkYBClCAAnoEGD56lLgPBShAAQpkqwDDJ1s5WRgFKEABCugRYPjoUeI+FKAABSiQrQLZHj4fdl6M8fKp6Vtxf2drRVkYBShAAQrYhoC68e6A0G+1m+Bmtun+kGnvJl8h4tTKh27AmFnRfJ0CFKAABexJoEqJptq9B39d90GmzdYdPjVKt5ZnnjTA1FUPbkefaencgQIUoAAF7EbgtRaTsfPEEm2gktmmO3xUQe+2n431+6fJJ7VXZ1YuX6cABShAATsSqFUmTG5P1Uq7c4iezazw8clZBP1bTNLug7U/cq2e8rkPBShAAQrYuIC6R2AjedzHpPB+uHnniq7WmhU+qkQVQL1eGKvdZl49qfHi9VP469pJXQfjThSgAAUoYBsChX1Ky010y6C83JhXPWZE3ThXb/AoAbPDJ5WtbvnOcmPDivDN6Q9f76K2oclWUIACFKCALoGL8pDFqzHR8vThvdh1Yqmu9zy8k8E/qJrR4OBg9hv5BgpQgAIUoEBWBQyFS1U1Ojo6ZvX9fB8FKEABClDAbAFDweKVjS4uLma/kW+gAAUoQAEKZFXA4FuknDGHp2dW38/3UYACFKAABcwWMHjnK2H0yu2tPfudGwUoQAEKUOBpCyQnJ0MLHyeZdvPw8nrax2P5FKAABShAAdy5GXs/fJSFq7s73HLkIAsFKEABClDgqQkkxMUhMT7+QfikBpAKIYPB8NQOzIIpQAEKUMD+BIxGIxLiE3A3Pk5r/P8DugmsR44LoDgAAAAASUVORK5CYII="},8745:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_chain_get_genesis_address-551bfba5c9fb4c85e95f5bc789767c9e.png"},4847:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_chain_get_genesis_address2-8f7ef34a1659021e6a7283d31014a6f5.png"},2171:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_time_now-d7694a9f2dd01c0a0010e8d18bfbe8e5.png"},2537:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_time_now2-5a73d7c10f300e12b9cc96892afaaa1d.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[420],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>A});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),p=r,A=u["".concat(l,".").concat(p)]||u[p]||m[p]||o;return n?a.createElement(A,i(i({ref:t},d),{},{components:n})):a.createElement(A,i({ref:t},d))}));function A(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"mock-form",title:"Smart Contracts Playground - Mock form",sidebar_label:"Mock form",sidebar_position:100},i=void 0,s={unversionedId:"build/smart-contracts/playground/mock-form",id:"build/smart-contracts/playground/mock-form",title:"Smart Contracts Playground - Mock form",description:"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc.",source:"@site/docs/build/smart-contracts/playground/mock-form.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/mock-form",permalink:"/build/smart-contracts/playground/mock-form",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:100,frontMatter:{id:"mock-form",title:"Smart Contracts Playground - Mock form",sidebar_label:"Mock form",sidebar_position:100},sidebar:"docs",previous:{title:"Transaction form",permalink:"/build/smart-contracts/playground/transaction-form"},next:{title:"Fees",permalink:"/build/smart-contracts/fees"}},l={},c=[{value:"Example: Time.now/0",id:"example-timenow0",level:2},{value:"Example: Chain.get_genesis_address/1",id:"example-chainget_genesis_address1",level:2}],d={toc:c},u="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(u,(0,a.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc."),(0,r.kt)("p",null,"The mock form is part of the trigger panel."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"the mock form is display",src:n(1604).Z,width:"415",height:"96"})),(0,r.kt)("p",null,"These functions must be mocked to test Smart Contracts that use them:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_genesis_address1-io"},"Chain.get_genesis_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_first_transaction_address1-io"},"Chain.get_first_transaction_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#get_genesis_public_key1-io"},"Chain.get_genesis_public_key/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#now0"},"Time.now/0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch_id_from_address1-io"},"Token.fetch_id_from_address/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch1-io"},"Http.fetch/1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/library#fetch_many1-io"},"Http.fetch_many/1"))),(0,r.kt)("p",null,"A function can be mocked multiple times, for example to mock multiple different inputs."),(0,r.kt)("h2",{id:"example-timenow0"},"Example: Time.now/0"),(0,r.kt)("p",null,"Time.now/0 can be mocked to simulate a future execution of the contract. This one is actually optional, the playground will use current time if it is not set."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\nactions triggered_by: interval, at: "* * * * *" do \n Contract.set_content(Time.now())\nend\n')),(0,r.kt)("p",null,"All you need to do is fill the expected output (seconds since epoch):"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"mocking the Time.now/0",src:n(2171).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"Then click on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Add")," button, then ",(0,r.kt)("inlineCode",{parentName:"p"},"trigger")," to test the Smart Contract:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Time.now/0 is mocked",src:n(2537).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"We can see via the console that the mock was called as expected."),(0,r.kt)("h2",{id:"example-chainget_genesis_address1"},"Example: Chain.get_genesis_address/1"),(0,r.kt)("p",null,"Let's see an example with a function that takes an argument.\nIn the form you specify the output for a given input. Let's try it!"),(0,r.kt)("p",null,"The screenshot below mocked the function with these values: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"input: ",(0,r.kt)("inlineCode",{parentName:"li"},"00002223BBD4EC3D64AE597696C7D7ADE1CEE65C639D885450AD2D7B75592AC76AFA")),(0,r.kt)("li",{parentName:"ul"},"output: ",(0,r.kt)("inlineCode",{parentName:"li"},"MOCKED"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\nactions triggered_by: interval, at: "* * * * *" do\n Contract.set_content(Chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa)) \nend\n')),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that used Chain.get_genesis_address/1 is tested",src:n(8745).Z,width:"3600",height:"2390"})),(0,r.kt)("p",null,"We can see via the console that the mock was called as expected."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"a contract that used Chain.get_genesis_address/1 is tested",src:n(4847).Z,width:"3600",height:"2390"})))}m.isMDXComponent=!0},1604:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ8AAABgCAYAAADCUX/sAAAUTklEQVR4Xu3dB1xW1f8H8M/DRkBRwYGK4MItmjO3mKk4cY8cpakNzfpnZVauzMbvV64ys6zU3Bv31tyJe0uImjMVURkiPP/vucajCP64D6I943N9+Sp47nPuOe9z4eM59zz3GrzzlzKCGwUoQAEKUOAZChgeFz7OLs5wcnaGg6MTHB0dYDAYnmG1eCgKUIACFLBWAWNKClLkb3JyMu4lJSHpblK6pqQLHxU4bjncJXAcrbXdrDcFKEABCliQgAqhhLg4CaJ7plqlCR8XNze4ubtxlGNBncaqUIACFLAFAaPRiMT4eCQmJGrNMYWPq4SOm7u7LbSRbaAABShAAQsVUCMgFUBa+Dg5OyGHpydHPBbaWawWBShAAVsRUCOgO7duS/gUKGX0ypUTDg68xmMrnct2UIACFLBkgZSUZBh8i5Q35vD0sOR6sm4UoAAFKGBjAga/4pWNzi4uNtYsNocCFKAABSxZwFCkVFWjA5dVW3IfsW4UoAAFbE7A4B9UzWhwcLC5hrFBFKAABShguQKGomVq8PY6lts/rBkFKEABmxRg+Nhkt7JRFKAABSxbgOFj2f3D2lGAAhSwSQGGj012KxtFAQpQwLIFGD6W3T+sHQUoQAGbFDArfMJqD0H1oJa4cD0S4xf3yhDE1SkHhnVbBmdHFyzc9iV2n1iarXAjXlqNLYdmY/3+adlaLgujAAUoQIFnJ5Cl8FHV+8/8brgaezZdTSsFhqBLw+Ha9xk+z64jeSQKUIAC1iRgdvhUKhaCpOS72HZkPjYe+CVdW7s3GgW/vKWQx8uP4WNNZwLrSgEKUOAZCpgdPhUCGuBg1Eb45yuHcY9MvTk7uuLjbsux/eh81K/YLU34OBgc0Si4B8oVrY/cngVxJeYM9pwMl7/L0jQ3X64ANK8+AIV9yyIlOQmnL0Zg5Z7JuBX/t7bfo9NuvrmKon/oJFyOicJPq97BvZS78HD1xgvP9UFQoRrwdM+Na7cu4PfDc/HHqfBnSMtDUYACFKDA4wSyFD4zN36MPk2/xn8WdMfVm9GmsstLMHVtMByTl7+O11pOThM+3UNGo5x/PS1sLl6LRPFCVVBegmjD/p+xJuJHrYwC3sXQv8V3uH77IiJOroCriwfqlOuAG/L1xGWvymNZk9OET84cvhgQ+i3i78bi+xVvIjEpTitHfS+fdwAiTq/GjVsXUT6gPgIKVMS0NUNw4vwOng0UoAAFKPAvC2QpfEb+1gIfdlmC7UcWYMOBn01N6CLB4+GaCwu3f4UhHWabwiewQCX0az4Ry/d8i62HZpn2b1fnAwTLNN7n8zrhdvw19Gj8GfzylMTXC3sg8d79IKlZpi3a1HobP6wYhMhLEabw2X5sAfpLmQ4OTvhewu52wg1tfxVIQzsvxLKd47Ht6DztezlccqJfi0k4ELk+TX3/ZXsengIUoIDdCmQpfEbMbI6w2u+iiO+DqTcnBxd8JKvcVkjAnPrrjzTh07RqP9Qu1xEjZzSX60X3H6GqNjXSeSvsF8zeNAKHzmzCqB7rsfHgr1j7z0hI7eMkU3mVizdG9JXDMlUXrYXPzmOLtZFM0XzlZcTzBqIuHTCVqabchnVdij8v7ce8LZ8i5s5lu+1cNpwCFKCApQpkOXxK+FWTqbf/mqbeyvrXRfdGozFmTlu4OLmnCZ+uDUagYN6Ssm/XNA6OMmoZ3XODTLtNxeGoTXin/UwJopHY/+fax3qp8FGjnbiEm/B0y4PD0Zswa9PwNPuHBPdGSHAv7Xvn/j6KyAt/YL+Meq7cPGOp/cB6UYACFLArgSyHj1pAMLTLYtPUW8d6w5DLwxc/rBwkK90KpQmfbg1HokCeEunCRz09dXSPDdpU2OGozdoo6LeNn8iChg3/M3yS7iVq15VqlQmTEVV7fCf/H335YJr3+OQsItd6GqCEX1UE5K8IB4MBS3eNk1HTIrvqYDaWAhSggCUKZDl8VGPU1Ju/TH1NWPIKhnVZhtURU7Rf7o+GT7Oq/fF82fYYMTMU9x6adlOLAt4Om47Zm0fhyJnNGNVzHVbvnZpuCXfLGoNwSkYvx89t06bdth6eg3X7foK7a068234WrsuigolL+2i+bi5ect0nL67Fnkdyyj3te+o6UM/Gn8squ/wY+VuoJfYD60QBClDArgSeKHxSp96W75qEZtUGyJRbmLZw4NHwKVagMl5tPh7LdskigCP3FwGorV2d9xBcvAm+nNcZsXFX0a/ZROT08ME3i3qarg2VlOm9V2R6b/r6D3Ekeku6pdZq9NO61mC5vjMGe0+vRClZXv3yi19h/tbPZGn1CtOx1N0Z1Oo6ho9dnd9sLAUoYKECTxQ+aupNrXpzcXKTayvHMEWWO6vt0fBR31Mr2UoXfh47TyzGJVlqXbJQVVQIbChLrX/RrvmozV8WMPSVkLpyI0qCY6V27ahuhU64efsqJoX3TbfUWr1H1WFQm2kyCvLCV3JNySB/3gmbAQdHZy3o7iTEIDB/JVQq1lg+f7QA4bvHW2hXsFoUoAAF7EfgicJHMampt+pBrbBkxzfYIcufHxc+KiRCKveSD5nWk+mvAtrKtT0nwrH7ZNp7v/nlKYWm1fqjcN4gbfRz6q89WLX3exlRXdfKzujebqmjo40Hpsu03RRtFV3Tav1QyKc03Jw9ZFruAv6QUdG2I3O1AONGAQpQgAL/roBZ4fPvVpVHpwAFKEABWxFg+NhKT7IdFKAABaxIgOFjRZ3FqlKAAhSwFQGGj630JNtBAQpQwIoEGD5W1FmsKgUoQAFbEWD42EpPsh0UoAAFrEiA4WNFncWqUoACFLAVAYaPrfQk20EBClDAigQYPlbUWawqBShAAVsRYPjYSk+yHRSgAAWsSIDhY0WdxapSgAIUsBUBho+t9CTbQQEKUMCKBBg+VtRZrCoFKEABWxFg+NhKT7IdFKAABaxIgOFjRZ3FqlKAAhSwFQGGj630JNtBAQpQwIoEGD5W1FmsKgUoQAFbEWD42EpPsh0UoAAFrEiA4WNFncWqUoACFLAVAYaPrfQk20EBClDAigQYPlbUWawqBShAAVsRYPjYSk+yHRSgAAWsSCDL4fN82fYoXjAYvrmKIp93gBU1mVWlAAUoQIEnFbh0IwpXY6IReSkCO48tMrs4s8PHJ2dh9Gw8FldvnsOxc9vx17XjuHDtlNkH5hsoQAEKUMB6BQrlLYVCPkEo618HuTzy4ee17+HmnSu6G2RW+KhRTr/QCVi+cwL2/blW90G4IwUoQAEK2K5AjdJt0LDiS5i8/HXE3Lmkq6Fmhc97HeZiTcRU7Itco6tw7kQBClCAAvYhUFsuxVQp0QwTlr6iq8G6w6dO2Q4oUaiaDK2G6CqYO1GAAhSggH0JDGz9EzYdnIGDURsybbju8OnXbCK2HpmDo2e3Zlood6AABShAAfsTqCnTbwEFgjF70/BMG687fD7pvgJfzO2E+Lu3Mi2UO1CAAhSggP0J+OTyR+8XvsCX8ztn2njd4TP25a14/6e6mRbIHShAAQpQwH4F9GYFw8d+zxG2nAIUoEC2CzB8sp2UBVKAAhSgQGYCDJ/MhPg6BShAAQpkuwDDJ9tJWSAFKEABCmQmwPDJTIivU4ACFKBAtgswfLKdlAU+bYHcHgVx487FbD/MwDY/wy9Pcfy28RNdH35rUuUVFMlXDj+uejvDuhgMDvis92Z8F/4aoq8cyvb6Ps0Cw2oPgZOjC+ZuGf00D8Oy7ViA4WPHnW+tTdd70prTvvzegRgc9qt8Pu0Ooi5G4Nf1QzN9O8MnUyLuQIHHCuj9OeZSa55EFiOg96Q1p8IvPvcqqgW1xLbDcxFSuTc+ndVKguj2/yyC4WOOMPelQFoBvT/HDB+eORYjoPekNafCQ+RmuCf/2o0th2ZhSIfZWPD7WOw5udxUhKODE1RAVQhoCEdHJxyO3oKkpAT4+ZQ0TbsV8S2L0GqvI79M3f198yxW7ZmMvs3HPXba7Tm5uWL9Cl2RO6cf4hNv4+T5nViy82sk3UtIV/XgYi+gTvlOss8uqFuTGOXPgaj12LD/F7R9/v9QrEBlCctYLN0xDsfPb9fe7+meB6HV35TnaVWRr1IQeXE/wneOw53EGO11NxcvtKo5CCX8qsFgAI6f3YHluycgIekOHp12a1KlL6pLOE9ZORBXYs6YQ8t9KZChgN6fY4YPT6B/TaBgnhJwc/Y0HV89ruP75W+avk5Iuo2L109nuX5F81XAgBbfYsqKgfjz0j6oaz9x8TcwdfVgU5nql3H5gPryy3kSrsWeR42g1igf2ABnLh/Qwie3lx/eDpuOo9FbsfP4InluSX40q9pf/uubYfj45Q3CwNZTJTx+xvFzO5DbsyDa1H4X2+S+iOv2TcswfDrWGyb7bsPafT9K2FRBy5oDEZcQK3WaiMsSCM2qDUBer0IYO7edhIkD3pJ2JCTFYc3eH7TymjzXFy5Obhi3uLd8ZcQbLX9AUvJdrJU70HtJUL1Y9VVEXz6MOVtGpQmfxpVfRs0ybfGD+FyOicqyM99IgYcFGD48Hyxe4KWQMfKv9AfhU7xgZflX/L4H4SPTY9N1XKN5XENb13wb5QLqYszsMO2XcqNKvdBYpt4+m9MWt+Kvw9MtN4Z2XoQ5m0dpo437m0G7RhQbd1ULn1Y139JGGF8v6qmVobZKgSHo0nB4huGjAjVQbqy4/eh8U7W6NxqFu/cSM7zIr0Y+Het9iJEzQ7WRidqGdJiD0xf2YuG2L7Svy/rXRY/GY/DBtPrag7s6N/hE7rPYQWuD2jzd8+L9jvMwY/0wbeTUPWQ0PpfXb//zepkidVCjdCvtjvSpIx/1MMhGlV7CpGX9cOlGpMWfK6yg9QgwfKynr1jTfwT0nrR6wBwMjhjaZTEi5Zf4uoiftLfky10ML4WMwlKZolLhEJg/WHs44vAZzZHw0A1zVWj5eBfWwqdvs3G4dD0Sy3aNNx1WhdawrksfO+2mnupY0q+q9oj5gnlLoriMZg5ErXts+DSv/oYEZGtT+WrkcujMZmw+NEP7XuoIToVPw4o9tJHa+CVqlPNgGySjIfWcLdXuioGN0r2euqcKn3JF68FoTJHQyo1pa4bgxPkdeki5DwV0Cej9Oea0my5O7vQsBPSetHrqElS4Fno3uT9yeHSLvnJEgqM/iuaviAGhkzIIn8ESPkW08Onz4tcyMohC+O4H4ZPDNRc+7haeYfhUCGyIjnU/lEeP/K6NXtSoQl3LUdNlGS1vViOf0Oqv49PZbR4Jn00SPjMzDB8VHhOWvpymWQNbT8MheYaKg1zDKutfW17vk2HbVfiULlwT38s1npDgXgjIXwH/XdgD95IT9bByHwpkKqD355jhkykld3hWAnpPWj316Vz/YxSTabzP5rTT/pWfujWs1FMWGPSRaauO2nWTYV2WYNbmEfKLe6Npn8FtZdot/m8tfFrWGIjiMor55qFpNzWy6NpwRIbho8LqVkKMTOWNMJXXvdGnMu0Wny3hU06m4DrV/wifz+tomlZT13WGyLTbrI3DJXwctfAbK+2Ok4UKalPTdmr68Kv5XdCq1lumz/mohQvvhM3AjmML5AnFP+ph5T4UyFRA788xwydTSu7wrAQ61B2KeVvHPPHhnOXi+7AuS7WptdV7p6Qpz1sWDLwnv6hXy8X6TQenyzWQd1FWRhLhuybguiw4qC4LDqqWao5TF/Zo4ZNHFgwMbjcDR2QabPuxhfCWKbWWspJM/cLP6EOmnep9hMK+pTFvyxhZfRarXR9qFNxDFjAcxC/r3k+34s3ckY9BrkmpBQdxUvbqCGmb0YCmsqDA1cVDW3CQ+nps/DVZcPCjdj1IvX7x2in8tumTdKvd1IKDFrJybtyiXrgae/aJ7VkABRg+PAfsViC4WGPtovyX87vKCrZz6RzU6MRDrneMW9wLDy+1zu1VADG3r+DgmQ0oKMuqU+9w4C9LrZvLUutCPkFwdnLVlm1XkmOoOyY8eocDL3cftKszRBYdVMKtuGuIOL0GZ68eQWcZrUScXoUVe75NUx9zw0eN4lTwtZARWaAsw1abWskXLtekUhcYqNdb1hiEYn5VkJKSItd0tmOFrOZTn29Kf4cDg6yOmyLXvG6nWQVotycPG/7EAgyfJyZkAfYmoD4fkyTTY8kp9zJsurpu4y5Lw1Ons+zNh+2lgB4Bho8eJe5DAQpQgALZKsDwyVZOFkYBClCAAnoEGD56lLgPBShAAQpkqwDDJ1s5WRgFKEABCugRYPjoUeI+FKAABSiQrQLZHj4fdl6M8fKp6Vtxf2drRVkYBShAAQrYhoC68e6A0G+1m+Bmtun+kGnvJl8h4tTKh27AmFnRfJ0CFKAABexJoEqJptq9B39d90GmzdYdPjVKt5ZnnjTA1FUPbkefaencgQIUoAAF7EbgtRaTsfPEEm2gktmmO3xUQe+2n431+6fJJ7VXZ1YuX6cABShAATsSqFUmTG5P1Uq7c4iezazw8clZBP1bTNLug7U/cq2e8rkPBShAAQrYuIC6R2AjedzHpPB+uHnniq7WmhU+qkQVQL1eGKvdZl49qfHi9VP469pJXQfjThSgAAUoYBsChX1Ky010y6C83JhXPWZE3ThXb/AoAbPDJ5WtbvnOcmPDivDN6Q9f76K2oclWUIACFKCALoGL8pDFqzHR8vThvdh1Yqmu9zy8k8E/qJrR4OBg9hv5BgpQgAIUoEBWBQyFS1U1Ojo6ZvX9fB8FKEABClDAbAFDweKVjS4uLma/kW+gAAUoQAEKZFXA4FuknDGHp2dW38/3UYACFKAABcwWMHjnK2H0yu2tPfudGwUoQAEKUOBpCyQnJ0MLHyeZdvPw8nrax2P5FKAABShAAdy5GXs/fJSFq7s73HLkIAsFKEABClDgqQkkxMUhMT7+QfikBpAKIYPB8NQOzIIpQAEKUMD+BIxGIxLiE3A3Pk5r/P8DugmsR44LoDgAAAAASUVORK5CYII="},8745:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_chain_get_genesis_address-551bfba5c9fb4c85e95f5bc789767c9e.png"},4847:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_chain_get_genesis_address2-8f7ef34a1659021e6a7283d31014a6f5.png"},2171:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_time_now-d7694a9f2dd01c0a0010e8d18bfbe8e5.png"},2537:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/playground_form_mock_time_now2-5a73d7c10f300e12b9cc96892afaaa1d.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/749f8745.0f432c8d.js b/assets/js/749f8745.9a2e54b6.js similarity index 98% rename from assets/js/749f8745.0f432c8d.js rename to assets/js/749f8745.9a2e54b6.js index 47b01b9f1..63b60097a 100644 --- a/assets/js/749f8745.0f432c8d.js +++ b/assets/js/749f8745.9a2e54b6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9712],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(r),d=o,m=u["".concat(c,".").concat(d)]||u[d]||f[d]||i;return r?n.createElement(m,a(a({ref:t},p),{},{components:r})):n.createElement(m,a({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"proof-of-work",title:"Proof of Work algorithm"},a=void 0,l={unversionedId:"build/core/mining/proof-of-work",id:"build/core/mining/proof-of-work",title:"Proof of Work algorithm",description:"The Archethic's proof of work algorithm defines way to assert the validity of the origin signature.",source:"@site/docs/build/core/mining/proof_of_work.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/proof-of-work",permalink:"/build/core/mining/proof-of-work",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"proof-of-work",title:"Proof of Work algorithm"},sidebar:"docs",previous:{title:"Pending transaction validation",permalink:"/build/core/mining/transaction-validation"},next:{title:"Transaction context retrieval",permalink:"/build/core/mining/transaction-context"}},c={},s=[{value:"Origin public key candidates",id:"origin-public-key-candidates",level:2},{value:"Lookup",id:"lookup",level:2}],p={toc:s},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The Archethic's proof of work algorithm defines way to assert the validity of the origin signature."),(0,o.kt)("p",null,"It defines two main components:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"List of origin public key candidates"),(0,o.kt)("li",{parentName:"ul"},"Lookup of the origin public key to verify the signature")),(0,o.kt)("h2",{id:"origin-public-key-candidates"},"Origin public key candidates"),(0,o.kt)("p",null,"Origin public keys listed for a given transaction are known by the entire network and are shared between clients and nodes."),(0,o.kt)("p",null,"However, a given transaction can specify - through ",(0,o.kt)("a",{parentName:"p",href:"/build/smart-contracts/"},"smart-contract")," the origin family."),(0,o.kt)("p",null,"By this way, the nodes are able to extract the list of origin public keys to assert with the signature."),(0,o.kt)("h2",{id:"lookup"},"Lookup"),(0,o.kt)("p",null,"A simple algorithm is defined to scan the entire list of public keys candidates and verify the cryptographic origin signature."),(0,o.kt)("p",null,"Once the public key is found, it becomes the Proof of Work.\nIf no public key is found, the proof of work is invalid and the transaction as well."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Telemetry timing is used for this algorithm to indicate how fast the algorithm is with a given number of public keys")))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9712],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(r),d=o,m=u["".concat(c,".").concat(d)]||u[d]||f[d]||i;return r?n.createElement(m,a(a({ref:t},p),{},{components:r})):n.createElement(m,a({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"proof-of-work",title:"Proof of Work algorithm"},a=void 0,l={unversionedId:"build/core/mining/proof-of-work",id:"build/core/mining/proof-of-work",title:"Proof of Work algorithm",description:"The Archethic's proof of work algorithm defines way to assert the validity of the origin signature.",source:"@site/docs/build/core/mining/proof_of_work.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/proof-of-work",permalink:"/build/core/mining/proof-of-work",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"proof-of-work",title:"Proof of Work algorithm"},sidebar:"docs",previous:{title:"Pending transaction validation",permalink:"/build/core/mining/transaction-validation"},next:{title:"Transaction context retrieval",permalink:"/build/core/mining/transaction-context"}},c={},s=[{value:"Origin public key candidates",id:"origin-public-key-candidates",level:2},{value:"Lookup",id:"lookup",level:2}],p={toc:s},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The Archethic's proof of work algorithm defines way to assert the validity of the origin signature."),(0,o.kt)("p",null,"It defines two main components:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"List of origin public key candidates"),(0,o.kt)("li",{parentName:"ul"},"Lookup of the origin public key to verify the signature")),(0,o.kt)("h2",{id:"origin-public-key-candidates"},"Origin public key candidates"),(0,o.kt)("p",null,"Origin public keys listed for a given transaction are known by the entire network and are shared between clients and nodes."),(0,o.kt)("p",null,"However, a given transaction can specify - through ",(0,o.kt)("a",{parentName:"p",href:"/build/smart-contracts/"},"smart-contract")," the origin family."),(0,o.kt)("p",null,"By this way, the nodes are able to extract the list of origin public keys to assert with the signature."),(0,o.kt)("h2",{id:"lookup"},"Lookup"),(0,o.kt)("p",null,"A simple algorithm is defined to scan the entire list of public keys candidates and verify the cryptographic origin signature."),(0,o.kt)("p",null,"Once the public key is found, it becomes the Proof of Work.\nIf no public key is found, the proof of work is invalid and the transaction as well."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Telemetry timing is used for this algorithm to indicate how fast the algorithm is with a given number of public keys")))}f.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/764c3c46.02794c54.js b/assets/js/764c3c46.550f8056.js similarity index 99% rename from assets/js/764c3c46.02794c54.js rename to assets/js/764c3c46.550f8056.js index 2e7920e39..5e52d8840 100644 --- a/assets/js/764c3c46.02794c54.js +++ b/assets/js/764c3c46.550f8056.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1484],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),d=c(a),u=n,m=d["".concat(l,".").concat(u)]||d[u]||h[u]||o;return a?i.createElement(m,s(s({ref:t},p),{},{components:a})):i.createElement(m,s({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,s=new Array(o);s[0]=u;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[d]="string"==typeof e?e:n,s[1]=r;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var i=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"aeweb",title:"Archethic Web (AEWeb)"},s=void 0,r={unversionedId:"participate/aeweb/aeweb",id:"participate/aeweb/aeweb",title:"Archethic Web (AEWeb)",description:"Archethic has developed a new solution to host websites on a decentralized network to avoid censorship, increase security and have high-availability and resiliency.",source:"@site/docs/participate/aeweb/README.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/",permalink:"/participate/aeweb/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"aeweb",title:"Archethic Web (AEWeb)"},sidebar:"docs",previous:{title:"Participate",permalink:"/category/participate"},next:{title:"How it works",permalink:"/participate/aeweb/how-it-works"}},l={},c=[{value:"Motivations",id:"motivations",level:2},{value:"Easy",id:"easy",level:3},{value:"Security",id:"security",level:3},{value:"Costly efficient",id:"costly-efficient",level:3},{value:"Target",id:"target",level:2},{value:"Roadmap",id:"roadmap",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic has developed a new solution to host websites on a decentralized network to ",(0,n.kt)("strong",{parentName:"p"},"avoid censorship"),", ",(0,n.kt)("strong",{parentName:"p"},"increase security")," and ",(0,n.kt)("strong",{parentName:"p"},"have high-availability and resiliency"),"."),(0,n.kt)("h2",{id:"motivations"},"Motivations"),(0,n.kt)("p",null,"Web hosting is still a subject of innovation nowadays, even with the rise of Web3.\nExisting solutions provides P2P and distributed hosting, but it can lack some important aspects such as ease-of-use, fully on-chain and trust."),(0,n.kt)("h3",{id:"easy"},"Easy"),(0,n.kt)("p",null,"Since its design, ",(0,n.kt)("strong",{parentName:"p"},"AEWeb")," motivation was to allow deployment of websites in just a few steps. No need to transform your website to match our solution. The website you developed and know will be the same one deployed."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Your website will be transformed into transaction without additional work")),(0,n.kt)("h3",{id:"security"},"Security"),(0,n.kt)("p",null,"Web hosting solutions are either centralized and decentralized. The first doesn't provide security, as being centralized and subject to censorship. The latter would be quite often insecure because hosted out of the blockchain, like traditional P2P system (torrents, etc.)"),(0,n.kt)("p",null,"We wanted to make it completely secure and on-chain.\nHence, each of the websites will first be validated across the Archethic network with the ARCH consensus capable to handle even 90% of maliciousness.\nWhile being validated, the websites will be stored and split geographically across the globe for highest data availability and security."),(0,n.kt)("p",null,"Then each delivery of the websites will directly read the data on-chain to deliver to browsers and clients and provide a high confidence of the displayed website."),(0,n.kt)("h3",{id:"costly-efficient"},"Costly efficient"),(0,n.kt)("p",null,"There are rare situations when websites can be hosted on a blockchain due to its costs being based on virtual machine or high fee on a network."),(0,n.kt)("p",null,"Transactions on Archethic are cost-efficient, so hosting websites on-chain will be a cheap solution regarding existing centralized and decentralized protocols."),(0,n.kt)("p",null,"Because of the nature of Web3 and decentralized network, once a website is deployed there is no maintenance cost such as renting a VPS on a centralized system each month for a couple of bucks. As long as the website doesn't need to change, there will be not cost."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Example: a VPS can cost around $5/month to host any website. On Archethic a website of 1MB could cost around $2 (with UCO at: $1 and with 200 replicas)."),(0,n.kt)("p",{parentName:"admonition"},"You might think it's more expensive, but the VPS was only a single instance. For the same data availability on centralized hosting you would have to pay around $500 + cost of maintenance")),(0,n.kt)("h2",{id:"target"},"Target"),(0,n.kt)("p",null,"Because of the Web is so wide, we have distinguished what AEWeb is capable to do or not."),(0,n.kt)("admonition",{title:"Website vs WebApp",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Website are usually not Web app."),(0,n.kt)("p",{parentName:"admonition"},"Websites are often simple static pages (HTML, stylesheets, images, scripts) to create beautiful frontend such a portal, showcase, corporate sites."),(0,n.kt)("p",{parentName:"admonition"},"On the other side Web app (Web Application) are far more complex and provide a complete suite of administration and back-office with authentication and databases.")),(0,n.kt)("p",null,"For now, AEWeb solution only provides website hosting. So any website which contains static files can be hosted on-chain."),(0,n.kt)("p",null,"For more complex web applications, the front-end can still be hosted with AEWeb but the backend or business logic have to be managed in other ways, such as:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"centralized servers and databases"),(0,n.kt)("li",{parentName:"ul"},"blockchain dApp & smart contracts")),(0,n.kt)("p",null,"For instance, today a lot of web apps are leveraging SPA (Single Page Application) with front-end frameworks which are talking to external backend servers (fetching data, or authenticate users, etc.).\nIn that case, once the front-end page have been build from the SPA tooling, instead of being deployed on centralized servers, the generated static files could be hosted on Archethic through AEWeb tooling."),(0,n.kt)("h2",{id:"roadmap"},"Roadmap"),(0,n.kt)("ul",{className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Design"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Blockchain integration",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","API"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","HTTPS & certificates"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Command Line Interface (CLI)",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","File"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Folder"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Complete website"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Keychain integration"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","User Interface",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Web or Native application"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Domain Name System (DNS)",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","DNSLink integration"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Automation")))),(0,n.kt)("p",null,"The development started few months ago, and we are now in the phase of testing as beta version."),(0,n.kt)("p",null,"Currently we are targeting ",(0,n.kt)("strong",{parentName:"p"},"developers")," throught a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"CLI")," to help them to test and deploy existing websites."),(0,n.kt)("p",null,"Next achievement is to produce a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb"},"user interface")," to make webhosting no only for developers but for anyone which have static website to deploy."))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1484],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=i.createContext({}),c=function(e){var t=i.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),d=c(a),u=n,m=d["".concat(l,".").concat(u)]||d[u]||h[u]||o;return a?i.createElement(m,s(s({ref:t},p),{},{components:a})):i.createElement(m,s({ref:t},p))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,s=new Array(o);s[0]=u;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[d]="string"==typeof e?e:n,s[1]=r;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var i=a(7462),n=(a(7294),a(3905));a(8209);const o={id:"aeweb",title:"Archethic Web (AEWeb)"},s=void 0,r={unversionedId:"participate/aeweb/aeweb",id:"participate/aeweb/aeweb",title:"Archethic Web (AEWeb)",description:"Archethic has developed a new solution to host websites on a decentralized network to avoid censorship, increase security and have high-availability and resiliency.",source:"@site/docs/participate/aeweb/README.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/",permalink:"/participate/aeweb/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"aeweb",title:"Archethic Web (AEWeb)"},sidebar:"docs",previous:{title:"Participate",permalink:"/category/participate"},next:{title:"How it works",permalink:"/participate/aeweb/how-it-works"}},l={},c=[{value:"Motivations",id:"motivations",level:2},{value:"Easy",id:"easy",level:3},{value:"Security",id:"security",level:3},{value:"Costly efficient",id:"costly-efficient",level:3},{value:"Target",id:"target",level:2},{value:"Roadmap",id:"roadmap",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic has developed a new solution to host websites on a decentralized network to ",(0,n.kt)("strong",{parentName:"p"},"avoid censorship"),", ",(0,n.kt)("strong",{parentName:"p"},"increase security")," and ",(0,n.kt)("strong",{parentName:"p"},"have high-availability and resiliency"),"."),(0,n.kt)("h2",{id:"motivations"},"Motivations"),(0,n.kt)("p",null,"Web hosting is still a subject of innovation nowadays, even with the rise of Web3.\nExisting solutions provides P2P and distributed hosting, but it can lack some important aspects such as ease-of-use, fully on-chain and trust."),(0,n.kt)("h3",{id:"easy"},"Easy"),(0,n.kt)("p",null,"Since its design, ",(0,n.kt)("strong",{parentName:"p"},"AEWeb")," motivation was to allow deployment of websites in just a few steps. No need to transform your website to match our solution. The website you developed and know will be the same one deployed."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Your website will be transformed into transaction without additional work")),(0,n.kt)("h3",{id:"security"},"Security"),(0,n.kt)("p",null,"Web hosting solutions are either centralized and decentralized. The first doesn't provide security, as being centralized and subject to censorship. The latter would be quite often insecure because hosted out of the blockchain, like traditional P2P system (torrents, etc.)"),(0,n.kt)("p",null,"We wanted to make it completely secure and on-chain.\nHence, each of the websites will first be validated across the Archethic network with the ARCH consensus capable to handle even 90% of maliciousness.\nWhile being validated, the websites will be stored and split geographically across the globe for highest data availability and security."),(0,n.kt)("p",null,"Then each delivery of the websites will directly read the data on-chain to deliver to browsers and clients and provide a high confidence of the displayed website."),(0,n.kt)("h3",{id:"costly-efficient"},"Costly efficient"),(0,n.kt)("p",null,"There are rare situations when websites can be hosted on a blockchain due to its costs being based on virtual machine or high fee on a network."),(0,n.kt)("p",null,"Transactions on Archethic are cost-efficient, so hosting websites on-chain will be a cheap solution regarding existing centralized and decentralized protocols."),(0,n.kt)("p",null,"Because of the nature of Web3 and decentralized network, once a website is deployed there is no maintenance cost such as renting a VPS on a centralized system each month for a couple of bucks. As long as the website doesn't need to change, there will be not cost."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Example: a VPS can cost around $5/month to host any website. On Archethic a website of 1MB could cost around $2 (with UCO at: $1 and with 200 replicas)."),(0,n.kt)("p",{parentName:"admonition"},"You might think it's more expensive, but the VPS was only a single instance. For the same data availability on centralized hosting you would have to pay around $500 + cost of maintenance")),(0,n.kt)("h2",{id:"target"},"Target"),(0,n.kt)("p",null,"Because of the Web is so wide, we have distinguished what AEWeb is capable to do or not."),(0,n.kt)("admonition",{title:"Website vs WebApp",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Website are usually not Web app."),(0,n.kt)("p",{parentName:"admonition"},"Websites are often simple static pages (HTML, stylesheets, images, scripts) to create beautiful frontend such a portal, showcase, corporate sites."),(0,n.kt)("p",{parentName:"admonition"},"On the other side Web app (Web Application) are far more complex and provide a complete suite of administration and back-office with authentication and databases.")),(0,n.kt)("p",null,"For now, AEWeb solution only provides website hosting. So any website which contains static files can be hosted on-chain."),(0,n.kt)("p",null,"For more complex web applications, the front-end can still be hosted with AEWeb but the backend or business logic have to be managed in other ways, such as:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"centralized servers and databases"),(0,n.kt)("li",{parentName:"ul"},"blockchain dApp & smart contracts")),(0,n.kt)("p",null,"For instance, today a lot of web apps are leveraging SPA (Single Page Application) with front-end frameworks which are talking to external backend servers (fetching data, or authenticate users, etc.).\nIn that case, once the front-end page have been build from the SPA tooling, instead of being deployed on centralized servers, the generated static files could be hosted on Archethic through AEWeb tooling."),(0,n.kt)("h2",{id:"roadmap"},"Roadmap"),(0,n.kt)("ul",{className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Design"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Blockchain integration",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","API"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","HTTPS & certificates"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Command Line Interface (CLI)",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","File"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Folder"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Complete website"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Keychain integration"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","User Interface",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Web or Native application"))),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Domain Name System (DNS)",(0,n.kt)("ul",{parentName:"li",className:"contains-task-list"},(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","DNSLink integration"),(0,n.kt)("li",{parentName:"ul",className:"task-list-item"},(0,n.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ","Automation")))),(0,n.kt)("p",null,"The development started few months ago, and we are now in the phase of testing as beta version."),(0,n.kt)("p",null,"Currently we are targeting ",(0,n.kt)("strong",{parentName:"p"},"developers")," throught a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"CLI")," to help them to test and deploy existing websites."),(0,n.kt)("p",null,"Next achievement is to produce a ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb"},"user interface")," to make webhosting no only for developers but for anyone which have static website to deploy."))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/76b1eb51.49fb71f9.js b/assets/js/76b1eb51.8d7d2297.js similarity index 98% rename from assets/js/76b1eb51.49fb71f9.js rename to assets/js/76b1eb51.8d7d2297.js index f3f5679d2..7a9cd084a 100644 --- a/assets/js/76b1eb51.49fb71f9.js +++ b/assets/js/76b1eb51.8d7d2297.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5258],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(r),h=n,b=p["".concat(s,".").concat(h)]||p[h]||u[h]||o;return r?a.createElement(b,l(l({ref:t},d),{},{components:r})):a.createElement(b,l({ref:t},d))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=h;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>h,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var a=r(7462),n=r(7294),o=r(3905);r(8209);const l={id:"ownership",title:"Ownership",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/ownership",id:"build/api/schema/objects/ownership",title:"Ownership",description:"[Ownership] represents a block to set a secret and the authorized public keys able to decrypt the secret",source:"@site/docs/build/api/schema/objects/ownership.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ownership",permalink:"/build/api/schema/objects/ownership",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"ownership",title:"Ownership",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"OracleServices",permalink:"/build/api/schema/objects/oracle-services"},next:{title:"SharedSecrets",permalink:"/build/api/schema/objects/shared-secrets"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Ownership.authorizedPublicKeys[AuthorizedKey] ',id:"code-style-fontweight-normal-ownershipbauthorizedpublickeysbcodeauthorizedkey--",level:4},{value:'Ownership.secretHex ',id:"code-style-fontweight-normal-ownershipbsecretbcodehex-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),h=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:h},m="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(m,(0,a.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[Ownership]"," represents a block to set a secret and the authorized public keys able to decrypt the secret"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Ownership {\n authorizedPublicKeys: [AuthorizedKey]\n secret: Hex\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ownershipbauthorizedpublickeysbcodeauthorizedkey--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Ownership.",(0,o.kt)("b",null,"authorizedPublicKeys"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/authorized-key"},(0,o.kt)("inlineCode",{parentName:"a"},"[AuthorizedKey]"))," ",(0,o.kt)(h,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ownershipbsecretbcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Ownership.",(0,o.kt)("b",null,"secret"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(h,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,o.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5258],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>b});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(r),h=n,b=p["".concat(s,".").concat(h)]||p[h]||u[h]||o;return r?a.createElement(b,l(l({ref:t},d),{},{components:r})):a.createElement(b,l({ref:t},d))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=h;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>h,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var a=r(7462),n=r(7294),o=r(3905);r(8209);const l={id:"ownership",title:"Ownership",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/ownership",id:"build/api/schema/objects/ownership",title:"Ownership",description:"[Ownership] represents a block to set a secret and the authorized public keys able to decrypt the secret",source:"@site/docs/build/api/schema/objects/ownership.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/ownership",permalink:"/build/api/schema/objects/ownership",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"ownership",title:"Ownership",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"OracleServices",permalink:"/build/api/schema/objects/oracle-services"},next:{title:"SharedSecrets",permalink:"/build/api/schema/objects/shared-secrets"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'Ownership.authorizedPublicKeys[AuthorizedKey] ',id:"code-style-fontweight-normal-ownershipbauthorizedpublickeysbcodeauthorizedkey--",level:4},{value:'Ownership.secretHex ',id:"code-style-fontweight-normal-ownershipbsecretbcodehex-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(n.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),h=e=>(0,o.kt)(n.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:h},m="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(m,(0,a.Z)({},b,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[Ownership]"," represents a block to set a secret and the authorized public keys able to decrypt the secret"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Ownership {\n authorizedPublicKeys: [AuthorizedKey]\n secret: Hex\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ownershipbauthorizedpublickeysbcodeauthorizedkey--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Ownership.",(0,o.kt)("b",null,"authorizedPublicKeys"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/authorized-key"},(0,o.kt)("inlineCode",{parentName:"a"},"[AuthorizedKey]"))," ",(0,o.kt)(h,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ownershipbsecretbcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Ownership.",(0,o.kt)("b",null,"secret"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(h,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,o.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(h,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/7746a795.ca26196c.js b/assets/js/7746a795.957b7ccf.js similarity index 99% rename from assets/js/7746a795.ca26196c.js rename to assets/js/7746a795.957b7ccf.js index f1d8ed6dc..3791c2c48 100644 --- a/assets/js/7746a795.ca26196c.js +++ b/assets/js/7746a795.957b7ccf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5935],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,m=p["".concat(s,".").concat(d)]||p[d]||h[d]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));a(8209);const i={id:"archethic-wallet",title:"Archethic Wallet"},o=void 0,l={unversionedId:"participate/wallet/archethic-wallet",id:"participate/wallet/archethic-wallet",title:"Archethic Wallet",description:"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.",source:"@site/docs/participate/wallet/README.md",sourceDirName:"participate/wallet",slug:"/participate/wallet/",permalink:"/participate/wallet/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"archethic-wallet",title:"Archethic Wallet"},sidebar:"docs",previous:{title:"Archethic's CLI",permalink:"/participate/cli/"},next:{title:"Communication with DApps",permalink:"/participate/wallet/dapps-communication"}},s={},c=[{value:"Features",id:"features",level:2},{value:"Framework",id:"framework",level:2},{value:"Seed",id:"seed",level:2},{value:"Securing the application",id:"securing-the-application",level:2},{value:"Data store",id:"data-store",level:2},{value:"Interactions with the Archethic blockchain",id:"interactions-with-the-archethic-blockchain",level:2},{value:"Setup",id:"setup",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Instructions",id:"instructions",level:3}],u={toc:c},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"No signup or KYC needed, users just control their services and access keychain, protected by different secure access methods like PIN Code, Password, YubiKey like devices and Biometrics.")),(0,n.kt)("h2",{id:"features"},"Features"),(0,n.kt)("p",null,"Archethic Wallet has implemented the following features:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Main features",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Decentralized keychain management"),(0,n.kt)("li",{parentName:"ul"},"Multiple accounts' management"),(0,n.kt)("li",{parentName:"ul"},"Creation of Fungible Tokens"),(0,n.kt)("li",{parentName:"ul"},"Creation of NFTs"),(0,n.kt)("li",{parentName:"ul"},"Support for transactions (Sending and Receiving UCO Token, Fungible Tokens and NFTs)"),(0,n.kt)("li",{parentName:"ul"},"List of recent transactions"),(0,n.kt)("li",{parentName:"ul"},"List of acquired tokens"))),(0,n.kt)("li",{parentName:"ul"},"Security",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Security access with Password, PIN, Yubicloud OTP, Face ID, Touch ID, Uniris Biometrics (2023)"),(0,n.kt)("li",{parentName:"ul"},"Use of 24 Words Mnemonics"))),(0,n.kt)("li",{parentName:"ul"},"Customization",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Support for English and French Language"),(0,n.kt)("li",{parentName:"ul"},"Support for multiple Currencies (view only, not meant as multiple cryptocurrencies wallet)"),(0,n.kt)("li",{parentName:"ul"},"Multi themes (9 themes available)"),(0,n.kt)("li",{parentName:"ul"},"UI customization"))),(0,n.kt)("li",{parentName:"ul"},"Other features",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Local notifications"),(0,n.kt)("li",{parentName:"ul"},"Access to exchanges to buy ERC20 UCO"),(0,n.kt)("li",{parentName:"ul"},"Share address with QR Code or mobile share feature"),(0,n.kt)("li",{parentName:"ul"},"Address book"),(0,n.kt)("li",{parentName:"ul"},"UCO Price chart"),(0,n.kt)("li",{parentName:"ul"},"Access latest Archethic blog articles")))),(0,n.kt)("h2",{id:"framework"},"Framework"),(0,n.kt)("p",null,"Archethic developed the wallet using Flutter based on Dart language.\nFlutter is an open-source mobile application development framework from Google. The main reason for its popularity is that it supports the creation of cross-platform applications. Flutter is also used to create interactive apps that run on web pages or on the desktop."),(0,n.kt)("p",null,"Here are some of Flutter's features*"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Single code base for Android, iOS, Windows, Linux, macOS, Web, Extension"),": This approach simplifies and reduces the development time, cost, and maintenance is also an easy task. The Flutter-based user interface can be installed virtually on any platform. It has its own rendering engine that allows developers to keep the UI as it is while moving to another platform. As a result, application users can enjoy an excellent native-like experience on various platforms."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Open-source and made by Google"),": Flutter is a popular choice among developers because of the huge community support. Google designed the Flutter framework with all the security issues of modern applications in mind. One can find reliable and well-tested plugins in Flutter to mitigate security risks such as user authentication flaws, malicious code injections and data leaks."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Dart Programming"),": Flutter uses an easy to learn and implement programming language called Dart, which is Google's general purpose programming language."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Performance"),": As a cross-platform framework, Flutter offers unmatched performance compared to its competitors. Flutter compiles designs to native code. Unlike React Native, Flutter renders widgets directly from the native library rather than downloading libraries and components to the device before rendering.")),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Source: ",(0,n.kt)("a",{parentName:"em",href:"https://mobiskill.fr/blog/conseils-emploi-tech/pourquoi-utiliser-flutter-en-2022/"},"https://mobiskill.fr/blog/conseils-emploi-tech/pourquoi-utiliser-flutter-en-2022/"))),(0,n.kt)("h2",{id:"seed"},"Seed"),(0,n.kt)("p",null,"When the wallet is created, a seed is randomly created from a cryptographically secure random number generator provided by Dart."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-dart"}," static String generateSeed() {\n String result = '';\n const String chars = 'abcdef0123456789';\n final Random rng = Random.secure();\n for (int i = 0; i < 64; i++) {\n result += chars[rng.nextInt(chars.length)];\n }\n return result.toUpperCase();\n }\n")),(0,n.kt)("p",null,"In order to make the seed more accessible, BIP39 is used and aims to provide a method of simplifying the reading of the seed using a series of mnemonic words. BIP39 takes random words (usually from the English language, although they can be from another language) and creates a long phrase with them, usually 12 to 24 words. In the case of the Archethic wallet, we use 24 words because the higher the number of words, the greater the entropy and security attributable to the resulting sentence. These words are chosen from a dictionary of 2048 words. The flutter library bip39_mnemonic is thus used with English and French dictionaries."),(0,n.kt)("p",null,"In the case of wallet restoration, the library bip39_mnemonic allows to find the seed from the seed phrase."),(0,n.kt)("h2",{id:"securing-the-application"},"Securing the application"),(0,n.kt)("p",null,"Access to the application and interactions with the blockchain are secured so that certain actions are not done beyond the user's control.\nFollowing are the ways to access:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"by ",(0,n.kt)("strong",{parentName:"li"},"PIN code"),", comprising of 6 digits, with the possibility to mix the numbers of the keyboard to reduce the risks of access to your code by observation,"),(0,n.kt)("li",{parentName:"ul"},"by ",(0,n.kt)("strong",{parentName:"li"},"password"),","),(0,n.kt)("li",{parentName:"ul"},"by using a ",(0,n.kt)("strong",{parentName:"li"},"YubiKey"),", it is an electronic authentication device to secure your access. Whether you are using NFC with your mobile or USB on your desktop, you can identify yourself with this key,"),(0,n.kt)("li",{parentName:"ul"},"by the ",(0,n.kt)("strong",{parentName:"li"},"touch ID or face ID system"),", depending on your device capabilities.")),(0,n.kt)("p",null,"In the case of ",(0,n.kt)("strong",{parentName:"p"},"PIN")," and ",(0,n.kt)("strong",{parentName:"p"},"password"),', authentication information is stored locally (see "What data is stored in my device?").\nIn the case of ',(0,n.kt)("strong",{parentName:"p"},"touch ID or Face ID"),", the ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/local_auth"},"Flutter Local Auth library")," provides the means to authenticate on devices supporting fingerprint or facial recognition authentication.\nFinally, for ",(0,n.kt)("strong",{parentName:"p"},"OTP via Yubicloud"),": Yubico OTP is a simple yet strong authentication mechanism that is supported by all ",(0,n.kt)("strong",{parentName:"p"},"YubiKeys")," out of the box. Yubico OTP can be used as the second factor in a 2-factor authentication scheme or on its own, providing 1-factor authentication. ",(0,n.kt)("a",{parentName:"p",href:"https://www.yubico.com/products/yubicloud/"},"YubiCloud")," is the name of Yubico\u2019s web service for verifying OTPs. Before using YubiCloud, you need to get an API key from ",(0,n.kt)("a",{parentName:"p",href:"https://upgrade.yubico.com/getapikey/"},"here")," -\u2009it is quick, free and helps us in preventing misuse of YubiCloud. "),(0,n.kt)("h2",{id:"data-store"},"Data store"),(0,n.kt)("p",null,"Archethic Wallet stores a set of information so that the application is functional in both online and offline mode."),(0,n.kt)("p",null,"The first group of information represents the globally available user preferences:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"First Launch"),": Allows to know if this is the first launch of the application in order to clear the keystore for iOS. Indeed, iOS key store is persistent, so if this is first launch then we will clear the keystore."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Authentification Method"),": Allows to know which authentication mode is used (PIN, password, YubiKey, biometrics)."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Currency"),": Allows you to know what currency is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Language"),": Allows you to know which language is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Primary Setting"),": Allows to know if the currency displayed in priority is Fiat or Crypto."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Network"),": Allows to know if the wallet is connected to mainnet, testnet or to a local node whose endpoint is recorded in the following information."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Network Endpoint"),": Allows to know the address of the local node."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Theme"),": Allows to know which theme is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Lock"),": Allows to know if it is necessary to authenticate at the launching of the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Lock Timeout"),": Allows to know after how long the application requires authentication at its launch if the user has left the application open to browse for another one for example."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Auto Lock Date"),": Contains the timestamp of the last autolock."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Pin Pad Shuffle"),": Allows you to determine whether the PIN code keyboard should be shuffled when entering."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Balances"),": Allows you to determine if the financial information should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Blog"),": Allows you to know which blog articles should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Price Chart"),": Allows you to determine whether the graph and indicators of the UCO price chart should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Price Chart Scale"),": Current scale of the price chart."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active Vibrations"),": Allows to know if at each action, a small vibration is emitted on the mobiles."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active Notifications"),": Allows to know if the notifications of reception of UCO are active or not."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active RPC Server"),": Allows DApps connect to the wallet to get informations or send/sign transactions."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Language Seed"),": Allows to know if the seed phrase is composed of French or English words."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Version"),": Current version of the wallet app installed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Main Screen Current Page"),": Current page selected on the main screen.")),(0,n.kt)("p",null,"The second group of information represents the sensitive elements related to security:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Seed"),": Allows to store the wallet seed needed to perform transactions on the Archethic blockchain."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"PIN"),": Allows to store the PIN code in case this authentication method has been chosen."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Password"),": Allows to keep the password in case this authentication method has been chosen."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Yubicloud ID and API Key"),": Allows to keep the authentication information for the management of the OTP with the YubiKey in case this authentication method has been chosen.\nThis information is stored securely."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Keychain secured informations"),": Keychain's informations like keychain's seed, keychain's version and the associated list of services."),(0,n.kt)("li",{parentName:"ul"},"And finally, ",(0,n.kt)("strong",{parentName:"li"},"a secure 256-bit (32 bytes) encryption key")," to secure data on the disk.")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Remember that Archethic will never pass on your data to a third party or use your data in any other way than that offered by the application")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"In the case of user preference data"),", we made the choice to store it in a local database ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/hive"},"Hive")," rather than the Flutter object ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/shared_preferences"},"SharedPreferences")," for performance reasons. All the information is available in this ",(0,n.kt)("a",{parentName:"p",href:"https://medium.com/flutter-community/using-hive-instead-of-sharedpreferences-for-storing-preferences-2d98c9db930f"},"medium article"),".\nThese data are stored in clear text because they are not sensitive."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"On the other hand, the information related to security management must be protected.")," Here again, Hive is used but the stored values are encrypted. Hive provides a helper function to generate a secure encryption key using the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Fortuna_%28PRNG%29"},"Fortuna")," random number generator.\nThe key is stored base64 encoded in a secure space via the ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/flutter_secure_storage"},"FlutterSecureStorage library"),"."),(0,n.kt)("h2",{id:"interactions-with-the-archethic-blockchain"},"Interactions with the Archethic blockchain"),(0,n.kt)("p",null,"Based on the Archethic JS SDK, ",(0,n.kt)("a",{parentName:"p",href:"/build/sdk/dart"},(0,n.kt)("strong",{parentName:"a"},"a SDK has been developed in dart"))," and is maintained by the Archethic teams in order to offer internal or community-developed Flutter DApps to interact with the Archethic Blockchain."),(0,n.kt)("p",null,"This open-source SDK ",(0,n.kt)("strong",{parentName:"p"},'"archethic_lib_dart"'),", available on ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libdart"},"GitHub"),", can be added as dependencies in Dart or Flutter projects via the Flutter libraries and packages sharing site ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/"},"Pub.dev"),"."),(0,n.kt)("h2",{id:"setup"},"Setup"),(0,n.kt)("h3",{id:"pre-requisites"},"Pre-requisites"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Flutter 3.10+"),(0,n.kt)("li",{parentName:"ul"},"Dart 3.0+")),(0,n.kt)("h3",{id:"instructions"},"Instructions"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Download the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-wallet"},"repo")," into a folder"),(0,n.kt)("li",{parentName:"ul"},"Goto the folder and from terminal run ",(0,n.kt)("inlineCode",{parentName:"li"},"flutter pub get")," to get the packages"),(0,n.kt)("li",{parentName:"ul"},"Once packages are installed ",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"You can build and run the program for emulator from VSCode Flutter SDK Tools"),(0,n.kt)("li",{parentName:"ul"},"You can build for android emulator if already installed."))),(0,n.kt)("li",{parentName:"ul"},"Once the packages and installed and application is built"),(0,n.kt)("li",{parentName:"ul"},"Run the program with ",(0,n.kt)("inlineCode",{parentName:"li"},"flutter run"))))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5935],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,m=p["".concat(s,".").concat(d)]||p[d]||h[d]||i;return a?r.createElement(m,o(o({ref:t},u),{},{components:a})):r.createElement(m,o({ref:t},u))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=a(7462),n=(a(7294),a(3905));a(8209);const i={id:"archethic-wallet",title:"Archethic Wallet"},o=void 0,l={unversionedId:"participate/wallet/archethic-wallet",id:"participate/wallet/archethic-wallet",title:"Archethic Wallet",description:"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.",source:"@site/docs/participate/wallet/README.md",sourceDirName:"participate/wallet",slug:"/participate/wallet/",permalink:"/participate/wallet/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"archethic-wallet",title:"Archethic Wallet"},sidebar:"docs",previous:{title:"Archethic's CLI",permalink:"/participate/cli/"},next:{title:"Communication with DApps",permalink:"/participate/wallet/dapps-communication"}},s={},c=[{value:"Features",id:"features",level:2},{value:"Framework",id:"framework",level:2},{value:"Seed",id:"seed",level:2},{value:"Securing the application",id:"securing-the-application",level:2},{value:"Data store",id:"data-store",level:2},{value:"Interactions with the Archethic blockchain",id:"interactions-with-the-archethic-blockchain",level:2},{value:"Setup",id:"setup",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Instructions",id:"instructions",level:3}],u={toc:c},p="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"No signup or KYC needed, users just control their services and access keychain, protected by different secure access methods like PIN Code, Password, YubiKey like devices and Biometrics.")),(0,n.kt)("h2",{id:"features"},"Features"),(0,n.kt)("p",null,"Archethic Wallet has implemented the following features:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Main features",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Decentralized keychain management"),(0,n.kt)("li",{parentName:"ul"},"Multiple accounts' management"),(0,n.kt)("li",{parentName:"ul"},"Creation of Fungible Tokens"),(0,n.kt)("li",{parentName:"ul"},"Creation of NFTs"),(0,n.kt)("li",{parentName:"ul"},"Support for transactions (Sending and Receiving UCO Token, Fungible Tokens and NFTs)"),(0,n.kt)("li",{parentName:"ul"},"List of recent transactions"),(0,n.kt)("li",{parentName:"ul"},"List of acquired tokens"))),(0,n.kt)("li",{parentName:"ul"},"Security",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Security access with Password, PIN, Yubicloud OTP, Face ID, Touch ID, Uniris Biometrics (2023)"),(0,n.kt)("li",{parentName:"ul"},"Use of 24 Words Mnemonics"))),(0,n.kt)("li",{parentName:"ul"},"Customization",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Support for English and French Language"),(0,n.kt)("li",{parentName:"ul"},"Support for multiple Currencies (view only, not meant as multiple cryptocurrencies wallet)"),(0,n.kt)("li",{parentName:"ul"},"Multi themes (9 themes available)"),(0,n.kt)("li",{parentName:"ul"},"UI customization"))),(0,n.kt)("li",{parentName:"ul"},"Other features",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Local notifications"),(0,n.kt)("li",{parentName:"ul"},"Access to exchanges to buy ERC20 UCO"),(0,n.kt)("li",{parentName:"ul"},"Share address with QR Code or mobile share feature"),(0,n.kt)("li",{parentName:"ul"},"Address book"),(0,n.kt)("li",{parentName:"ul"},"UCO Price chart"),(0,n.kt)("li",{parentName:"ul"},"Access latest Archethic blog articles")))),(0,n.kt)("h2",{id:"framework"},"Framework"),(0,n.kt)("p",null,"Archethic developed the wallet using Flutter based on Dart language.\nFlutter is an open-source mobile application development framework from Google. The main reason for its popularity is that it supports the creation of cross-platform applications. Flutter is also used to create interactive apps that run on web pages or on the desktop."),(0,n.kt)("p",null,"Here are some of Flutter's features*"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Single code base for Android, iOS, Windows, Linux, macOS, Web, Extension"),": This approach simplifies and reduces the development time, cost, and maintenance is also an easy task. The Flutter-based user interface can be installed virtually on any platform. It has its own rendering engine that allows developers to keep the UI as it is while moving to another platform. As a result, application users can enjoy an excellent native-like experience on various platforms."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Open-source and made by Google"),": Flutter is a popular choice among developers because of the huge community support. Google designed the Flutter framework with all the security issues of modern applications in mind. One can find reliable and well-tested plugins in Flutter to mitigate security risks such as user authentication flaws, malicious code injections and data leaks."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Dart Programming"),": Flutter uses an easy to learn and implement programming language called Dart, which is Google's general purpose programming language."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Performance"),": As a cross-platform framework, Flutter offers unmatched performance compared to its competitors. Flutter compiles designs to native code. Unlike React Native, Flutter renders widgets directly from the native library rather than downloading libraries and components to the device before rendering.")),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Source: ",(0,n.kt)("a",{parentName:"em",href:"https://mobiskill.fr/blog/conseils-emploi-tech/pourquoi-utiliser-flutter-en-2022/"},"https://mobiskill.fr/blog/conseils-emploi-tech/pourquoi-utiliser-flutter-en-2022/"))),(0,n.kt)("h2",{id:"seed"},"Seed"),(0,n.kt)("p",null,"When the wallet is created, a seed is randomly created from a cryptographically secure random number generator provided by Dart."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-dart"}," static String generateSeed() {\n String result = '';\n const String chars = 'abcdef0123456789';\n final Random rng = Random.secure();\n for (int i = 0; i < 64; i++) {\n result += chars[rng.nextInt(chars.length)];\n }\n return result.toUpperCase();\n }\n")),(0,n.kt)("p",null,"In order to make the seed more accessible, BIP39 is used and aims to provide a method of simplifying the reading of the seed using a series of mnemonic words. BIP39 takes random words (usually from the English language, although they can be from another language) and creates a long phrase with them, usually 12 to 24 words. In the case of the Archethic wallet, we use 24 words because the higher the number of words, the greater the entropy and security attributable to the resulting sentence. These words are chosen from a dictionary of 2048 words. The flutter library bip39_mnemonic is thus used with English and French dictionaries."),(0,n.kt)("p",null,"In the case of wallet restoration, the library bip39_mnemonic allows to find the seed from the seed phrase."),(0,n.kt)("h2",{id:"securing-the-application"},"Securing the application"),(0,n.kt)("p",null,"Access to the application and interactions with the blockchain are secured so that certain actions are not done beyond the user's control.\nFollowing are the ways to access:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"by ",(0,n.kt)("strong",{parentName:"li"},"PIN code"),", comprising of 6 digits, with the possibility to mix the numbers of the keyboard to reduce the risks of access to your code by observation,"),(0,n.kt)("li",{parentName:"ul"},"by ",(0,n.kt)("strong",{parentName:"li"},"password"),","),(0,n.kt)("li",{parentName:"ul"},"by using a ",(0,n.kt)("strong",{parentName:"li"},"YubiKey"),", it is an electronic authentication device to secure your access. Whether you are using NFC with your mobile or USB on your desktop, you can identify yourself with this key,"),(0,n.kt)("li",{parentName:"ul"},"by the ",(0,n.kt)("strong",{parentName:"li"},"touch ID or face ID system"),", depending on your device capabilities.")),(0,n.kt)("p",null,"In the case of ",(0,n.kt)("strong",{parentName:"p"},"PIN")," and ",(0,n.kt)("strong",{parentName:"p"},"password"),', authentication information is stored locally (see "What data is stored in my device?").\nIn the case of ',(0,n.kt)("strong",{parentName:"p"},"touch ID or Face ID"),", the ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/local_auth"},"Flutter Local Auth library")," provides the means to authenticate on devices supporting fingerprint or facial recognition authentication.\nFinally, for ",(0,n.kt)("strong",{parentName:"p"},"OTP via Yubicloud"),": Yubico OTP is a simple yet strong authentication mechanism that is supported by all ",(0,n.kt)("strong",{parentName:"p"},"YubiKeys")," out of the box. Yubico OTP can be used as the second factor in a 2-factor authentication scheme or on its own, providing 1-factor authentication. ",(0,n.kt)("a",{parentName:"p",href:"https://www.yubico.com/products/yubicloud/"},"YubiCloud")," is the name of Yubico\u2019s web service for verifying OTPs. Before using YubiCloud, you need to get an API key from ",(0,n.kt)("a",{parentName:"p",href:"https://upgrade.yubico.com/getapikey/"},"here")," -\u2009it is quick, free and helps us in preventing misuse of YubiCloud. "),(0,n.kt)("h2",{id:"data-store"},"Data store"),(0,n.kt)("p",null,"Archethic Wallet stores a set of information so that the application is functional in both online and offline mode."),(0,n.kt)("p",null,"The first group of information represents the globally available user preferences:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"First Launch"),": Allows to know if this is the first launch of the application in order to clear the keystore for iOS. Indeed, iOS key store is persistent, so if this is first launch then we will clear the keystore."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Authentification Method"),": Allows to know which authentication mode is used (PIN, password, YubiKey, biometrics)."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Currency"),": Allows you to know what currency is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Language"),": Allows you to know which language is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Primary Setting"),": Allows to know if the currency displayed in priority is Fiat or Crypto."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Network"),": Allows to know if the wallet is connected to mainnet, testnet or to a local node whose endpoint is recorded in the following information."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Network Endpoint"),": Allows to know the address of the local node."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Theme"),": Allows to know which theme is used in the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Lock"),": Allows to know if it is necessary to authenticate at the launching of the application."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Lock Timeout"),": Allows to know after how long the application requires authentication at its launch if the user has left the application open to browse for another one for example."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Auto Lock Date"),": Contains the timestamp of the last autolock."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Pin Pad Shuffle"),": Allows you to determine whether the PIN code keyboard should be shuffled when entering."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Balances"),": Allows you to determine if the financial information should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Blog"),": Allows you to know which blog articles should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Show Price Chart"),": Allows you to determine whether the graph and indicators of the UCO price chart should be displayed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Price Chart Scale"),": Current scale of the price chart."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active Vibrations"),": Allows to know if at each action, a small vibration is emitted on the mobiles."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active Notifications"),": Allows to know if the notifications of reception of UCO are active or not."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Active RPC Server"),": Allows DApps connect to the wallet to get informations or send/sign transactions."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Language Seed"),": Allows to know if the seed phrase is composed of French or English words."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Current Version"),": Current version of the wallet app installed."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Main Screen Current Page"),": Current page selected on the main screen.")),(0,n.kt)("p",null,"The second group of information represents the sensitive elements related to security:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Seed"),": Allows to store the wallet seed needed to perform transactions on the Archethic blockchain."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"PIN"),": Allows to store the PIN code in case this authentication method has been chosen."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Password"),": Allows to keep the password in case this authentication method has been chosen."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Yubicloud ID and API Key"),": Allows to keep the authentication information for the management of the OTP with the YubiKey in case this authentication method has been chosen.\nThis information is stored securely."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Keychain secured informations"),": Keychain's informations like keychain's seed, keychain's version and the associated list of services."),(0,n.kt)("li",{parentName:"ul"},"And finally, ",(0,n.kt)("strong",{parentName:"li"},"a secure 256-bit (32 bytes) encryption key")," to secure data on the disk.")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Remember that Archethic will never pass on your data to a third party or use your data in any other way than that offered by the application")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"In the case of user preference data"),", we made the choice to store it in a local database ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/hive"},"Hive")," rather than the Flutter object ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/shared_preferences"},"SharedPreferences")," for performance reasons. All the information is available in this ",(0,n.kt)("a",{parentName:"p",href:"https://medium.com/flutter-community/using-hive-instead-of-sharedpreferences-for-storing-preferences-2d98c9db930f"},"medium article"),".\nThese data are stored in clear text because they are not sensitive."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"On the other hand, the information related to security management must be protected.")," Here again, Hive is used but the stored values are encrypted. Hive provides a helper function to generate a secure encryption key using the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Fortuna_%28PRNG%29"},"Fortuna")," random number generator.\nThe key is stored base64 encoded in a secure space via the ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/packages/flutter_secure_storage"},"FlutterSecureStorage library"),"."),(0,n.kt)("h2",{id:"interactions-with-the-archethic-blockchain"},"Interactions with the Archethic blockchain"),(0,n.kt)("p",null,"Based on the Archethic JS SDK, ",(0,n.kt)("a",{parentName:"p",href:"/build/sdk/dart"},(0,n.kt)("strong",{parentName:"a"},"a SDK has been developed in dart"))," and is maintained by the Archethic teams in order to offer internal or community-developed Flutter DApps to interact with the Archethic Blockchain."),(0,n.kt)("p",null,"This open-source SDK ",(0,n.kt)("strong",{parentName:"p"},'"archethic_lib_dart"'),", available on ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libdart"},"GitHub"),", can be added as dependencies in Dart or Flutter projects via the Flutter libraries and packages sharing site ",(0,n.kt)("a",{parentName:"p",href:"https://pub.dev/"},"Pub.dev"),"."),(0,n.kt)("h2",{id:"setup"},"Setup"),(0,n.kt)("h3",{id:"pre-requisites"},"Pre-requisites"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Flutter 3.10+"),(0,n.kt)("li",{parentName:"ul"},"Dart 3.0+")),(0,n.kt)("h3",{id:"instructions"},"Instructions"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Download the ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-wallet"},"repo")," into a folder"),(0,n.kt)("li",{parentName:"ul"},"Goto the folder and from terminal run ",(0,n.kt)("inlineCode",{parentName:"li"},"flutter pub get")," to get the packages"),(0,n.kt)("li",{parentName:"ul"},"Once packages are installed ",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"You can build and run the program for emulator from VSCode Flutter SDK Tools"),(0,n.kt)("li",{parentName:"ul"},"You can build for android emulator if already installed."))),(0,n.kt)("li",{parentName:"ul"},"Once the packages and installed and application is built"),(0,n.kt)("li",{parentName:"ul"},"Run the program with ",(0,n.kt)("inlineCode",{parentName:"li"},"flutter run"))))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/7764509b.35b6ee22.js b/assets/js/7764509b.044ee5c3.js similarity index 99% rename from assets/js/7764509b.35b6ee22.js rename to assets/js/7764509b.044ee5c3.js index 1e7b8fb9c..46ddcb18b 100644 --- a/assets/js/7764509b.35b6ee22.js +++ b/assets/js/7764509b.044ee5c3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1996],{3905:(e,a,t)=>{t.d(a,{Zo:()=>m,kt:()=>y});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var a=1;a=0||(r[t]=e[t]);return r}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=n.createContext({}),s=function(e){var a=n.useContext(c),t=a;return e&&(t="function"==typeof e?e(a):o(o({},a),e)),t},m=function(e){var a=s(e.components);return n.createElement(c.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},p=n.forwardRef((function(e,a){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),p=r,y=d["".concat(c,".").concat(p)]||d[p]||u[p]||i;return t?n.createElement(y,o(o({ref:a},m),{},{components:t})):n.createElement(y,o({ref:a},m))}));function y(e,a){var t=arguments,r=a&&a.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=p;var l={};for(var c in a)hasOwnProperty.call(a,c)&&(l[c]=a[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{t.r(a),t.d(a,{Badge:()=>p,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>m});var n=t(7462),r=t(7294),i=t(3905);t(8209);const o={id:"beacon-chain-summary",title:"BeaconChainSummary",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/objects/beacon-chain-summary",id:"build/api/schema/objects/beacon-chain-summary",title:"BeaconChainSummary",description:"[Beacon Chain Summary] represents the beacon chain aggregate for a certain date",source:"@site/docs/build/api/schema/objects/beacon-chain-summary.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/beacon-chain-summary",permalink:"/build/api/schema/objects/beacon-chain-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"beacon-chain-summary",title:"BeaconChainSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Balance",permalink:"/build/api/schema/objects/balance"},next:{title:"CrossValidationStamp",permalink:"/build/api/schema/objects/cross-validation-stamp"}},s={},m=[{value:"Fields",id:"fields",level:3},{value:'BeaconChainSummary.availabilityAddingTimeInt ',id:"code-style-fontweight-normal-beaconchainsummarybavailabilityaddingtimebcodeint-",level:4},{value:'BeaconChainSummary.p2pAvailabilitiesP2pAvailabilities ',id:"code-style-fontweight-normal-beaconchainsummarybp2pavailabilitiesbcodep2pavailabilities-",level:4},{value:'BeaconChainSummary.summaryTimeTimestamp ',id:"code-style-fontweight-normal-beaconchainsummarybsummarytimebcodetimestamp-",level:4},{value:'BeaconChainSummary.transactionSummaries[TransactionSummary] ',id:"code-style-fontweight-normal-beaconchainsummarybtransactionsummariesbcodetransactionsummary--",level:4},{value:'BeaconChainSummary.transactionSummaries.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesbpagingoffsetbcodenonneginteger-",level:5},{value:'BeaconChainSummary.versionInt ',id:"code-style-fontweight-normal-beaconchainsummarybversionbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],d=()=>(0,i.kt)(r.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(r.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),p=e=>(0,i.kt)(r.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:d,SpecifiedBy:u,Badge:p},b="wrapper";function h(e){let{components:a,...t}=e;return(0,i.kt)(b,(0,n.Z)({},y,t,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"[Beacon Chain Summary]"," represents the beacon chain aggregate for a certain date"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"type BeaconChainSummary {\n availabilityAddingTime: Int\n p2pAvailabilities: P2pAvailabilities\n summaryTime: Timestamp\n transactionSummaries(\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionSummary]\n version: Int\n}\n")),(0,i.kt)("h3",{id:"fields"},"Fields"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybavailabilityaddingtimebcodeint-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"availabilityAddingTime"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,i.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybp2pavailabilitiesbcodep2pavailabilities-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"p2pAvailabilities"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/p2-p-availabilities"},(0,i.kt)("inlineCode",{parentName:"a"},"P2pAvailabilities"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybsummarytimebcodetimestamp-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"summaryTime"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,i.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybtransactionsummariesbcodetransactionsummary--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"transactionSummaries"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"[TransactionSummary]"))," ",(0,i.kt)(p,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,i.kt)(p,{class:"secondary",text:"object",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("h5",{parentName:"blockquote",id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesblimitbcodeposinteger-"},(0,i.kt)("a",{parentName:"h5",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.transactionSummaries.",(0,i.kt)("b",null,"limit"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/pos-integer"},(0,i.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"}))),(0,i.kt)("h5",{id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesbpagingoffsetbcodenonneginteger-"},(0,i.kt)("a",{parentName:"h5",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.transactionSummaries.",(0,i.kt)("b",null,"pagingOffset"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/non-neg-integer"},(0,i.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybversionbcodeint-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"version"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,i.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h3",{id:"returned-by"},"Returned by"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"beaconChainSummary"))," ",(0,i.kt)(p,{class:"secondary",text:"query",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,a,t)=>{t(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1996],{3905:(e,a,t)=>{t.d(a,{Zo:()=>m,kt:()=>y});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var a=1;a=0||(r[t]=e[t]);return r}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=n.createContext({}),s=function(e){var a=n.useContext(c),t=a;return e&&(t="function"==typeof e?e(a):o(o({},a),e)),t},m=function(e){var a=s(e.components);return n.createElement(c.Provider,{value:a},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},p=n.forwardRef((function(e,a){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),p=r,y=d["".concat(c,".").concat(p)]||d[p]||u[p]||i;return t?n.createElement(y,o(o({ref:a},m),{},{components:t})):n.createElement(y,o({ref:a},m))}));function y(e,a){var t=arguments,r=a&&a.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=p;var l={};for(var c in a)hasOwnProperty.call(a,c)&&(l[c]=a[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var s=2;s{t.r(a),t.d(a,{Badge:()=>p,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>m});var n=t(7462),r=t(7294),i=t(3905);t(8209);const o={id:"beacon-chain-summary",title:"BeaconChainSummary",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/objects/beacon-chain-summary",id:"build/api/schema/objects/beacon-chain-summary",title:"BeaconChainSummary",description:"[Beacon Chain Summary] represents the beacon chain aggregate for a certain date",source:"@site/docs/build/api/schema/objects/beacon-chain-summary.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/beacon-chain-summary",permalink:"/build/api/schema/objects/beacon-chain-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"beacon-chain-summary",title:"BeaconChainSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Balance",permalink:"/build/api/schema/objects/balance"},next:{title:"CrossValidationStamp",permalink:"/build/api/schema/objects/cross-validation-stamp"}},s={},m=[{value:"Fields",id:"fields",level:3},{value:'BeaconChainSummary.availabilityAddingTimeInt ',id:"code-style-fontweight-normal-beaconchainsummarybavailabilityaddingtimebcodeint-",level:4},{value:'BeaconChainSummary.p2pAvailabilitiesP2pAvailabilities ',id:"code-style-fontweight-normal-beaconchainsummarybp2pavailabilitiesbcodep2pavailabilities-",level:4},{value:'BeaconChainSummary.summaryTimeTimestamp ',id:"code-style-fontweight-normal-beaconchainsummarybsummarytimebcodetimestamp-",level:4},{value:'BeaconChainSummary.transactionSummaries[TransactionSummary] ',id:"code-style-fontweight-normal-beaconchainsummarybtransactionsummariesbcodetransactionsummary--",level:4},{value:'BeaconChainSummary.transactionSummaries.pagingOffsetNonNegInteger ',id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesbpagingoffsetbcodenonneginteger-",level:5},{value:'BeaconChainSummary.versionInt ',id:"code-style-fontweight-normal-beaconchainsummarybversionbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],d=()=>(0,i.kt)(r.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(r.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),p=e=>(0,i.kt)(r.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:d,SpecifiedBy:u,Badge:p},b="wrapper";function h(e){let{components:a,...t}=e;return(0,i.kt)(b,(0,n.Z)({},y,t,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"[Beacon Chain Summary]"," represents the beacon chain aggregate for a certain date"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"type BeaconChainSummary {\n availabilityAddingTime: Int\n p2pAvailabilities: P2pAvailabilities\n summaryTime: Timestamp\n transactionSummaries(\n limit: PosInteger\n pagingOffset: NonNegInteger\n): [TransactionSummary]\n version: Int\n}\n")),(0,i.kt)("h3",{id:"fields"},"Fields"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybavailabilityaddingtimebcodeint-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"availabilityAddingTime"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,i.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybp2pavailabilitiesbcodep2pavailabilities-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"p2pAvailabilities"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/p2-p-availabilities"},(0,i.kt)("inlineCode",{parentName:"a"},"P2pAvailabilities"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybsummarytimebcodetimestamp-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"summaryTime"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,i.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybtransactionsummariesbcodetransactionsummary--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"transactionSummaries"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"[TransactionSummary]"))," ",(0,i.kt)(p,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,i.kt)(p,{class:"secondary",text:"object",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("h5",{parentName:"blockquote",id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesblimitbcodeposinteger-"},(0,i.kt)("a",{parentName:"h5",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.transactionSummaries.",(0,i.kt)("b",null,"limit"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/pos-integer"},(0,i.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"}))),(0,i.kt)("h5",{id:"code-style-fontweight-normal-beaconchainsummarytransactionsummariesbpagingoffsetbcodenonneginteger-"},(0,i.kt)("a",{parentName:"h5",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.transactionSummaries.",(0,i.kt)("b",null,"pagingOffset"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h5",href:"/build/api/schema/scalars/non-neg-integer"},(0,i.kt)("inlineCode",{parentName:"a"},"NonNegInteger"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h4",{id:"code-style-fontweight-normal-beaconchainsummarybversionbcodeint-"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"BeaconChainSummary.",(0,i.kt)("b",null,"version"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,i.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,i.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null),(0,i.kt)("h3",{id:"returned-by"},"Returned by"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"beaconChainSummary"))," ",(0,i.kt)(p,{class:"secondary",text:"query",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,a,t)=>{t(7294)}}]); \ No newline at end of file diff --git a/assets/js/777b0dfa.8ce73a0d.js b/assets/js/777b0dfa.54930575.js similarity index 54% rename from assets/js/777b0dfa.8ce73a0d.js rename to assets/js/777b0dfa.54930575.js index 29e0eab50..a44982a07 100644 --- a/assets/js/777b0dfa.8ce73a0d.js +++ b/assets/js/777b0dfa.54930575.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7849],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,c=d(e,["components","mdxType","originalType","parentName"]),p=s(n),y=i,h=p["".concat(l,".").concat(y)]||p[y]||u[y]||a;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=y;var d={};for(var l in t)hasOwnProperty.call(t,l)&&(d[l]=t[l]);d.originalType=e,d[p]="string"==typeof e?e:i,o[1]=d;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>s});var r=n(7462),i=(n(7294),n(3905));n(8209);const a={id:"decentralized-id",title:"Decentralized Identity"},o=void 0,d={unversionedId:"learn/decentralized-id/decentralized-id",id:"learn/decentralized-id/decentralized-id",title:"Decentralized Identity",description:"Identity",source:"@site/docs/learn/decentralized-id/README.md",sourceDirName:"learn/decentralized-id",slug:"/learn/decentralized-id/",permalink:"/learn/decentralized-id/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"decentralized-id",title:"Decentralized Identity"},sidebar:"docs",previous:{title:"Harware Root of Trust",permalink:"/learn/cryptography/hardware-root-of-trust"},next:{title:"Keychain",permalink:"/learn/decentralized-id/keychain"}},l={},s=[{value:"Identity",id:"identity",level:2},{value:"Password-less",id:"password-less",level:2}],c={toc:s},p="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"identity"},"Identity"),(0,i.kt)("p",null,"Archethic was designed mainly to resolve one big issue that we are facing right now in the technology: provide an secure and easy way to identify ourselves."),(0,i.kt)("p",null,"Decentralized identity avoids the need of entrusting one's identity to a third party, who might find itself in a conflict of interest and exploit our identity without our knowledge.\nThis person retains sole control of his/her identity, which is stored on a multitude of nodes ensuring its durability and integrity."),(0,i.kt)("p",null,"Hence Archethic's decentralized identity is brought by the Archethic transaction chain which enables authorization, end to end encryption and upgradability in the decentralized network."),(0,i.kt)("p",null,"The identity is or will be compatible and interoperable with others standard in the industry such as W3C DID, FIDO2, WebAuthn, etc."),(0,i.kt)("h2",{id:"password-less"},"Password-less"),(0,i.kt)("p",null,"While digital identity is being standardized, we also designed a new way to connect and access this identy: password-less authentication."),(0,i.kt)("p",null,"Embedded in the blockchain, on-chain wallet access allows anyone to identify themselves using several methods: biometric, hardware (usb, ledger), or event password. (We don't want to prevent passphrase to being use, just keep it as the lowest secure authentication method)."),(0,i.kt)("p",null,"For this reason we have created a ",(0,i.kt)("a",{parentName:"p",href:"/learn/decentralized-id/keychain"},"Keychain"),", a new way to access our private keys for several services easily."),(0,i.kt)("p",null,"The idea of an on-chain wallet, end to end encrypted wallet, makes the password-less possible in a near future."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7849],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,c=d(e,["components","mdxType","originalType","parentName"]),p=s(n),y=i,h=p["".concat(l,".").concat(y)]||p[y]||u[y]||a;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=y;var d={};for(var l in t)hasOwnProperty.call(t,l)&&(d[l]=t[l]);d.originalType=e,d[p]="string"==typeof e?e:i,o[1]=d;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>s});var r=n(7462),i=(n(7294),n(3905));n(8209);const a={id:"decentralized-id",title:"Decentralized Identity"},o=void 0,d={unversionedId:"learn/decentralized-id/decentralized-id",id:"learn/decentralized-id/decentralized-id",title:"Decentralized Identity",description:"Identity",source:"@site/docs/learn/decentralized-id/README.md",sourceDirName:"learn/decentralized-id",slug:"/learn/decentralized-id/",permalink:"/learn/decentralized-id/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"decentralized-id",title:"Decentralized Identity"},sidebar:"docs",previous:{title:"Hardware Root of Trust",permalink:"/learn/cryptography/hardware-root-of-trust"},next:{title:"Keychain",permalink:"/learn/decentralized-id/keychain"}},l={},s=[{value:"Identity",id:"identity",level:2},{value:"Password-less",id:"password-less",level:2}],c={toc:s},p="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"identity"},"Identity"),(0,i.kt)("p",null,"Archethic was designed mainly to resolve one big issue that we are facing right now in the technology: provide an secure and easy way to identify ourselves."),(0,i.kt)("p",null,"Decentralized identity avoids the need of entrusting one's identity to a third party, who might find itself in a conflict of interest and exploit our identity without our knowledge.\nThis person retains sole control of his/her identity, which is stored on a multitude of nodes ensuring its durability and integrity."),(0,i.kt)("p",null,"Hence Archethic's decentralized identity is brought by the Archethic transaction chain which enables authorization, end to end encryption and upgradability in the decentralized network."),(0,i.kt)("p",null,"The identity is or will be compatible and interoperable with others standard in the industry such as W3C DID, FIDO2, WebAuthn, etc."),(0,i.kt)("h2",{id:"password-less"},"Password-less"),(0,i.kt)("p",null,"While digital identity is being standardized, we also designed a new way to connect and access this identy: password-less authentication."),(0,i.kt)("p",null,"Embedded in the blockchain, on-chain wallet access allows anyone to identify themselves using several methods: biometric, hardware (usb, ledger), or event password. (We don't want to prevent passphrase to being use, just keep it as the lowest secure authentication method)."),(0,i.kt)("p",null,"For this reason we have created a ",(0,i.kt)("a",{parentName:"p",href:"/learn/decentralized-id/keychain"},"Keychain"),", a new way to access our private keys for several services easily."),(0,i.kt)("p",null,"The idea of an on-chain wallet, end to end encrypted wallet, makes the password-less possible in a near future."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/79891879.175ff9e5.js b/assets/js/79891879.ef79de06.js similarity index 98% rename from assets/js/79891879.175ff9e5.js rename to assets/js/79891879.ef79de06.js index c4deb57d6..b2ea226d9 100644 --- a/assets/js/79891879.175ff9e5.js +++ b/assets/js/79891879.ef79de06.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1260],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=c(r),u=n,h=d["".concat(l,".").concat(u)]||d[u]||y[u]||a;return r?o.createElement(h,i(i({ref:t},s),{},{components:r})):o.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=u;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>a,metadata:()=>p,toc:()=>c});var o=r(7462),n=(r(7294),r(3905));r(8209);const a={id:"cryptography",title:"Cryptography"},i=void 0,p={unversionedId:"build/core/cryptography/cryptography",id:"build/core/cryptography/cryptography",title:"Cryptography",description:"Node cryptography is maintains through keystores",source:"@site/docs/build/core/cryptography/README.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/",permalink:"/build/core/cryptography/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"cryptography",title:"Cryptography"},sidebar:"docs",previous:{title:"Bootstrap",permalink:"/build/core/bootstrap"},next:{title:"TPM Implementation",permalink:"/build/core/cryptography/tpm"}},l={},c=[{value:"Node Keystore",id:"node-keystore",level:2},{value:"Node Shared Secrets Keystore",id:"node-shared-secrets-keystore",level:2}],s={toc:c},d="wrapper";function y(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,o.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Node cryptography is maintains through keystores"),(0,n.kt)("h2",{id:"node-keystore"},"Node Keystore"),(0,n.kt)("p",null,"Node cryptography is maintain through keystore which stores the transaction index and reference to the public keys."),(0,n.kt)("p",null,"A behavior is defined to be able swap and test easily implementations."),(0,n.kt)("p",null,"There are several implementations of the node keystore:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Software implementation (used in dev mode and testnet)"),(0,n.kt)("li",{parentName:"ul"},"Hardware implementation",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/build/core/cryptography/tpm"},"TPM")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/build/core/cryptography/yubikey"},"Yubikey"))))),(0,n.kt)("p",null,"More details here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/crypto/keystore/node.ex"},"Node keystore")),(0,n.kt)("h2",{id:"node-shared-secrets-keystore"},"Node Shared Secrets Keystore"),(0,n.kt)("p",null,"Along with node keystore, node shared secrets have their own keystore as it used to store secrets as daily nonce, storage nonce and provide the API to leverage them for transaction validation, election algorithm, etc.."),(0,n.kt)("p",null,"A behavior is also provided to be able to swap implementations. Right now only the software implementation is supported."),(0,n.kt)("p",null,"More details here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/crypto/keystore/shared_secrets.ex"},"Shared Secrets keystore")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1260],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=c(r),u=n,h=d["".concat(l,".").concat(u)]||d[u]||y[u]||a;return r?o.createElement(h,i(i({ref:t},s),{},{components:r})):o.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=u;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:n,i[1]=p;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>a,metadata:()=>p,toc:()=>c});var o=r(7462),n=(r(7294),r(3905));r(8209);const a={id:"cryptography",title:"Cryptography"},i=void 0,p={unversionedId:"build/core/cryptography/cryptography",id:"build/core/cryptography/cryptography",title:"Cryptography",description:"Node cryptography is maintains through keystores",source:"@site/docs/build/core/cryptography/README.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/",permalink:"/build/core/cryptography/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"cryptography",title:"Cryptography"},sidebar:"docs",previous:{title:"Bootstrap",permalink:"/build/core/bootstrap"},next:{title:"TPM Implementation",permalink:"/build/core/cryptography/tpm"}},l={},c=[{value:"Node Keystore",id:"node-keystore",level:2},{value:"Node Shared Secrets Keystore",id:"node-shared-secrets-keystore",level:2}],s={toc:c},d="wrapper";function y(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,o.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Node cryptography is maintains through keystores"),(0,n.kt)("h2",{id:"node-keystore"},"Node Keystore"),(0,n.kt)("p",null,"Node cryptography is maintain through keystore which stores the transaction index and reference to the public keys."),(0,n.kt)("p",null,"A behavior is defined to be able swap and test easily implementations."),(0,n.kt)("p",null,"There are several implementations of the node keystore:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Software implementation (used in dev mode and testnet)"),(0,n.kt)("li",{parentName:"ul"},"Hardware implementation",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/build/core/cryptography/tpm"},"TPM")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/build/core/cryptography/yubikey"},"Yubikey"))))),(0,n.kt)("p",null,"More details here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/crypto/keystore/node.ex"},"Node keystore")),(0,n.kt)("h2",{id:"node-shared-secrets-keystore"},"Node Shared Secrets Keystore"),(0,n.kt)("p",null,"Along with node keystore, node shared secrets have their own keystore as it used to store secrets as daily nonce, storage nonce and provide the API to leverage them for transaction validation, election algorithm, etc.."),(0,n.kt)("p",null,"A behavior is also provided to be able to swap implementations. Right now only the software implementation is supported."),(0,n.kt)("p",null,"More details here: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/crypto/keystore/shared_secrets.ex"},"Shared Secrets keystore")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/7bfcff53.a2526bf8.js b/assets/js/7bfcff53.30945eb1.js similarity index 98% rename from assets/js/7bfcff53.a2526bf8.js rename to assets/js/7bfcff53.30945eb1.js index 7f7e7ab7d..e87ff343a 100644 --- a/assets/js/7bfcff53.a2526bf8.js +++ b/assets/js/7bfcff53.30945eb1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3592],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),u=a,h=d["".concat(l,".").concat(u)]||d[u]||f[u]||i;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"self-repair",title:"Self Repair"},o=void 0,s={unversionedId:"learn/p2p/self-repair",id:"learn/p2p/self-repair",title:"Self Repair",description:"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able",source:"@site/docs/learn/p2p/self-repair.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/self-repair",permalink:"/learn/p2p/self-repair",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"self-repair",title:"Self Repair"},sidebar:"docs",previous:{title:"Bootstrapping",permalink:"/learn/p2p/bootstrapping"},next:{title:"Sharding",permalink:"/learn/sharding/"}},l={},c=[{value:"Identification",id:"identification",level:2},{value:"Synchronization",id:"synchronization",level:2}],p={toc:c},d="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able\nto restore the state of a node."),(0,a.kt)("p",null,"Because Archethic is using a multidimensional sharding, a node needs to execute a self-repair on multiple occasions, to ensure data availability and security:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"When the node bootstraps"),(0,a.kt)("li",{parentName:"ul"},"When a node goes offline"),(0,a.kt)("li",{parentName:"ul"},"When the code and heuristic algorithms changes")),(0,a.kt)("h2",{id:"identification"},"Identification"),(0,a.kt)("p",null,"To be able to determine which transactions are missing, for each cycle of repair, a date of last sync is persisted.\nTherefore, we can decide from this date, the list of missing BeaconChain transactions to sync. (Reminder: BeaconChain summaries transactions across the entire network each day)"),(0,a.kt)("p",null,"The Self-Repair will then request BeaconChain storage pools to get the missing transactions from those missing days"),(0,a.kt)("h2",{id:"synchronization"},"Synchronization"),(0,a.kt)("p",null,"Because we are using rotating election, nodes need to perform the ",(0,a.kt)("inlineCode",{parentName:"p"},"Storage Node Election")," to determine if they need to store this transaction."),(0,a.kt)("p",null,"In that case, we will get the list of existing storage nodes from the transaction's address to sync and request from the closest nodes the transaction to be replicated."),(0,a.kt)("p",null,"Once finalized, a new last date of sync is persisted for the next cycle."))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3592],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),u=a,h=d["".concat(l,".").concat(u)]||d[u]||f[u]||i;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"self-repair",title:"Self Repair"},o=void 0,s={unversionedId:"learn/p2p/self-repair",id:"learn/p2p/self-repair",title:"Self Repair",description:"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able",source:"@site/docs/learn/p2p/self-repair.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/self-repair",permalink:"/learn/p2p/self-repair",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"self-repair",title:"Self Repair"},sidebar:"docs",previous:{title:"Bootstrapping",permalink:"/learn/p2p/bootstrapping"},next:{title:"Sharding",permalink:"/learn/sharding/"}},l={},c=[{value:"Identification",id:"identification",level:2},{value:"Synchronization",id:"synchronization",level:2}],p={toc:c},d="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able\nto restore the state of a node."),(0,a.kt)("p",null,"Because Archethic is using a multidimensional sharding, a node needs to execute a self-repair on multiple occasions, to ensure data availability and security:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"When the node bootstraps"),(0,a.kt)("li",{parentName:"ul"},"When a node goes offline"),(0,a.kt)("li",{parentName:"ul"},"When the code and heuristic algorithms changes")),(0,a.kt)("h2",{id:"identification"},"Identification"),(0,a.kt)("p",null,"To be able to determine which transactions are missing, for each cycle of repair, a date of last sync is persisted.\nTherefore, we can decide from this date, the list of missing BeaconChain transactions to sync. (Reminder: BeaconChain summaries transactions across the entire network each day)"),(0,a.kt)("p",null,"The Self-Repair will then request BeaconChain storage pools to get the missing transactions from those missing days"),(0,a.kt)("h2",{id:"synchronization"},"Synchronization"),(0,a.kt)("p",null,"Because we are using rotating election, nodes need to perform the ",(0,a.kt)("inlineCode",{parentName:"p"},"Storage Node Election")," to determine if they need to store this transaction."),(0,a.kt)("p",null,"In that case, we will get the list of existing storage nodes from the transaction's address to sync and request from the closest nodes the transaction to be replicated."),(0,a.kt)("p",null,"Once finalized, a new last date of sync is persisted for the next cycle."))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/7d24ac82.eae084cf.js b/assets/js/7d24ac82.a277f537.js similarity index 99% rename from assets/js/7d24ac82.eae084cf.js rename to assets/js/7d24ac82.a277f537.js index 7c255490d..9d4f0f016 100644 --- a/assets/js/7d24ac82.eae084cf.js +++ b/assets/js/7d24ac82.a277f537.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6691],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>u});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),d=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},h=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},y=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),p=d(n),y=a,u=p["".concat(l,".").concat(y)]||p[y]||c[y]||r;return n?i.createElement(u,o(o({ref:t},h),{},{components:n})):i.createElement(u,o({ref:t},h))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=y;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>d});var i=n(7462),a=(n(7294),n(3905));n(8209);const r={id:"tpm",title:"TPM Implementation"},o=void 0,s={unversionedId:"build/core/cryptography/tpm",id:"build/core/cryptography/tpm",title:"TPM Implementation",description:"This section explains the HRT TPM Library implementation.",source:"@site/docs/build/core/cryptography/tpm.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/tpm",permalink:"/build/core/cryptography/tpm",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"tpm",title:"TPM Implementation"},sidebar:"docs",previous:{title:"Cryptography",permalink:"/build/core/cryptography/"},next:{title:"Yubikey implementation",permalink:"/build/core/cryptography/yubikey"}},l={},d=[{value:"Global Variables",id:"global-variables",level:2},{value:"void keyToASN():",id:"void-keytoasn",level:2},{value:"void signToASN(BYTE r, INT sizeR, BYTE s, INT sizeS, INT *asnSignSize)",id:"void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize",level:2},{value:"void generatePublicKey(INT keyIndex)",id:"void-generatepublickeyint-keyindex",level:2},{value:"setRootKey()",id:"setrootkey",level:2},{value:"updateHandlesIndexes()",id:"updatehandlesindexes",level:2},{value:"initializeTPM(INT keyIndex):",id:"initializetpmint-keyindex",level:2},{value:"getKeyIndex():",id:"getkeyindex",level:2},{value:"setKeyIndex(INT keyIndex):",id:"setkeyindexint-keyindex",level:2},{value:"getPublicKey(INT keyIndex, INT *publicKeySize):",id:"getpublickeyint-keyindex-int-publickeysize",level:2},{value:"signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):",id:"signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment",level:2},{value:"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):",id:"getecdhpointint-keyindex-byte-euphemeralkey",level:2}],h={toc:d},p="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,i.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This section explains the HRT TPM Library implementation. "),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Reference Files:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/tpm-core/blob/main/uniris-tpm.c"},"uniris-tpm.c"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/tpm-core/blob/main/uniris-tpm.h"},"uniris-tpm.h"))),(0,a.kt)("h2",{id:"global-variables"},"Global Variables"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"The global variables are defined as static to maintain the static lifecycle of the global variable, to prevent data leak and external access of the variables.")),(0,a.kt)("h2",{id:"void-keytoasn"},"void keyToASN():"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This function converts raw elliptical public key generated by TPM to ASN1 DER encoding. ")),(0,a.kt)("p",null,"TPM generated uncompressed public key does not include the curve information required for elliptic key cryptography. keyToASN() encodes the raw public key by appending curve information to it."),(0,a.kt)("p",null,"The ASN DER Public Key is an outer structure which contains 2 inner structures. First inner structure having key type and curve type and second inner structure containning the raw key. The structure containning public key is a header containing ","[0x00 0x04 x coordinate y coordinate]","."),(0,a.kt)("p",null,"The following structure is the format of ASN DER: "),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"ASN DER Public Key = [ ","[ [keytype] [curvetype] ][publickey]"," ]")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Logic Flow:"),"\nThe function adds the headers squentially and then the raw x coordinate of public key and then the y coordinate finally the size is updated."),(0,a.kt)("h2",{id:"void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize"},"void signToASN(BYTE ",(0,a.kt)("em",{parentName:"h2"},"r, INT sizeR, BYTE "),"s, INT sizeS, INT *asnSignSize)"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Converts uncompressed signature values to ASN DER format.")),(0,a.kt)("p",null,"TPM generates the raw signature in form of integer values : R & S. signToASN() converts these raw values into ASN DER format. It first prepends the ASN sequence then checks the MSB of R . If it is 1 then it prepends a byte (0) to R otherwise it move on to increase the index pointed to the asn by the size of R.\nSimilarly, it does the above for S."),(0,a.kt)("h2",{id:"void-generatepublickeyint-keyindex"},"void generatePublicKey(INT keyIndex)"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Generates public key on the endorsement key hierarchy of TPM by taking one byte key index as input.")),(0,a.kt)("p",null,"Firstly, the template of the public key is defined in the inPublicECC which contains the endorsement key template such that certificate on the keys can be generated except modifying the endorsement key object attributes.\nThe inPublicECC structure defines the following sub-structure:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"publicArea : defines the attributes of the public key to be generated. For endorsement key the signing operation is restricted due to privacy concern, defined under this structure. In this case we are generating key in the endordement hierarchy by using the template of the endorsement key.")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The object attributes of generating key are as follows:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'* TPMA_OBJECT_USERWITHAUTH: Signifies the approval of "USER" actions with associated with the public key with a password.\n* TPMA_OBJECT_ADMINWITHPOLICY: Signifies the Approval of "ADMIN" role actions with this object may only be done with a policy session.\n* TPMA_OBJECT_SIGN_ENCRYPT: For a symmetric cipher object, the private portion of the key be used to encrypt. For other objects, the private portion of the key can be used to sign.\n* TPMA_OBJECT_DECRYPT:The private portion of the key can be used to decrypt\n* TPMA_OBJECT_FIXEDTPM: Indicates that the hierarchy of the key genrated cannot be changed.\n* TPMA_OBJECT_FIXEDPARENT:Indicates that the parent of the object cannot be changed.\n* TPMA_OBJECT_SENSITIVEDATAORIGIN: Indicates that the sensitive data is generated by the TPM on the key generation except the authvalue.\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".objectAttributes = (TPMA_OBJECT_USERWITHAUTH |\n TPMA_OBJECT_ADMINWITHPOLICY |\n TPMA_OBJECT_SIGN_ENCRYPT |\n TPMA_OBJECT_DECRYPT |\n TPMA_OBJECT_FIXEDTPM |\n TPMA_OBJECT_FIXEDPARENT |\n TPMA_OBJECT_SENSITIVEDATAORIGIN),\n\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Object attributes for generating under Endorsement key hierarchy:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"TPMA_OBJECT_RESTRICTED: Key usage is restricted to manipulate structures of known format.")))),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Endorsement key has same template except that there is no SIGN_ENCRYPT FLAG in the object attribute.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".objectAttributes = (TPMA_OBJECT_RESTRICTED |\n TPMA_OBJECT_ADMINWITHPOLICY |\n TPMA_OBJECT_DECRYPT |\n TPMA_OBJECT_FIXEDTPM |\n TPMA_OBJECT_FIXEDPARENT |\n TPMA_OBJECT_SENSITIVEDATAORIGIN),\n")),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"authPolicy: this substructure contains a 32 byte buffer with values exactly same as endorsement key attributes. This parameter associates the generated key template to the TPM hence during certificate generation the CA is able to return the certificate for the public key generated under Endorsement key hierarchy.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".authPolicy = {\n .size = 32,\n .buffer = {0x83, 0x71, 0x97, 0x67, 0x44, 0x84, 0xB3, 0xF8, 0x1A, 0x90, 0xCC,\n 0x8D, 0x46, 0xA5, 0xD7, 0x24, 0xFD, 0x52, 0xD7, 0x6E, 0x06, 0x52,\n 0x0B, 0x64, 0xF2, 0xA1, 0xDA, 0x1B, 0x33, 0x14, 0x69, 0xAA}},\n")),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"parameters: In the parameter structure we define the algorithm to be used for private key cryptography and public key cryptography operations.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," .parameters.eccDetail = {.symmetric = {\n .algorithm = TPM2_ALG_AES,\n .keyBits.aes = 128,\n .mode.sym = TPM2_ALG_CFB,\n },\n .scheme = {.scheme = TPM2_ALG_NULL, .details = {.ecdsa = {.hashAlg = TPM2_ALG_SHA256}}},\n .curveID = TPM2_ECC_NIST_P256,\n .kdf = {.scheme = TPM2_ALG_NULL, .details = {}}},\n")),(0,a.kt)("p",null," After definning the template of the public key, a unique data is passed to each key in the unique structure of inPublicEC which is root key hash and key index. For the root key the root key hash is 0 and key index is 0. "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".unique.ecc = {.x = {.size = 32, .buffer = {0}}, .y = {.size = 32, .buffer = {0}}},\n")),(0,a.kt)("p",null,"The primary key is created by using Esys_CreatePrimary() function with the following parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ESYS_TR_RH_ENDORSEMENT: To generate key in the endorsement hierarchy6."),(0,a.kt)("li",{parentName:"ul"},"ESYS_TR_PASSWORD: indicates a password authorization"),(0,a.kt)("li",{parentName:"ul"},"inPublicECC: the public key template defined is passed.")),(0,a.kt)("p",null,"Finally the created key is converted to ASN DER format."),(0,a.kt)("h2",{id:"setrootkey"},"setRootKey()"),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Initializes root key by calling generatePublicKey(0) since 0 is the index of root key.")),(0,a.kt)("p",null,"It also sets the root key hash. It is calculated by concatenating the raw x and y part of the root key and then hashing it."),(0,a.kt)("p",null,"The rootkey hash is stored statically and is important for every new primary key generation since it is passed as parameter to the unique structure of inPublicEC.X part. The key index is passed as parameter to the inpublicEc.y."),(0,a.kt)("h2",{id:"updatehandlesindexes"},"updateHandlesIndexes()"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Increments the current index value by 1 and also updates all the corresponding keys.")),(0,a.kt)("p",null,"Flushes the previous key handles index and points it to the nextKeyHandle then increments NEXT index by 1 to store it in the nextkeyindex. Then generates a new public key by sending nextkeyIndex as the parameter. Finally it assigns the currentKeyhandle to the nextkey handle ."),(0,a.kt)("h2",{id:"initializetpmint-keyindex"},"initializeTPM(INT keyIndex):"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Initializes TPM context by calling Esys_Initialize() function and sets the previous key handle and nextkey handle as null. Then it sets the root key and key index.")),(0,a.kt)("h2",{id:"getkeyindex"},"getKeyIndex():"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},'Returns previous key index because that is the "current" key index used for performing signature.')),(0,a.kt)("h2",{id:"setkeyindexint-keyindex"},"setKeyIndex(INT keyIndex):"),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Sets the previous key index (which is our current key) to the key index passed as parameter.")),(0,a.kt)("p",null,"Also sets keyIndex+1 as the nextKey index."),(0,a.kt)("p",null,"For the key generated at after first initialization it flushes the previous key handle and generates the key with keyIndex then points then populates the previous key handle with the current key handle value.\nNext it generates the public key with keyIndex+1 and stores it in the nextkey handle. "),(0,a.kt)("h2",{id:"getpublickeyint-keyindex-int-publickeysize"},"getPublicKey(INT keyIndex, INT *publicKeySize):"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Returns the public key for the given index.")),(0,a.kt)("p",null,"Takes keyIndex and returns root key if the keyINDEX is 0, next key if the keyindex matches with the nextKey index, previous key if the keyINdex matches with the previous Key index. "),(0,a.kt)("p",null,"If it matches with none of these indexes, then it flushes the root key from the tpm (due to the limit of max 3 transient handles), generates the key for the corresponding keyIndex and copies it into temp key then flushes it from the TPM. Finally, it regenerates the root key and then returns temp key."),(0,a.kt)("h2",{id:"signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment"},"signECDSA(INT keyIndex, BYTE ",(0,a.kt)("em",{parentName:"h2"},"hashToSign, INT "),"eccSignSize, bool increment):"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Signs the given hash using the key referred by the key index.")),(0,a.kt)("p",null,"Converts the byte hash to TPM2B_hash object and then checks the key index . If it is root key or previous key then assigns it to the signing key handle otherwise; "),(0,a.kt)("p",null,"Sets the previous key index to the given keyindex by calling setkeyindex() function and assigns it to the signing handle. It signs the hash using Esys_Sign() function. Finally the signature is converted to ASN DER format which is returned by signECDSA()."),(0,a.kt)("h2",{id:"getecdhpointint-keyindex-byte-euphemeralkey"},"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Performs Elliptic Curve Diffe Hellmen Key Exchange using the private part of the key referred by the Key Index and public euphemeral key. Returns the derived shared secret uncompressed point.")),(0,a.kt)("p",null,"Takes the key index and checks whether it's previous key, next key or root key. If it's one of these then it assigns it to the ECDH key handle else it removes the root key and generates a new key for the given key index and use it in the ECDH handle. "),(0,a.kt)("p",null,"Next, it re-structures the euphemeral key with the format 04 x y and generates an ECDH point using the Esys_ECDH_ZGen() function and stores it 04 x y format in zPoint which is then returned by the function."))}c.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6691],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>u});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),d=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},h=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},y=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),p=d(n),y=a,u=p["".concat(l,".").concat(y)]||p[y]||c[y]||r;return n?i.createElement(u,o(o({ref:t},h),{},{components:n})):i.createElement(u,o({ref:t},h))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=y;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>d});var i=n(7462),a=(n(7294),n(3905));n(8209);const r={id:"tpm",title:"TPM Implementation"},o=void 0,s={unversionedId:"build/core/cryptography/tpm",id:"build/core/cryptography/tpm",title:"TPM Implementation",description:"This section explains the HRT TPM Library implementation.",source:"@site/docs/build/core/cryptography/tpm.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/tpm",permalink:"/build/core/cryptography/tpm",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"tpm",title:"TPM Implementation"},sidebar:"docs",previous:{title:"Cryptography",permalink:"/build/core/cryptography/"},next:{title:"Yubikey implementation",permalink:"/build/core/cryptography/yubikey"}},l={},d=[{value:"Global Variables",id:"global-variables",level:2},{value:"void keyToASN():",id:"void-keytoasn",level:2},{value:"void signToASN(BYTE r, INT sizeR, BYTE s, INT sizeS, INT *asnSignSize)",id:"void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize",level:2},{value:"void generatePublicKey(INT keyIndex)",id:"void-generatepublickeyint-keyindex",level:2},{value:"setRootKey()",id:"setrootkey",level:2},{value:"updateHandlesIndexes()",id:"updatehandlesindexes",level:2},{value:"initializeTPM(INT keyIndex):",id:"initializetpmint-keyindex",level:2},{value:"getKeyIndex():",id:"getkeyindex",level:2},{value:"setKeyIndex(INT keyIndex):",id:"setkeyindexint-keyindex",level:2},{value:"getPublicKey(INT keyIndex, INT *publicKeySize):",id:"getpublickeyint-keyindex-int-publickeysize",level:2},{value:"signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):",id:"signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment",level:2},{value:"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):",id:"getecdhpointint-keyindex-byte-euphemeralkey",level:2}],h={toc:d},p="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,i.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This section explains the HRT TPM Library implementation. "),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Reference Files:\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/tpm-core/blob/main/uniris-tpm.c"},"uniris-tpm.c"),"\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/tpm-core/blob/main/uniris-tpm.h"},"uniris-tpm.h"))),(0,a.kt)("h2",{id:"global-variables"},"Global Variables"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"The global variables are defined as static to maintain the static lifecycle of the global variable, to prevent data leak and external access of the variables.")),(0,a.kt)("h2",{id:"void-keytoasn"},"void keyToASN():"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This function converts raw elliptical public key generated by TPM to ASN1 DER encoding. ")),(0,a.kt)("p",null,"TPM generated uncompressed public key does not include the curve information required for elliptic key cryptography. keyToASN() encodes the raw public key by appending curve information to it."),(0,a.kt)("p",null,"The ASN DER Public Key is an outer structure which contains 2 inner structures. First inner structure having key type and curve type and second inner structure containning the raw key. The structure containning public key is a header containing ","[0x00 0x04 x coordinate y coordinate]","."),(0,a.kt)("p",null,"The following structure is the format of ASN DER: "),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"ASN DER Public Key = [ ","[ [keytype] [curvetype] ][publickey]"," ]")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Logic Flow:"),"\nThe function adds the headers squentially and then the raw x coordinate of public key and then the y coordinate finally the size is updated."),(0,a.kt)("h2",{id:"void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize"},"void signToASN(BYTE ",(0,a.kt)("em",{parentName:"h2"},"r, INT sizeR, BYTE "),"s, INT sizeS, INT *asnSignSize)"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Converts uncompressed signature values to ASN DER format.")),(0,a.kt)("p",null,"TPM generates the raw signature in form of integer values : R & S. signToASN() converts these raw values into ASN DER format. It first prepends the ASN sequence then checks the MSB of R . If it is 1 then it prepends a byte (0) to R otherwise it move on to increase the index pointed to the asn by the size of R.\nSimilarly, it does the above for S."),(0,a.kt)("h2",{id:"void-generatepublickeyint-keyindex"},"void generatePublicKey(INT keyIndex)"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Generates public key on the endorsement key hierarchy of TPM by taking one byte key index as input.")),(0,a.kt)("p",null,"Firstly, the template of the public key is defined in the inPublicECC which contains the endorsement key template such that certificate on the keys can be generated except modifying the endorsement key object attributes.\nThe inPublicECC structure defines the following sub-structure:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"publicArea : defines the attributes of the public key to be generated. For endorsement key the signing operation is restricted due to privacy concern, defined under this structure. In this case we are generating key in the endordement hierarchy by using the template of the endorsement key.")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The object attributes of generating key are as follows:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'* TPMA_OBJECT_USERWITHAUTH: Signifies the approval of "USER" actions with associated with the public key with a password.\n* TPMA_OBJECT_ADMINWITHPOLICY: Signifies the Approval of "ADMIN" role actions with this object may only be done with a policy session.\n* TPMA_OBJECT_SIGN_ENCRYPT: For a symmetric cipher object, the private portion of the key be used to encrypt. For other objects, the private portion of the key can be used to sign.\n* TPMA_OBJECT_DECRYPT:The private portion of the key can be used to decrypt\n* TPMA_OBJECT_FIXEDTPM: Indicates that the hierarchy of the key genrated cannot be changed.\n* TPMA_OBJECT_FIXEDPARENT:Indicates that the parent of the object cannot be changed.\n* TPMA_OBJECT_SENSITIVEDATAORIGIN: Indicates that the sensitive data is generated by the TPM on the key generation except the authvalue.\n')),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".objectAttributes = (TPMA_OBJECT_USERWITHAUTH |\n TPMA_OBJECT_ADMINWITHPOLICY |\n TPMA_OBJECT_SIGN_ENCRYPT |\n TPMA_OBJECT_DECRYPT |\n TPMA_OBJECT_FIXEDTPM |\n TPMA_OBJECT_FIXEDPARENT |\n TPMA_OBJECT_SENSITIVEDATAORIGIN),\n\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Object attributes for generating under Endorsement key hierarchy:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"TPMA_OBJECT_RESTRICTED: Key usage is restricted to manipulate structures of known format.")))),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Endorsement key has same template except that there is no SIGN_ENCRYPT FLAG in the object attribute.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".objectAttributes = (TPMA_OBJECT_RESTRICTED |\n TPMA_OBJECT_ADMINWITHPOLICY |\n TPMA_OBJECT_DECRYPT |\n TPMA_OBJECT_FIXEDTPM |\n TPMA_OBJECT_FIXEDPARENT |\n TPMA_OBJECT_SENSITIVEDATAORIGIN),\n")),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"authPolicy: this substructure contains a 32 byte buffer with values exactly same as endorsement key attributes. This parameter associates the generated key template to the TPM hence during certificate generation the CA is able to return the certificate for the public key generated under Endorsement key hierarchy.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".authPolicy = {\n .size = 32,\n .buffer = {0x83, 0x71, 0x97, 0x67, 0x44, 0x84, 0xB3, 0xF8, 0x1A, 0x90, 0xCC,\n 0x8D, 0x46, 0xA5, 0xD7, 0x24, 0xFD, 0x52, 0xD7, 0x6E, 0x06, 0x52,\n 0x0B, 0x64, 0xF2, 0xA1, 0xDA, 0x1B, 0x33, 0x14, 0x69, 0xAA}},\n")),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"parameters: In the parameter structure we define the algorithm to be used for private key cryptography and public key cryptography operations.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"}," .parameters.eccDetail = {.symmetric = {\n .algorithm = TPM2_ALG_AES,\n .keyBits.aes = 128,\n .mode.sym = TPM2_ALG_CFB,\n },\n .scheme = {.scheme = TPM2_ALG_NULL, .details = {.ecdsa = {.hashAlg = TPM2_ALG_SHA256}}},\n .curveID = TPM2_ECC_NIST_P256,\n .kdf = {.scheme = TPM2_ALG_NULL, .details = {}}},\n")),(0,a.kt)("p",null," After definning the template of the public key, a unique data is passed to each key in the unique structure of inPublicEC which is root key hash and key index. For the root key the root key hash is 0 and key index is 0. "),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},".unique.ecc = {.x = {.size = 32, .buffer = {0}}, .y = {.size = 32, .buffer = {0}}},\n")),(0,a.kt)("p",null,"The primary key is created by using Esys_CreatePrimary() function with the following parameters:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ESYS_TR_RH_ENDORSEMENT: To generate key in the endorsement hierarchy6."),(0,a.kt)("li",{parentName:"ul"},"ESYS_TR_PASSWORD: indicates a password authorization"),(0,a.kt)("li",{parentName:"ul"},"inPublicECC: the public key template defined is passed.")),(0,a.kt)("p",null,"Finally the created key is converted to ASN DER format."),(0,a.kt)("h2",{id:"setrootkey"},"setRootKey()"),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Initializes root key by calling generatePublicKey(0) since 0 is the index of root key.")),(0,a.kt)("p",null,"It also sets the root key hash. It is calculated by concatenating the raw x and y part of the root key and then hashing it."),(0,a.kt)("p",null,"The rootkey hash is stored statically and is important for every new primary key generation since it is passed as parameter to the unique structure of inPublicEC.X part. The key index is passed as parameter to the inpublicEc.y."),(0,a.kt)("h2",{id:"updatehandlesindexes"},"updateHandlesIndexes()"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Increments the current index value by 1 and also updates all the corresponding keys.")),(0,a.kt)("p",null,"Flushes the previous key handles index and points it to the nextKeyHandle then increments NEXT index by 1 to store it in the nextkeyindex. Then generates a new public key by sending nextkeyIndex as the parameter. Finally it assigns the currentKeyhandle to the nextkey handle ."),(0,a.kt)("h2",{id:"initializetpmint-keyindex"},"initializeTPM(INT keyIndex):"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Initializes TPM context by calling Esys_Initialize() function and sets the previous key handle and nextkey handle as null. Then it sets the root key and key index.")),(0,a.kt)("h2",{id:"getkeyindex"},"getKeyIndex():"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},'Returns previous key index because that is the "current" key index used for performing signature.')),(0,a.kt)("h2",{id:"setkeyindexint-keyindex"},"setKeyIndex(INT keyIndex):"),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Sets the previous key index (which is our current key) to the key index passed as parameter.")),(0,a.kt)("p",null,"Also sets keyIndex+1 as the nextKey index."),(0,a.kt)("p",null,"For the key generated at after first initialization it flushes the previous key handle and generates the key with keyIndex then points then populates the previous key handle with the current key handle value.\nNext it generates the public key with keyIndex+1 and stores it in the nextkey handle. "),(0,a.kt)("h2",{id:"getpublickeyint-keyindex-int-publickeysize"},"getPublicKey(INT keyIndex, INT *publicKeySize):"),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Returns the public key for the given index.")),(0,a.kt)("p",null,"Takes keyIndex and returns root key if the keyINDEX is 0, next key if the keyindex matches with the nextKey index, previous key if the keyINdex matches with the previous Key index. "),(0,a.kt)("p",null,"If it matches with none of these indexes, then it flushes the root key from the tpm (due to the limit of max 3 transient handles), generates the key for the corresponding keyIndex and copies it into temp key then flushes it from the TPM. Finally, it regenerates the root key and then returns temp key."),(0,a.kt)("h2",{id:"signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment"},"signECDSA(INT keyIndex, BYTE ",(0,a.kt)("em",{parentName:"h2"},"hashToSign, INT "),"eccSignSize, bool increment):"),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Signs the given hash using the key referred by the key index.")),(0,a.kt)("p",null,"Converts the byte hash to TPM2B_hash object and then checks the key index . If it is root key or previous key then assigns it to the signing key handle otherwise; "),(0,a.kt)("p",null,"Sets the previous key index to the given keyindex by calling setkeyindex() function and assigns it to the signing handle. It signs the hash using Esys_Sign() function. Finally the signature is converted to ASN DER format which is returned by signECDSA()."),(0,a.kt)("h2",{id:"getecdhpointint-keyindex-byte-euphemeralkey"},"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Performs Elliptic Curve Diffe Hellmen Key Exchange using the private part of the key referred by the Key Index and public euphemeral key. Returns the derived shared secret uncompressed point.")),(0,a.kt)("p",null,"Takes the key index and checks whether it's previous key, next key or root key. If it's one of these then it assigns it to the ECDH key handle else it removes the root key and generates a new key for the given key index and use it in the ECDH handle. "),(0,a.kt)("p",null,"Next, it re-structures the euphemeral key with the format 04 x y and generates an ECDH point using the Esys_ECDH_ZGen() function and stores it 04 x y format in zPoint which is then returned by the function."))}c.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/7e96883b.4bb205de.js b/assets/js/7e96883b.b3ff60ee.js similarity index 98% rename from assets/js/7e96883b.4bb205de.js rename to assets/js/7e96883b.b3ff60ee.js index c9d393599..2245ad6cb 100644 --- a/assets/js/7e96883b.4bb205de.js +++ b/assets/js/7e96883b.b3ff60ee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7655],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>b});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(n),u=i,b=d["".concat(l,".").concat(u)]||d[u]||h[u]||r;return n?a.createElement(b,s(s({ref:t},p),{},{components:n})):a.createElement(b,s({ref:t},p))}));function b(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,s=new Array(r);s[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"how-it-works",title:"AEWeb - How it works",sidebar_label:"How it works",sidebar_position:1},s=void 0,o={unversionedId:"participate/aeweb/how-it-works",id:"participate/aeweb/how-it-works",title:"AEWeb - How it works",description:"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain.",source:"@site/docs/participate/aeweb/how-it-works.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/how-it-works",permalink:"/participate/aeweb/how-it-works",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"how-it-works",title:"AEWeb - How it works",sidebar_label:"How it works",sidebar_position:1},sidebar:"docs",previous:{title:"Archethic Web (AEWeb)",permalink:"/participate/aeweb/"},next:{title:"Domain Names",permalink:"/participate/aeweb/dns"}},l={},c=[{value:"Transaction building",id:"transaction-building",level:2},{value:"Content delivery",id:"content-delivery",level:2},{value:"Website updates",id:"website-updates",level:2},{value:"Website unpublication",id:"website-unpublication",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain."),(0,i.kt)("p",null,"We will describe the following process from the building until the delivery to the browser."),(0,i.kt)("h2",{id:"transaction-building"},"Transaction building"),(0,i.kt)("p",null,"On the beginning of any hosting, there is a website composed of:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"HTML pages"),(0,i.kt)("li",{parentName:"ul"},"CSS files"),(0,i.kt)("li",{parentName:"ul"},"Javascript files"),(0,i.kt)("li",{parentName:"ul"},"Images"),(0,i.kt)("li",{parentName:"ul"},"Videos")),(0,i.kt)("p",null,"When the folder of the website is passed to the AEWeb CLI, the files are analyzed and packaged into blob of 3MB (current limitation of transaction's content)."),(0,i.kt)("mermaid",{value:"graph TD\n\n HTML --\x3e AEWeb\n CSS --\x3e AEWeb\n Javascript --\x3e AEWeb\n Images --\x3e AEWeb\n\n AEWeb --\x3e Transaction#1\n AEWeb --\x3e Transaction#2\n AEWeb --\x3e Transaction#3\n"}),(0,i.kt)("p",null,"One of this transaction is called the ",(0,i.kt)("inlineCode",{parentName:"p"},"reference"),". Its goals is to act as a pointer to other transactions. This will help the retrieval of the files and makes upgrades seamless and transparent for end users."),(0,i.kt)("p",null,"The reference transaction's address will become the address of the website managing its lifecycle."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aewebVersion": 1,\n "hashFunction": "sha-1",\n "metaData": {\n "index.html": {\n "size": 68420,\n "hash": "ABC123F...",\n "encoding": "gzip",\n "addresses": ["0FB27DAC...."]\n },\n "scripts/main.js": {\n "size": 255121,\n "hash": "01AB2CD...",\n "encoding": "gzip",\n "addresses": ["0AC1BFA9..."]\n } \n }\n}\n')),(0,i.kt)("p",null,"The other transactions (called ",(0,i.kt)("inlineCode",{parentName:"p"},"data"),") will contain the content of the files encoded in base64"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "index.html": "b298kJKFS98dj7Xdnsq....", \n "scripts/main.js": "aGVsbG8gd29ybGQ=" \n}\n')),(0,i.kt)("p",null,"To leverage the maximum of the transaction size, all the content are grouped into the smallest amount of transaction possible.\nFor example, you could have a website which contains: 5 files:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"HTML page"),(0,i.kt)("li",{parentName:"ul"},"Image"),(0,i.kt)("li",{parentName:"ul"},"CSS")),(0,i.kt)("p",null,"3 transactions could be generated:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Reference:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'{\n "aewebVersion": 1,\n "hashFunction": "sha-1",\n "metaData": {\n "index.html": {\n ...\n "addresses": ["0ac7fj..."]\n },\n "assets/app.css": {\n ...\n "addresses": ["0ac7fj..."]\n },\n "assets/image.jpg": {\n ...\n // image.jpg is too big to fit in a single data transaction\n "addresses": ["0ac7fj...", "1fb2ha..."] \n }\n}\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"HTML + CSS + Image (chunked by 30%)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'// data transaction: "0ac7fj..."\n{\n "index.html": "...",\n "assets/app.css": "..."\n "assets/image.jpg": "..."\n}\n')),(0,i.kt)("ol",{start:3},(0,i.kt)("li",{parentName:"ol"},"Image (remaining chunks)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'// data transaction: "1fb2ha..."\n{\n "assets/image.jpg": "..."\n}\n')),(0,i.kt)("h2",{id:"content-delivery"},"Content delivery"),(0,i.kt)("p",null,"On the other side, the transactions are validated and stored on the Archethic Blockchain.\nAny Archethic node expose an API dedicated for the web hosting by AEWeb."),(0,i.kt)("p",null,"This API takes a reference address as a parameter, and then proceeds to take the path of the file, just like any web server would do."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"https://mainnet.archethic.net/api/web_hosting/0c19fd13......../image.jpg\n")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"aeweb_CDN",src:n(4313).Z+"#gh-light-mode-only",width:"274",height:"215"}),"\n",(0,i.kt)("img",{alt:"aeweb_CDN",src:n(1951).Z+"#gh-dark-mode-only",width:"274",height:"215"})),(0,i.kt)("p",null,"The welcome node will request the reference transaction download to its related shard.\nIt will parse the reference content and detect the transactions to download for the requested file."),(0,i.kt)("p",null,"Once the file downloaded, the content will send back to the client and the browser will display the file."),(0,i.kt)("p",null,"Because websites rendering is composed of multiple HTTP requests for each file, the browser will be able to understand the responses and display the website entirely - while leveraging a single reference on-chain."),(0,i.kt)("admonition",{title:"Good to know",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Once the website retrieved, the data will be cached locally. So, the next time the same person will visit the website, no data will be fetched again."),(0,i.kt)("p",{parentName:"admonition"},"This will be true until the website and the reference chain evolves.")),(0,i.kt)("h2",{id:"website-updates"},"Website updates"),(0,i.kt)("p",null,"The first thing a node does when it receives an AEWeb request is to download the latest ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction from the chain. This behaviour allows a user to update its website and to keep the same URL."),(0,i.kt)("p",null,"This means that updating a website is as simple as sending a new ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction!"),(0,i.kt)("h2",{id:"website-unpublication"},"Website unpublication"),(0,i.kt)("p",null,"Introduced by ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-13.md"},"AEIP-13"),", a website can be unpublished by sending the following ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 13],\n "aewebVersion": 1,\n "publicationStatus": "UNPUBLISHED"\n}\n')),(0,i.kt)("p",null,"As long as this ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction is the latest, the nodes will not serve the website. An HTTP status code 410 is sent."),(0,i.kt)("admonition",{title:"Data is permanent",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"The data from an unpublished website (and all previous version as a matter of fact) always remain in the blockchain. Here, we only disable the endpoint to access it.")))}h.isMDXComponent=!0},1951:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_CDN-dark-a23984e644c6a6122b47d21df57208e0.svg"},4313:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_CDN-a2976501bd49a6a0049eebd89e41f66c.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7655],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>b});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(n),u=i,b=d["".concat(l,".").concat(u)]||d[u]||h[u]||r;return n?a.createElement(b,s(s({ref:t},p),{},{components:n})):a.createElement(b,s({ref:t},p))}));function b(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,s=new Array(r);s[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"how-it-works",title:"AEWeb - How it works",sidebar_label:"How it works",sidebar_position:1},s=void 0,o={unversionedId:"participate/aeweb/how-it-works",id:"participate/aeweb/how-it-works",title:"AEWeb - How it works",description:"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain.",source:"@site/docs/participate/aeweb/how-it-works.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/how-it-works",permalink:"/participate/aeweb/how-it-works",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"how-it-works",title:"AEWeb - How it works",sidebar_label:"How it works",sidebar_position:1},sidebar:"docs",previous:{title:"Archethic Web (AEWeb)",permalink:"/participate/aeweb/"},next:{title:"Domain Names",permalink:"/participate/aeweb/dns"}},l={},c=[{value:"Transaction building",id:"transaction-building",level:2},{value:"Content delivery",id:"content-delivery",level:2},{value:"Website updates",id:"website-updates",level:2},{value:"Website unpublication",id:"website-unpublication",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain."),(0,i.kt)("p",null,"We will describe the following process from the building until the delivery to the browser."),(0,i.kt)("h2",{id:"transaction-building"},"Transaction building"),(0,i.kt)("p",null,"On the beginning of any hosting, there is a website composed of:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"HTML pages"),(0,i.kt)("li",{parentName:"ul"},"CSS files"),(0,i.kt)("li",{parentName:"ul"},"Javascript files"),(0,i.kt)("li",{parentName:"ul"},"Images"),(0,i.kt)("li",{parentName:"ul"},"Videos")),(0,i.kt)("p",null,"When the folder of the website is passed to the AEWeb CLI, the files are analyzed and packaged into blob of 3MB (current limitation of transaction's content)."),(0,i.kt)("mermaid",{value:"graph TD\n\n HTML --\x3e AEWeb\n CSS --\x3e AEWeb\n Javascript --\x3e AEWeb\n Images --\x3e AEWeb\n\n AEWeb --\x3e Transaction#1\n AEWeb --\x3e Transaction#2\n AEWeb --\x3e Transaction#3\n"}),(0,i.kt)("p",null,"One of this transaction is called the ",(0,i.kt)("inlineCode",{parentName:"p"},"reference"),". Its goals is to act as a pointer to other transactions. This will help the retrieval of the files and makes upgrades seamless and transparent for end users."),(0,i.kt)("p",null,"The reference transaction's address will become the address of the website managing its lifecycle."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aewebVersion": 1,\n "hashFunction": "sha-1",\n "metaData": {\n "index.html": {\n "size": 68420,\n "hash": "ABC123F...",\n "encoding": "gzip",\n "addresses": ["0FB27DAC...."]\n },\n "scripts/main.js": {\n "size": 255121,\n "hash": "01AB2CD...",\n "encoding": "gzip",\n "addresses": ["0AC1BFA9..."]\n } \n }\n}\n')),(0,i.kt)("p",null,"The other transactions (called ",(0,i.kt)("inlineCode",{parentName:"p"},"data"),") will contain the content of the files encoded in base64"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "index.html": "b298kJKFS98dj7Xdnsq....", \n "scripts/main.js": "aGVsbG8gd29ybGQ=" \n}\n')),(0,i.kt)("p",null,"To leverage the maximum of the transaction size, all the content are grouped into the smallest amount of transaction possible.\nFor example, you could have a website which contains: 5 files:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"HTML page"),(0,i.kt)("li",{parentName:"ul"},"Image"),(0,i.kt)("li",{parentName:"ul"},"CSS")),(0,i.kt)("p",null,"3 transactions could be generated:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Reference:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'{\n "aewebVersion": 1,\n "hashFunction": "sha-1",\n "metaData": {\n "index.html": {\n ...\n "addresses": ["0ac7fj..."]\n },\n "assets/app.css": {\n ...\n "addresses": ["0ac7fj..."]\n },\n "assets/image.jpg": {\n ...\n // image.jpg is too big to fit in a single data transaction\n "addresses": ["0ac7fj...", "1fb2ha..."] \n }\n}\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"HTML + CSS + Image (chunked by 30%)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'// data transaction: "0ac7fj..."\n{\n "index.html": "...",\n "assets/app.css": "..."\n "assets/image.jpg": "..."\n}\n')),(0,i.kt)("ol",{start:3},(0,i.kt)("li",{parentName:"ol"},"Image (remaining chunks)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-jsonc"},'// data transaction: "1fb2ha..."\n{\n "assets/image.jpg": "..."\n}\n')),(0,i.kt)("h2",{id:"content-delivery"},"Content delivery"),(0,i.kt)("p",null,"On the other side, the transactions are validated and stored on the Archethic Blockchain.\nAny Archethic node expose an API dedicated for the web hosting by AEWeb."),(0,i.kt)("p",null,"This API takes a reference address as a parameter, and then proceeds to take the path of the file, just like any web server would do."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"https://mainnet.archethic.net/api/web_hosting/0c19fd13......../image.jpg\n")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"aeweb_CDN",src:n(4313).Z+"#gh-light-mode-only",width:"274",height:"215"}),"\n",(0,i.kt)("img",{alt:"aeweb_CDN",src:n(1951).Z+"#gh-dark-mode-only",width:"274",height:"215"})),(0,i.kt)("p",null,"The welcome node will request the reference transaction download to its related shard.\nIt will parse the reference content and detect the transactions to download for the requested file."),(0,i.kt)("p",null,"Once the file downloaded, the content will send back to the client and the browser will display the file."),(0,i.kt)("p",null,"Because websites rendering is composed of multiple HTTP requests for each file, the browser will be able to understand the responses and display the website entirely - while leveraging a single reference on-chain."),(0,i.kt)("admonition",{title:"Good to know",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Once the website retrieved, the data will be cached locally. So, the next time the same person will visit the website, no data will be fetched again."),(0,i.kt)("p",{parentName:"admonition"},"This will be true until the website and the reference chain evolves.")),(0,i.kt)("h2",{id:"website-updates"},"Website updates"),(0,i.kt)("p",null,"The first thing a node does when it receives an AEWeb request is to download the latest ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction from the chain. This behaviour allows a user to update its website and to keep the same URL."),(0,i.kt)("p",null,"This means that updating a website is as simple as sending a new ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction!"),(0,i.kt)("h2",{id:"website-unpublication"},"Website unpublication"),(0,i.kt)("p",null,"Introduced by ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-13.md"},"AEIP-13"),", a website can be unpublished by sending the following ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "aeip": [8, 13],\n "aewebVersion": 1,\n "publicationStatus": "UNPUBLISHED"\n}\n')),(0,i.kt)("p",null,"As long as this ",(0,i.kt)("inlineCode",{parentName:"p"},"reference")," transaction is the latest, the nodes will not serve the website. An HTTP status code 410 is sent."),(0,i.kt)("admonition",{title:"Data is permanent",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"The data from an unpublished website (and all previous version as a matter of fact) always remain in the blockchain. Here, we only disable the endpoint to access it.")))}h.isMDXComponent=!0},1951:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_CDN-dark-a23984e644c6a6122b47d21df57208e0.svg"},4313:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_CDN-a2976501bd49a6a0049eebd89e41f66c.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/8153e280.84a1a851.js b/assets/js/8153e280.96c1d634.js similarity index 98% rename from assets/js/8153e280.84a1a851.js rename to assets/js/8153e280.96c1d634.js index 31540023f..0979c74e5 100644 --- a/assets/js/8153e280.84a1a851.js +++ b/assets/js/8153e280.96c1d634.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[711],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),c=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=c(a),m=r,f=u["".concat(i,".").concat(m)]||u[m]||p[m]||s;return a?n.createElement(f,o(o({ref:t},d),{},{components:a})):n.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>c,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=a(7462),r=a(7294),s=a(3905);a(8209);const o={id:"last-transaction",title:"lastTransaction",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/queries/last-transaction",id:"build/api/schema/queries/last-transaction",title:"lastTransaction",description:"Query the network to find the last transaction from an address",source:"@site/docs/build/api/schema/queries/last-transaction.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/last-transaction",permalink:"/build/api/schema/queries/last-transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"last-transaction",title:"lastTransaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"genesisAddress",permalink:"/build/api/schema/queries/genesis-address"},next:{title:"nearestEndpoints",permalink:"/build/api/schema/queries/nearest-endpoints"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'lastTransaction.addressAddress! ',id:"code-style-fontweight-normal-lasttransactionbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...a}=e;return(0,s.kt)(y,(0,n.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Query the network to find the last transaction from an address"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"lastTransaction(\n address: Address!\n): Transaction\n")),(0,s.kt)("h3",{id:"arguments"},"Arguments"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-lasttransactionbaddressbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"lastTransaction.",(0,s.kt)("b",null,"address"))),(0,s.kt)(u,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,s.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"type"},"Type"),(0,s.kt)("h4",{id:"transaction-"},(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[711],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),c=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=c(a),m=r,f=u["".concat(i,".").concat(m)]||u[m]||p[m]||s;return a?n.createElement(f,o(o({ref:t},d),{},{components:a})):n.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>c,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=a(7462),r=a(7294),s=a(3905);a(8209);const o={id:"last-transaction",title:"lastTransaction",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/queries/last-transaction",id:"build/api/schema/queries/last-transaction",title:"lastTransaction",description:"Query the network to find the last transaction from an address",source:"@site/docs/build/api/schema/queries/last-transaction.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/last-transaction",permalink:"/build/api/schema/queries/last-transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"last-transaction",title:"lastTransaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"genesisAddress",permalink:"/build/api/schema/queries/genesis-address"},next:{title:"nearestEndpoints",permalink:"/build/api/schema/queries/nearest-endpoints"}},c={},d=[{value:"Arguments",id:"arguments",level:3},{value:'lastTransaction.addressAddress! ',id:"code-style-fontweight-normal-lasttransactionbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...a}=e;return(0,s.kt)(y,(0,n.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"Query the network to find the last transaction from an address"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"lastTransaction(\n address: Address!\n): Transaction\n")),(0,s.kt)("h3",{id:"arguments"},"Arguments"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-lasttransactionbaddressbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"lastTransaction.",(0,s.kt)("b",null,"address"))),(0,s.kt)(u,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,s.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,s.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"type"},"Type"),(0,s.kt)("h4",{id:"transaction-"},(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/851bf865.e5db55b1.js b/assets/js/851bf865.1beb6a1d.js similarity index 96% rename from assets/js/851bf865.e5db55b1.js rename to assets/js/851bf865.1beb6a1d.js index 168901425..f4f968b5e 100644 --- a/assets/js/851bf865.e5db55b1.js +++ b/assets/js/851bf865.1beb6a1d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[827],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=s(n),d=a,f=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"schema",slug:"/schema",title:"Schema Documentation",sidebar_position:1,hide_table_of_contents:!0,pagination_next:null,pagination_prev:null,sidebar_class_name:"navbar__toggle"},i=void 0,c={unversionedId:"build/api/schema/schema",id:"build/api/schema/schema",title:"Schema Documentation",description:"This documentation has been automatically generated from the GraphQL schema.",source:"@site/docs/build/api/schema/generated.md",sourceDirName:"build/api/schema",slug:"/schema",permalink:"/schema",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"schema",slug:"/schema",title:"Schema Documentation",sidebar_position:1,hide_table_of_contents:!0,pagination_next:null,pagination_prev:null,sidebar_class_name:"navbar__toggle"},sidebar:"docs"},l={},s=[],u={toc:s},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This documentation has been automatically generated from the GraphQL schema."),(0,a.kt)("p",null,"Use the docs in the sidebar to find out how to use the schema:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Allowed operations"),": queries and mutations."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Schema-defined types"),": scalars, objects, enums, interfaces, unions, and input objects.")),(0,a.kt)("small",null,(0,a.kt)("i",null,"Generated on 09/06/2023 13:56:15.")))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[827],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=s(n),d=a,f=p["".concat(l,".").concat(d)]||p[d]||m[d]||o;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[p]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"schema",slug:"/schema",title:"Schema Documentation",sidebar_position:1,hide_table_of_contents:!0,pagination_next:null,pagination_prev:null,sidebar_class_name:"navbar__toggle"},i=void 0,c={unversionedId:"build/api/schema/schema",id:"build/api/schema/schema",title:"Schema Documentation",description:"This documentation has been automatically generated from the GraphQL schema.",source:"@site/docs/build/api/schema/generated.md",sourceDirName:"build/api/schema",slug:"/schema",permalink:"/schema",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"schema",slug:"/schema",title:"Schema Documentation",sidebar_position:1,hide_table_of_contents:!0,pagination_next:null,pagination_prev:null,sidebar_class_name:"navbar__toggle"},sidebar:"docs"},l={},s=[],u={toc:s},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This documentation has been automatically generated from the GraphQL schema."),(0,a.kt)("p",null,"Use the docs in the sidebar to find out how to use the schema:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Allowed operations"),": queries and mutations."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Schema-defined types"),": scalars, objects, enums, interfaces, unions, and input objects.")),(0,a.kt)("small",null,(0,a.kt)("i",null,"Generated on 09/06/2023 13:56:15.")))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/87dfbf5d.a9191686.js b/assets/js/87dfbf5d.8e42eea6.js similarity index 97% rename from assets/js/87dfbf5d.a9191686.js rename to assets/js/87dfbf5d.8e42eea6.js index ba8b80081..c9a1b9caa 100644 --- a/assets/js/87dfbf5d.a9191686.js +++ b/assets/js/87dfbf5d.8e42eea6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1171],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(a),m=n,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||i;return a?r.createElement(h,s(s({ref:t},p),{},{components:a})):r.createElement(h,s({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:n,s[1]=o;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>o,default:()=>y,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const s={id:"hash",title:"Hash",hide_table_of_contents:!1},o=void 0,l={unversionedId:"build/api/schema/scalars/hash",id:"build/api/schema/scalars/hash",title:"Hash",description:"The [Hash] scalar type represents a cryptographic hash used in",source:"@site/docs/build/api/schema/scalars/hash.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/hash",permalink:"/build/api/schema/scalars/hash",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"hash",title:"Hash",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Float",permalink:"/build/api/schema/scalars/float"},next:{title:"Hex",permalink:"/build/api/schema/scalars/hex"}},c={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),h={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,i.kt)(f,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Hash]"," scalar type represents a cryptographic hash used in\nthe Archethic network with an identification byte to specify from which algorithm the hash was generated.\nThe Hash appears in a JSON response as Base16 formatted string. The parsed hash will\nbe converted to a binary and any invalid hash with an invalid algorithm or invalid size will be rejected"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Hash\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1171],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(a),m=n,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||i;return a?r.createElement(h,s(s({ref:t},p),{},{components:a})):r.createElement(h,s({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:n,s[1]=o;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>o,default:()=>y,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const s={id:"hash",title:"Hash",hide_table_of_contents:!1},o=void 0,l={unversionedId:"build/api/schema/scalars/hash",id:"build/api/schema/scalars/hash",title:"Hash",description:"The [Hash] scalar type represents a cryptographic hash used in",source:"@site/docs/build/api/schema/scalars/hash.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/hash",permalink:"/build/api/schema/scalars/hash",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"hash",title:"Hash",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Float",permalink:"/build/api/schema/scalars/float"},next:{title:"Hex",permalink:"/build/api/schema/scalars/hex"}},c={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),h={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,i.kt)(f,(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Hash]"," scalar type represents a cryptographic hash used in\nthe Archethic network with an identification byte to specify from which algorithm the hash was generated.\nThe Hash appears in a JSON response as Base16 formatted string. The parsed hash will\nbe converted to a binary and any invalid hash with an invalid algorithm or invalid size will be rejected"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Hash\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"}),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,i.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/89af9b08.e8cee91f.js b/assets/js/89af9b08.f43b7d3d.js similarity index 97% rename from assets/js/89af9b08.e8cee91f.js rename to assets/js/89af9b08.f43b7d3d.js index c081327d0..c4713f4ac 100644 --- a/assets/js/89af9b08.e8cee91f.js +++ b/assets/js/89af9b08.f43b7d3d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4230],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),s=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(a),b=r,m=u["".concat(i,".").concat(b)]||u[b]||p[b]||l;return a?n.createElement(m,o(o({ref:t},d),{},{components:a})):n.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=b;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:r,o[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>b,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=a(7462),r=a(7294),l=a(3905);a(8209);const o={id:"balance",title:"Balance",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/objects/balance",id:"build/api/schema/objects/balance",title:"Balance",description:"[Balance] represents a ledger balance.",source:"@site/docs/build/api/schema/objects/balance.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/balance",permalink:"/build/api/schema/objects/balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"balance",title:"Balance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"AuthorizedKey",permalink:"/build/api/schema/objects/authorized-key"},next:{title:"BeaconChainSummary",permalink:"/build/api/schema/objects/beacon-chain-summary"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'Balance.token[TokenBalance] ',id:"code-style-fontweight-normal-balancebtokenbcodetokenbalance--",level:4},{value:'Balance.ucoInt ',id:"code-style-fontweight-normal-balancebucobcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],u=()=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,l.kt)(r.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),b=e=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:b},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[Balance]"," represents a ledger balance.\nIt includes:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"UCO: uco balance"),(0,l.kt)("li",{parentName:"ul"},"token: token balances")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type Balance {\n token: [TokenBalance]\n uco: Int\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebtokenbcodetokenbalance--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Balance.",(0,l.kt)("b",null,"token"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-balance"},(0,l.kt)("inlineCode",{parentName:"a"},"[TokenBalance]"))," ",(0,l.kt)(b,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(b,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebucobcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Balance.",(0,l.kt)("b",null,"uco"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(b,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/balance"},(0,l.kt)("inlineCode",{parentName:"a"},"balance"))," ",(0,l.kt)(b,{class:"secondary",text:"query",mdxType:"Badge"})),(0,l.kt)("h3",{id:"member-of"},"Member of"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,l.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,l.kt)(b,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4230],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),s=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(a),b=r,m=u["".concat(i,".").concat(b)]||u[b]||p[b]||l;return a?n.createElement(m,o(o({ref:t},d),{},{components:a})):n.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=b;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:r,o[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>b,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=a(7462),r=a(7294),l=a(3905);a(8209);const o={id:"balance",title:"Balance",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/objects/balance",id:"build/api/schema/objects/balance",title:"Balance",description:"[Balance] represents a ledger balance.",source:"@site/docs/build/api/schema/objects/balance.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/balance",permalink:"/build/api/schema/objects/balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"balance",title:"Balance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"AuthorizedKey",permalink:"/build/api/schema/objects/authorized-key"},next:{title:"BeaconChainSummary",permalink:"/build/api/schema/objects/beacon-chain-summary"}},s={},d=[{value:"Fields",id:"fields",level:3},{value:'Balance.token[TokenBalance] ',id:"code-style-fontweight-normal-balancebtokenbcodetokenbalance--",level:4},{value:'Balance.ucoInt ',id:"code-style-fontweight-normal-balancebucobcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],u=()=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,l.kt)(r.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),b=e=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:u,SpecifiedBy:p,Badge:b},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"[Balance]"," represents a ledger balance.\nIt includes:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"UCO: uco balance"),(0,l.kt)("li",{parentName:"ul"},"token: token balances")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"type Balance {\n token: [TokenBalance]\n uco: Int\n}\n")),(0,l.kt)("h3",{id:"fields"},"Fields"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebtokenbcodetokenbalance--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Balance.",(0,l.kt)("b",null,"token"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-balance"},(0,l.kt)("inlineCode",{parentName:"a"},"[TokenBalance]"))," ",(0,l.kt)(b,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,l.kt)(b,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebucobcodeint-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"Balance.",(0,l.kt)("b",null,"uco"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,l.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,l.kt)(b,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"returned-by"},"Returned by"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/queries/balance"},(0,l.kt)("inlineCode",{parentName:"a"},"balance"))," ",(0,l.kt)(b,{class:"secondary",text:"query",mdxType:"Badge"})),(0,l.kt)("h3",{id:"member-of"},"Member of"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,l.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,l.kt)(b,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/8a9337ba.8bc817f2.js b/assets/js/8a9337ba.1851e4cb.js similarity index 98% rename from assets/js/8a9337ba.8bc817f2.js rename to assets/js/8a9337ba.1851e4cb.js index 92c60a01e..50fb3f0f0 100644 --- a/assets/js/8a9337ba.8bc817f2.js +++ b/assets/js/8a9337ba.1851e4cb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1113],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(n),h=r,m=d["".concat(c,".").concat(h)]||d[h]||p[h]||o;return n?a.createElement(m,i(i({ref:t},u),{},{components:n})):a.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"beacon-chain",title:"BeaconChain"},i=void 0,s={unversionedId:"build/core/beacon-chain/beacon-chain",id:"build/core/beacon-chain/beacon-chain",title:"BeaconChain",description:"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system.",source:"@site/docs/build/core/beacon-chain/README.md",sourceDirName:"build/core/beacon-chain",slug:"/build/core/beacon-chain/",permalink:"/build/core/beacon-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"beacon-chain",title:"BeaconChain"},sidebar:"docs",previous:{title:"Account",permalink:"/build/core/account"},next:{title:"P2P availability sampling",permalink:"/build/core/beacon-chain/p2p-sampling"}},c={},l=[{value:"Subsets",id:"subsets",level:2},{value:"Timers and schedulers",id:"timers-and-schedulers",level:2},{value:"Transaction loading",id:"transaction-loading",level:2},{value:"Supervisor",id:"supervisor",level:2}],u={toc:l},d="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system."),(0,r.kt)("p",null,"To be able to manage it, few modules and functions are needed to make this possible."),(0,r.kt)("h2",{id:"subsets"},"Subsets"),(0,r.kt)("p",null,"The BeaconChain is divided into a set of subsets (shards of the BeaconChain) based on hexadecimal splits.\nCurrently the BeaconChain supports 256 subsets, from 0 to F (hex)"),(0,r.kt)("p",null,"Each subset is maintained by its own ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/beacon_chain/subset.ex"},"process")),(0,r.kt)("p",null,"This process is responsible of:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add transaction replication confirmation to the current slot"),(0,r.kt)("li",{parentName:"ul"},"Check ",(0,r.kt)("a",{parentName:"li",href:"/build/core/beacon-chain/p2p-sampling"},"P2P availability")," of the nodes where their public key starts by the subset hexadecimal identifier "),(0,r.kt)("li",{parentName:"ul"},"Create beacon transaction and notify BeaconChain summary nodes (for the current epoch)"),(0,r.kt)("li",{parentName:"ul"},"Create beacon summary transaction (if it's one of the summary node)"),(0,r.kt)("li",{parentName:"ul"},"Notify explorer about the new transaction validated (See ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:9001/archethic-docs/learn/sharding/beacon-chain/explorer"},"Sharded Explorer"),")")),(0,r.kt)("h2",{id:"timers-and-schedulers"},"Timers and schedulers"),(0,r.kt)("p",null,"Because each BeaconChain subsets change over time, we need a may to determine what are the current nodes for those subsets and so on. So we have two kind of timers and schedulers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Slot timer: Manage the interval for the beacon slot creations"),(0,r.kt)("li",{parentName:"ul"},"Summary timer: Manage the interval for the beacon summary creations")),(0,r.kt)("p",null,"Each of those timer provides helpers to be able to generate previous or next dates"),(0,r.kt)("h2",{id:"transaction-loading"},"Transaction loading"),(0,r.kt)("p",null,"Before a transaction's confirmation is loaded into the BeaconChain, a phase of validation is performed to ensure the correctness of the replication:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"it asserts the transaction's address is the right one"),(0,r.kt)("li",{parentName:"ul"},"it asserts the transaction attestation (node election, signatures, etc.)")),(0,r.kt)("p",null,"For more details, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/beacon_chain/slot/validation.ex"},"SlotValidation")),(0,r.kt)("p",null,"Then the slot is deserialized to be loaded into a cache, for a faster summary aggregation and computation"),(0,r.kt)("h2",{id:"supervisor"},"Supervisor"),(0,r.kt)("p",null,"To manage all those processes and isolation a proper supervision tree is defined"),(0,r.kt)("mermaid",{value:"graph TD\n A[BeaconChain Supervisor]\n A --\x3eB[Slot Timer]\n A --\x3eC[Summary Timer]\n A --\x3eD{Subset supervisor}\n D --\x3eE[Summary Cache]\n D --\x3eF[Subset 0]\n D --\x3eH[Subset ..F]\n D --\x3eI[Subset registry]"}))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1113],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(n),h=r,m=d["".concat(c,".").concat(h)]||d[h]||p[h]||o;return n?a.createElement(m,i(i({ref:t},u),{},{components:n})):a.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"beacon-chain",title:"BeaconChain"},i=void 0,s={unversionedId:"build/core/beacon-chain/beacon-chain",id:"build/core/beacon-chain/beacon-chain",title:"BeaconChain",description:"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system.",source:"@site/docs/build/core/beacon-chain/README.md",sourceDirName:"build/core/beacon-chain",slug:"/build/core/beacon-chain/",permalink:"/build/core/beacon-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"beacon-chain",title:"BeaconChain"},sidebar:"docs",previous:{title:"Account",permalink:"/build/core/account"},next:{title:"P2P availability sampling",permalink:"/build/core/beacon-chain/p2p-sampling"}},c={},l=[{value:"Subsets",id:"subsets",level:2},{value:"Timers and schedulers",id:"timers-and-schedulers",level:2},{value:"Transaction loading",id:"transaction-loading",level:2},{value:"Supervisor",id:"supervisor",level:2}],u={toc:l},d="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system."),(0,r.kt)("p",null,"To be able to manage it, few modules and functions are needed to make this possible."),(0,r.kt)("h2",{id:"subsets"},"Subsets"),(0,r.kt)("p",null,"The BeaconChain is divided into a set of subsets (shards of the BeaconChain) based on hexadecimal splits.\nCurrently the BeaconChain supports 256 subsets, from 0 to F (hex)"),(0,r.kt)("p",null,"Each subset is maintained by its own ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/beacon_chain/subset.ex"},"process")),(0,r.kt)("p",null,"This process is responsible of:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add transaction replication confirmation to the current slot"),(0,r.kt)("li",{parentName:"ul"},"Check ",(0,r.kt)("a",{parentName:"li",href:"/build/core/beacon-chain/p2p-sampling"},"P2P availability")," of the nodes where their public key starts by the subset hexadecimal identifier "),(0,r.kt)("li",{parentName:"ul"},"Create beacon transaction and notify BeaconChain summary nodes (for the current epoch)"),(0,r.kt)("li",{parentName:"ul"},"Create beacon summary transaction (if it's one of the summary node)"),(0,r.kt)("li",{parentName:"ul"},"Notify explorer about the new transaction validated (See ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:9001/archethic-docs/learn/sharding/beacon-chain/explorer"},"Sharded Explorer"),")")),(0,r.kt)("h2",{id:"timers-and-schedulers"},"Timers and schedulers"),(0,r.kt)("p",null,"Because each BeaconChain subsets change over time, we need a may to determine what are the current nodes for those subsets and so on. So we have two kind of timers and schedulers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Slot timer: Manage the interval for the beacon slot creations"),(0,r.kt)("li",{parentName:"ul"},"Summary timer: Manage the interval for the beacon summary creations")),(0,r.kt)("p",null,"Each of those timer provides helpers to be able to generate previous or next dates"),(0,r.kt)("h2",{id:"transaction-loading"},"Transaction loading"),(0,r.kt)("p",null,"Before a transaction's confirmation is loaded into the BeaconChain, a phase of validation is performed to ensure the correctness of the replication:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"it asserts the transaction's address is the right one"),(0,r.kt)("li",{parentName:"ul"},"it asserts the transaction attestation (node election, signatures, etc.)")),(0,r.kt)("p",null,"For more details, ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node/blob/master/lib/archethic/beacon_chain/slot/validation.ex"},"SlotValidation")),(0,r.kt)("p",null,"Then the slot is deserialized to be loaded into a cache, for a faster summary aggregation and computation"),(0,r.kt)("h2",{id:"supervisor"},"Supervisor"),(0,r.kt)("p",null,"To manage all those processes and isolation a proper supervision tree is defined"),(0,r.kt)("mermaid",{value:"graph TD\n A[BeaconChain Supervisor]\n A --\x3eB[Slot Timer]\n A --\x3eC[Summary Timer]\n A --\x3eD{Subset supervisor}\n D --\x3eE[Summary Cache]\n D --\x3eF[Subset 0]\n D --\x3eH[Subset ..F]\n D --\x3eI[Subset registry]"}))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/8b5bd275.e1e06d86.js b/assets/js/8b5bd275.9a024590.js similarity index 97% rename from assets/js/8b5bd275.e1e06d86.js rename to assets/js/8b5bd275.9a024590.js index e90b7cb51..2fb112923 100644 --- a/assets/js/8b5bd275.e1e06d86.js +++ b/assets/js/8b5bd275.9a024590.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6451],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=l(r),m=a,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(f,s(s({ref:t},d),{},{components:r})):n.createElement(f,s({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const s={id:"transaction-error",title:"transactionError",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/subscriptions/transaction-error",id:"build/api/schema/subscriptions/transaction-error",title:"transactionError",description:"Subscribe to be notified when a transaction is on error",source:"@site/docs/build/api/schema/subscriptions/transaction-error.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/transaction-error",permalink:"/build/api/schema/subscriptions/transaction-error",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-error",title:"transactionError",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionConfirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed"},next:{title:"Core development",permalink:"/build/core/"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionError.addressAddress! ',id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'TransactionError ',id:"transactionerror-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a transaction is on error"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionError(\n address: Address!\n): TransactionError\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionError.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transactionerror-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-error"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[TransactionError]"," represents an error.")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6451],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=l(r),m=a,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(f,s(s({ref:t},d),{},{components:r})):n.createElement(f,s({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const s={id:"transaction-error",title:"transactionError",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/subscriptions/transaction-error",id:"build/api/schema/subscriptions/transaction-error",title:"transactionError",description:"Subscribe to be notified when a transaction is on error",source:"@site/docs/build/api/schema/subscriptions/transaction-error.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/transaction-error",permalink:"/build/api/schema/subscriptions/transaction-error",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-error",title:"transactionError",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionConfirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed"},next:{title:"Core development",permalink:"/build/core/"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionError.addressAddress! ',id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'TransactionError ',id:"transactionerror-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a transaction is on error"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionError(\n address: Address!\n): TransactionError\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionerrorbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionError.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transactionerror-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-error"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[TransactionError]"," represents an error.")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/8d60aa1f.a4c8fe50.js b/assets/js/8d60aa1f.02e27dfc.js similarity index 97% rename from assets/js/8d60aa1f.a4c8fe50.js rename to assets/js/8d60aa1f.02e27dfc.js index f3ce8973e..53eea376e 100644 --- a/assets/js/8d60aa1f.a4c8fe50.js +++ b/assets/js/8d60aa1f.02e27dfc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2614],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=s(a),m=n,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return a?r.createElement(f,l(l({ref:t},p),{},{components:a})):r.createElement(f,l({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const l={id:"p2-p-availabilities",title:"P2pAvailabilities",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/p2-p-availabilities",id:"build/api/schema/scalars/p2-p-availabilities",title:"P2pAvailabilities",description:"No description",source:"@site/docs/build/api/schema/scalars/p2-p-availabilities.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/p2-p-availabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"p2-p-availabilities",title:"P2pAvailabilities",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"NonNegInteger",permalink:"/build/api/schema/scalars/non-neg-integer"},next:{title:"PosInteger",permalink:"/build/api/schema/scalars/pos-integer"}},s={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...a}=e;return(0,i.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"No description"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar P2pAvailabilities\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2614],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=s(a),m=n,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return a?r.createElement(f,l(l({ref:t},p),{},{components:a})):r.createElement(f,l({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,l=new Array(i);l[0]=m;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:n,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),i=a(3905);a(8209);const l={id:"p2-p-availabilities",title:"P2pAvailabilities",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/p2-p-availabilities",id:"build/api/schema/scalars/p2-p-availabilities",title:"P2pAvailabilities",description:"No description",source:"@site/docs/build/api/schema/scalars/p2-p-availabilities.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/p2-p-availabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"p2-p-availabilities",title:"P2pAvailabilities",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"NonNegInteger",permalink:"/build/api/schema/scalars/non-neg-integer"},next:{title:"PosInteger",permalink:"/build/api/schema/scalars/pos-integer"}},s={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(n.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(n.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...a}=e;return(0,i.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"No description"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar P2pAvailabilities\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,i.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,i.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/8dbf302e.26ab8380.js b/assets/js/8dbf302e.779b84a2.js similarity index 99% rename from assets/js/8dbf302e.26ab8380.js rename to assets/js/8dbf302e.779b84a2.js index adee26ea7..810a0087b 100644 --- a/assets/js/8dbf302e.26ab8380.js +++ b/assets/js/8dbf302e.779b84a2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9254],{3905:(e,t,i)=>{i.d(t,{Zo:()=>l,kt:()=>s});var n=i(7294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var I=n.createContext({}),o=function(e){var t=n.useContext(I),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},l=function(e){var t=o(e.components);return n.createElement(I.Provider,{value:t},e.children)},g="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,c=e.originalType,I=e.parentName,l=M(e,["components","mdxType","originalType","parentName"]),g=o(i),u=a,s=g["".concat(I,".").concat(u)]||g[u]||d[u]||c;return i?n.createElement(s,r(r({ref:t},l),{},{components:i})):n.createElement(s,r({ref:t},l))}));function s(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=i.length,r=new Array(c);r[0]=u;var M={};for(var I in t)hasOwnProperty.call(t,I)&&(M[I]=t[I]);M.originalType=e,M[g]="string"==typeof e?e:a,r[1]=M;for(var o=2;o{i.r(t),i.d(t,{assets:()=>I,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>M,toc:()=>o});var n=i(7462),a=(i(7294),i(3905));i(8209);const c={id:"keychain",title:"Keychain"},r=void 0,M={unversionedId:"learn/decentralized-id/keychain",id:"learn/decentralized-id/keychain",title:"Keychain",description:"Archethic's keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains.",source:"@site/docs/learn/decentralized-id/keychain.md",sourceDirName:"learn/decentralized-id",slug:"/learn/decentralized-id/keychain",permalink:"/learn/decentralized-id/keychain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"keychain",title:"Keychain"},sidebar:"docs",previous:{title:"Decentralized Identity",permalink:"/learn/decentralized-id/"},next:{title:"Governance",permalink:"/learn/governance/"}},I={},o=[{value:"Key generation",id:"key-generation",level:2},{value:"End to end encryption",id:"end-to-end-encryption",level:2},{value:"Standard compliance",id:"standard-compliance",level:2},{value:"Customization",id:"customization",level:2}],l={toc:o},g="wrapper";function d(e){let{components:t,...c}=e;return(0,a.kt)(g,(0,n.Z)({},l,c,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic's keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains."),(0,a.kt)("p",null,"It describes wallet which is stored encrypted on chain, as only you and the authorized access or person you allowed, to be able to decrypt and build transactions from it."),(0,a.kt)("h2",{id:"key-generation"},"Key generation"),(0,a.kt)("p",null,"Technically speaking, this wallet - also referenced as ",(0,a.kt)("inlineCode",{parentName:"p"},"Decentralized Identity")," - is made up of randomly generated ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," (root key) from which it's possible to generate all keys according to a path of derivation. "),(0,a.kt)("p",null,"So for any access to a service or an application, a key will be generated on the fly from the ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," (root key) and the first public key associated with a service or an application."),(0,a.kt)("p",null,"Thus allowing creating an infinite number of identities without even having to store related keys. "),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(4449).Z,width:"372",height:"259"})),(0,a.kt)("h2",{id:"end-to-end-encryption"},"End to end encryption"),(0,a.kt)("p",null,"While this wallet or keychain being on-chain, it still remains secure as no other party (at least non authorized) can access with service keys. "),(0,a.kt)("p",null,"This is possible as we are using end to end encryption and elliptic curve cryptography."),(0,a.kt)("p",null,"Each keychain/wallet generated is embedded into a transaction encrypted using an AES key itself encrypted with a list of authorized keys or authenticated access (biometric, smartphone, USB, etc.)"),(0,a.kt)("p",null,"Once generated, we also create transactions for the access of this keychain.\nSo in other words, each access have its own transaction chain, where the keychain's location is encrypted as well."),(0,a.kt)("p",null,"Then in order to retrieve or access your keychain, your authentication method should retrieve its transaction chain, then decrypt the keychain's location, download the keychain transaction and finally decrypt the keychain with the right AES key."),(0,a.kt)("p",null,"This avoids disclosure of critical information and prevents unauthorized access."),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(3719).Z,width:"767",height:"362"})),(0,a.kt)("h2",{id:"standard-compliance"},"Standard compliance"),(0,a.kt)("p",null,"Archethic decentralized identity and keychain concepts is also compliant with industry standard in the field of online and digital identity."),(0,a.kt)("p",null,"Then once created, the keychain embeds on-chain a representation of a ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"W3C DID (Decentralized Identitifier)")," document which help the discovery of your key materials."),(0,a.kt)("p",null,"It displays a JSON message with the list of public key you own and you allow other parties to interact with, such as your main Archethic public key or your Amazon public for example."),(0,a.kt)("p",null,"This coupled with ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model/"},"verifiable credentials")," and ",(0,a.kt)("a",{parentName:"p",href:"https://webauthn.io/"},"WebAuthn (Website authentication without password)")," make the complete usage of decentralized identity possible."),(0,a.kt)("h2",{id:"customization"},"Customization"),(0,a.kt)("p",null,"Because this wallet should be your digital identity security, we can customize the services and way the keys are generated."),(0,a.kt)("p",null,"Each service in the keychain is joined with other customizable property:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"derivation path: this will inform how the key will be generated. For example, the default one is ",(0,a.kt)("inlineCode",{parentName:"li"},"m/650'/0/0")," informing we are using Archethic derivation method (",(0,a.kt)("inlineCode",{parentName:"li"},"650")," instead of the usual BIP44) and then the ",(0,a.kt)("inlineCode",{parentName:"li"},"0/0")," indicates the first account and the first key of the chain.")),(0,a.kt)("p",null,"But nothing prevent to add something like: ",(0,a.kt)("inlineCode",{parentName:"p"},"m/650'/Amazon/0")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"m/650'/JohnDoeUCO@!/0")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"curve: this indicates during the derivate key which elliptic curve we want to use. (Ed25519, NIST, Bitcoin curve)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"hash algorithm: this is used in the transaction address generation from the key produced, by default it's associated to ",(0,a.kt)("inlineCode",{parentName:"p"},"sha256")," but if you want higher security you could use something like ",(0,a.kt)("inlineCode",{parentName:"p"},"sha3-512")," o ",(0,a.kt)("inlineCode",{parentName:"p"},"blake2b")))))}d.isMDXComponent=!0},3719:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/keychain-access-wallet-780a9e51e7490fb38fe1171ddd8e028f.svg"},4449:(e,t,i)=>{i.d(t,{Z:()=>n});const n="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM3MS41NTA0NzYwNzQyMTg3NSAyNTguNTYyODA1MTc1NzgxMjUiIHdpZHRoPSIzNzEuNTUwNDc2MDc0MjE4NzUiIGhlaWdodD0iMjU4LjU2MjgwNTE3NTc4MTI1Ij4KICA8IS0tIHN2Zy1zb3VyY2U6ZXhjYWxpZHJhdyAtLT4KICAKICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6ICJWaXJnaWwiOwogICAgICAgIHNyYzogdXJsKCJodHRwczovL2V4Y2FsaWRyYXcuY29tL1ZpcmdpbC53b2ZmMiIpOwogICAgICB9CiAgICAgIEBmb250LWZhY2UgewogICAgICAgIGZvbnQtZmFtaWx5OiAiQ2FzY2FkaWEiOwogICAgICAgIHNyYzogdXJsKCJodHRwczovL2V4Y2FsaWRyYXcuY29tL0Nhc2NhZGlhLndvZmYyIik7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAgMTApIHJvdGF0ZSgwIDQ5IDI0Ljc2NTY4NjAzNTE1NjI1KSI+PHBhdGggZD0iTS0xLjQ3IDAuNDkgQzMwLjgxIC0xLjc0LCA2MS44MyAtMS41NywgOTguMDUgLTEuMjIgTS0wLjI5IC0wLjQzIEMzMS4wNyAwLjMzLCA2My43NCAtMC4zNCwgOTguNSAwLjA1IE05Ni42IDAuOTYgQzk2LjQgMTEuNTgsIDEwMC4xNCAyMi40MywgOTcuODMgNTAuOSBNOTguMDYgMC4yNiBDOTguNSAxMC4yNywgOTguMzYgMjEuMjEsIDk3LjY3IDUwLjIyIE05Ny4yOSA0Ny44MiBDNjguODcgNTAuMSwgMzcuNjkgNTAuNjEsIDEuMDggNTAuMTIgTTk3LjggNDkuNTEgQzYwLjIzIDQ4Ljc4LCAyMi4wNyA1MC4zMiwgMC45MSA0OS44OSBNLTEuNDggNDguNjQgQy0wLjQ5IDMyLjg1LCAxLjA4IDE0LjcsIC0wLjM2IDEuODUgTTAuMzQgNDkuMjMgQy0wLjYxIDM3LjgxLCAtMC4xIDI4LjYzLCAwLjM5IDAuMTkiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1IDIyLjI2NTY4NjAzNTE1NjI1KSByb3RhdGUoMCA0NCAxMi41KSI+PHRleHQgeD0iNDQiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjNWYzZGM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsiIGRpcmVjdGlvbj0ibHRyIj5TZWVkPC90ZXh0PjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjQ5MjAwNDM5NDUzMTI1IDYzLjU2MjE5NDgyNDIxODc1KSByb3RhdGUoMCAtMC40MzE3NTc1MzQ0ODE1NjIzIDg4LjE0OTE4NjA4NDY4MDI1KSI+PHBhdGggZD0iTTAgMCBDLTAuMTQgMjkuMzgsIC0wLjcyIDE0Ni45MiwgLTAuODYgMTc2LjMgTTAgMCBDLTAuMTQgMjkuMzgsIC0wLjcyIDE0Ni45MiwgLTAuODYgMTc2LjMiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU3LjI2OTQwOTE3OTY4NzUgMTA3Ljc0MDQ3ODUxNTYyNSkgcm90YXRlKDAgNjEuMzA4MjYyOTg0MDgyMDkgMC4yMDY2MjIwNDU5NjUxOTAxOCkiPjxwYXRoIGQ9Ik0tMC41OSAwLjgxIEMyMC4wMyAwLjc4LCAxMDIuNzIgLTAuNDEsIDEyMy4yIC0wLjQ3IE0xLjMxIDAuMTkgQzIxLjg5IDAuMzUsIDEwMi42OCAxLjEzLCAxMjIuNzMgMC44MiIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcuMjY5NDA5MTc5Njg3NSAxMDcuNzQwNDc4NTE1NjI1KSByb3RhdGUoMCA2MS4zMDgyNjI5ODQwODIwOSAwLjIwNjYyMjA0NTk2NTE5MDE4KSI+PHBhdGggZD0iTTk1LjkxIDEyLjYzIEMxMDEuMDYgOC42NywgMTA5Ljg1IDQuMDEsIDEyMS44NiAtMC44OCBNOTQuNiAxMC4yOCBDMTAxLjkzIDkuMjEsIDEwOC4xNiA1LjYzLCAxMjIuOTYgMS4zNyIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcuMjY5NDA5MTc5Njg3NSAxMDcuNzQwNDc4NTE1NjI1KSByb3RhdGUoMCA2MS4zMDgyNjI5ODQwODIwOSAwLjIwNjYyMjA0NTk2NTE5MDE4KSI+PHBhdGggZD0iTTk1Ljg5IC03LjkgQzEwMSAtNi41NiwgMTA5Ljc5IC01LjkxLCAxMjEuODYgLTAuODggTTk0LjU4IC0xMC4yNCBDMTAxLjc0IC02LjQxLCAxMDcuOTggLTUuMDksIDEyMi45NiAxLjM3IiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48L2c+PGcgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi41MTgyNDk1MTE3MTg3NSAxNzAuMjY4NTI0MTY5OTIxODgpIHJvdGF0ZSgwIDYxLjU1MzkyODE1MDI0NTk1IDAuMTIyNDM3NjEyMzM5ODY1NjEpIj48cGF0aCBkPSJNLTAuOTggMC44OCBDMTkuMTkgMC43NywgMTAwLjk4IC0wLjM2LCAxMjEuNjkgLTAuNjQgTTAuNzEgMC4zIEMyMS4yMiAwLjM0LCAxMDMuNyAwLjU5LCAxMjQuMDggMC41NiIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjIuNTE4MjQ5NTExNzE4NzUgMTcwLjI2ODUyNDE2OTkyMTg4KSByb3RhdGUoMCA2MS41NTM5MjgxNTAyNDU5NSAwLjEyMjQzNzYxMjMzOTg2NTYxKSI+PHBhdGggZD0iTTk3LjM2IDkuNzggQzEwNC45MSA4Ljk4LCAxMTQuNzkgMy45MywgMTI1Ljc2IDAuMzQgTTk1LjYyIDExLjM4IEMxMDUuNDIgOC4wNiwgMTE1LjAxIDQsIDEyMy43OSAxLjU1IiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi41MTgyNDk1MTE3MTg3NSAxNzAuMjY4NTI0MTY5OTIxODgpIHJvdGF0ZSgwIDYxLjU1MzkyODE1MDI0NTk1IDAuMTIyNDM3NjEyMzM5ODY1NjEpIj48cGF0aCBkPSJNOTcuMzggLTEwLjc0IEMxMDQuOTMgLTQuMTksIDExNC44MSAtMS44OSwgMTI1Ljc2IDAuMzQgTTk1LjY1IC05LjE0IEMxMDUuNjEgLTUuNTgsIDExNS4xOSAtMi43NiwgMTIzLjc5IDEuNTUiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTQuNTUxMDg2NDI1NzgxMjUgOTMuMzAxODE4ODQ3NjU2MjUpIHJvdGF0ZSgwIDU5LjUgMTIuNSkiPjx0ZXh0IHg9IjAiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjMzY0ZmM3IiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyIgZGlyZWN0aW9uPSJsdHIiPldhbGxldCBVQ08xPC90ZXh0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTMuMDQyMzU4Mzk4NDM3NSAxNTYuNjYyMjkyNDgwNDY4NzUpIHJvdGF0ZSgwIDY4LjUgMTIuNSkiPjx0ZXh0IHg9IjAiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjMmI4YTNlIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyIgZGlyZWN0aW9uPSJsdHIiPldhbGxldCBCaXRjb2luPC90ZXh0PjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjMzMzY3OTE5OTIxODc1IDIzNy41NzYwMTkyODcxMDkzOCkgcm90YXRlKDAgNjYuNDAxMDMzMTUzOTQzNzMgMC41MzYyMTQ3Mzc5ODQ1MjI2KSI+PHBhdGggZD0iTTAuOTYgMC45MSBDMjMgMS4wMSwgMTEwLjU2IDEuMzgsIDEzMi44IDEuMzcgTTAuMDEgMC4zNSBDMjEuOCAwLjA0LCAxMDkuMjQgLTAuMDMsIDEzMS42IC0wLjMiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjMzMzY3OTE5OTIxODc1IDIzNy41NzYwMTkyODcxMDkzOCkgcm90YXRlKDAgNjYuNDAxMDMzMTUzOTQzNzMgMC41MzYyMTQ3Mzc5ODQ1MjI2KSI+PHBhdGggZD0iTTEwNC45OSA5LjM0IEMxMTQuNTQgOC4xLCAxMjMuNDIgMS41NCwgMTMxLjI2IDAuMzMgTTEwMi42NSAxMC43IEMxMTIuOTkgNi44NiwgMTE5LjggMi43NiwgMTMxLjY2IC0wLjQxIiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OC4zMzM2NzkxOTkyMTg3NSAyMzcuNTc2MDE5Mjg3MTA5MzgpIHJvdGF0ZSgwIDY2LjQwMTAzMzE1Mzk0MzczIDAuNTM2MjE0NzM3OTg0NTIyNikiPjxwYXRoIGQ9Ik0xMDQuODcgLTExLjE4IEMxMTQuNiAtNS4zMywgMTIzLjUxIC00LjgsIDEzMS4yNiAwLjMzIE0xMDIuNTMgLTkuODIgQzExMi44OCAtNy40NSwgMTE5LjcyIC01LjM0LCAxMzEuNjYgLTAuNDEiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTguNTUwNDc2MDc0MjE4NzUgMjIzLjU2MjgwNTE3NTc4MTI1KSByb3RhdGUoMCA3MS41IDEyLjUpIj48dGV4dCB4PSIwIiB5PSIxOCIgZm9udC1mYW1pbHk9IlZpcmdpbCwgU2Vnb2UgVUkgRW1vamkiIGZvbnQtc2l6ZT0iMjBweCIgZmlsbD0iI2Q5NDgwZiIgdGV4dC1hbmNob3I9InN0YXJ0IiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsiIGRpcmVjdGlvbj0ibHRyIj5XYWxsZXQgQW1hem9uPC90ZXh0PjwvZz48L3N2Zz4="},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9254],{3905:(e,t,i)=>{i.d(t,{Zo:()=>l,kt:()=>s});var n=i(7294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var I=n.createContext({}),o=function(e){var t=n.useContext(I),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},l=function(e){var t=o(e.components);return n.createElement(I.Provider,{value:t},e.children)},g="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,c=e.originalType,I=e.parentName,l=M(e,["components","mdxType","originalType","parentName"]),g=o(i),u=a,s=g["".concat(I,".").concat(u)]||g[u]||d[u]||c;return i?n.createElement(s,r(r({ref:t},l),{},{components:i})):n.createElement(s,r({ref:t},l))}));function s(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=i.length,r=new Array(c);r[0]=u;var M={};for(var I in t)hasOwnProperty.call(t,I)&&(M[I]=t[I]);M.originalType=e,M[g]="string"==typeof e?e:a,r[1]=M;for(var o=2;o{i.r(t),i.d(t,{assets:()=>I,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>M,toc:()=>o});var n=i(7462),a=(i(7294),i(3905));i(8209);const c={id:"keychain",title:"Keychain"},r=void 0,M={unversionedId:"learn/decentralized-id/keychain",id:"learn/decentralized-id/keychain",title:"Keychain",description:"Archethic's keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains.",source:"@site/docs/learn/decentralized-id/keychain.md",sourceDirName:"learn/decentralized-id",slug:"/learn/decentralized-id/keychain",permalink:"/learn/decentralized-id/keychain",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"keychain",title:"Keychain"},sidebar:"docs",previous:{title:"Decentralized Identity",permalink:"/learn/decentralized-id/"},next:{title:"Governance",permalink:"/learn/governance/"}},I={},o=[{value:"Key generation",id:"key-generation",level:2},{value:"End to end encryption",id:"end-to-end-encryption",level:2},{value:"Standard compliance",id:"standard-compliance",level:2},{value:"Customization",id:"customization",level:2}],l={toc:o},g="wrapper";function d(e){let{components:t,...c}=e;return(0,a.kt)(g,(0,n.Z)({},l,c,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic's keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains."),(0,a.kt)("p",null,"It describes wallet which is stored encrypted on chain, as only you and the authorized access or person you allowed, to be able to decrypt and build transactions from it."),(0,a.kt)("h2",{id:"key-generation"},"Key generation"),(0,a.kt)("p",null,"Technically speaking, this wallet - also referenced as ",(0,a.kt)("inlineCode",{parentName:"p"},"Decentralized Identity")," - is made up of randomly generated ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," (root key) from which it's possible to generate all keys according to a path of derivation. "),(0,a.kt)("p",null,"So for any access to a service or an application, a key will be generated on the fly from the ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," (root key) and the first public key associated with a service or an application."),(0,a.kt)("p",null,"Thus allowing creating an infinite number of identities without even having to store related keys. "),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(4449).Z,width:"372",height:"259"})),(0,a.kt)("h2",{id:"end-to-end-encryption"},"End to end encryption"),(0,a.kt)("p",null,"While this wallet or keychain being on-chain, it still remains secure as no other party (at least non authorized) can access with service keys. "),(0,a.kt)("p",null,"This is possible as we are using end to end encryption and elliptic curve cryptography."),(0,a.kt)("p",null,"Each keychain/wallet generated is embedded into a transaction encrypted using an AES key itself encrypted with a list of authorized keys or authenticated access (biometric, smartphone, USB, etc.)"),(0,a.kt)("p",null,"Once generated, we also create transactions for the access of this keychain.\nSo in other words, each access have its own transaction chain, where the keychain's location is encrypted as well."),(0,a.kt)("p",null,"Then in order to retrieve or access your keychain, your authentication method should retrieve its transaction chain, then decrypt the keychain's location, download the keychain transaction and finally decrypt the keychain with the right AES key."),(0,a.kt)("p",null,"This avoids disclosure of critical information and prevents unauthorized access."),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(3719).Z,width:"767",height:"362"})),(0,a.kt)("h2",{id:"standard-compliance"},"Standard compliance"),(0,a.kt)("p",null,"Archethic decentralized identity and keychain concepts is also compliant with industry standard in the field of online and digital identity."),(0,a.kt)("p",null,"Then once created, the keychain embeds on-chain a representation of a ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"W3C DID (Decentralized Identitifier)")," document which help the discovery of your key materials."),(0,a.kt)("p",null,"It displays a JSON message with the list of public key you own and you allow other parties to interact with, such as your main Archethic public key or your Amazon public for example."),(0,a.kt)("p",null,"This coupled with ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model/"},"verifiable credentials")," and ",(0,a.kt)("a",{parentName:"p",href:"https://webauthn.io/"},"WebAuthn (Website authentication without password)")," make the complete usage of decentralized identity possible."),(0,a.kt)("h2",{id:"customization"},"Customization"),(0,a.kt)("p",null,"Because this wallet should be your digital identity security, we can customize the services and way the keys are generated."),(0,a.kt)("p",null,"Each service in the keychain is joined with other customizable property:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"derivation path: this will inform how the key will be generated. For example, the default one is ",(0,a.kt)("inlineCode",{parentName:"li"},"m/650'/0/0")," informing we are using Archethic derivation method (",(0,a.kt)("inlineCode",{parentName:"li"},"650")," instead of the usual BIP44) and then the ",(0,a.kt)("inlineCode",{parentName:"li"},"0/0")," indicates the first account and the first key of the chain.")),(0,a.kt)("p",null,"But nothing prevent to add something like: ",(0,a.kt)("inlineCode",{parentName:"p"},"m/650'/Amazon/0")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"m/650'/JohnDoeUCO@!/0")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"curve: this indicates during the derivate key which elliptic curve we want to use. (Ed25519, NIST, Bitcoin curve)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"hash algorithm: this is used in the transaction address generation from the key produced, by default it's associated to ",(0,a.kt)("inlineCode",{parentName:"p"},"sha256")," but if you want higher security you could use something like ",(0,a.kt)("inlineCode",{parentName:"p"},"sha3-512")," o ",(0,a.kt)("inlineCode",{parentName:"p"},"blake2b")))))}d.isMDXComponent=!0},3719:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/keychain-access-wallet-780a9e51e7490fb38fe1171ddd8e028f.svg"},4449:(e,t,i)=>{i.d(t,{Z:()=>n});const n="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM3MS41NTA0NzYwNzQyMTg3NSAyNTguNTYyODA1MTc1NzgxMjUiIHdpZHRoPSIzNzEuNTUwNDc2MDc0MjE4NzUiIGhlaWdodD0iMjU4LjU2MjgwNTE3NTc4MTI1Ij4KICA8IS0tIHN2Zy1zb3VyY2U6ZXhjYWxpZHJhdyAtLT4KICAKICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6ICJWaXJnaWwiOwogICAgICAgIHNyYzogdXJsKCJodHRwczovL2V4Y2FsaWRyYXcuY29tL1ZpcmdpbC53b2ZmMiIpOwogICAgICB9CiAgICAgIEBmb250LWZhY2UgewogICAgICAgIGZvbnQtZmFtaWx5OiAiQ2FzY2FkaWEiOwogICAgICAgIHNyYzogdXJsKCJodHRwczovL2V4Y2FsaWRyYXcuY29tL0Nhc2NhZGlhLndvZmYyIik7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAgMTApIHJvdGF0ZSgwIDQ5IDI0Ljc2NTY4NjAzNTE1NjI1KSI+PHBhdGggZD0iTS0xLjQ3IDAuNDkgQzMwLjgxIC0xLjc0LCA2MS44MyAtMS41NywgOTguMDUgLTEuMjIgTS0wLjI5IC0wLjQzIEMzMS4wNyAwLjMzLCA2My43NCAtMC4zNCwgOTguNSAwLjA1IE05Ni42IDAuOTYgQzk2LjQgMTEuNTgsIDEwMC4xNCAyMi40MywgOTcuODMgNTAuOSBNOTguMDYgMC4yNiBDOTguNSAxMC4yNywgOTguMzYgMjEuMjEsIDk3LjY3IDUwLjIyIE05Ny4yOSA0Ny44MiBDNjguODcgNTAuMSwgMzcuNjkgNTAuNjEsIDEuMDggNTAuMTIgTTk3LjggNDkuNTEgQzYwLjIzIDQ4Ljc4LCAyMi4wNyA1MC4zMiwgMC45MSA0OS44OSBNLTEuNDggNDguNjQgQy0wLjQ5IDMyLjg1LCAxLjA4IDE0LjcsIC0wLjM2IDEuODUgTTAuMzQgNDkuMjMgQy0wLjYxIDM3LjgxLCAtMC4xIDI4LjYzLCAwLjM5IDAuMTkiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1IDIyLjI2NTY4NjAzNTE1NjI1KSByb3RhdGUoMCA0NCAxMi41KSI+PHRleHQgeD0iNDQiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjNWYzZGM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsiIGRpcmVjdGlvbj0ibHRyIj5TZWVkPC90ZXh0PjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjQ5MjAwNDM5NDUzMTI1IDYzLjU2MjE5NDgyNDIxODc1KSByb3RhdGUoMCAtMC40MzE3NTc1MzQ0ODE1NjIzIDg4LjE0OTE4NjA4NDY4MDI1KSI+PHBhdGggZD0iTTAgMCBDLTAuMTQgMjkuMzgsIC0wLjcyIDE0Ni45MiwgLTAuODYgMTc2LjMgTTAgMCBDLTAuMTQgMjkuMzgsIC0wLjcyIDE0Ni45MiwgLTAuODYgMTc2LjMiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU3LjI2OTQwOTE3OTY4NzUgMTA3Ljc0MDQ3ODUxNTYyNSkgcm90YXRlKDAgNjEuMzA4MjYyOTg0MDgyMDkgMC4yMDY2MjIwNDU5NjUxOTAxOCkiPjxwYXRoIGQ9Ik0tMC41OSAwLjgxIEMyMC4wMyAwLjc4LCAxMDIuNzIgLTAuNDEsIDEyMy4yIC0wLjQ3IE0xLjMxIDAuMTkgQzIxLjg5IDAuMzUsIDEwMi42OCAxLjEzLCAxMjIuNzMgMC44MiIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcuMjY5NDA5MTc5Njg3NSAxMDcuNzQwNDc4NTE1NjI1KSByb3RhdGUoMCA2MS4zMDgyNjI5ODQwODIwOSAwLjIwNjYyMjA0NTk2NTE5MDE4KSI+PHBhdGggZD0iTTk1LjkxIDEyLjYzIEMxMDEuMDYgOC42NywgMTA5Ljg1IDQuMDEsIDEyMS44NiAtMC44OCBNOTQuNiAxMC4yOCBDMTAxLjkzIDkuMjEsIDEwOC4xNiA1LjYzLCAxMjIuOTYgMS4zNyIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcuMjY5NDA5MTc5Njg3NSAxMDcuNzQwNDc4NTE1NjI1KSByb3RhdGUoMCA2MS4zMDgyNjI5ODQwODIwOSAwLjIwNjYyMjA0NTk2NTE5MDE4KSI+PHBhdGggZD0iTTk1Ljg5IC03LjkgQzEwMSAtNi41NiwgMTA5Ljc5IC01LjkxLCAxMjEuODYgLTAuODggTTk0LjU4IC0xMC4yNCBDMTAxLjc0IC02LjQxLCAxMDcuOTggLTUuMDksIDEyMi45NiAxLjM3IiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48L2c+PGcgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi41MTgyNDk1MTE3MTg3NSAxNzAuMjY4NTI0MTY5OTIxODgpIHJvdGF0ZSgwIDYxLjU1MzkyODE1MDI0NTk1IDAuMTIyNDM3NjEyMzM5ODY1NjEpIj48cGF0aCBkPSJNLTAuOTggMC44OCBDMTkuMTkgMC43NywgMTAwLjk4IC0wLjM2LCAxMjEuNjkgLTAuNjQgTTAuNzEgMC4zIEMyMS4yMiAwLjM0LCAxMDMuNyAwLjU5LCAxMjQuMDggMC41NiIgc3Ryb2tlPSIjNWYzZGM0IiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPjwvcGF0aD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjIuNTE4MjQ5NTExNzE4NzUgMTcwLjI2ODUyNDE2OTkyMTg4KSByb3RhdGUoMCA2MS41NTM5MjgxNTAyNDU5NSAwLjEyMjQzNzYxMjMzOTg2NTYxKSI+PHBhdGggZD0iTTk3LjM2IDkuNzggQzEwNC45MSA4Ljk4LCAxMTQuNzkgMy45MywgMTI1Ljc2IDAuMzQgTTk1LjYyIDExLjM4IEMxMDUuNDIgOC4wNiwgMTE1LjAxIDQsIDEyMy43OSAxLjU1IiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi41MTgyNDk1MTE3MTg3NSAxNzAuMjY4NTI0MTY5OTIxODgpIHJvdGF0ZSgwIDYxLjU1MzkyODE1MDI0NTk1IDAuMTIyNDM3NjEyMzM5ODY1NjEpIj48cGF0aCBkPSJNOTcuMzggLTEwLjc0IEMxMDQuOTMgLTQuMTksIDExNC44MSAtMS44OSwgMTI1Ljc2IDAuMzQgTTk1LjY1IC05LjE0IEMxMDUuNjEgLTUuNTgsIDExNS4xOSAtMi43NiwgMTIzLjc5IDEuNTUiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTQuNTUxMDg2NDI1NzgxMjUgOTMuMzAxODE4ODQ3NjU2MjUpIHJvdGF0ZSgwIDU5LjUgMTIuNSkiPjx0ZXh0IHg9IjAiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjMzY0ZmM3IiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyIgZGlyZWN0aW9uPSJsdHIiPldhbGxldCBVQ08xPC90ZXh0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTMuMDQyMzU4Mzk4NDM3NSAxNTYuNjYyMjkyNDgwNDY4NzUpIHJvdGF0ZSgwIDY4LjUgMTIuNSkiPjx0ZXh0IHg9IjAiIHk9IjE4IiBmb250LWZhbWlseT0iVmlyZ2lsLCBTZWdvZSBVSSBFbW9qaSIgZm9udC1zaXplPSIyMHB4IiBmaWxsPSIjMmI4YTNlIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyIgZGlyZWN0aW9uPSJsdHIiPldhbGxldCBCaXRjb2luPC90ZXh0PjwvZz48ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjMzMzY3OTE5OTIxODc1IDIzNy41NzYwMTkyODcxMDkzOCkgcm90YXRlKDAgNjYuNDAxMDMzMTUzOTQzNzMgMC41MzYyMTQ3Mzc5ODQ1MjI2KSI+PHBhdGggZD0iTTAuOTYgMC45MSBDMjMgMS4wMSwgMTEwLjU2IDEuMzgsIDEzMi44IDEuMzcgTTAuMDEgMC4zNSBDMjEuOCAwLjA0LCAxMDkuMjQgLTAuMDMsIDEzMS42IC0wLjMiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjMzMzY3OTE5OTIxODc1IDIzNy41NzYwMTkyODcxMDkzOCkgcm90YXRlKDAgNjYuNDAxMDMzMTUzOTQzNzMgMC41MzYyMTQ3Mzc5ODQ1MjI2KSI+PHBhdGggZD0iTTEwNC45OSA5LjM0IEMxMTQuNTQgOC4xLCAxMjMuNDIgMS41NCwgMTMxLjI2IDAuMzMgTTEwMi42NSAxMC43IEMxMTIuOTkgNi44NiwgMTE5LjggMi43NiwgMTMxLjY2IC0wLjQxIiBzdHJva2U9IiM1ZjNkYzQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSI+PC9wYXRoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OC4zMzM2NzkxOTkyMTg3NSAyMzcuNTc2MDE5Mjg3MTA5MzgpIHJvdGF0ZSgwIDY2LjQwMTAzMzE1Mzk0MzczIDAuNTM2MjE0NzM3OTg0NTIyNikiPjxwYXRoIGQ9Ik0xMDQuODcgLTExLjE4IEMxMTQuNiAtNS4zMywgMTIzLjUxIC00LjgsIDEzMS4yNiAwLjMzIE0xMDIuNTMgLTkuODIgQzExMi44OCAtNy40NSwgMTE5LjcyIC01LjM0LCAxMzEuNjYgLTAuNDEiIHN0cm9rZT0iIzVmM2RjNCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIj48L3BhdGg+PC9nPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTguNTUwNDc2MDc0MjE4NzUgMjIzLjU2MjgwNTE3NTc4MTI1KSByb3RhdGUoMCA3MS41IDEyLjUpIj48dGV4dCB4PSIwIiB5PSIxOCIgZm9udC1mYW1pbHk9IlZpcmdpbCwgU2Vnb2UgVUkgRW1vamkiIGZvbnQtc2l6ZT0iMjBweCIgZmlsbD0iI2Q5NDgwZiIgdGV4dC1hbmNob3I9InN0YXJ0IiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsiIGRpcmVjdGlvbj0ibHRyIj5XYWxsZXQgQW1hem9uPC90ZXh0PjwvZz48L3N2Zz4="},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file diff --git a/assets/js/9280a2e5.f3441417.js b/assets/js/9280a2e5.a1c331ac.js similarity index 97% rename from assets/js/9280a2e5.f3441417.js rename to assets/js/9280a2e5.a1c331ac.js index 4881d2d4d..4a3212362 100644 --- a/assets/js/9280a2e5.f3441417.js +++ b/assets/js/9280a2e5.a1c331ac.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2814],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(a),u=n,f=d["".concat(c,".").concat(u)]||d[u]||m[u]||l;return a?r.createElement(f,i(i({ref:t},p),{},{components:a})):r.createElement(f,i({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),l=a(3905);a(8209);const i={id:"hex",title:"Hex",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/hex",id:"build/api/schema/scalars/hex",title:"Hex",description:"The [Hex] scalar type represents an hexadecimal",source:"@site/docs/build/api/schema/scalars/hex.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/hex",permalink:"/build/api/schema/scalars/hex",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"hex",title:"Hex",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Hash",permalink:"/build/api/schema/scalars/hash"},next:{title:"Int",permalink:"/build/api/schema/scalars/int"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},b="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"The ","[Hex]"," scalar type represents an hexadecimal"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Hex\n")),(0,l.kt)("h3",{id:"member-of"},"Member of"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/authorized-key"},(0,l.kt)("inlineCode",{parentName:"a"},"AuthorizedKey"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/cross-validation-stamp"},(0,l.kt)("inlineCode",{parentName:"a"},"CrossValidationStamp"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ownership"},(0,l.kt)("inlineCode",{parentName:"a"},"Ownership"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,l.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,l.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2814],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=s(a),u=n,f=d["".concat(c,".").concat(u)]||d[u]||m[u]||l;return a?r.createElement(f,i(i({ref:t},p),{},{components:a})):r.createElement(f,i({ref:t},p))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>o,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),l=a(3905);a(8209);const i={id:"hex",title:"Hex",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/hex",id:"build/api/schema/scalars/hex",title:"Hex",description:"The [Hex] scalar type represents an hexadecimal",source:"@site/docs/build/api/schema/scalars/hex.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/hex",permalink:"/build/api/schema/scalars/hex",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"hex",title:"Hex",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Hash",permalink:"/build/api/schema/scalars/hash"},next:{title:"Int",permalink:"/build/api/schema/scalars/int"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},b="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(b,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"The ","[Hex]"," scalar type represents an hexadecimal"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Hex\n")),(0,l.kt)("h3",{id:"member-of"},"Member of"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/authorized-key"},(0,l.kt)("inlineCode",{parentName:"a"},"AuthorizedKey"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/cross-validation-stamp"},(0,l.kt)("inlineCode",{parentName:"a"},"CrossValidationStamp"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ownership"},(0,l.kt)("inlineCode",{parentName:"a"},"Ownership"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,l.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,l.kt)(d,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,l.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,l.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/9327017b.1ebad2c7.js b/assets/js/9327017b.0592043e.js similarity index 98% rename from assets/js/9327017b.1ebad2c7.js rename to assets/js/9327017b.0592043e.js index ccd8b1c42..8bec931d6 100644 --- a/assets/js/9327017b.1ebad2c7.js +++ b/assets/js/9327017b.0592043e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8016],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),i=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=i(a),u=r,b=p["".concat(c,".").concat(u)]||p[u]||m[u]||o;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const l={id:"data",title:"Data",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/data",id:"build/api/schema/objects/data",title:"Data",description:"[TransactionData] represents the data section for every transaction.",source:"@site/docs/build/api/schema/objects/data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/data",permalink:"/build/api/schema/objects/data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"data",title:"Data",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"CrossValidationStamp",permalink:"/build/api/schema/objects/cross-validation-stamp"},next:{title:"Endpoint",permalink:"/build/api/schema/objects/endpoint"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'Data.codeString ',id:"code-style-fontweight-normal-databcodebcodestring-",level:4},{value:'Data.contentContent ',id:"code-style-fontweight-normal-databcontentbcodecontent-",level:4},{value:'Data.ledgerLedger ',id:"code-style-fontweight-normal-databledgerbcodeledger-",level:4},{value:'Data.ownerships[Ownership] ',id:"code-style-fontweight-normal-databownershipsbcodeownership--",level:4},{value:'Data.recipients[Address] ',id:"code-style-fontweight-normal-databrecipientsbcodeaddress--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},f="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionData]"," represents the data section for every transaction.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Ledger: asset transfers"),(0,o.kt)("li",{parentName:"ul"},"Code: smart contract code (hexadecimal),"),(0,o.kt)("li",{parentName:"ul"},"Content: free zone for data hosting (string or hexadecimal)"),(0,o.kt)("li",{parentName:"ul"},"Ownership: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,o.kt)("li",{parentName:"ul"},"Recipients: For non asset transfers, the list of recipients of the transaction (e.g Smart contract interactions)")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Data {\n code: String\n content: Content\n ledger: Ledger\n ownerships: [Ownership]\n recipients: [Address]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databcodebcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"code"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databcontentbcodecontent-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"content"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/content"},(0,o.kt)("inlineCode",{parentName:"a"},"Content"))," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databledgerbcodeledger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"ledger"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databownershipsbcodeownership--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"ownerships"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ownership"},(0,o.kt)("inlineCode",{parentName:"a"},"[Ownership]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databrecipientsbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"recipients"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"[Address]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8016],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),i=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=i(a),u=r,b=p["".concat(c,".").concat(u)]||p[u]||m[u]||o;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,l[1]=s;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const l={id:"data",title:"Data",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/data",id:"build/api/schema/objects/data",title:"Data",description:"[TransactionData] represents the data section for every transaction.",source:"@site/docs/build/api/schema/objects/data.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/data",permalink:"/build/api/schema/objects/data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"data",title:"Data",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"CrossValidationStamp",permalink:"/build/api/schema/objects/cross-validation-stamp"},next:{title:"Endpoint",permalink:"/build/api/schema/objects/endpoint"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'Data.codeString ',id:"code-style-fontweight-normal-databcodebcodestring-",level:4},{value:'Data.contentContent ',id:"code-style-fontweight-normal-databcontentbcodecontent-",level:4},{value:'Data.ledgerLedger ',id:"code-style-fontweight-normal-databledgerbcodeledger-",level:4},{value:'Data.ownerships[Ownership] ',id:"code-style-fontweight-normal-databownershipsbcodeownership--",level:4},{value:'Data.recipients[Address] ',id:"code-style-fontweight-normal-databrecipientsbcodeaddress--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:m,Badge:u},f="wrapper";function h(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TransactionData]"," represents the data section for every transaction.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Ledger: asset transfers"),(0,o.kt)("li",{parentName:"ul"},"Code: smart contract code (hexadecimal),"),(0,o.kt)("li",{parentName:"ul"},"Content: free zone for data hosting (string or hexadecimal)"),(0,o.kt)("li",{parentName:"ul"},"Ownership: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership"),(0,o.kt)("li",{parentName:"ul"},"Recipients: For non asset transfers, the list of recipients of the transaction (e.g Smart contract interactions)")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Data {\n code: String\n content: Content\n ledger: Ledger\n ownerships: [Ownership]\n recipients: [Address]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databcodebcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"code"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databcontentbcodecontent-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"content"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/content"},(0,o.kt)("inlineCode",{parentName:"a"},"Content"))," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databledgerbcodeledger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"ledger"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databownershipsbcodeownership--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"ownerships"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/ownership"},(0,o.kt)("inlineCode",{parentName:"a"},"[Ownership]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-databrecipientsbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Data.",(0,o.kt)("b",null,"recipients"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"[Address]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.269128a3.js b/assets/js/935f2afb.269128a3.js deleted file mode 100644 index 42031053b..000000000 --- a/assets/js/935f2afb.269128a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Learn","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UCO token","href":"/learn/uco","docId":"learn/uco"},{"type":"link","label":"Ecosystem","href":"/learn/ecosystem","docId":"learn/ecosystem"},{"type":"link","label":"Patents","href":"/learn/patents","docId":"learn/patents"},{"type":"link","label":"Transaction chains","href":"/learn/transaction-chain","docId":"learn/transaction-chain"},{"type":"link","label":"Transaction fees","href":"/learn/fee","docId":"learn/fee"},{"type":"link","label":"Transaction types","href":"/learn/transaction-types","docId":"learn/transaction-types"},{"type":"category","label":"ARCH consensus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Proof of Work","href":"/learn/arch-consensus/proof-of-work","docId":"learn/arch-consensus/proof-of-work"}],"href":"/learn/arch-consensus/"},{"type":"category","label":"Cryptography","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Harware Root of Trust","href":"/learn/cryptography/hardware-root-of-trust","docId":"learn/cryptography/hardware-root-of-trust"}],"href":"/learn/cryptography/"},{"type":"category","label":"Decentralized Identity","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Keychain","href":"/learn/decentralized-id/keychain","docId":"learn/decentralized-id/keychain"}],"href":"/learn/decentralized-id/"},{"type":"link","label":"Governance","href":"/learn/governance/","docId":"learn/governance/governance"},{"type":"link","label":"OracleChain","href":"/learn/oracle-chain","docId":"learn/oracle-chain"},{"type":"category","label":"P2P","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bootstrapping","href":"/learn/p2p/bootstrapping","docId":"learn/p2p/bootstrapping"},{"type":"link","label":"Self Repair","href":"/learn/p2p/self-repair","docId":"learn/p2p/self-repair"}],"href":"/learn/p2p/"},{"type":"category","label":"Sharding","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Beacon Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Beacon Explorer","href":"/learn/sharding/beacon-chain/explorer","docId":"learn/sharding/beacon-chain/explorer"}],"href":"/learn/sharding/beacon-chain/"},{"type":"link","label":"Replication attestation","href":"/learn/sharding/replication-attestation","docId":"learn/sharding/replication-attestation"}],"href":"/learn/sharding/"},{"type":"link","label":"Tokens","href":"/learn/token","docId":"learn/token"}],"href":"/learn/"},{"type":"category","label":"Participate","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Archethic Web (AEWeb)","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How it works","href":"/participate/aeweb/how-it-works","docId":"participate/aeweb/how-it-works"},{"type":"link","label":"Domain Names","href":"/participate/aeweb/dns","docId":"participate/aeweb/dns"},{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CLI","href":"/participate/aeweb/usage/cli","docId":"participate/aeweb/usage/cli"},{"type":"link","label":"AEWeb Front End","href":"/participate/aeweb/usage/aeweb-front","docId":"participate/aeweb/usage/aeweb-front"}],"href":"/category/usage"},{"type":"link","label":"Automate deployments","href":"/participate/aeweb/automation","docId":"participate/aeweb/automation"}],"href":"/participate/aeweb/"},{"type":"category","label":"Archethic\'s bridge","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bridge Front End","href":"/participate/bridge/usage/bridge-front","docId":"participate/bridge/usage/bridge-front"}],"href":"/category/usage-1"}],"href":"/participate/bridge/"},{"type":"link","label":"Archethic\'s CLI","href":"/participate/cli/","docId":"participate/cli/archethic-cli"},{"type":"category","label":"Archethic Wallet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Communication with DApps","href":"/participate/wallet/dapps-communication","docId":"participate/wallet/dapps-communication"}],"href":"/participate/wallet/"}],"href":"/category/participate"},{"type":"category","label":"Build","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Clients","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Ledger wallet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Ledger Application API","href":"/build/clients/ledger-wallet/api","docId":"build/clients/ledger-wallet/api"},{"type":"link","label":"ADPU commands","href":"/build/clients/ledger-wallet/commands","docId":"build/clients/ledger-wallet/commands"}],"href":"/build/clients/ledger-wallet/"},{"type":"link","label":"Archethic\'s wallet access","href":"/build/clients/wallet-access","docId":"build/clients/wallet-access"},{"type":"link","label":"Archethic\'s wallet specification","href":"/build/clients/wallet-spec","docId":"build/clients/wallet-spec"}],"href":"/category/clients"},{"type":"category","label":"API","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"GraphQL","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Schema Documentation","href":"/schema","className":"navbar__toggle","docId":"build/api/schema/schema"},{"type":"category","label":"Directives","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"include","href":"/build/api/schema/directives/include","docId":"build/api/schema/directives/include"},{"type":"link","label":"skip","href":"/build/api/schema/directives/skip","docId":"build/api/schema/directives/skip"}]},{"type":"category","label":"Enums","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"ErrorContext","href":"/build/api/schema/enums/error-context","docId":"build/api/schema/enums/error-context"},{"type":"link","label":"SortOrder","href":"/build/api/schema/enums/sort-order","docId":"build/api/schema/enums/sort-order"}]},{"type":"category","label":"Objects","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AuthorizedKey","href":"/build/api/schema/objects/authorized-key","docId":"build/api/schema/objects/authorized-key"},{"type":"link","label":"Balance","href":"/build/api/schema/objects/balance","docId":"build/api/schema/objects/balance"},{"type":"link","label":"BeaconChainSummary","href":"/build/api/schema/objects/beacon-chain-summary","docId":"build/api/schema/objects/beacon-chain-summary"},{"type":"link","label":"CrossValidationStamp","href":"/build/api/schema/objects/cross-validation-stamp","docId":"build/api/schema/objects/cross-validation-stamp"},{"type":"link","label":"Data","href":"/build/api/schema/objects/data","docId":"build/api/schema/objects/data"},{"type":"link","label":"Endpoint","href":"/build/api/schema/objects/endpoint","docId":"build/api/schema/objects/endpoint"},{"type":"link","label":"LedgerOperations","href":"/build/api/schema/objects/ledger-operations","docId":"build/api/schema/objects/ledger-operations"},{"type":"link","label":"Ledger","href":"/build/api/schema/objects/ledger","docId":"build/api/schema/objects/ledger"},{"type":"link","label":"Node","href":"/build/api/schema/objects/node","docId":"build/api/schema/objects/node"},{"type":"link","label":"OracleData","href":"/build/api/schema/objects/oracle-data","docId":"build/api/schema/objects/oracle-data"},{"type":"link","label":"OracleServices","href":"/build/api/schema/objects/oracle-services","docId":"build/api/schema/objects/oracle-services"},{"type":"link","label":"Ownership","href":"/build/api/schema/objects/ownership","docId":"build/api/schema/objects/ownership"},{"type":"link","label":"SharedSecrets","href":"/build/api/schema/objects/shared-secrets","docId":"build/api/schema/objects/shared-secrets"},{"type":"link","label":"TokenBalance","href":"/build/api/schema/objects/token-balance","docId":"build/api/schema/objects/token-balance"},{"type":"link","label":"TokenLedger","href":"/build/api/schema/objects/token-ledger","docId":"build/api/schema/objects/token-ledger"},{"type":"link","label":"TokenTransfer","href":"/build/api/schema/objects/token-transfer","docId":"build/api/schema/objects/token-transfer"},{"type":"link","label":"Token","href":"/build/api/schema/objects/token","docId":"build/api/schema/objects/token"},{"type":"link","label":"TransactionAttestation","href":"/build/api/schema/objects/transaction-attestation","docId":"build/api/schema/objects/transaction-attestation"},{"type":"link","label":"TransactionError","href":"/build/api/schema/objects/transaction-error","docId":"build/api/schema/objects/transaction-error"},{"type":"link","label":"TransactionInput","href":"/build/api/schema/objects/transaction-input","docId":"build/api/schema/objects/transaction-input"},{"type":"link","label":"TransactionMovement","href":"/build/api/schema/objects/transaction-movement","docId":"build/api/schema/objects/transaction-movement"},{"type":"link","label":"TransactionSummary","href":"/build/api/schema/objects/transaction-summary","docId":"build/api/schema/objects/transaction-summary"},{"type":"link","label":"Transaction","href":"/build/api/schema/objects/transaction","docId":"build/api/schema/objects/transaction"},{"type":"link","label":"UcoData","href":"/build/api/schema/objects/uco-data","docId":"build/api/schema/objects/uco-data"},{"type":"link","label":"UcoLedger","href":"/build/api/schema/objects/uco-ledger","docId":"build/api/schema/objects/uco-ledger"},{"type":"link","label":"UcoTransfer","href":"/build/api/schema/objects/uco-transfer","docId":"build/api/schema/objects/uco-transfer"},{"type":"link","label":"UnspentOutput","href":"/build/api/schema/objects/unspent-output","docId":"build/api/schema/objects/unspent-output"},{"type":"link","label":"ValidationStamp","href":"/build/api/schema/objects/validation-stamp","docId":"build/api/schema/objects/validation-stamp"},{"type":"link","label":"Version","href":"/build/api/schema/objects/version","docId":"build/api/schema/objects/version"}]},{"type":"category","label":"Queries","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"balance","href":"/build/api/schema/queries/balance","docId":"build/api/schema/queries/balance"},{"type":"link","label":"beaconChainSummary","href":"/build/api/schema/queries/beacon-chain-summary","docId":"build/api/schema/queries/beacon-chain-summary"},{"type":"link","label":"genesisAddress","href":"/build/api/schema/queries/genesis-address","docId":"build/api/schema/queries/genesis-address"},{"type":"link","label":"lastTransaction","href":"/build/api/schema/queries/last-transaction","docId":"build/api/schema/queries/last-transaction"},{"type":"link","label":"nearestEndpoints","href":"/build/api/schema/queries/nearest-endpoints","docId":"build/api/schema/queries/nearest-endpoints"},{"type":"link","label":"networkTransactions","href":"/build/api/schema/queries/network-transactions","docId":"build/api/schema/queries/network-transactions"},{"type":"link","label":"nodes","href":"/build/api/schema/queries/nodes","docId":"build/api/schema/queries/nodes"},{"type":"link","label":"oracleData","href":"/build/api/schema/queries/oracle-data","docId":"build/api/schema/queries/oracle-data"},{"type":"link","label":"sharedSecrets","href":"/build/api/schema/queries/shared-secrets","docId":"build/api/schema/queries/shared-secrets"},{"type":"link","label":"token","href":"/build/api/schema/queries/token","docId":"build/api/schema/queries/token"},{"type":"link","label":"transactionChain","href":"/build/api/schema/queries/transaction-chain","docId":"build/api/schema/queries/transaction-chain"},{"type":"link","label":"transactionInputs","href":"/build/api/schema/queries/transaction-inputs","docId":"build/api/schema/queries/transaction-inputs"},{"type":"link","label":"transaction","href":"/build/api/schema/queries/transaction","docId":"build/api/schema/queries/transaction"},{"type":"link","label":"transactions","href":"/build/api/schema/queries/transactions","docId":"build/api/schema/queries/transactions"},{"type":"link","label":"version","href":"/build/api/schema/queries/version","docId":"build/api/schema/queries/version"}]},{"type":"category","label":"Scalars","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Address","href":"/build/api/schema/scalars/address","docId":"build/api/schema/scalars/address"},{"type":"link","label":"Boolean","href":"/build/api/schema/scalars/boolean","docId":"build/api/schema/scalars/boolean"},{"type":"link","label":"Content","href":"/build/api/schema/scalars/content","docId":"build/api/schema/scalars/content"},{"type":"link","label":"Float","href":"/build/api/schema/scalars/float","docId":"build/api/schema/scalars/float"},{"type":"link","label":"Hash","href":"/build/api/schema/scalars/hash","docId":"build/api/schema/scalars/hash"},{"type":"link","label":"Hex","href":"/build/api/schema/scalars/hex","docId":"build/api/schema/scalars/hex"},{"type":"link","label":"Int","href":"/build/api/schema/scalars/int","docId":"build/api/schema/scalars/int"},{"type":"link","label":"NonNegInteger","href":"/build/api/schema/scalars/non-neg-integer","docId":"build/api/schema/scalars/non-neg-integer"},{"type":"link","label":"P2pAvailabilities","href":"/build/api/schema/scalars/p2-p-availabilities","docId":"build/api/schema/scalars/p2-p-availabilities"},{"type":"link","label":"PosInteger","href":"/build/api/schema/scalars/pos-integer","docId":"build/api/schema/scalars/pos-integer"},{"type":"link","label":"PublicKey","href":"/build/api/schema/scalars/public-key","docId":"build/api/schema/scalars/public-key"},{"type":"link","label":"String","href":"/build/api/schema/scalars/string","docId":"build/api/schema/scalars/string"},{"type":"link","label":"Timestamp","href":"/build/api/schema/scalars/timestamp","docId":"build/api/schema/scalars/timestamp"},{"type":"link","label":"TokenProperties","href":"/build/api/schema/scalars/token-properties","docId":"build/api/schema/scalars/token-properties"},{"type":"link","label":"TransactionType","href":"/build/api/schema/scalars/transaction-type","docId":"build/api/schema/scalars/transaction-type"}]},{"type":"category","label":"Subscriptions","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"oracleUpdate","href":"/build/api/schema/subscriptions/oracle-update","docId":"build/api/schema/subscriptions/oracle-update"},{"type":"link","label":"transactionConfirmed","href":"/build/api/schema/subscriptions/transaction-confirmed","docId":"build/api/schema/subscriptions/transaction-confirmed"},{"type":"link","label":"transactionError","href":"/build/api/schema/subscriptions/transaction-error","docId":"build/api/schema/subscriptions/transaction-error"}]}],"href":"/category/graphql"}],"href":"/category/api"},{"type":"category","label":"Core development","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Account","href":"/build/core/account","docId":"build/core/account"},{"type":"category","label":"BeaconChain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"P2P availability sampling","href":"/build/core/beacon-chain/p2p-sampling","docId":"build/core/beacon-chain/p2p-sampling"}],"href":"/build/core/beacon-chain/"},{"type":"link","label":"Bootstrap","href":"/build/core/bootstrap","docId":"build/core/bootstrap"},{"type":"category","label":"Cryptography","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"TPM Implementation","href":"/build/core/cryptography/tpm","docId":"build/core/cryptography/tpm"},{"type":"link","label":"Yubikey implementation","href":"/build/core/cryptography/yubikey","docId":"build/core/cryptography/yubikey"}],"href":"/build/core/cryptography/"},{"type":"link","label":"Archethic\'s database","href":"/build/core/database","docId":"build/core/database"},{"type":"link","label":"Election","href":"/build/core/election","docId":"build/core/election"},{"type":"category","label":"governance","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CD","href":"/build/core/governance/code-proposals-cd","docId":"build/core/governance/code-proposals-cd"},{"type":"link","label":"CI","href":"/build/core/governance/code-proposals-ci","docId":"build/core/governance/code-proposals-ci"},{"type":"link","label":"Code Proposals","href":"/build/core/governance/code-proposals","docId":"build/core/governance/code-proposals"}]},{"type":"category","label":"Mining","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Pending transaction validation","href":"/build/core/mining/transaction-validation","docId":"build/core/mining/transaction-validation"},{"type":"link","label":"Proof of Work algorithm","href":"/build/core/mining/proof-of-work","docId":"build/core/mining/proof-of-work"},{"type":"link","label":"Transaction context retrieval","href":"/build/core/mining/transaction-context","docId":"build/core/mining/transaction-context"}],"href":"/build/core/mining/"},{"type":"category","label":"OracleChain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Memory database","href":"/build/core/oracle-chain/memory-table","docId":"build/core/oracle-chain/memory-table"},{"type":"link","label":"Scheduler","href":"/build/core/oracle-chain/scheduler","docId":"build/core/oracle-chain/scheduler"},{"type":"link","label":"Service","href":"/build/core/oracle-chain/service","docId":"build/core/oracle-chain/service"}],"href":"/build/core/oracle-chain/"},{"type":"category","label":"P2P","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Messaging","href":"/build/core/p2p/messaging","docId":"build/core/p2p/messaging"},{"type":"link","label":"Node","href":"/build/core/p2p/node","docId":"build/core/p2p/node"}],"href":"/build/core/p2p/"}],"href":"/build/core/"},{"type":"category","label":"SDK","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Dart SDK","href":"/build/sdk/dart","docId":"build/sdk/dart"},{"type":"link","label":"Go SDK","href":"/build/sdk/go","docId":"build/sdk/go"},{"type":"link","label":"Javascript SDK","href":"/build/sdk/js","docId":"build/sdk/js"}],"href":"/build/sdk/"},{"type":"category","label":"Smart Contracts","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Language","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Triggers","href":"/build/smart-contracts/language/triggers","docId":"build/smart-contracts/language/triggers"},{"type":"link","label":"Condition","href":"/build/smart-contracts/language/condition","docId":"build/smart-contracts/language/condition"},{"type":"link","label":"Actions","href":"/build/smart-contracts/language/actions","docId":"build/smart-contracts/language/actions"},{"type":"link","label":"Library","href":"/build/smart-contracts/language/library","docId":"build/smart-contracts/language/library"},{"type":"link","label":"Examples","href":"/build/smart-contracts/language/examples","docId":"build/smart-contracts/language/examples"},{"type":"category","label":"Legacy","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Examples","href":"/build/smart-contracts/language/legacy/examples","docId":"build/smart-contracts/language/legacy/examples"},{"type":"link","label":"Language","href":"/build/smart-contracts/language/legacy/language","docId":"build/smart-contracts/language/legacy/language"}],"href":"/build/smart-contracts/language/legacy/"}],"href":"/build/smart-contracts/language/"},{"type":"category","label":"Playground","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Build","href":"/build/smart-contracts/playground/build","docId":"build/smart-contracts/playground/build"},{"type":"link","label":"Deploy","href":"/build/smart-contracts/playground/deploy","docId":"build/smart-contracts/playground/deploy"},{"type":"link","label":"Function calls","href":"/build/smart-contracts/playground/functions","docId":"build/smart-contracts/playground/functions"},{"type":"link","label":"Transaction form","href":"/build/smart-contracts/playground/transaction-form","docId":"build/smart-contracts/playground/transaction-form"},{"type":"link","label":"Mock form","href":"/build/smart-contracts/playground/mock-form","docId":"build/smart-contracts/playground/mock-form"}],"href":"/build/smart-contracts/playground/"},{"type":"link","label":"Fees","href":"/build/smart-contracts/fees","docId":"build/smart-contracts/fees"}],"href":"/build/smart-contracts/"},{"type":"link","label":"Testnet","href":"/build/testnet","docId":"build/testnet"}],"href":"/category/build"},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AEWeb","href":"/FAQ/aeweb","docId":"FAQ/aeweb"},{"type":"link","label":"Archethic Bridge 2-ways","href":"/FAQ/bridge-2-ways","docId":"FAQ/bridge-2-ways"},{"type":"link","label":"Archethic Bridge $UCO one-way","href":"/FAQ/bridge","docId":"FAQ/bridge"},{"type":"link","label":"Wallet","href":"/FAQ/wallet","docId":"FAQ/wallet"}],"href":"/category/faq"},{"type":"link","label":"Contributing","href":"/contributing","docId":"contributing"}]},"docs":{"build/api/schema/directives/include":{"id":"build/api/schema/directives/include","title":"include","description":"Directs the executor to include this field or fragment only when the if argument is true.","sidebar":"docs"},"build/api/schema/directives/skip":{"id":"build/api/schema/directives/skip","title":"skip","description":"Directs the executor to skip this field or fragment when the if argument is true.","sidebar":"docs"},"build/api/schema/enums/error-context":{"id":"build/api/schema/enums/error-context","title":"ErrorContext","description":"Transaction error context","sidebar":"docs"},"build/api/schema/enums/sort-order":{"id":"build/api/schema/enums/sort-order","title":"SortOrder","description":"SortOrder represents the order of the result","sidebar":"docs"},"build/api/schema/objects/authorized-key":{"id":"build/api/schema/objects/authorized-key","title":"AuthorizedKey","description":"[AuthorizedKey] represents a authorized public key with the encrypted secret key for this given key.","sidebar":"docs"},"build/api/schema/objects/balance":{"id":"build/api/schema/objects/balance","title":"Balance","description":"[Balance] represents a ledger balance.","sidebar":"docs"},"build/api/schema/objects/beacon-chain-summary":{"id":"build/api/schema/objects/beacon-chain-summary","title":"BeaconChainSummary","description":"[Beacon Chain Summary] represents the beacon chain aggregate for a certain date","sidebar":"docs"},"build/api/schema/objects/cross-validation-stamp":{"id":"build/api/schema/objects/cross-validation-stamp","title":"CrossValidationStamp","description":"[CrossValidationStamp] represents the approval of the validation stamp by a cross validation node.","sidebar":"docs"},"build/api/schema/objects/data":{"id":"build/api/schema/objects/data","title":"Data","description":"[TransactionData] represents the data section for every transaction.","sidebar":"docs"},"build/api/schema/objects/endpoint":{"id":"build/api/schema/objects/endpoint","title":"Endpoint","description":"[Endpoint] represents a network node\'s endpoint","sidebar":"docs"},"build/api/schema/objects/ledger":{"id":"build/api/schema/objects/ledger","title":"Ledger","description":"[Ledger] represents the ledger operations to perform","sidebar":"docs"},"build/api/schema/objects/ledger-operations":{"id":"build/api/schema/objects/ledger-operations","title":"LedgerOperations","description":"[LedgerOperations] represents the ledger operations performed by the transaction","sidebar":"docs"},"build/api/schema/objects/node":{"id":"build/api/schema/objects/node","title":"Node","description":"[Node] represents a node in the network","sidebar":"docs"},"build/api/schema/objects/oracle-data":{"id":"build/api/schema/objects/oracle-data","title":"OracleData","description":"[OracleData] represents an oracle data.","sidebar":"docs"},"build/api/schema/objects/oracle-services":{"id":"build/api/schema/objects/oracle-services","title":"OracleServices","description":"No description","sidebar":"docs"},"build/api/schema/objects/ownership":{"id":"build/api/schema/objects/ownership","title":"Ownership","description":"[Ownership] represents a block to set a secret and the authorized public keys able to decrypt the secret","sidebar":"docs"},"build/api/schema/objects/shared-secrets":{"id":"build/api/schema/objects/shared-secrets","title":"SharedSecrets","description":"[SharedSecrets] represents the public shared secret information","sidebar":"docs"},"build/api/schema/objects/token":{"id":"build/api/schema/objects/token","title":"Token","description":"[token] represents a token metadata.","sidebar":"docs"},"build/api/schema/objects/token-balance":{"id":"build/api/schema/objects/token-balance","title":"TokenBalance","description":"[tokenBalance] represents a token ledger balance.","sidebar":"docs"},"build/api/schema/objects/token-ledger":{"id":"build/api/schema/objects/token-ledger","title":"TokenLedger","description":"[TokenLedger] represents the transfers to perform on the UCO ledger","sidebar":"docs"},"build/api/schema/objects/token-transfer":{"id":"build/api/schema/objects/token-transfer","title":"TokenTransfer","description":"[TokenTransfer] represents the an asset transfer","sidebar":"docs"},"build/api/schema/objects/transaction":{"id":"build/api/schema/objects/transaction","title":"Transaction","description":"[Transaction] represents a unitary transaction in the Archethic network.","sidebar":"docs"},"build/api/schema/objects/transaction-attestation":{"id":"build/api/schema/objects/transaction-attestation","title":"TransactionAttestation","description":"[TransactionAttestation] represents an attestation when a transaction is successfully validated and stored.","sidebar":"docs"},"build/api/schema/objects/transaction-error":{"id":"build/api/schema/objects/transaction-error","title":"TransactionError","description":"[TransactionError] represents an error.","sidebar":"docs"},"build/api/schema/objects/transaction-input":{"id":"build/api/schema/objects/transaction-input","title":"TransactionInput","description":"[TransactionInput] represents the inputs from the transaction","sidebar":"docs"},"build/api/schema/objects/transaction-movement":{"id":"build/api/schema/objects/transaction-movement","title":"TransactionMovement","description":"[TransactionMovement] represents ledger transaction movement","sidebar":"docs"},"build/api/schema/objects/transaction-summary":{"id":"build/api/schema/objects/transaction-summary","title":"TransactionSummary","description":"[Transaction Summary] Represents transaction header or extract to summarize it","sidebar":"docs"},"build/api/schema/objects/uco-data":{"id":"build/api/schema/objects/uco-data","title":"UcoData","description":"No description","sidebar":"docs"},"build/api/schema/objects/uco-ledger":{"id":"build/api/schema/objects/uco-ledger","title":"UcoLedger","description":"[UCOLedger] represents the transfers to perform on the UCO ledger","sidebar":"docs"},"build/api/schema/objects/uco-transfer":{"id":"build/api/schema/objects/uco-transfer","title":"UcoTransfer","description":"[UCOTransfer] represents the an asset transfer","sidebar":"docs"},"build/api/schema/objects/unspent-output":{"id":"build/api/schema/objects/unspent-output","title":"UnspentOutput","description":"[UnspentOutput] represents the remaining unspent output of the transaction.","sidebar":"docs"},"build/api/schema/objects/validation-stamp":{"id":"build/api/schema/objects/validation-stamp","title":"ValidationStamp","description":"[ValidationStamp] represents the validation performs by the coordinator","sidebar":"docs"},"build/api/schema/objects/version":{"id":"build/api/schema/objects/version","title":"Version","description":"[Version] represents code, transaction and protocol version","sidebar":"docs"},"build/api/schema/queries/balance":{"id":"build/api/schema/queries/balance","title":"balance","description":"Query the network to find a balance from an address coming from the latest transaction on the chain","sidebar":"docs"},"build/api/schema/queries/beacon-chain-summary":{"id":"build/api/schema/queries/beacon-chain-summary","title":"beaconChainSummary","description":"Query the network to get the value of the summary of beacon chain at a specific time or the last value","sidebar":"docs"},"build/api/schema/queries/genesis-address":{"id":"build/api/schema/queries/genesis-address","title":"genesisAddress","description":"Query the network to find the genesis address of a transaction","sidebar":"docs"},"build/api/schema/queries/last-transaction":{"id":"build/api/schema/queries/last-transaction","title":"lastTransaction","description":"Query the network to find the last transaction from an address","sidebar":"docs"},"build/api/schema/queries/nearest-endpoints":{"id":"build/api/schema/queries/nearest-endpoints","title":"nearestEndpoints","description":"List the nearest endpoints nodes from the client\'s IP","sidebar":"docs"},"build/api/schema/queries/network-transactions":{"id":"build/api/schema/queries/network-transactions","title":"networkTransactions","description":"Query the network to list the transaction on the type","sidebar":"docs"},"build/api/schema/queries/nodes":{"id":"build/api/schema/queries/nodes","title":"nodes","description":"List all the nodes registered in the network","sidebar":"docs"},"build/api/schema/queries/oracle-data":{"id":"build/api/schema/queries/oracle-data","title":"oracleData","description":"Query the network to get the value of an oracle at a specific time or the last value","sidebar":"docs"},"build/api/schema/queries/shared-secrets":{"id":"build/api/schema/queries/shared-secrets","title":"sharedSecrets","description":"Query the network to get the storage nonce public key","sidebar":"docs"},"build/api/schema/queries/token":{"id":"build/api/schema/queries/token","title":"token","description":"Query the network to find a token\'s data","sidebar":"docs"},"build/api/schema/queries/transaction":{"id":"build/api/schema/queries/transaction","title":"transaction","description":"Query the network to find a transaction","sidebar":"docs"},"build/api/schema/queries/transaction-chain":{"id":"build/api/schema/queries/transaction-chain","title":"transactionChain","description":"Query the network to find a transaction chain","sidebar":"docs"},"build/api/schema/queries/transaction-inputs":{"id":"build/api/schema/queries/transaction-inputs","title":"transactionInputs","description":"Query the network to list the transaction inputs from an address","sidebar":"docs"},"build/api/schema/queries/transactions":{"id":"build/api/schema/queries/transactions","title":"transactions","description":"Query the network to find all the transactions locally stored","sidebar":"docs"},"build/api/schema/queries/version":{"id":"build/api/schema/queries/version","title":"version","description":"List protocol, transaction and code versions","sidebar":"docs"},"build/api/schema/scalars/address":{"id":"build/api/schema/scalars/address","title":"Address","description":"The [Address] scalar type represents a transaction\'s address.","sidebar":"docs"},"build/api/schema/scalars/boolean":{"id":"build/api/schema/scalars/boolean","title":"Boolean","description":"The Boolean scalar type represents true or false.","sidebar":"docs"},"build/api/schema/scalars/content":{"id":"build/api/schema/scalars/content","title":"Content","description":"The [Content] scalar type represents transaction content. Depending if the content can displayed","sidebar":"docs"},"build/api/schema/scalars/float":{"id":"build/api/schema/scalars/float","title":"Float","description":"The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.","sidebar":"docs"},"build/api/schema/scalars/hash":{"id":"build/api/schema/scalars/hash","title":"Hash","description":"The [Hash] scalar type represents a cryptographic hash used in","sidebar":"docs"},"build/api/schema/scalars/hex":{"id":"build/api/schema/scalars/hex","title":"Hex","description":"The [Hex] scalar type represents an hexadecimal","sidebar":"docs"},"build/api/schema/scalars/int":{"id":"build/api/schema/scalars/int","title":"Int","description":"The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.","sidebar":"docs"},"build/api/schema/scalars/non-neg-integer":{"id":"build/api/schema/scalars/non-neg-integer","title":"NonNegInteger","description":"The [Non Negative Integer] scalar type represents a non negative number","sidebar":"docs"},"build/api/schema/scalars/p2-p-availabilities":{"id":"build/api/schema/scalars/p2-p-availabilities","title":"P2pAvailabilities","description":"No description","sidebar":"docs"},"build/api/schema/scalars/pos-integer":{"id":"build/api/schema/scalars/pos-integer","title":"PosInteger","description":"The [Positive Integer] scalar type represents a positive number","sidebar":"docs"},"build/api/schema/scalars/public-key":{"id":"build/api/schema/scalars/public-key","title":"PublicKey","description":"The [PublicKey] scalar type represents a public key.","sidebar":"docs"},"build/api/schema/scalars/string":{"id":"build/api/schema/scalars/string","title":"String","description":"The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.","sidebar":"docs"},"build/api/schema/scalars/timestamp":{"id":"build/api/schema/scalars/timestamp","title":"Timestamp","description":"The [Timestamp] scalar type represents a UNIX timestamp in seconds","sidebar":"docs"},"build/api/schema/scalars/token-properties":{"id":"build/api/schema/scalars/token-properties","title":"TokenProperties","description":"[tokenProperties] represents a token\'s properties","sidebar":"docs"},"build/api/schema/scalars/transaction-type":{"id":"build/api/schema/scalars/transaction-type","title":"TransactionType","description":"The [TransactionType] scalar type represents a transaction type","sidebar":"docs"},"build/api/schema/schema":{"id":"build/api/schema/schema","title":"Schema Documentation","description":"This documentation has been automatically generated from the GraphQL schema.","sidebar":"docs"},"build/api/schema/subscriptions/oracle-update":{"id":"build/api/schema/subscriptions/oracle-update","title":"oracleUpdate","description":"Subscribe to be notified when a new oracle data is stored","sidebar":"docs"},"build/api/schema/subscriptions/transaction-confirmed":{"id":"build/api/schema/subscriptions/transaction-confirmed","title":"transactionConfirmed","description":"Subscribe to be notified when a transaction is stored (if acted as welcome node)","sidebar":"docs"},"build/api/schema/subscriptions/transaction-error":{"id":"build/api/schema/subscriptions/transaction-error","title":"transactionError","description":"Subscribe to be notified when a transaction is on error","sidebar":"docs"},"build/clients/ledger-wallet/api":{"id":"build/clients/ledger-wallet/api","title":"Ledger Application API","description":"Reference Repository:","sidebar":"docs"},"build/clients/ledger-wallet/commands":{"id":"build/clients/ledger-wallet/commands","title":"ADPU commands","description":"APDU commands","sidebar":"docs"},"build/clients/ledger-wallet/ledger-wallet":{"id":"build/clients/ledger-wallet/ledger-wallet","title":"Ledger wallet","description":"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets.","sidebar":"docs"},"build/clients/wallet-access":{"id":"build/clients/wallet-access","title":"Archethic\'s wallet access","description":"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it.","sidebar":"docs"},"build/clients/wallet-spec":{"id":"build/clients/wallet-spec","title":"Archethic\'s wallet specification","description":"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form.","sidebar":"docs"},"build/core/account":{"id":"build/core/account","title":"Account","description":"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.","sidebar":"docs"},"build/core/beacon-chain/beacon-chain":{"id":"build/core/beacon-chain/beacon-chain","title":"BeaconChain","description":"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system.","sidebar":"docs"},"build/core/beacon-chain/p2p-sampling":{"id":"build/core/beacon-chain/p2p-sampling","title":"P2P availability sampling","description":"Each beacon chain\'s subset is responsible to perform verification of the nodes is in charge to monitor.","sidebar":"docs"},"build/core/bootstrap":{"id":"build/core/bootstrap","title":"Bootstrap","description":"When the Archethic node, a task is launched to perform the node bootstrapping to join the network.","sidebar":"docs"},"build/core/core":{"id":"build/core/core","title":"Core development","description":"Archethic Node repository can be found here","sidebar":"docs"},"build/core/cryptography/cryptography":{"id":"build/core/cryptography/cryptography","title":"Cryptography","description":"Node cryptography is maintains through keystores","sidebar":"docs"},"build/core/cryptography/tpm":{"id":"build/core/cryptography/tpm","title":"TPM Implementation","description":"This section explains the HRT TPM Library implementation.","sidebar":"docs"},"build/core/cryptography/yubikey":{"id":"build/core/cryptography/yubikey","title":"Yubikey implementation","description":"This section explains the HRT Yubikey Library implementation.","sidebar":"docs"},"build/core/database":{"id":"build/core/database","title":"Archethic\'s database","description":"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support","sidebar":"docs"},"build/core/election":{"id":"build/core/election","title":"Election","description":"Archethic provides rotating algorithm to elect validation and storage nodes.","sidebar":"docs"},"build/core/governance/code-proposals":{"id":"build/core/governance/code-proposals","title":"Code Proposals","description":"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain","sidebar":"docs"},"build/core/governance/code-proposals-cd":{"id":"build/core/governance/code-proposals-cd","title":"CD","description":"The archethic-cd target produces an image capable of running archethic_node release.","sidebar":"docs"},"build/core/governance/code-proposals-ci":{"id":"build/core/governance/code-proposals-ci","title":"CI","description":"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI.","sidebar":"docs"},"build/core/mining/mining":{"id":"build/core/mining/mining","title":"Mining","description":"Transaction validation (aka Mining) defines processes and validations algorithms.","sidebar":"docs"},"build/core/mining/proof-of-work":{"id":"build/core/mining/proof-of-work","title":"Proof of Work algorithm","description":"The Archethic\'s proof of work algorithm defines way to assert the validity of the origin signature.","sidebar":"docs"},"build/core/mining/transaction-context":{"id":"build/core/mining/transaction-context","title":"Transaction context retrieval","description":"When a transaction is under validation, after the pending transaction validation, the nodes are fetching the context of the transaction.","sidebar":"docs"},"build/core/mining/transaction-validation":{"id":"build/core/mining/transaction-validation","title":"Pending transaction validation","description":"When a transaction is under validation a process is started to perform the ARCH consensus workflow.","sidebar":"docs"},"build/core/oracle-chain/memory-table":{"id":"build/core/oracle-chain/memory-table","title":"OracleChain Memory Tables","description":"OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.","sidebar":"docs"},"build/core/oracle-chain/oracle-chain":{"id":"build/core/oracle-chain/oracle-chain","title":"OracleChain","description":"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.","sidebar":"docs"},"build/core/oracle-chain/scheduler":{"id":"build/core/oracle-chain/scheduler","title":"OracleChain Scheduler","description":"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting.","sidebar":"docs"},"build/core/oracle-chain/service":{"id":"build/core/oracle-chain/service","title":"Oracle Chain Service","description":"OracleChain provides a way to extend it and to add more services to the scheduler.","sidebar":"docs"},"build/core/p2p/messaging":{"id":"build/core/p2p/messaging","title":"Messaging","description":"Archethic Blockchain is used a brand new P2P layer from the Supervised Multicast, but to ensure the best data transmission possible, we are using two modern approaches: Stream Multiplexer and Binary Protocol.","sidebar":"docs"},"build/core/p2p/node":{"id":"build/core/p2p/node","title":"Node","description":"Data structure","sidebar":"docs"},"build/core/p2p/p2p":{"id":"build/core/p2p/p2p","title":"P2P","description":"","sidebar":"docs"},"build/sdk/dart":{"id":"build/sdk/dart","title":"Dart SDK","description":"Archethic Blockchain Official Dart SDK available on Github","sidebar":"docs"},"build/sdk/go":{"id":"build/sdk/go","title":"Go SDK","description":"Archethic Blockchain Official Go SDK is available on Github","sidebar":"docs"},"build/sdk/js":{"id":"build/sdk/js","title":"Javascript SDK","description":"Archethic Blockchain Official Javascript SDK is available on Github","sidebar":"docs"},"build/sdk/sdk":{"id":"build/sdk/sdk","title":"SDK","description":"","sidebar":"docs"},"build/smart-contracts/fees":{"id":"build/smart-contracts/fees","title":"Smart Contracts - Fees","description":"","sidebar":"docs"},"build/smart-contracts/language/actions":{"id":"build/smart-contracts/language/actions","title":"Smart Contracts - Actions block","description":"The actions block is the code executed when the associated trigger is triggered.","sidebar":"docs"},"build/smart-contracts/language/condition":{"id":"build/smart-contracts/language/condition","title":"Smart Contracts - Condition block","description":"Conditions are blocks which purpose is to check the validity of a transaction.","sidebar":"docs"},"build/smart-contracts/language/examples":{"id":"build/smart-contracts/language/examples","title":"Smart Contracts - Examples","description":"Hello World","sidebar":"docs"},"build/smart-contracts/language/language":{"id":"build/smart-contracts/language/language","title":"Smart Contracts - Language","description":"A Smart Contract is defined as followed:","sidebar":"docs"},"build/smart-contracts/language/legacy/examples":{"id":"build/smart-contracts/language/legacy/examples","title":"Smart Contract examples","description":"Recurrent transfer","sidebar":"docs"},"build/smart-contracts/language/legacy/language":{"id":"build/smart-contracts/language/legacy/language","title":"Smart Contract Language","description":"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:","sidebar":"docs"},"build/smart-contracts/language/legacy/smart-contracts":{"id":"build/smart-contracts/language/legacy/smart-contracts","title":"Smart Contracts (Legacy)","description":"This specification is deprecated and will be still be valid for SC before 1.1.0. The new version is available here","sidebar":"docs"},"build/smart-contracts/language/library":{"id":"build/smart-contracts/language/library","title":"Smart Contracts - Library","description":"The Smart Contract library is composed of many modules with many functions in each.","sidebar":"docs"},"build/smart-contracts/language/triggers":{"id":"build/smart-contracts/language/triggers","title":"Smart Contracts - Triggers","description":"Contract triggered by a transaction","sidebar":"docs"},"build/smart-contracts/playground/build":{"id":"build/smart-contracts/playground/build","title":"Smart Contracts Playground - Build","description":"Let\'s create a small smart contracts that reacts to two different triggers. We\'ll then be able to test them separately.","sidebar":"docs"},"build/smart-contracts/playground/deploy":{"id":"build/smart-contracts/playground/deploy","title":"Smart Contracts Playground - Deploy","description":"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn\'t meet the security standard we expect.","sidebar":"docs"},"build/smart-contracts/playground/functions":{"id":"build/smart-contracts/playground/functions","title":"Smart Contracts Playground - Functions","description":"Since 1.3, we introduced the capability to have some public functions in to smart contract code.","sidebar":"docs"},"build/smart-contracts/playground/mock-form":{"id":"build/smart-contracts/playground/mock-form","title":"Smart Contracts Playground - Mock form","description":"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc.","sidebar":"docs"},"build/smart-contracts/playground/sc-playground":{"id":"build/smart-contracts/playground/sc-playground","title":"Smart Contracts Playground","description":"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.","sidebar":"docs"},"build/smart-contracts/playground/transaction-form":{"id":"build/smart-contracts/playground/transaction-form","title":"Smart Contracts Playground - Transaction form","description":"The transaction form is a form that you might encounter at different places:","sidebar":"docs"},"build/smart-contracts/smart-contracts":{"id":"build/smart-contracts/smart-contracts","title":"Smart Contracts","description":"Smart-contracts are in computing what robots are in real life: they perform actions according to events.","sidebar":"docs"},"build/testnet":{"id":"build/testnet","title":"Testnet","description":"Local","sidebar":"docs"},"contributing":{"id":"contributing","title":"Contributing","description":"This documentation is maintained by the Archethic Foundation. It\'s an open source project and aims to be the most extensive","sidebar":"docs"},"FAQ/aeweb":{"id":"FAQ/aeweb","title":"AEWeb","description":"General","sidebar":"docs"},"FAQ/bridge":{"id":"FAQ/bridge","title":"Archethic Bridge $UCO one-way","description":"General","sidebar":"docs"},"FAQ/bridge-2-ways":{"id":"FAQ/bridge-2-ways","title":"Archethic Bridge 2-ways","description":"General","sidebar":"docs"},"FAQ/wallet":{"id":"FAQ/wallet","title":"Wallet","description":"General","sidebar":"docs"},"learn/arch-consensus/arch-consensus":{"id":"learn/arch-consensus/arch-consensus","title":"ARCH consensus","description":"Archethic Blockchain is using a new consensus called ARCH (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput.","sidebar":"docs"},"learn/arch-consensus/proof-of-work":{"id":"learn/arch-consensus/proof-of-work","title":"Proof of Work","description":"Others blockchains are using the concept of Proof of Work to ensure an unpredictable and pseudo random election of block validation (mining).","sidebar":"docs"},"learn/archethic-intro":{"id":"learn/archethic-intro","title":"Archethic introduction","description":"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),","sidebar":"docs"},"learn/cryptography/cryptography":{"id":"learn/cryptography/cryptography","title":"Cryptography","description":"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.","sidebar":"docs"},"learn/cryptography/hardware-root-of-trust":{"id":"learn/cryptography/hardware-root-of-trust","title":"Harware Root of Trust","description":"What is hardware root of trust?","sidebar":"docs"},"learn/decentralized-id/decentralized-id":{"id":"learn/decentralized-id/decentralized-id","title":"Decentralized Identity","description":"Identity","sidebar":"docs"},"learn/decentralized-id/keychain":{"id":"learn/decentralized-id/keychain","title":"Keychain","description":"Archethic\'s keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains.","sidebar":"docs"},"learn/ecosystem":{"id":"learn/ecosystem","title":"Ecosystem","description":"The technical and functional parameters that make Archethic unique and ready for global adoption:","sidebar":"docs"},"learn/fee":{"id":"learn/fee","title":"Transaction fees","description":"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction\'s distribution.","sidebar":"docs"},"learn/governance/governance":{"id":"learn/governance/governance","title":"Governance","description":"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,","sidebar":"docs"},"learn/oracle-chain":{"id":"learn/oracle-chain","title":"OracleChain","description":"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.","sidebar":"docs"},"learn/p2p/bootstrapping":{"id":"learn/p2p/bootstrapping","title":"Bootstrapping","description":"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed","sidebar":"docs"},"learn/p2p/p2p":{"id":"learn/p2p/p2p","title":"P2P","description":"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys","sidebar":"docs"},"learn/p2p/self-repair":{"id":"learn/p2p/self-repair","title":"Self Repair","description":"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able","sidebar":"docs"},"learn/patents":{"id":"learn/patents","title":"Patents","description":"12 patents to build a new ecosystem","sidebar":"docs"},"learn/sharding/beacon-chain/beacon-chain":{"id":"learn/sharding/beacon-chain/beacon-chain","title":"Beacon Chain","description":"Archethic Blockchain is using Sharding mechanism to ensure scalability in terms of storage and validation.","sidebar":"docs"},"learn/sharding/beacon-chain/explorer":{"id":"learn/sharding/beacon-chain/explorer","title":"Beacon Explorer","description":"Archethic Blockchain leverages Sharding to outperform the exiting blockchains using shards called: subsets and BeaconChain Explorer displays the entire transactions across subsets.","sidebar":"docs"},"learn/sharding/replication-attestation":{"id":"learn/sharding/replication-attestation","title":"Replication attestation","description":"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.","sidebar":"docs"},"learn/sharding/sharding":{"id":"learn/sharding/sharding","title":"Sharding","description":"To become an unlimited decentralized network, Archethic Blockchain is using a feature called Sharding, used to split processing and storage power to ensure a scalable system.","sidebar":"docs"},"learn/token":{"id":"learn/token","title":"Tokens","description":"Tokens is an important feature on Archethic.","sidebar":"docs"},"learn/transaction-chain":{"id":"learn/transaction-chain","title":"Transaction chains","description":"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - transaction with its own validation evidences.","sidebar":"docs"},"learn/transaction-types":{"id":"learn/transaction-types","title":"Transaction types","description":"The transaction\'s type is used to give a hint on what the transaction contains. Some types must respect some conditions.","sidebar":"docs"},"learn/uco":{"id":"learn/uco","title":"UCO token","description":"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.","sidebar":"docs"},"participate/aeweb/aeweb":{"id":"participate/aeweb/aeweb","title":"Archethic Web (AEWeb)","description":"Archethic has developed a new solution to host websites on a decentralized network to avoid censorship, increase security and have high-availability and resiliency.","sidebar":"docs"},"participate/aeweb/automation":{"id":"participate/aeweb/automation","title":"Automate deployments","description":"AEWeb\'s CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.","sidebar":"docs"},"participate/aeweb/dns":{"id":"participate/aeweb/dns","title":"AEWeb - Domain names","description":"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website\'s URL nicer.","sidebar":"docs"},"participate/aeweb/how-it-works":{"id":"participate/aeweb/how-it-works","title":"AEWeb - How it works","description":"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain.","sidebar":"docs"},"participate/aeweb/usage/aeweb-front":{"id":"participate/aeweb/usage/aeweb-front","title":"AEWeb - Application Front End","description":"Access//aeweb.archethic.net","sidebar":"docs"},"participate/aeweb/usage/cli":{"id":"participate/aeweb/usage/cli","title":"AEWeb - CLI","description":"Repository//github.com/archethic-foundation/aeweb-cli","sidebar":"docs"},"participate/bridge/bridge":{"id":"participate/bridge/bridge","title":"Archethic\'s bridge","description":"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way.","sidebar":"docs"},"participate/bridge/usage/bridge-front":{"id":"participate/bridge/usage/bridge-front","title":"Bridge - Application Front End","description":"Currently, the two-way bridge is available exclusively on the testnet.","sidebar":"docs"},"participate/cli/archethic-cli":{"id":"participate/cli/archethic-cli","title":"Archethic\'s CLI","description":"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also","sidebar":"docs"},"participate/wallet/archethic-wallet":{"id":"participate/wallet/archethic-wallet","title":"Archethic Wallet","description":"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.","sidebar":"docs"},"participate/wallet/dapps-communication":{"id":"participate/wallet/dapps-communication","title":"Communication with DApps","description":"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.9e849e78.js b/assets/js/935f2afb.9e849e78.js new file mode 100644 index 000000000..e41080a8b --- /dev/null +++ b/assets/js/935f2afb.9e849e78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Learn","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UCO token","href":"/learn/uco","docId":"learn/uco"},{"type":"link","label":"Ecosystem","href":"/learn/ecosystem","docId":"learn/ecosystem"},{"type":"link","label":"Patents","href":"/learn/patents","docId":"learn/patents"},{"type":"link","label":"Transaction chains","href":"/learn/transaction-chain","docId":"learn/transaction-chain"},{"type":"link","label":"Transaction fees","href":"/learn/fee","docId":"learn/fee"},{"type":"link","label":"Transaction types","href":"/learn/transaction-types","docId":"learn/transaction-types"},{"type":"category","label":"ARCH consensus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Proof of Work","href":"/learn/arch-consensus/proof-of-work","docId":"learn/arch-consensus/proof-of-work"}],"href":"/learn/arch-consensus/"},{"type":"category","label":"Cryptography","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hardware Root of Trust","href":"/learn/cryptography/hardware-root-of-trust","docId":"learn/cryptography/hardware-root-of-trust"}],"href":"/learn/cryptography/"},{"type":"category","label":"Decentralized Identity","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Keychain","href":"/learn/decentralized-id/keychain","docId":"learn/decentralized-id/keychain"}],"href":"/learn/decentralized-id/"},{"type":"link","label":"Governance","href":"/learn/governance/","docId":"learn/governance/governance"},{"type":"link","label":"OracleChain","href":"/learn/oracle-chain","docId":"learn/oracle-chain"},{"type":"category","label":"P2P","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bootstrapping","href":"/learn/p2p/bootstrapping","docId":"learn/p2p/bootstrapping"},{"type":"link","label":"Self Repair","href":"/learn/p2p/self-repair","docId":"learn/p2p/self-repair"}],"href":"/learn/p2p/"},{"type":"category","label":"Sharding","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Beacon Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Beacon Explorer","href":"/learn/sharding/beacon-chain/explorer","docId":"learn/sharding/beacon-chain/explorer"}],"href":"/learn/sharding/beacon-chain/"},{"type":"link","label":"Replication attestation","href":"/learn/sharding/replication-attestation","docId":"learn/sharding/replication-attestation"}],"href":"/learn/sharding/"},{"type":"link","label":"Tokens","href":"/learn/token","docId":"learn/token"}],"href":"/learn/"},{"type":"category","label":"Participate","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Archethic Web (AEWeb)","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How it works","href":"/participate/aeweb/how-it-works","docId":"participate/aeweb/how-it-works"},{"type":"link","label":"Domain Names","href":"/participate/aeweb/dns","docId":"participate/aeweb/dns"},{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CLI","href":"/participate/aeweb/usage/cli","docId":"participate/aeweb/usage/cli"},{"type":"link","label":"AEWeb Front End","href":"/participate/aeweb/usage/aeweb-front","docId":"participate/aeweb/usage/aeweb-front"}],"href":"/category/usage"},{"type":"link","label":"Automate deployments","href":"/participate/aeweb/automation","docId":"participate/aeweb/automation"}],"href":"/participate/aeweb/"},{"type":"category","label":"Archethic\'s bridge","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Usage","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Bridge Front End","href":"/participate/bridge/usage/bridge-front","docId":"participate/bridge/usage/bridge-front"}],"href":"/category/usage-1"}],"href":"/participate/bridge/"},{"type":"link","label":"Archethic\'s CLI","href":"/participate/cli/","docId":"participate/cli/archethic-cli"},{"type":"category","label":"Archethic Wallet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Communication with DApps","href":"/participate/wallet/dapps-communication","docId":"participate/wallet/dapps-communication"}],"href":"/participate/wallet/"}],"href":"/category/participate"},{"type":"category","label":"Build","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Clients","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Ledger wallet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Ledger Application API","href":"/build/clients/ledger-wallet/api","docId":"build/clients/ledger-wallet/api"},{"type":"link","label":"ADPU commands","href":"/build/clients/ledger-wallet/commands","docId":"build/clients/ledger-wallet/commands"}],"href":"/build/clients/ledger-wallet/"},{"type":"link","label":"Archethic\'s wallet access","href":"/build/clients/wallet-access","docId":"build/clients/wallet-access"},{"type":"link","label":"Archethic\'s wallet specification","href":"/build/clients/wallet-spec","docId":"build/clients/wallet-spec"}],"href":"/category/clients"},{"type":"category","label":"API","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"GraphQL","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Schema Documentation","href":"/schema","className":"navbar__toggle","docId":"build/api/schema/schema"},{"type":"category","label":"Directives","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"include","href":"/build/api/schema/directives/include","docId":"build/api/schema/directives/include"},{"type":"link","label":"skip","href":"/build/api/schema/directives/skip","docId":"build/api/schema/directives/skip"}]},{"type":"category","label":"Enums","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"ErrorContext","href":"/build/api/schema/enums/error-context","docId":"build/api/schema/enums/error-context"},{"type":"link","label":"SortOrder","href":"/build/api/schema/enums/sort-order","docId":"build/api/schema/enums/sort-order"}]},{"type":"category","label":"Objects","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AuthorizedKey","href":"/build/api/schema/objects/authorized-key","docId":"build/api/schema/objects/authorized-key"},{"type":"link","label":"Balance","href":"/build/api/schema/objects/balance","docId":"build/api/schema/objects/balance"},{"type":"link","label":"BeaconChainSummary","href":"/build/api/schema/objects/beacon-chain-summary","docId":"build/api/schema/objects/beacon-chain-summary"},{"type":"link","label":"CrossValidationStamp","href":"/build/api/schema/objects/cross-validation-stamp","docId":"build/api/schema/objects/cross-validation-stamp"},{"type":"link","label":"Data","href":"/build/api/schema/objects/data","docId":"build/api/schema/objects/data"},{"type":"link","label":"Endpoint","href":"/build/api/schema/objects/endpoint","docId":"build/api/schema/objects/endpoint"},{"type":"link","label":"LedgerOperations","href":"/build/api/schema/objects/ledger-operations","docId":"build/api/schema/objects/ledger-operations"},{"type":"link","label":"Ledger","href":"/build/api/schema/objects/ledger","docId":"build/api/schema/objects/ledger"},{"type":"link","label":"Node","href":"/build/api/schema/objects/node","docId":"build/api/schema/objects/node"},{"type":"link","label":"OracleData","href":"/build/api/schema/objects/oracle-data","docId":"build/api/schema/objects/oracle-data"},{"type":"link","label":"OracleServices","href":"/build/api/schema/objects/oracle-services","docId":"build/api/schema/objects/oracle-services"},{"type":"link","label":"Ownership","href":"/build/api/schema/objects/ownership","docId":"build/api/schema/objects/ownership"},{"type":"link","label":"SharedSecrets","href":"/build/api/schema/objects/shared-secrets","docId":"build/api/schema/objects/shared-secrets"},{"type":"link","label":"TokenBalance","href":"/build/api/schema/objects/token-balance","docId":"build/api/schema/objects/token-balance"},{"type":"link","label":"TokenLedger","href":"/build/api/schema/objects/token-ledger","docId":"build/api/schema/objects/token-ledger"},{"type":"link","label":"TokenTransfer","href":"/build/api/schema/objects/token-transfer","docId":"build/api/schema/objects/token-transfer"},{"type":"link","label":"Token","href":"/build/api/schema/objects/token","docId":"build/api/schema/objects/token"},{"type":"link","label":"TransactionAttestation","href":"/build/api/schema/objects/transaction-attestation","docId":"build/api/schema/objects/transaction-attestation"},{"type":"link","label":"TransactionError","href":"/build/api/schema/objects/transaction-error","docId":"build/api/schema/objects/transaction-error"},{"type":"link","label":"TransactionInput","href":"/build/api/schema/objects/transaction-input","docId":"build/api/schema/objects/transaction-input"},{"type":"link","label":"TransactionMovement","href":"/build/api/schema/objects/transaction-movement","docId":"build/api/schema/objects/transaction-movement"},{"type":"link","label":"TransactionSummary","href":"/build/api/schema/objects/transaction-summary","docId":"build/api/schema/objects/transaction-summary"},{"type":"link","label":"Transaction","href":"/build/api/schema/objects/transaction","docId":"build/api/schema/objects/transaction"},{"type":"link","label":"UcoData","href":"/build/api/schema/objects/uco-data","docId":"build/api/schema/objects/uco-data"},{"type":"link","label":"UcoLedger","href":"/build/api/schema/objects/uco-ledger","docId":"build/api/schema/objects/uco-ledger"},{"type":"link","label":"UcoTransfer","href":"/build/api/schema/objects/uco-transfer","docId":"build/api/schema/objects/uco-transfer"},{"type":"link","label":"UnspentOutput","href":"/build/api/schema/objects/unspent-output","docId":"build/api/schema/objects/unspent-output"},{"type":"link","label":"ValidationStamp","href":"/build/api/schema/objects/validation-stamp","docId":"build/api/schema/objects/validation-stamp"},{"type":"link","label":"Version","href":"/build/api/schema/objects/version","docId":"build/api/schema/objects/version"}]},{"type":"category","label":"Queries","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"balance","href":"/build/api/schema/queries/balance","docId":"build/api/schema/queries/balance"},{"type":"link","label":"beaconChainSummary","href":"/build/api/schema/queries/beacon-chain-summary","docId":"build/api/schema/queries/beacon-chain-summary"},{"type":"link","label":"genesisAddress","href":"/build/api/schema/queries/genesis-address","docId":"build/api/schema/queries/genesis-address"},{"type":"link","label":"lastTransaction","href":"/build/api/schema/queries/last-transaction","docId":"build/api/schema/queries/last-transaction"},{"type":"link","label":"nearestEndpoints","href":"/build/api/schema/queries/nearest-endpoints","docId":"build/api/schema/queries/nearest-endpoints"},{"type":"link","label":"networkTransactions","href":"/build/api/schema/queries/network-transactions","docId":"build/api/schema/queries/network-transactions"},{"type":"link","label":"nodes","href":"/build/api/schema/queries/nodes","docId":"build/api/schema/queries/nodes"},{"type":"link","label":"oracleData","href":"/build/api/schema/queries/oracle-data","docId":"build/api/schema/queries/oracle-data"},{"type":"link","label":"sharedSecrets","href":"/build/api/schema/queries/shared-secrets","docId":"build/api/schema/queries/shared-secrets"},{"type":"link","label":"token","href":"/build/api/schema/queries/token","docId":"build/api/schema/queries/token"},{"type":"link","label":"transactionChain","href":"/build/api/schema/queries/transaction-chain","docId":"build/api/schema/queries/transaction-chain"},{"type":"link","label":"transactionInputs","href":"/build/api/schema/queries/transaction-inputs","docId":"build/api/schema/queries/transaction-inputs"},{"type":"link","label":"transaction","href":"/build/api/schema/queries/transaction","docId":"build/api/schema/queries/transaction"},{"type":"link","label":"transactions","href":"/build/api/schema/queries/transactions","docId":"build/api/schema/queries/transactions"},{"type":"link","label":"version","href":"/build/api/schema/queries/version","docId":"build/api/schema/queries/version"}]},{"type":"category","label":"Scalars","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Address","href":"/build/api/schema/scalars/address","docId":"build/api/schema/scalars/address"},{"type":"link","label":"Boolean","href":"/build/api/schema/scalars/boolean","docId":"build/api/schema/scalars/boolean"},{"type":"link","label":"Content","href":"/build/api/schema/scalars/content","docId":"build/api/schema/scalars/content"},{"type":"link","label":"Float","href":"/build/api/schema/scalars/float","docId":"build/api/schema/scalars/float"},{"type":"link","label":"Hash","href":"/build/api/schema/scalars/hash","docId":"build/api/schema/scalars/hash"},{"type":"link","label":"Hex","href":"/build/api/schema/scalars/hex","docId":"build/api/schema/scalars/hex"},{"type":"link","label":"Int","href":"/build/api/schema/scalars/int","docId":"build/api/schema/scalars/int"},{"type":"link","label":"NonNegInteger","href":"/build/api/schema/scalars/non-neg-integer","docId":"build/api/schema/scalars/non-neg-integer"},{"type":"link","label":"P2pAvailabilities","href":"/build/api/schema/scalars/p2-p-availabilities","docId":"build/api/schema/scalars/p2-p-availabilities"},{"type":"link","label":"PosInteger","href":"/build/api/schema/scalars/pos-integer","docId":"build/api/schema/scalars/pos-integer"},{"type":"link","label":"PublicKey","href":"/build/api/schema/scalars/public-key","docId":"build/api/schema/scalars/public-key"},{"type":"link","label":"String","href":"/build/api/schema/scalars/string","docId":"build/api/schema/scalars/string"},{"type":"link","label":"Timestamp","href":"/build/api/schema/scalars/timestamp","docId":"build/api/schema/scalars/timestamp"},{"type":"link","label":"TokenProperties","href":"/build/api/schema/scalars/token-properties","docId":"build/api/schema/scalars/token-properties"},{"type":"link","label":"TransactionType","href":"/build/api/schema/scalars/transaction-type","docId":"build/api/schema/scalars/transaction-type"}]},{"type":"category","label":"Subscriptions","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"oracleUpdate","href":"/build/api/schema/subscriptions/oracle-update","docId":"build/api/schema/subscriptions/oracle-update"},{"type":"link","label":"transactionConfirmed","href":"/build/api/schema/subscriptions/transaction-confirmed","docId":"build/api/schema/subscriptions/transaction-confirmed"},{"type":"link","label":"transactionError","href":"/build/api/schema/subscriptions/transaction-error","docId":"build/api/schema/subscriptions/transaction-error"}]}],"href":"/category/graphql"}],"href":"/category/api"},{"type":"category","label":"Core development","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Account","href":"/build/core/account","docId":"build/core/account"},{"type":"category","label":"BeaconChain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"P2P availability sampling","href":"/build/core/beacon-chain/p2p-sampling","docId":"build/core/beacon-chain/p2p-sampling"}],"href":"/build/core/beacon-chain/"},{"type":"link","label":"Bootstrap","href":"/build/core/bootstrap","docId":"build/core/bootstrap"},{"type":"category","label":"Cryptography","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"TPM Implementation","href":"/build/core/cryptography/tpm","docId":"build/core/cryptography/tpm"},{"type":"link","label":"Yubikey implementation","href":"/build/core/cryptography/yubikey","docId":"build/core/cryptography/yubikey"}],"href":"/build/core/cryptography/"},{"type":"link","label":"Archethic\'s database","href":"/build/core/database","docId":"build/core/database"},{"type":"link","label":"Election","href":"/build/core/election","docId":"build/core/election"},{"type":"category","label":"governance","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CD","href":"/build/core/governance/code-proposals-cd","docId":"build/core/governance/code-proposals-cd"},{"type":"link","label":"CI","href":"/build/core/governance/code-proposals-ci","docId":"build/core/governance/code-proposals-ci"},{"type":"link","label":"Code Proposals","href":"/build/core/governance/code-proposals","docId":"build/core/governance/code-proposals"}]},{"type":"category","label":"Mining","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Pending transaction validation","href":"/build/core/mining/transaction-validation","docId":"build/core/mining/transaction-validation"},{"type":"link","label":"Proof of Work algorithm","href":"/build/core/mining/proof-of-work","docId":"build/core/mining/proof-of-work"},{"type":"link","label":"Transaction context retrieval","href":"/build/core/mining/transaction-context","docId":"build/core/mining/transaction-context"}],"href":"/build/core/mining/"},{"type":"category","label":"OracleChain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Memory database","href":"/build/core/oracle-chain/memory-table","docId":"build/core/oracle-chain/memory-table"},{"type":"link","label":"Scheduler","href":"/build/core/oracle-chain/scheduler","docId":"build/core/oracle-chain/scheduler"},{"type":"link","label":"Service","href":"/build/core/oracle-chain/service","docId":"build/core/oracle-chain/service"}],"href":"/build/core/oracle-chain/"},{"type":"category","label":"P2P","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Messaging","href":"/build/core/p2p/messaging","docId":"build/core/p2p/messaging"},{"type":"link","label":"Node","href":"/build/core/p2p/node","docId":"build/core/p2p/node"}],"href":"/build/core/p2p/"}],"href":"/build/core/"},{"type":"category","label":"SDK","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Dart SDK","href":"/build/sdk/dart","docId":"build/sdk/dart"},{"type":"link","label":"Go SDK","href":"/build/sdk/go","docId":"build/sdk/go"},{"type":"link","label":"Javascript SDK","href":"/build/sdk/js","docId":"build/sdk/js"}],"href":"/build/sdk/"},{"type":"category","label":"Smart Contracts","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Language","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Triggers","href":"/build/smart-contracts/language/triggers","docId":"build/smart-contracts/language/triggers"},{"type":"link","label":"Condition","href":"/build/smart-contracts/language/condition","docId":"build/smart-contracts/language/condition"},{"type":"link","label":"Actions","href":"/build/smart-contracts/language/actions","docId":"build/smart-contracts/language/actions"},{"type":"link","label":"Library","href":"/build/smart-contracts/language/library","docId":"build/smart-contracts/language/library"},{"type":"link","label":"Examples","href":"/build/smart-contracts/language/examples","docId":"build/smart-contracts/language/examples"},{"type":"category","label":"Legacy","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Examples","href":"/build/smart-contracts/language/legacy/examples","docId":"build/smart-contracts/language/legacy/examples"},{"type":"link","label":"Language","href":"/build/smart-contracts/language/legacy/language","docId":"build/smart-contracts/language/legacy/language"}],"href":"/build/smart-contracts/language/legacy/"}],"href":"/build/smart-contracts/language/"},{"type":"category","label":"Playground","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Build","href":"/build/smart-contracts/playground/build","docId":"build/smart-contracts/playground/build"},{"type":"link","label":"Deploy","href":"/build/smart-contracts/playground/deploy","docId":"build/smart-contracts/playground/deploy"},{"type":"link","label":"Function calls","href":"/build/smart-contracts/playground/functions","docId":"build/smart-contracts/playground/functions"},{"type":"link","label":"Transaction form","href":"/build/smart-contracts/playground/transaction-form","docId":"build/smart-contracts/playground/transaction-form"},{"type":"link","label":"Mock form","href":"/build/smart-contracts/playground/mock-form","docId":"build/smart-contracts/playground/mock-form"}],"href":"/build/smart-contracts/playground/"},{"type":"link","label":"Fees","href":"/build/smart-contracts/fees","docId":"build/smart-contracts/fees"}],"href":"/build/smart-contracts/"},{"type":"link","label":"Testnet","href":"/build/testnet","docId":"build/testnet"}],"href":"/category/build"},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AEWeb","href":"/FAQ/aeweb","docId":"FAQ/aeweb"},{"type":"link","label":"Archethic Bridge 2-ways","href":"/FAQ/bridge-2-ways","docId":"FAQ/bridge-2-ways"},{"type":"link","label":"Archethic Bridge $UCO one-way","href":"/FAQ/bridge","docId":"FAQ/bridge"},{"type":"link","label":"Wallet","href":"/FAQ/wallet","docId":"FAQ/wallet"}],"href":"/category/faq"},{"type":"link","label":"Contributing","href":"/contributing","docId":"contributing"}]},"docs":{"build/api/schema/directives/include":{"id":"build/api/schema/directives/include","title":"include","description":"Directs the executor to include this field or fragment only when the if argument is true.","sidebar":"docs"},"build/api/schema/directives/skip":{"id":"build/api/schema/directives/skip","title":"skip","description":"Directs the executor to skip this field or fragment when the if argument is true.","sidebar":"docs"},"build/api/schema/enums/error-context":{"id":"build/api/schema/enums/error-context","title":"ErrorContext","description":"Transaction error context","sidebar":"docs"},"build/api/schema/enums/sort-order":{"id":"build/api/schema/enums/sort-order","title":"SortOrder","description":"SortOrder represents the order of the result","sidebar":"docs"},"build/api/schema/objects/authorized-key":{"id":"build/api/schema/objects/authorized-key","title":"AuthorizedKey","description":"[AuthorizedKey] represents a authorized public key with the encrypted secret key for this given key.","sidebar":"docs"},"build/api/schema/objects/balance":{"id":"build/api/schema/objects/balance","title":"Balance","description":"[Balance] represents a ledger balance.","sidebar":"docs"},"build/api/schema/objects/beacon-chain-summary":{"id":"build/api/schema/objects/beacon-chain-summary","title":"BeaconChainSummary","description":"[Beacon Chain Summary] represents the beacon chain aggregate for a certain date","sidebar":"docs"},"build/api/schema/objects/cross-validation-stamp":{"id":"build/api/schema/objects/cross-validation-stamp","title":"CrossValidationStamp","description":"[CrossValidationStamp] represents the approval of the validation stamp by a cross validation node.","sidebar":"docs"},"build/api/schema/objects/data":{"id":"build/api/schema/objects/data","title":"Data","description":"[TransactionData] represents the data section for every transaction.","sidebar":"docs"},"build/api/schema/objects/endpoint":{"id":"build/api/schema/objects/endpoint","title":"Endpoint","description":"[Endpoint] represents a network node\'s endpoint","sidebar":"docs"},"build/api/schema/objects/ledger":{"id":"build/api/schema/objects/ledger","title":"Ledger","description":"[Ledger] represents the ledger operations to perform","sidebar":"docs"},"build/api/schema/objects/ledger-operations":{"id":"build/api/schema/objects/ledger-operations","title":"LedgerOperations","description":"[LedgerOperations] represents the ledger operations performed by the transaction","sidebar":"docs"},"build/api/schema/objects/node":{"id":"build/api/schema/objects/node","title":"Node","description":"[Node] represents a node in the network","sidebar":"docs"},"build/api/schema/objects/oracle-data":{"id":"build/api/schema/objects/oracle-data","title":"OracleData","description":"[OracleData] represents an oracle data.","sidebar":"docs"},"build/api/schema/objects/oracle-services":{"id":"build/api/schema/objects/oracle-services","title":"OracleServices","description":"No description","sidebar":"docs"},"build/api/schema/objects/ownership":{"id":"build/api/schema/objects/ownership","title":"Ownership","description":"[Ownership] represents a block to set a secret and the authorized public keys able to decrypt the secret","sidebar":"docs"},"build/api/schema/objects/shared-secrets":{"id":"build/api/schema/objects/shared-secrets","title":"SharedSecrets","description":"[SharedSecrets] represents the public shared secret information","sidebar":"docs"},"build/api/schema/objects/token":{"id":"build/api/schema/objects/token","title":"Token","description":"[token] represents a token metadata.","sidebar":"docs"},"build/api/schema/objects/token-balance":{"id":"build/api/schema/objects/token-balance","title":"TokenBalance","description":"[tokenBalance] represents a token ledger balance.","sidebar":"docs"},"build/api/schema/objects/token-ledger":{"id":"build/api/schema/objects/token-ledger","title":"TokenLedger","description":"[TokenLedger] represents the transfers to perform on the UCO ledger","sidebar":"docs"},"build/api/schema/objects/token-transfer":{"id":"build/api/schema/objects/token-transfer","title":"TokenTransfer","description":"[TokenTransfer] represents the an asset transfer","sidebar":"docs"},"build/api/schema/objects/transaction":{"id":"build/api/schema/objects/transaction","title":"Transaction","description":"[Transaction] represents a unitary transaction in the Archethic network.","sidebar":"docs"},"build/api/schema/objects/transaction-attestation":{"id":"build/api/schema/objects/transaction-attestation","title":"TransactionAttestation","description":"[TransactionAttestation] represents an attestation when a transaction is successfully validated and stored.","sidebar":"docs"},"build/api/schema/objects/transaction-error":{"id":"build/api/schema/objects/transaction-error","title":"TransactionError","description":"[TransactionError] represents an error.","sidebar":"docs"},"build/api/schema/objects/transaction-input":{"id":"build/api/schema/objects/transaction-input","title":"TransactionInput","description":"[TransactionInput] represents the inputs from the transaction","sidebar":"docs"},"build/api/schema/objects/transaction-movement":{"id":"build/api/schema/objects/transaction-movement","title":"TransactionMovement","description":"[TransactionMovement] represents ledger transaction movement","sidebar":"docs"},"build/api/schema/objects/transaction-summary":{"id":"build/api/schema/objects/transaction-summary","title":"TransactionSummary","description":"[Transaction Summary] Represents transaction header or extract to summarize it","sidebar":"docs"},"build/api/schema/objects/uco-data":{"id":"build/api/schema/objects/uco-data","title":"UcoData","description":"No description","sidebar":"docs"},"build/api/schema/objects/uco-ledger":{"id":"build/api/schema/objects/uco-ledger","title":"UcoLedger","description":"[UCOLedger] represents the transfers to perform on the UCO ledger","sidebar":"docs"},"build/api/schema/objects/uco-transfer":{"id":"build/api/schema/objects/uco-transfer","title":"UcoTransfer","description":"[UCOTransfer] represents the an asset transfer","sidebar":"docs"},"build/api/schema/objects/unspent-output":{"id":"build/api/schema/objects/unspent-output","title":"UnspentOutput","description":"[UnspentOutput] represents the remaining unspent output of the transaction.","sidebar":"docs"},"build/api/schema/objects/validation-stamp":{"id":"build/api/schema/objects/validation-stamp","title":"ValidationStamp","description":"[ValidationStamp] represents the validation performs by the coordinator","sidebar":"docs"},"build/api/schema/objects/version":{"id":"build/api/schema/objects/version","title":"Version","description":"[Version] represents code, transaction and protocol version","sidebar":"docs"},"build/api/schema/queries/balance":{"id":"build/api/schema/queries/balance","title":"balance","description":"Query the network to find a balance from an address coming from the latest transaction on the chain","sidebar":"docs"},"build/api/schema/queries/beacon-chain-summary":{"id":"build/api/schema/queries/beacon-chain-summary","title":"beaconChainSummary","description":"Query the network to get the value of the summary of beacon chain at a specific time or the last value","sidebar":"docs"},"build/api/schema/queries/genesis-address":{"id":"build/api/schema/queries/genesis-address","title":"genesisAddress","description":"Query the network to find the genesis address of a transaction","sidebar":"docs"},"build/api/schema/queries/last-transaction":{"id":"build/api/schema/queries/last-transaction","title":"lastTransaction","description":"Query the network to find the last transaction from an address","sidebar":"docs"},"build/api/schema/queries/nearest-endpoints":{"id":"build/api/schema/queries/nearest-endpoints","title":"nearestEndpoints","description":"List the nearest endpoints nodes from the client\'s IP","sidebar":"docs"},"build/api/schema/queries/network-transactions":{"id":"build/api/schema/queries/network-transactions","title":"networkTransactions","description":"Query the network to list the transaction on the type","sidebar":"docs"},"build/api/schema/queries/nodes":{"id":"build/api/schema/queries/nodes","title":"nodes","description":"List all the nodes registered in the network","sidebar":"docs"},"build/api/schema/queries/oracle-data":{"id":"build/api/schema/queries/oracle-data","title":"oracleData","description":"Query the network to get the value of an oracle at a specific time or the last value","sidebar":"docs"},"build/api/schema/queries/shared-secrets":{"id":"build/api/schema/queries/shared-secrets","title":"sharedSecrets","description":"Query the network to get the storage nonce public key","sidebar":"docs"},"build/api/schema/queries/token":{"id":"build/api/schema/queries/token","title":"token","description":"Query the network to find a token\'s data","sidebar":"docs"},"build/api/schema/queries/transaction":{"id":"build/api/schema/queries/transaction","title":"transaction","description":"Query the network to find a transaction","sidebar":"docs"},"build/api/schema/queries/transaction-chain":{"id":"build/api/schema/queries/transaction-chain","title":"transactionChain","description":"Query the network to find a transaction chain","sidebar":"docs"},"build/api/schema/queries/transaction-inputs":{"id":"build/api/schema/queries/transaction-inputs","title":"transactionInputs","description":"Query the network to list the transaction inputs from an address","sidebar":"docs"},"build/api/schema/queries/transactions":{"id":"build/api/schema/queries/transactions","title":"transactions","description":"Query the network to find all the transactions locally stored","sidebar":"docs"},"build/api/schema/queries/version":{"id":"build/api/schema/queries/version","title":"version","description":"List protocol, transaction and code versions","sidebar":"docs"},"build/api/schema/scalars/address":{"id":"build/api/schema/scalars/address","title":"Address","description":"The [Address] scalar type represents a transaction\'s address.","sidebar":"docs"},"build/api/schema/scalars/boolean":{"id":"build/api/schema/scalars/boolean","title":"Boolean","description":"The Boolean scalar type represents true or false.","sidebar":"docs"},"build/api/schema/scalars/content":{"id":"build/api/schema/scalars/content","title":"Content","description":"The [Content] scalar type represents transaction content. Depending if the content can displayed","sidebar":"docs"},"build/api/schema/scalars/float":{"id":"build/api/schema/scalars/float","title":"Float","description":"The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.","sidebar":"docs"},"build/api/schema/scalars/hash":{"id":"build/api/schema/scalars/hash","title":"Hash","description":"The [Hash] scalar type represents a cryptographic hash used in","sidebar":"docs"},"build/api/schema/scalars/hex":{"id":"build/api/schema/scalars/hex","title":"Hex","description":"The [Hex] scalar type represents an hexadecimal","sidebar":"docs"},"build/api/schema/scalars/int":{"id":"build/api/schema/scalars/int","title":"Int","description":"The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.","sidebar":"docs"},"build/api/schema/scalars/non-neg-integer":{"id":"build/api/schema/scalars/non-neg-integer","title":"NonNegInteger","description":"The [Non Negative Integer] scalar type represents a non negative number","sidebar":"docs"},"build/api/schema/scalars/p2-p-availabilities":{"id":"build/api/schema/scalars/p2-p-availabilities","title":"P2pAvailabilities","description":"No description","sidebar":"docs"},"build/api/schema/scalars/pos-integer":{"id":"build/api/schema/scalars/pos-integer","title":"PosInteger","description":"The [Positive Integer] scalar type represents a positive number","sidebar":"docs"},"build/api/schema/scalars/public-key":{"id":"build/api/schema/scalars/public-key","title":"PublicKey","description":"The [PublicKey] scalar type represents a public key.","sidebar":"docs"},"build/api/schema/scalars/string":{"id":"build/api/schema/scalars/string","title":"String","description":"The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.","sidebar":"docs"},"build/api/schema/scalars/timestamp":{"id":"build/api/schema/scalars/timestamp","title":"Timestamp","description":"The [Timestamp] scalar type represents a UNIX timestamp in seconds","sidebar":"docs"},"build/api/schema/scalars/token-properties":{"id":"build/api/schema/scalars/token-properties","title":"TokenProperties","description":"[tokenProperties] represents a token\'s properties","sidebar":"docs"},"build/api/schema/scalars/transaction-type":{"id":"build/api/schema/scalars/transaction-type","title":"TransactionType","description":"The [TransactionType] scalar type represents a transaction type","sidebar":"docs"},"build/api/schema/schema":{"id":"build/api/schema/schema","title":"Schema Documentation","description":"This documentation has been automatically generated from the GraphQL schema.","sidebar":"docs"},"build/api/schema/subscriptions/oracle-update":{"id":"build/api/schema/subscriptions/oracle-update","title":"oracleUpdate","description":"Subscribe to be notified when a new oracle data is stored","sidebar":"docs"},"build/api/schema/subscriptions/transaction-confirmed":{"id":"build/api/schema/subscriptions/transaction-confirmed","title":"transactionConfirmed","description":"Subscribe to be notified when a transaction is stored (if acted as welcome node)","sidebar":"docs"},"build/api/schema/subscriptions/transaction-error":{"id":"build/api/schema/subscriptions/transaction-error","title":"transactionError","description":"Subscribe to be notified when a transaction is on error","sidebar":"docs"},"build/clients/ledger-wallet/api":{"id":"build/clients/ledger-wallet/api","title":"Ledger Application API","description":"Reference Repository:","sidebar":"docs"},"build/clients/ledger-wallet/commands":{"id":"build/clients/ledger-wallet/commands","title":"ADPU commands","description":"APDU commands","sidebar":"docs"},"build/clients/ledger-wallet/ledger-wallet":{"id":"build/clients/ledger-wallet/ledger-wallet","title":"Ledger wallet","description":"A blockchain or crypto wallet is a way to manage, secure, and use cryptocurrencies such as UCO, Bitcoin, Ethereum and other digital assets based on a blockchain (for example, an NFT). There are two basic types of blockchain wallets: software wallets and hardware wallets.","sidebar":"docs"},"build/clients/wallet-access":{"id":"build/clients/wallet-access","title":"Archethic\'s wallet access","description":"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it.","sidebar":"docs"},"build/clients/wallet-spec":{"id":"build/clients/wallet-spec","title":"Archethic\'s wallet specification","description":"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form.","sidebar":"docs"},"build/core/account":{"id":"build/core/account","title":"Account","description":"Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.","sidebar":"docs"},"build/core/beacon-chain/beacon-chain":{"id":"build/core/beacon-chain/beacon-chain","title":"BeaconChain","description":"BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system.","sidebar":"docs"},"build/core/beacon-chain/p2p-sampling":{"id":"build/core/beacon-chain/p2p-sampling","title":"P2P availability sampling","description":"Each beacon chain\'s subset is responsible to perform verification of the nodes is in charge to monitor.","sidebar":"docs"},"build/core/bootstrap":{"id":"build/core/bootstrap","title":"Bootstrap","description":"When the Archethic node, a task is launched to perform the node bootstrapping to join the network.","sidebar":"docs"},"build/core/core":{"id":"build/core/core","title":"Core development","description":"Archethic Node repository can be found here","sidebar":"docs"},"build/core/cryptography/cryptography":{"id":"build/core/cryptography/cryptography","title":"Cryptography","description":"Node cryptography is maintains through keystores","sidebar":"docs"},"build/core/cryptography/tpm":{"id":"build/core/cryptography/tpm","title":"TPM Implementation","description":"This section explains the HRT TPM Library implementation.","sidebar":"docs"},"build/core/cryptography/yubikey":{"id":"build/core/cryptography/yubikey","title":"Yubikey implementation","description":"This section explains the HRT Yubikey Library implementation.","sidebar":"docs"},"build/core/database":{"id":"build/core/database","title":"Archethic\'s database","description":"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support","sidebar":"docs"},"build/core/election":{"id":"build/core/election","title":"Election","description":"Archethic provides rotating algorithm to elect validation and storage nodes.","sidebar":"docs"},"build/core/governance/code-proposals":{"id":"build/core/governance/code-proposals","title":"Code Proposals","description":"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain","sidebar":"docs"},"build/core/governance/code-proposals-cd":{"id":"build/core/governance/code-proposals-cd","title":"CD","description":"The archethic-cd target produces an image capable of running archethic_node release.","sidebar":"docs"},"build/core/governance/code-proposals-ci":{"id":"build/core/governance/code-proposals-ci","title":"CI","description":"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI.","sidebar":"docs"},"build/core/mining/mining":{"id":"build/core/mining/mining","title":"Mining","description":"Transaction validation (aka Mining) defines processes and validations algorithms.","sidebar":"docs"},"build/core/mining/proof-of-work":{"id":"build/core/mining/proof-of-work","title":"Proof of Work algorithm","description":"The Archethic\'s proof of work algorithm defines way to assert the validity of the origin signature.","sidebar":"docs"},"build/core/mining/transaction-context":{"id":"build/core/mining/transaction-context","title":"Transaction context retrieval","description":"When a transaction is under validation, after the pending transaction validation, the nodes are fetching the context of the transaction.","sidebar":"docs"},"build/core/mining/transaction-validation":{"id":"build/core/mining/transaction-validation","title":"Pending transaction validation","description":"When a transaction is under validation a process is started to perform the ARCH consensus workflow.","sidebar":"docs"},"build/core/oracle-chain/memory-table":{"id":"build/core/oracle-chain/memory-table","title":"OracleChain Memory Tables","description":"OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.","sidebar":"docs"},"build/core/oracle-chain/oracle-chain":{"id":"build/core/oracle-chain/oracle-chain","title":"OracleChain","description":"OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.","sidebar":"docs"},"build/core/oracle-chain/scheduler":{"id":"build/core/oracle-chain/scheduler","title":"OracleChain Scheduler","description":"The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting.","sidebar":"docs"},"build/core/oracle-chain/service":{"id":"build/core/oracle-chain/service","title":"Oracle Chain Service","description":"OracleChain provides a way to extend it and to add more services to the scheduler.","sidebar":"docs"},"build/core/p2p/messaging":{"id":"build/core/p2p/messaging","title":"Messaging","description":"Archethic Blockchain is used a brand new P2P layer from the Supervised Multicast, but to ensure the best data transmission possible, we are using two modern approaches: Stream Multiplexer and Binary Protocol.","sidebar":"docs"},"build/core/p2p/node":{"id":"build/core/p2p/node","title":"Node","description":"Data structure","sidebar":"docs"},"build/core/p2p/p2p":{"id":"build/core/p2p/p2p","title":"P2P","description":"","sidebar":"docs"},"build/sdk/dart":{"id":"build/sdk/dart","title":"Dart SDK","description":"Archethic Blockchain Official Dart SDK available on Github","sidebar":"docs"},"build/sdk/go":{"id":"build/sdk/go","title":"Go SDK","description":"Archethic Blockchain Official Go SDK is available on Github","sidebar":"docs"},"build/sdk/js":{"id":"build/sdk/js","title":"Javascript SDK","description":"Archethic Blockchain Official Javascript SDK is available on Github","sidebar":"docs"},"build/sdk/sdk":{"id":"build/sdk/sdk","title":"SDK","description":"","sidebar":"docs"},"build/smart-contracts/fees":{"id":"build/smart-contracts/fees","title":"Smart Contracts - Fees","description":"","sidebar":"docs"},"build/smart-contracts/language/actions":{"id":"build/smart-contracts/language/actions","title":"Smart Contracts - Actions block","description":"The actions block is the code executed when the associated trigger is triggered.","sidebar":"docs"},"build/smart-contracts/language/condition":{"id":"build/smart-contracts/language/condition","title":"Smart Contracts - Condition block","description":"Conditions are blocks which purpose is to check the validity of a transaction.","sidebar":"docs"},"build/smart-contracts/language/examples":{"id":"build/smart-contracts/language/examples","title":"Smart Contracts - Examples","description":"Hello World","sidebar":"docs"},"build/smart-contracts/language/language":{"id":"build/smart-contracts/language/language","title":"Smart Contracts - Language","description":"A Smart Contract is defined as followed:","sidebar":"docs"},"build/smart-contracts/language/legacy/examples":{"id":"build/smart-contracts/language/legacy/examples","title":"Smart Contract examples","description":"Recurrent transfer","sidebar":"docs"},"build/smart-contracts/language/legacy/language":{"id":"build/smart-contracts/language/legacy/language","title":"Smart Contract Language","description":"Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:","sidebar":"docs"},"build/smart-contracts/language/legacy/smart-contracts":{"id":"build/smart-contracts/language/legacy/smart-contracts","title":"Smart Contracts (Legacy)","description":"This specification is deprecated and will be still be valid for SC before 1.1.0. The new version is available here","sidebar":"docs"},"build/smart-contracts/language/library":{"id":"build/smart-contracts/language/library","title":"Smart Contracts - Library","description":"The Smart Contract library is composed of many modules with many functions in each.","sidebar":"docs"},"build/smart-contracts/language/triggers":{"id":"build/smart-contracts/language/triggers","title":"Smart Contracts - Triggers","description":"Contract triggered by a transaction","sidebar":"docs"},"build/smart-contracts/playground/build":{"id":"build/smart-contracts/playground/build","title":"Smart Contracts Playground - Build","description":"Let\'s create a small smart contracts that reacts to two different triggers. We\'ll then be able to test them separately.","sidebar":"docs"},"build/smart-contracts/playground/deploy":{"id":"build/smart-contracts/playground/deploy","title":"Smart Contracts Playground - Deploy","description":"The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn\'t meet the security standard we expect.","sidebar":"docs"},"build/smart-contracts/playground/functions":{"id":"build/smart-contracts/playground/functions","title":"Smart Contracts Playground - Functions","description":"Since 1.3, we introduced the capability to have some public functions in to smart contract code.","sidebar":"docs"},"build/smart-contracts/playground/mock-form":{"id":"build/smart-contracts/playground/mock-form","title":"Smart Contracts Playground - Mock form","description":"Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc.","sidebar":"docs"},"build/smart-contracts/playground/sc-playground":{"id":"build/smart-contracts/playground/sc-playground","title":"Smart Contracts Playground","description":"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.","sidebar":"docs"},"build/smart-contracts/playground/transaction-form":{"id":"build/smart-contracts/playground/transaction-form","title":"Smart Contracts Playground - Transaction form","description":"The transaction form is a form that you might encounter at different places:","sidebar":"docs"},"build/smart-contracts/smart-contracts":{"id":"build/smart-contracts/smart-contracts","title":"Smart Contracts","description":"Smart-contracts are in computing what robots are in real life: they perform actions according to events.","sidebar":"docs"},"build/testnet":{"id":"build/testnet","title":"Testnet","description":"Local","sidebar":"docs"},"contributing":{"id":"contributing","title":"Contributing","description":"This documentation is maintained by the Archethic Foundation. It\'s an open source project and aims to be the most extensive","sidebar":"docs"},"FAQ/aeweb":{"id":"FAQ/aeweb","title":"AEWeb","description":"General","sidebar":"docs"},"FAQ/bridge":{"id":"FAQ/bridge","title":"Archethic Bridge $UCO one-way","description":"General","sidebar":"docs"},"FAQ/bridge-2-ways":{"id":"FAQ/bridge-2-ways","title":"Archethic Bridge 2-ways","description":"General","sidebar":"docs"},"FAQ/wallet":{"id":"FAQ/wallet","title":"Wallet","description":"General","sidebar":"docs"},"learn/arch-consensus/arch-consensus":{"id":"learn/arch-consensus/arch-consensus","title":"ARCH consensus","description":"Archethic Blockchain is using a new consensus called ARCH (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput.","sidebar":"docs"},"learn/arch-consensus/proof-of-work":{"id":"learn/arch-consensus/proof-of-work","title":"Proof of Work","description":"Others blockchains are using the concept of Proof of Work to ensure an unpredictable and pseudo random election of block validation (mining).","sidebar":"docs"},"learn/archethic-intro":{"id":"learn/archethic-intro","title":"Archethic introduction","description":"Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic),","sidebar":"docs"},"learn/cryptography/cryptography":{"id":"learn/cryptography/cryptography","title":"Cryptography","description":"Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.","sidebar":"docs"},"learn/cryptography/hardware-root-of-trust":{"id":"learn/cryptography/hardware-root-of-trust","title":"Hardware Root of Trust","description":"What is hardware root of trust?","sidebar":"docs"},"learn/decentralized-id/decentralized-id":{"id":"learn/decentralized-id/decentralized-id","title":"Decentralized Identity","description":"Identity","sidebar":"docs"},"learn/decentralized-id/keychain":{"id":"learn/decentralized-id/keychain","title":"Keychain","description":"Archethic\'s keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains.","sidebar":"docs"},"learn/ecosystem":{"id":"learn/ecosystem","title":"Ecosystem","description":"The technical and functional parameters that make Archethic unique and ready for global adoption:","sidebar":"docs"},"learn/fee":{"id":"learn/fee","title":"Transaction fees","description":"Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction\'s distribution.","sidebar":"docs"},"learn/governance/governance":{"id":"learn/governance/governance","title":"Governance","description":"A DAO (Decentralized Autonomous Organization) is a decentralized organization whose governance rules are automated,","sidebar":"docs"},"learn/oracle-chain":{"id":"learn/oracle-chain","title":"OracleChain","description":"Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.","sidebar":"docs"},"learn/p2p/bootstrapping":{"id":"learn/p2p/bootstrapping","title":"Bootstrapping","description":"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed","sidebar":"docs"},"learn/p2p/p2p":{"id":"learn/p2p/p2p","title":"P2P","description":"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys","sidebar":"docs"},"learn/p2p/self-repair":{"id":"learn/p2p/self-repair","title":"Self Repair","description":"Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able","sidebar":"docs"},"learn/patents":{"id":"learn/patents","title":"Patents","description":"12 patents to build a new ecosystem","sidebar":"docs"},"learn/sharding/beacon-chain/beacon-chain":{"id":"learn/sharding/beacon-chain/beacon-chain","title":"Beacon Chain","description":"Archethic Blockchain is using Sharding mechanism to ensure scalability in terms of storage and validation.","sidebar":"docs"},"learn/sharding/beacon-chain/explorer":{"id":"learn/sharding/beacon-chain/explorer","title":"Beacon Explorer","description":"Archethic Blockchain leverages Sharding to outperform the exiting blockchains using shards called: subsets and BeaconChain Explorer displays the entire transactions across subsets.","sidebar":"docs"},"learn/sharding/replication-attestation":{"id":"learn/sharding/replication-attestation","title":"Replication attestation","description":"How to ensure a minimum of confirmation from the storage nodes to ensure the data availability of a given transaction.","sidebar":"docs"},"learn/sharding/sharding":{"id":"learn/sharding/sharding","title":"Sharding","description":"To become an unlimited decentralized network, Archethic Blockchain is using a feature called Sharding, used to split processing and storage power to ensure a scalable system.","sidebar":"docs"},"learn/token":{"id":"learn/token","title":"Tokens","description":"Tokens is an important feature on Archethic.","sidebar":"docs"},"learn/transaction-chain":{"id":"learn/transaction-chain","title":"Transaction chains","description":"In the Archethic network, there are no blocks but only transactions, as each block is reduced to its atomic form - transaction with its own validation evidences.","sidebar":"docs"},"learn/transaction-types":{"id":"learn/transaction-types","title":"Transaction types","description":"The transaction\'s type is used to give a hint on what the transaction contains. Some types must respect some conditions.","sidebar":"docs"},"learn/uco":{"id":"learn/uco","title":"UCO token","description":"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.","sidebar":"docs"},"participate/aeweb/aeweb":{"id":"participate/aeweb/aeweb","title":"Archethic Web (AEWeb)","description":"Archethic has developed a new solution to host websites on a decentralized network to avoid censorship, increase security and have high-availability and resiliency.","sidebar":"docs"},"participate/aeweb/automation":{"id":"participate/aeweb/automation","title":"Automate deployments","description":"AEWeb\'s CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage.","sidebar":"docs"},"participate/aeweb/dns":{"id":"participate/aeweb/dns","title":"AEWeb - Domain names","description":"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website\'s URL nicer.","sidebar":"docs"},"participate/aeweb/how-it-works":{"id":"participate/aeweb/how-it-works","title":"AEWeb - How it works","description":"Archethic Web (AEWeb) is using transaction chains to host any website on Archethic Blockchain.","sidebar":"docs"},"participate/aeweb/usage/aeweb-front":{"id":"participate/aeweb/usage/aeweb-front","title":"AEWeb - Application Front End","description":"Access//aeweb.archethic.net","sidebar":"docs"},"participate/aeweb/usage/cli":{"id":"participate/aeweb/usage/cli","title":"AEWeb - CLI","description":"Repository//github.com/archethic-foundation/aeweb-cli","sidebar":"docs"},"participate/bridge/bridge":{"id":"participate/bridge/bridge","title":"Archethic\'s bridge","description":"Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way.","sidebar":"docs"},"participate/bridge/usage/bridge-front":{"id":"participate/bridge/usage/bridge-front","title":"Bridge - Application Front End","description":"Currently, the two-way bridge is available exclusively on the testnet.","sidebar":"docs"},"participate/cli/archethic-cli":{"id":"participate/cli/archethic-cli","title":"Archethic\'s CLI","description":"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also","sidebar":"docs"},"participate/wallet/archethic-wallet":{"id":"participate/wallet/archethic-wallet","title":"Archethic Wallet","description":"Archethic has developed a fully decentralized and non-custodial cryptocurrency hot wallet that enables users to safely manage assets on Layer 1 Archethic blockchain.","sidebar":"docs"},"participate/wallet/dapps-communication":{"id":"participate/wallet/dapps-communication","title":"Communication with DApps","description":"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/93c272fe.93352465.js b/assets/js/93c272fe.4a70eec2.js similarity index 98% rename from assets/js/93c272fe.93352465.js rename to assets/js/93c272fe.4a70eec2.js index da5d1f067..5000ce0e4 100644 --- a/assets/js/93c272fe.93352465.js +++ b/assets/js/93c272fe.4a70eec2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5896],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=l(n),h=r,m=p["".concat(c,".").concat(h)]||p[h]||u[h]||o;return n?a.createElement(m,i(i({ref:t},d),{},{components:n})):a.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"smart-contracts",title:"Smart Contracts"},i=void 0,s={unversionedId:"build/smart-contracts/smart-contracts",id:"build/smart-contracts/smart-contracts",title:"Smart Contracts",description:"Smart-contracts are in computing what robots are in real life: they perform actions according to events.",source:"@site/docs/build/smart-contracts/README.md",sourceDirName:"build/smart-contracts",slug:"/build/smart-contracts/",permalink:"/build/smart-contracts/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"smart-contracts",title:"Smart Contracts"},sidebar:"docs",previous:{title:"Javascript SDK",permalink:"/build/sdk/js"},next:{title:"Language",permalink:"/build/smart-contracts/language/"}},c={},l=[{value:"Autonomous",id:"autonomous",level:2},{value:"Modifiable:",id:"modifiable",level:2},{value:"Interpreted",id:"interpreted",level:2},{value:"Stateless",id:"stateless",level:2}],d={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Smart-contracts are in computing what robots are in real life: they perform actions according to events.")),(0,r.kt)("p",null,"Archethic Blockchain leverages next generation of smart contract to make the development of decentralized application easier to bring a mass adoption of the Blockchain technology."),(0,r.kt)("p",null,"They introduce new features to this domain:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completly autonomous and can be triggered from internal states (date, transactions) or real life (OracleChain updates)."),(0,r.kt)("li",{parentName:"ul"},"Entirely modifiable: TransactionChains make update seamless"),(0,r.kt)("li",{parentName:"ul"},"Interpreted: Code is interpreted and atomically verified by the miners"),(0,r.kt)("li",{parentName:"ul"},"Without external reality: They are entirely based on the UTXO model and do not depend on the state of an internal database but only the transactions validated")),(0,r.kt)("p",null,"Archethic Smart Contract is defined by: ",(0,r.kt)("inlineCode",{parentName:"p"},"triggers"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"conditions")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Triggers: events will automatically launch the execution of a contract."),(0,r.kt)("li",{parentName:"ul"},"Conditions: define the rules to accept new transactions (chain or UTXO)"),(0,r.kt)("li",{parentName:"ul"},"Actions: operations to perform from a trigger's calls")),(0,r.kt)("h2",{id:"autonomous"},"Autonomous"),(0,r.kt)("p",null,"Archethic smart contracts autonomous behavior is due to the capability to define different kind of triggers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Datetime: when the current date matches this timestamp"),(0,r.kt)("li",{parentName:"ul"},"Interval: when the current dates matches this cron interval scheduler"),(0,r.kt)("li",{parentName:"ul"},"Transaction: when the contract receive a transaction in input (UTXO model)"),(0,r.kt)("li",{parentName:"ul"},"Oracle: when the OracleChain pushed new data")),(0,r.kt)("p",null,"Transactions are then created on the behalf of the contract's owner which authorized nodes to use the chain's private key to generate transaction."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To restrict a misusage of the user's cryptographic keys, ",(0,r.kt)("inlineCode",{parentName:"p"},"inherit conditions")," can be defined as a security guard by the contract's owner."),(0,r.kt)("p",{parentName:"admonition"},"However, in order to make contract development and improve readability, transparent inherit conditions are generated based on the action's code.\nThis verification is done during the transaction validation and the ARCH consensus with atomic commitment and ensures the next transaction of the chain respects the inherit constraints either :"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"mentioned in the code by the contract's owner"),(0,r.kt)("li",{parentName:"ul"},"derived by the action's code.")),(0,r.kt)("p",{parentName:"admonition"},"This way, users can delegate the chain's private key to the nodes with the guarantee of a good usage of the chain's identity and signature capability.")),(0,r.kt)("h2",{id:"modifiable"},"Modifiable:"),(0,r.kt)("p",null,"Archethic relies on TransactionChain which means that a smart contract can have its own transaction chain."),(0,r.kt)("p",null,"Then, it is subject to the same properties of the transaction chain: any last transaction of a chain is considered as the reference."),(0,r.kt)("p",null,"For example:"),(0,r.kt)("p",null,"We deployed a smart contract with the address ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract1"),"."),(0,r.kt)("p",null,"Then we want to add a feature or to fix an issue, we resend a transaction on this chain, and we get the new address: ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract2")),(0,r.kt)("p",null,"But clients which depends on the smart contract don't need to update their code or interaction, as each destination address is forwarded to the last one."),(0,r.kt)("p",null,"So if we send a transaction to ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract#"),", the code executed will be at ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract2")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Because we are not relying on internal state and database, and only with the UTXO, we don't need to provide migrations of data or funds, and neither implement cross shard synchronization")),(0,r.kt)("h2",{id:"interpreted"},"Interpreted"),(0,r.kt)("p",null,"Archethic smart contracts are interpreted instead of compiled, here are the reasons:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Interpreted code is understandable by the human, and compiled code are only understandable by the computer.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Intepreted code makes the transparency and audit of smart contracts easier as we do need to provide the source of the contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Interpreted code makes verification and safety checks better, instead to execute a code in blindness, miners can step by step verify the instructions and avoid any security issues"))),(0,r.kt)("h2",{id:"stateless"},"Stateless"),(0,r.kt)("p",null,"Archethic Smart Contracts does not depend on internal state or databases, only the UTXO is used as inputs and the source of truth relies on the transactions."),(0,r.kt)("p",null,"For example, in an e-commerce smart contract, the smart-contract issued by a merchant will be able to define stocks, prices and interactions with its customers using a view which is continuously updated by the transactions validated to that same smart-contract."),(0,r.kt)("p",null,"The contract doesn't hold a given state but allows it to be calculated. In the example above, can verify the proven status of orders through validated transactions."),(0,r.kt)("p",null,"Hence, each state is irrefutable and unambiguous."),(0,r.kt)("p",null,'However, if required, we could easily make a snapshot data during time to have faster reads for archived data, by creating a new transaction on the chain.\nThis operation would serialize the "state" of a contract and be able to be queried by applications.'),(0,r.kt)("admonition",{title:"Be careful",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Any data processed within the contract which is not stored in the next transaction or send somewhere will be lost")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5896],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=l(n),h=r,m=p["".concat(c,".").concat(h)]||p[h]||u[h]||o;return n?a.createElement(m,i(i({ref:t},d),{},{components:n})):a.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"smart-contracts",title:"Smart Contracts"},i=void 0,s={unversionedId:"build/smart-contracts/smart-contracts",id:"build/smart-contracts/smart-contracts",title:"Smart Contracts",description:"Smart-contracts are in computing what robots are in real life: they perform actions according to events.",source:"@site/docs/build/smart-contracts/README.md",sourceDirName:"build/smart-contracts",slug:"/build/smart-contracts/",permalink:"/build/smart-contracts/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"smart-contracts",title:"Smart Contracts"},sidebar:"docs",previous:{title:"Javascript SDK",permalink:"/build/sdk/js"},next:{title:"Language",permalink:"/build/smart-contracts/language/"}},c={},l=[{value:"Autonomous",id:"autonomous",level:2},{value:"Modifiable:",id:"modifiable",level:2},{value:"Interpreted",id:"interpreted",level:2},{value:"Stateless",id:"stateless",level:2}],d={toc:l},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"Smart-contracts are in computing what robots are in real life: they perform actions according to events.")),(0,r.kt)("p",null,"Archethic Blockchain leverages next generation of smart contract to make the development of decentralized application easier to bring a mass adoption of the Blockchain technology."),(0,r.kt)("p",null,"They introduce new features to this domain:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Completly autonomous and can be triggered from internal states (date, transactions) or real life (OracleChain updates)."),(0,r.kt)("li",{parentName:"ul"},"Entirely modifiable: TransactionChains make update seamless"),(0,r.kt)("li",{parentName:"ul"},"Interpreted: Code is interpreted and atomically verified by the miners"),(0,r.kt)("li",{parentName:"ul"},"Without external reality: They are entirely based on the UTXO model and do not depend on the state of an internal database but only the transactions validated")),(0,r.kt)("p",null,"Archethic Smart Contract is defined by: ",(0,r.kt)("inlineCode",{parentName:"p"},"triggers"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"conditions")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Triggers: events will automatically launch the execution of a contract."),(0,r.kt)("li",{parentName:"ul"},"Conditions: define the rules to accept new transactions (chain or UTXO)"),(0,r.kt)("li",{parentName:"ul"},"Actions: operations to perform from a trigger's calls")),(0,r.kt)("h2",{id:"autonomous"},"Autonomous"),(0,r.kt)("p",null,"Archethic smart contracts autonomous behavior is due to the capability to define different kind of triggers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Datetime: when the current date matches this timestamp"),(0,r.kt)("li",{parentName:"ul"},"Interval: when the current dates matches this cron interval scheduler"),(0,r.kt)("li",{parentName:"ul"},"Transaction: when the contract receive a transaction in input (UTXO model)"),(0,r.kt)("li",{parentName:"ul"},"Oracle: when the OracleChain pushed new data")),(0,r.kt)("p",null,"Transactions are then created on the behalf of the contract's owner which authorized nodes to use the chain's private key to generate transaction."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To restrict a misusage of the user's cryptographic keys, ",(0,r.kt)("inlineCode",{parentName:"p"},"inherit conditions")," can be defined as a security guard by the contract's owner."),(0,r.kt)("p",{parentName:"admonition"},"However, in order to make contract development and improve readability, transparent inherit conditions are generated based on the action's code.\nThis verification is done during the transaction validation and the ARCH consensus with atomic commitment and ensures the next transaction of the chain respects the inherit constraints either :"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"mentioned in the code by the contract's owner"),(0,r.kt)("li",{parentName:"ul"},"derived by the action's code.")),(0,r.kt)("p",{parentName:"admonition"},"This way, users can delegate the chain's private key to the nodes with the guarantee of a good usage of the chain's identity and signature capability.")),(0,r.kt)("h2",{id:"modifiable"},"Modifiable:"),(0,r.kt)("p",null,"Archethic relies on TransactionChain which means that a smart contract can have its own transaction chain."),(0,r.kt)("p",null,"Then, it is subject to the same properties of the transaction chain: any last transaction of a chain is considered as the reference."),(0,r.kt)("p",null,"For example:"),(0,r.kt)("p",null,"We deployed a smart contract with the address ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract1"),"."),(0,r.kt)("p",null,"Then we want to add a feature or to fix an issue, we resend a transaction on this chain, and we get the new address: ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract2")),(0,r.kt)("p",null,"But clients which depends on the smart contract don't need to update their code or interaction, as each destination address is forwarded to the last one."),(0,r.kt)("p",null,"So if we send a transaction to ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract#"),", the code executed will be at ",(0,r.kt)("inlineCode",{parentName:"p"},"@Contract2")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Because we are not relying on internal state and database, and only with the UTXO, we don't need to provide migrations of data or funds, and neither implement cross shard synchronization")),(0,r.kt)("h2",{id:"interpreted"},"Interpreted"),(0,r.kt)("p",null,"Archethic smart contracts are interpreted instead of compiled, here are the reasons:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Interpreted code is understandable by the human, and compiled code are only understandable by the computer.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Intepreted code makes the transparency and audit of smart contracts easier as we do need to provide the source of the contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Interpreted code makes verification and safety checks better, instead to execute a code in blindness, miners can step by step verify the instructions and avoid any security issues"))),(0,r.kt)("h2",{id:"stateless"},"Stateless"),(0,r.kt)("p",null,"Archethic Smart Contracts does not depend on internal state or databases, only the UTXO is used as inputs and the source of truth relies on the transactions."),(0,r.kt)("p",null,"For example, in an e-commerce smart contract, the smart-contract issued by a merchant will be able to define stocks, prices and interactions with its customers using a view which is continuously updated by the transactions validated to that same smart-contract."),(0,r.kt)("p",null,"The contract doesn't hold a given state but allows it to be calculated. In the example above, can verify the proven status of orders through validated transactions."),(0,r.kt)("p",null,"Hence, each state is irrefutable and unambiguous."),(0,r.kt)("p",null,'However, if required, we could easily make a snapshot data during time to have faster reads for archived data, by creating a new transaction on the chain.\nThis operation would serialize the "state" of a contract and be able to be queried by applications.'),(0,r.kt)("admonition",{title:"Be careful",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Any data processed within the contract which is not stored in the next transaction or send somewhere will be lost")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/954979f8.075bab30.js b/assets/js/954979f8.51bfeb3a.js similarity index 99% rename from assets/js/954979f8.075bab30.js rename to assets/js/954979f8.51bfeb3a.js index 62d949a5d..76cd5ab0c 100644 --- a/assets/js/954979f8.075bab30.js +++ b/assets/js/954979f8.51bfeb3a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9707],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return n?r.createElement(f,s(s({ref:t},d),{},{components:n})):r.createElement(f,s({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"examples",title:"Smart Contracts - Examples",sidebar_label:"Examples",sidebar_position:5},s=void 0,i={unversionedId:"build/smart-contracts/language/examples",id:"build/smart-contracts/language/examples",title:"Smart Contracts - Examples",description:"Hello World",source:"@site/docs/build/smart-contracts/language/examples.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/examples",permalink:"/build/smart-contracts/language/examples",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:5,frontMatter:{id:"examples",title:"Smart Contracts - Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"docs",previous:{title:"Library",permalink:"/build/smart-contracts/language/library"},next:{title:"Legacy",permalink:"/build/smart-contracts/language/legacy/"}},c={},l=[{value:"Hello World",id:"hello-world",level:2},{value:"ICO (Initial Coin Offering)",id:"ico-initial-coin-offering",level:2},{value:"Recurring ICO",id:"recurring-ico",level:2},{value:"Vote system",id:"vote-system",level:2}],d={toc:l},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"hello-world"},"Hello World"),(0,a.kt)("p",null,'This simple contract will be triggered once, at the specified unix timestamp.\nIt will create a new transaction with a content "Hello world!".'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: datetime, at: 1689857160 do\n Contract.set_content("Hello world!")\nend\n')),(0,a.kt)("h2",{id:"ico-initial-coin-offering"},"ICO (Initial Coin Offering)"),(0,a.kt)("p",null,"This contract the crowdsale of an ICO."),(0,a.kt)("p",null,"Users can send UCOs to this contract and will receive 10000 times the amount as token from this contract."),(0,a.kt)("p",null,"It is possible for users to define a different receive address."),(0,a.kt)("p",null,"The Smart Contract's chain must define a token."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\ncondition triggered_by: transaction, on: buyToken(recipient_address), as: [\n uco_transfers: check_amount(transaction.uco_movements)\n]\n\nactions triggered_by: transaction, on: buyToken(recipient_address) do\n transfers = get_transfered_amount()\n\n # Get the amount of UCO sent to this contract\n amount_send = number_of_uco_sent()\n\n # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token\n token_to_credit = number_of_tokens(amount_send)\n\n Contract.set_type("transfer")\n\n # Users can specify to send the token in a different address\n Contract.add_token_transfer(to: recipient_address, token_address: token_address(), amount: token_to_credit)\nend\n\nfun number_of_tokens(uco_amount) do\n uco_amount * 10000\nend\n\nfun number_of_uco_sent() do\n Map.get(transaction.uco_movements, contract.address)\nend\n\nfun get_transfered_amount() do\n Map.get(transaction.uco_transfers, contract.address)\nend\n\nfun check_amount(transfers) do \n transfered_amount = Map.get(transfers, contract.address)\n transfered_amount != nil && transfered_amount > 0\nend\n\nfun token_address() do\n Chain.get_genesis_address(contract.address)\nend\n\n')),(0,a.kt)("h2",{id:"recurring-ico"},"Recurring ICO"),(0,a.kt)("p",null,"This contract will automatically call the ICO contract with 2 UCOs every hours.\nThe tokens will be transfered in a different chain."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 * * * *" do\n\n ico_contract = 0x0000993F3BE0CE40541E47735AA083854ECAC7785B39435C90D8456C777B9E9D81F1\n\n Contract.set_type("transfer")\n Contract.add_recipient address: ico_contract, action: "buyTokens", args: [0x0000A3A066DD64FBD51AE384F2383684B3803BC72012BFEAA9CD1C93AB7C60F584DC]\n Contract.add_uco_transfer(amount: 2, to: ico_contract)\nend\n')),(0,a.kt)("h2",{id:"vote-system"},"Vote system"),(0,a.kt)("p",null,"This contract counts the number of votes for list of candidates (Mr.X and Mrs.Y)."),(0,a.kt)("p",null,"For each vote request, it increments the number of votes for the given candidate,\nand create a new transaction out of it, with the new state in the ",(0,a.kt)("inlineCode",{parentName:"p"},"content")," field of the transaction as JSON document."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"A public function is available to be able to easily query the number of votes in the system")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\ncondition triggered_by: transaction, on: vote(candidate), as: [\n content: List.in?(["X", "Y"], candidate)\n]\n\nactions triggered_by: transaction, on: vote(candidate) do\n votes = []\n\n if contract.content == "" do\n votes = add_vote([x: 0, y: 0], candidate)\n else\n votes = get_votes()\n votes = add_vote(votes, candidate)\n end\n\n Contract.set_content(Json.to_string(votes))\nend\n\nfun add_vote(votes, candidate) do\n if candidate == "X" do\n Map.set(votes, "x", votes.x + 1)\n else\n Map.set(votes, "y", votes.y + 1)\n end\nend\n\nexport fun get_votes() do\n count_x = Json.path_extract(contract.content, "$.x")\n count_y = Json.path_extract(contract.content, "$.y")\n [x: count_x, y: count_y]\nend\n')))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9707],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(n),m=a,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return n?r.createElement(f,s(s({ref:t},d),{},{components:n})):r.createElement(f,s({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"examples",title:"Smart Contracts - Examples",sidebar_label:"Examples",sidebar_position:5},s=void 0,i={unversionedId:"build/smart-contracts/language/examples",id:"build/smart-contracts/language/examples",title:"Smart Contracts - Examples",description:"Hello World",source:"@site/docs/build/smart-contracts/language/examples.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/examples",permalink:"/build/smart-contracts/language/examples",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:5,frontMatter:{id:"examples",title:"Smart Contracts - Examples",sidebar_label:"Examples",sidebar_position:5},sidebar:"docs",previous:{title:"Library",permalink:"/build/smart-contracts/language/library"},next:{title:"Legacy",permalink:"/build/smart-contracts/language/legacy/"}},c={},l=[{value:"Hello World",id:"hello-world",level:2},{value:"ICO (Initial Coin Offering)",id:"ico-initial-coin-offering",level:2},{value:"Recurring ICO",id:"recurring-ico",level:2},{value:"Vote system",id:"vote-system",level:2}],d={toc:l},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"hello-world"},"Hello World"),(0,a.kt)("p",null,'This simple contract will be triggered once, at the specified unix timestamp.\nIt will create a new transaction with a content "Hello world!".'),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: datetime, at: 1689857160 do\n Contract.set_content("Hello world!")\nend\n')),(0,a.kt)("h2",{id:"ico-initial-coin-offering"},"ICO (Initial Coin Offering)"),(0,a.kt)("p",null,"This contract the crowdsale of an ICO."),(0,a.kt)("p",null,"Users can send UCOs to this contract and will receive 10000 times the amount as token from this contract."),(0,a.kt)("p",null,"It is possible for users to define a different receive address."),(0,a.kt)("p",null,"The Smart Contract's chain must define a token."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\ncondition triggered_by: transaction, on: buyToken(recipient_address), as: [\n uco_transfers: check_amount(transaction.uco_movements)\n]\n\nactions triggered_by: transaction, on: buyToken(recipient_address) do\n transfers = get_transfered_amount()\n\n # Get the amount of UCO sent to this contract\n amount_send = number_of_uco_sent()\n\n # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token\n token_to_credit = number_of_tokens(amount_send)\n\n Contract.set_type("transfer")\n\n # Users can specify to send the token in a different address\n Contract.add_token_transfer(to: recipient_address, token_address: token_address(), amount: token_to_credit)\nend\n\nfun number_of_tokens(uco_amount) do\n uco_amount * 10000\nend\n\nfun number_of_uco_sent() do\n Map.get(transaction.uco_movements, contract.address)\nend\n\nfun get_transfered_amount() do\n Map.get(transaction.uco_transfers, contract.address)\nend\n\nfun check_amount(transfers) do \n transfered_amount = Map.get(transfers, contract.address)\n transfered_amount != nil && transfered_amount > 0\nend\n\nfun token_address() do\n Chain.get_genesis_address(contract.address)\nend\n\n')),(0,a.kt)("h2",{id:"recurring-ico"},"Recurring ICO"),(0,a.kt)("p",null,"This contract will automatically call the ICO contract with 2 UCOs every hours.\nThe tokens will be transfered in a different chain."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 * * * *" do\n\n ico_contract = 0x0000993F3BE0CE40541E47735AA083854ECAC7785B39435C90D8456C777B9E9D81F1\n\n Contract.set_type("transfer")\n Contract.add_recipient address: ico_contract, action: "buyTokens", args: [0x0000A3A066DD64FBD51AE384F2383684B3803BC72012BFEAA9CD1C93AB7C60F584DC]\n Contract.add_uco_transfer(amount: 2, to: ico_contract)\nend\n')),(0,a.kt)("h2",{id:"vote-system"},"Vote system"),(0,a.kt)("p",null,"This contract counts the number of votes for list of candidates (Mr.X and Mrs.Y)."),(0,a.kt)("p",null,"For each vote request, it increments the number of votes for the given candidate,\nand create a new transaction out of it, with the new state in the ",(0,a.kt)("inlineCode",{parentName:"p"},"content")," field of the transaction as JSON document."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"A public function is available to be able to easily query the number of votes in the system")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\ncondition triggered_by: transaction, on: vote(candidate), as: [\n content: List.in?(["X", "Y"], candidate)\n]\n\nactions triggered_by: transaction, on: vote(candidate) do\n votes = []\n\n if contract.content == "" do\n votes = add_vote([x: 0, y: 0], candidate)\n else\n votes = get_votes()\n votes = add_vote(votes, candidate)\n end\n\n Contract.set_content(Json.to_string(votes))\nend\n\nfun add_vote(votes, candidate) do\n if candidate == "X" do\n Map.set(votes, "x", votes.x + 1)\n else\n Map.set(votes, "y", votes.y + 1)\n end\nend\n\nexport fun get_votes() do\n count_x = Json.path_extract(contract.content, "$.x")\n count_y = Json.path_extract(contract.content, "$.y")\n [x: count_x, y: count_y]\nend\n')))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/9bb63452.9cb69565.js b/assets/js/9bb63452.a04233bc.js similarity index 95% rename from assets/js/9bb63452.9cb69565.js rename to assets/js/9bb63452.a04233bc.js index f467a98bb..4172fae38 100644 --- a/assets/js/9bb63452.9cb69565.js +++ b/assets/js/9bb63452.a04233bc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[974],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,c=e.originalType,p=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,m=s["".concat(p,".").concat(f)]||s[f]||d[f]||c;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=r.length,i=new Array(c);i[0]=f;var a={};for(var p in t)hasOwnProperty.call(t,p)&&(a[p]=t[p]);a.originalType=e,a[s]="string"==typeof e?e:o,i[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));r(8209);const c={id:"p2p",title:"P2P"},i=void 0,a={unversionedId:"build/core/p2p/p2p",id:"build/core/p2p/p2p",title:"P2P",description:"",source:"@site/docs/build/core/p2p/README.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/",permalink:"/build/core/p2p/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"p2p",title:"P2P"},sidebar:"docs",previous:{title:"Service",permalink:"/build/core/oracle-chain/service"},next:{title:"Messaging",permalink:"/build/core/p2p/messaging"}},p={},l=[],u={toc:l},s="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[974],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,c=e.originalType,p=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,m=s["".concat(p,".").concat(f)]||s[f]||d[f]||c;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=r.length,i=new Array(c);i[0]=f;var a={};for(var p in t)hasOwnProperty.call(t,p)&&(a[p]=t[p]);a.originalType=e,a[s]="string"==typeof e?e:o,i[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));r(8209);const c={id:"p2p",title:"P2P"},i=void 0,a={unversionedId:"build/core/p2p/p2p",id:"build/core/p2p/p2p",title:"P2P",description:"",source:"@site/docs/build/core/p2p/README.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/",permalink:"/build/core/p2p/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"p2p",title:"P2P"},sidebar:"docs",previous:{title:"Service",permalink:"/build/core/oracle-chain/service"},next:{title:"Messaging",permalink:"/build/core/p2p/messaging"}},p={},l=[],u={toc:l},s="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/9c94cf05.0e59a491.js b/assets/js/9c94cf05.274e2ca0.js similarity index 97% rename from assets/js/9c94cf05.0e59a491.js rename to assets/js/9c94cf05.274e2ca0.js index 43a4244f1..3035e36b4 100644 --- a/assets/js/9c94cf05.0e59a491.js +++ b/assets/js/9c94cf05.274e2ca0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9559],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||i;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=r(7294),i=r(3905);r(8209);const o={id:"skip",title:"skip",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/directives/skip",id:"build/api/schema/directives/skip",title:"skip",description:"Directs the executor to skip this field or fragment when the if argument is true.",source:"@site/docs/build/api/schema/directives/skip.mdx",sourceDirName:"build/api/schema/directives",slug:"/build/api/schema/directives/skip",permalink:"/build/api/schema/directives/skip",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"skip",title:"skip",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"include",permalink:"/build/api/schema/directives/include"},next:{title:"ErrorContext",permalink:"/build/api/schema/enums/error-context"}},s={},p=[{value:"Arguments",id:"arguments",level:3},{value:'skip.ifBoolean! ',id:"code-style-fontweight-normal-skipbifbcodeboolean--",level:4}],d=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},k="wrapper";function b(e){let{components:t,...r}=e;return(0,i.kt)(k,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Directs the executor to skip this field or fragment when the ",(0,i.kt)("inlineCode",{parentName:"p"},"if")," argument is true."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"directive @skip(\n if: Boolean!\n)\n")),(0,i.kt)("h3",{id:"arguments"},"Arguments"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-skipbifbcodeboolean--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"skip.",(0,i.kt)("b",null,"if"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,i.kt)("inlineCode",{parentName:"a"},"Boolean!"))," ",(0,i.kt)(f,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,i.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"Skipped when true.")))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9559],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||i;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>l,default:()=>b,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=r(7294),i=r(3905);r(8209);const o={id:"skip",title:"skip",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/directives/skip",id:"build/api/schema/directives/skip",title:"skip",description:"Directs the executor to skip this field or fragment when the if argument is true.",source:"@site/docs/build/api/schema/directives/skip.mdx",sourceDirName:"build/api/schema/directives",slug:"/build/api/schema/directives/skip",permalink:"/build/api/schema/directives/skip",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"skip",title:"skip",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"include",permalink:"/build/api/schema/directives/include"},next:{title:"ErrorContext",permalink:"/build/api/schema/enums/error-context"}},s={},p=[{value:"Arguments",id:"arguments",level:3},{value:'skip.ifBoolean! ',id:"code-style-fontweight-normal-skipbifbcodeboolean--",level:4}],d=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},k="wrapper";function b(e){let{components:t,...r}=e;return(0,i.kt)(k,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Directs the executor to skip this field or fragment when the ",(0,i.kt)("inlineCode",{parentName:"p"},"if")," argument is true."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"directive @skip(\n if: Boolean!\n)\n")),(0,i.kt)("h3",{id:"arguments"},"Arguments"),(0,i.kt)("h4",{id:"code-style-fontweight-normal-skipbifbcodeboolean--"},(0,i.kt)("a",{parentName:"h4",href:"#"},(0,i.kt)("code",{style:{fontWeight:"normal"}},"skip.",(0,i.kt)("b",null,"if"))),(0,i.kt)(d,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,i.kt)("inlineCode",{parentName:"a"},"Boolean!"))," ",(0,i.kt)(f,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,i.kt)(f,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"Skipped when true.")))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/9c964f59.8ed8d136.js b/assets/js/9c964f59.6fb627df.js similarity index 98% rename from assets/js/9c964f59.8ed8d136.js rename to assets/js/9c964f59.6fb627df.js index 53334b653..616b840e0 100644 --- a/assets/js/9c964f59.8ed8d136.js +++ b/assets/js/9c964f59.6fb627df.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8715],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),s=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},p=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),u=r,b=d["".concat(i,".").concat(u)]||d[u]||m[u]||o;return a?n.createElement(b,c(c({ref:t},p),{},{components:a})):n.createElement(b,c({ref:t},p))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,c=new Array(o);c[0]=u;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[d]="string"==typeof e?e:r,c[1]=l;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>p});var n=a(7462),r=a(7294),o=a(3905);a(8209);const c={id:"int",title:"Int",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/scalars/int",id:"build/api/schema/scalars/int",title:"Int",description:"The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",source:"@site/docs/build/api/schema/scalars/int.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/int",permalink:"/build/api/schema/scalars/int",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"int",title:"Int",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Hex",permalink:"/build/api/schema/scalars/hex"},next:{title:"NonNegInteger",permalink:"/build/api/schema/scalars/non-neg-integer"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},k="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(k,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Int")," scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Int\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/balance"},(0,o.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/endpoint"},(0,o.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,o.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-balance"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenBalance"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenTransfer"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-attestation"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoTransfer"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,o.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,o.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8715],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),s=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},p=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),u=r,b=d["".concat(i,".").concat(u)]||d[u]||m[u]||o;return a?n.createElement(b,c(c({ref:t},p),{},{components:a})):n.createElement(b,c({ref:t},p))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,c=new Array(o);c[0]=u;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[d]="string"==typeof e?e:r,c[1]=l;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>s,contentTitle:()=>l,default:()=>y,frontMatter:()=>c,metadata:()=>i,toc:()=>p});var n=a(7462),r=a(7294),o=a(3905);a(8209);const c={id:"int",title:"Int",hide_table_of_contents:!1},l=void 0,i={unversionedId:"build/api/schema/scalars/int",id:"build/api/schema/scalars/int",title:"Int",description:"The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",source:"@site/docs/build/api/schema/scalars/int.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/int",permalink:"/build/api/schema/scalars/int",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"int",title:"Int",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Hex",permalink:"/build/api/schema/scalars/hex"},next:{title:"NonNegInteger",permalink:"/build/api/schema/scalars/non-neg-integer"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},k="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(k,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"Int")," scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Int\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/balance"},(0,o.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/endpoint"},(0,o.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger-operations"},(0,o.kt)("inlineCode",{parentName:"a"},"LedgerOperations"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,o.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-balance"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenBalance"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenTransfer"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-attestation"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"UcoTransfer"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,o.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/validation-stamp"},(0,o.kt)("inlineCode",{parentName:"a"},"ValidationStamp"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/9d5784d1.e47292aa.js b/assets/js/9d5784d1.ef361cee.js similarity index 98% rename from assets/js/9d5784d1.e47292aa.js rename to assets/js/9d5784d1.ef361cee.js index 22c077d99..4dd8bcda5 100644 --- a/assets/js/9d5784d1.e47292aa.js +++ b/assets/js/9d5784d1.ef361cee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7028],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),u=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(r),f=o,b=s["".concat(l,".").concat(f)]||s[f]||d[f]||i;return r?n.createElement(b,a(a({ref:t},p),{},{components:r})):n.createElement(b,a({ref:t},p))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var u=2;u{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"go",title:"Go SDK"},a=void 0,c={unversionedId:"build/sdk/go",id:"build/sdk/go",title:"Go SDK",description:"Archethic Blockchain Official Go SDK is available on Github",source:"@site/docs/build/sdk/go.md",sourceDirName:"build/sdk",slug:"/build/sdk/go",permalink:"/build/sdk/go",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"go",title:"Go SDK"},sidebar:"docs",previous:{title:"Dart SDK",permalink:"/build/sdk/dart"},next:{title:"Javascript SDK",permalink:"/build/sdk/js"}},l={},u=[],p={toc:u},s="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Blockchain Official Go SDK is available on ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libgo"},"Github")),(0,o.kt)("hr",null),(0,o.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7028],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),u=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(r),f=o,b=s["".concat(l,".").concat(f)]||s[f]||d[f]||i;return r?n.createElement(b,a(a({ref:t},p),{},{components:r})):n.createElement(b,a({ref:t},p))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var u=2;u{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"go",title:"Go SDK"},a=void 0,c={unversionedId:"build/sdk/go",id:"build/sdk/go",title:"Go SDK",description:"Archethic Blockchain Official Go SDK is available on Github",source:"@site/docs/build/sdk/go.md",sourceDirName:"build/sdk",slug:"/build/sdk/go",permalink:"/build/sdk/go",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"go",title:"Go SDK"},sidebar:"docs",previous:{title:"Dart SDK",permalink:"/build/sdk/dart"},next:{title:"Javascript SDK",permalink:"/build/sdk/js"}},l={},u=[],p={toc:u},s="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Blockchain Official Go SDK is available on ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libgo"},"Github")),(0,o.kt)("hr",null),(0,o.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/9de09737.a43df085.js b/assets/js/9de09737.a8862144.js similarity index 98% rename from assets/js/9de09737.a43df085.js rename to assets/js/9de09737.a8862144.js index 6d4b10298..be5a5b21a 100644 --- a/assets/js/9de09737.a43df085.js +++ b/assets/js/9de09737.a8862144.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6783],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),k=r,h=p["".concat(l,".").concat(k)]||p[k]||u[k]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=k;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"transaction-types",title:"Transaction types",sidebar_position:4},i=void 0,s={unversionedId:"learn/transaction-types",id:"learn/transaction-types",title:"Transaction types",description:"The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions.",source:"@site/docs/learn/transaction-types.md",sourceDirName:"learn",slug:"/learn/transaction-types",permalink:"/learn/transaction-types",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"transaction-types",title:"Transaction types",sidebar_position:4},sidebar:"docs",previous:{title:"Transaction fees",permalink:"/learn/fee"},next:{title:"ARCH consensus",permalink:"/learn/arch-consensus/"}},l={},c=[{value:"node (network)",id:"node-network",level:2},{value:"node_shared_secrets (network)",id:"node_shared_secrets-network",level:2},{value:"node_rewards (network)",id:"node_rewards-network",level:2},{value:"mint_rewards (network)",id:"mint_rewards-network",level:2},{value:"oracle (network)",id:"oracle-network",level:2},{value:"oracle_summary (network)",id:"oracle_summary-network",level:2},{value:"code_proposal (network)",id:"code_proposal-network",level:2},{value:"code_approval (network)",id:"code_approval-network",level:2},{value:"origin (network)",id:"origin-network",level:2},{value:"keychain",id:"keychain",level:2},{value:"keychain_access",id:"keychain_access",level:2},{value:"transfer",id:"transfer",level:2},{value:"token",id:"token",level:2},{value:"hosting",id:"hosting",level:2},{value:"data",id:"data",level:2},{value:"contract",id:"contract",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions. "),(0,r.kt)("p",null,"There are 2 categories of transaction types, the network transactions and the others:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"network transactions: every nodes in the network must replicate them"),(0,r.kt)("li",{parentName:"ul"},"others: only elected nodes must replicate them")),(0,r.kt)("h2",{id:"node-network"},"node (network)"),(0,r.kt)("p",null,"Only nodes are allowed to create a node transaction. It contains the information about a running node. It is sent when a node joins or when it changes its network configuration."),(0,r.kt)("h2",{id:"node_shared_secrets-network"},"node_shared_secrets (network)"),(0,r.kt)("p",null,"This daily (11:30pm) transaction provides a shared secret to all the running nodes."),(0,r.kt)("h2",{id:"node_rewards-network"},"node_rewards (network)"),(0,r.kt)("p",null,"This daily (02:00am) transaction rewards the nodes by sending them some MUCOs based on their uptime."),(0,r.kt)("h2",{id:"mint_rewards-network"},"mint_rewards (network)"),(0,r.kt)("p",null,"This daily (02:00am) transaction mints some MUCOs. The amount minted is the same as the amount of UCO burned previous day."),(0,r.kt)("h2",{id:"oracle-network"},"oracle (network)"),(0,r.kt)("p",null,"This transaction fetch some off-chain data and provides it in the content. It is sent every minutes. Please note that the oracle content may not always contain the same information. For example the UCO price is only sent if it changes."),(0,r.kt)("h2",{id:"oracle_summary-network"},"oracle_summary (network)"),(0,r.kt)("p",null,"This daily (00:00am) transaction aggregates all oracles transaction of the previous day."),(0,r.kt)("h2",{id:"code_proposal-network"},"code_proposal (network)"),(0,r.kt)("p",null,"This transaction contains a diff (code change) to be applied on the nodes. It then need to be approved before it is applied."),(0,r.kt)("h2",{id:"code_approval-network"},"code_approval (network)"),(0,r.kt)("p",null,"This transaction is used to approve a ",(0,r.kt)("inlineCode",{parentName:"p"},"code_proposal"),". Once a threshold is passed, the diff is applied to all nodes."),(0,r.kt)("h2",{id:"origin-network"},"origin (network)"),(0,r.kt)("p",null,"TODO"),(0,r.kt)("h2",{id:"keychain"},"keychain"),(0,r.kt)("p",null,"This transaction is created when creating a wallet. It is used to be able to receive/send UCOs and Tokens."),(0,r.kt)("h2",{id:"keychain_access"},"keychain_access"),(0,r.kt)("p",null,"This transaction defines the authorization of a ",(0,r.kt)("inlineCode",{parentName:"p"},"keychain"),"."),(0,r.kt)("h2",{id:"transfer"},"transfer"),(0,r.kt)("p",null,"This transaction contains either at least, one ",(0,r.kt)("inlineCode",{parentName:"p"},"uco_transfer"),", one ",(0,r.kt)("inlineCode",{parentName:"p"},"token_transfer")," or one ",(0,r.kt)("inlineCode",{parentName:"p"},"recipient"),"."),(0,r.kt)("h2",{id:"token"},"token"),(0,r.kt)("p",null,"This transaction defines a ",(0,r.kt)("a",{parentName:"p",href:"/learn/token"},"Token"),"."),(0,r.kt)("h2",{id:"hosting"},"hosting"),(0,r.kt)("p",null,"This transaction is a ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb"},"AEWeb")," transaction. Read ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb/how-it-works"},"How it works")," for the details."),(0,r.kt)("h2",{id:"data"},"data"),(0,r.kt)("p",null,"This transaction contains either a ",(0,r.kt)("inlineCode",{parentName:"p"},"content")," or at least one ",(0,r.kt)("inlineCode",{parentName:"p"},"ownership"),"."),(0,r.kt)("h2",{id:"contract"},"contract"),(0,r.kt)("p",null,"This transaction contains a contract in the ",(0,r.kt)("inlineCode",{parentName:"p"},"code")," field."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6783],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),k=r,h=p["".concat(l,".").concat(k)]||p[k]||u[k]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=k;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"transaction-types",title:"Transaction types",sidebar_position:4},i=void 0,s={unversionedId:"learn/transaction-types",id:"learn/transaction-types",title:"Transaction types",description:"The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions.",source:"@site/docs/learn/transaction-types.md",sourceDirName:"learn",slug:"/learn/transaction-types",permalink:"/learn/transaction-types",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"transaction-types",title:"Transaction types",sidebar_position:4},sidebar:"docs",previous:{title:"Transaction fees",permalink:"/learn/fee"},next:{title:"ARCH consensus",permalink:"/learn/arch-consensus/"}},l={},c=[{value:"node (network)",id:"node-network",level:2},{value:"node_shared_secrets (network)",id:"node_shared_secrets-network",level:2},{value:"node_rewards (network)",id:"node_rewards-network",level:2},{value:"mint_rewards (network)",id:"mint_rewards-network",level:2},{value:"oracle (network)",id:"oracle-network",level:2},{value:"oracle_summary (network)",id:"oracle_summary-network",level:2},{value:"code_proposal (network)",id:"code_proposal-network",level:2},{value:"code_approval (network)",id:"code_approval-network",level:2},{value:"origin (network)",id:"origin-network",level:2},{value:"keychain",id:"keychain",level:2},{value:"keychain_access",id:"keychain_access",level:2},{value:"transfer",id:"transfer",level:2},{value:"token",id:"token",level:2},{value:"hosting",id:"hosting",level:2},{value:"data",id:"data",level:2},{value:"contract",id:"contract",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions. "),(0,r.kt)("p",null,"There are 2 categories of transaction types, the network transactions and the others:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"network transactions: every nodes in the network must replicate them"),(0,r.kt)("li",{parentName:"ul"},"others: only elected nodes must replicate them")),(0,r.kt)("h2",{id:"node-network"},"node (network)"),(0,r.kt)("p",null,"Only nodes are allowed to create a node transaction. It contains the information about a running node. It is sent when a node joins or when it changes its network configuration."),(0,r.kt)("h2",{id:"node_shared_secrets-network"},"node_shared_secrets (network)"),(0,r.kt)("p",null,"This daily (11:30pm) transaction provides a shared secret to all the running nodes."),(0,r.kt)("h2",{id:"node_rewards-network"},"node_rewards (network)"),(0,r.kt)("p",null,"This daily (02:00am) transaction rewards the nodes by sending them some MUCOs based on their uptime."),(0,r.kt)("h2",{id:"mint_rewards-network"},"mint_rewards (network)"),(0,r.kt)("p",null,"This daily (02:00am) transaction mints some MUCOs. The amount minted is the same as the amount of UCO burned previous day."),(0,r.kt)("h2",{id:"oracle-network"},"oracle (network)"),(0,r.kt)("p",null,"This transaction fetch some off-chain data and provides it in the content. It is sent every minutes. Please note that the oracle content may not always contain the same information. For example the UCO price is only sent if it changes."),(0,r.kt)("h2",{id:"oracle_summary-network"},"oracle_summary (network)"),(0,r.kt)("p",null,"This daily (00:00am) transaction aggregates all oracles transaction of the previous day."),(0,r.kt)("h2",{id:"code_proposal-network"},"code_proposal (network)"),(0,r.kt)("p",null,"This transaction contains a diff (code change) to be applied on the nodes. It then need to be approved before it is applied."),(0,r.kt)("h2",{id:"code_approval-network"},"code_approval (network)"),(0,r.kt)("p",null,"This transaction is used to approve a ",(0,r.kt)("inlineCode",{parentName:"p"},"code_proposal"),". Once a threshold is passed, the diff is applied to all nodes."),(0,r.kt)("h2",{id:"origin-network"},"origin (network)"),(0,r.kt)("p",null,"TODO"),(0,r.kt)("h2",{id:"keychain"},"keychain"),(0,r.kt)("p",null,"This transaction is created when creating a wallet. It is used to be able to receive/send UCOs and Tokens."),(0,r.kt)("h2",{id:"keychain_access"},"keychain_access"),(0,r.kt)("p",null,"This transaction defines the authorization of a ",(0,r.kt)("inlineCode",{parentName:"p"},"keychain"),"."),(0,r.kt)("h2",{id:"transfer"},"transfer"),(0,r.kt)("p",null,"This transaction contains either at least, one ",(0,r.kt)("inlineCode",{parentName:"p"},"uco_transfer"),", one ",(0,r.kt)("inlineCode",{parentName:"p"},"token_transfer")," or one ",(0,r.kt)("inlineCode",{parentName:"p"},"recipient"),"."),(0,r.kt)("h2",{id:"token"},"token"),(0,r.kt)("p",null,"This transaction defines a ",(0,r.kt)("a",{parentName:"p",href:"/learn/token"},"Token"),"."),(0,r.kt)("h2",{id:"hosting"},"hosting"),(0,r.kt)("p",null,"This transaction is a ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb"},"AEWeb")," transaction. Read ",(0,r.kt)("a",{parentName:"p",href:"/participate/aeweb/how-it-works"},"How it works")," for the details."),(0,r.kt)("h2",{id:"data"},"data"),(0,r.kt)("p",null,"This transaction contains either a ",(0,r.kt)("inlineCode",{parentName:"p"},"content")," or at least one ",(0,r.kt)("inlineCode",{parentName:"p"},"ownership"),"."),(0,r.kt)("h2",{id:"contract"},"contract"),(0,r.kt)("p",null,"This transaction contains a contract in the ",(0,r.kt)("inlineCode",{parentName:"p"},"code")," field."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/a0393694.45b72d95.js b/assets/js/a0393694.8e936b9d.js similarity index 99% rename from assets/js/a0393694.45b72d95.js rename to assets/js/a0393694.8e936b9d.js index adba84d9a..d93ade8a9 100644 --- a/assets/js/a0393694.45b72d95.js +++ b/assets/js/a0393694.8e936b9d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1248],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=l(a),u=i,m=h["".concat(c,".").concat(u)]||h[u]||p[u]||r;return a?n.createElement(m,o(o({ref:t},d),{},{components:a})):n.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[h]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var n=a(7462),i=(a(7294),a(3905));a(8209);const r={id:"archethic-cli",title:"Archethic's CLI"},o=void 0,s={unversionedId:"participate/cli/archethic-cli",id:"participate/cli/archethic-cli",title:"Archethic's CLI",description:"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also",source:"@site/docs/participate/cli/README.md",sourceDirName:"participate/cli",slug:"/participate/cli/",permalink:"/participate/cli/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"archethic-cli",title:"Archethic's CLI"},sidebar:"docs",previous:{title:"Bridge Front End",permalink:"/participate/bridge/usage/bridge-front"},next:{title:"Archethic Wallet",permalink:"/participate/wallet/"}},c={},l=[{value:"Installation",id:"installation",level:2},{value:"Generate address",id:"generate-address",level:2},{value:"Build and send transaction",id:"build-and-send-transaction",level:2},{value:"UCO transfers",id:"uco-transfers",level:3},{value:"Token transfers",id:"token-transfers",level:3},{value:"Recipients",id:"recipients",level:3},{value:"Ownerships",id:"ownerships",level:4},{value:"Content",id:"content",level:3},{value:"Smart contract",id:"smart-contract",level:3},{value:"Sending the transaction",id:"sending-the-transaction",level:3},{value:"Keychain management",id:"keychain-management",level:2},{value:"Creating a keychain",id:"creating-a-keychain",level:3},{value:"Accessing a keychain",id:"accessing-a-keychain",level:3},{value:"Adding / removing a service",id:"adding--removing-a-service",level:3},{value:"Create a transaction for a service",id:"create-a-transaction-for-a-service",level:3},{value:"CLI - Archethic Command Line Interpreter",id:"cli---archethic-command-line-interpreter",level:2},{value:"Contribution",id:"contribution",level:2}],d={toc:l},h="wrapper";function p(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also\nits own command line interpreter is available to make interaction with the Blockchain easier for power users."),(0,i.kt)("p",null,"This tool helps you to connect to your decentralized wallet (keychain), manage it, send transactions, etc."),(0,i.kt)("h2",{id:"installation"},"Installation"),(0,i.kt)("p",null,"Download a pre-compiled binary or package from the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-cli/releases"},"releases")," page."),(0,i.kt)("p",null,"Or install it with go:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"go install github.com/archethic-foundation/archethic-cli@latest\n")),(0,i.kt)("p",null,"Or just build it yourself (requires Go 1.18+):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/archethic-foundation/archethic-cli.git\ncd archethic-cli\ngo build .\n")),(0,i.kt)("hr",null),(0,i.kt)("p",null,"By default the CLI works as TUI (terminal user interface) application allowing the application to be interactive. "),(0,i.kt)("p",null,"When launching the Archethic CLI you will access to the main menu that allows you to select an action. "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Generate an address"),(0,i.kt)("li",{parentName:"ul"},"Build and send a transaction"),(0,i.kt)("li",{parentName:"ul"},"Manage keychains (and send transaction keychains)")),(0,i.kt)("h2",{id:"generate-address"},"Generate address"),(0,i.kt)("p",null,"This generate address page allows you to get the address for a given seed, a specific index and with a given elliptic curve and hash algorithm. The default values are probably fine for elliptic curve and hash algorithm."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Generate address",src:a(7848).Z,width:"1334",height:"698"})),(0,i.kt)("h2",{id:"build-and-send-transaction"},"Build and send transaction"),(0,i.kt)("p",null,"This menu allows you to create a transaction. There are 7 tabs you can navigate to, by using the left and right arrows of your keyboard in order to configure your transaction."),(0,i.kt)("p",null,"This is where you set the main info (like the endpoint, the seed, the transaction type\u2026) and send the transaction. By selecting one of the default node endpoint you will have the URL to send your transaction automatically set. You will need to enter your seed. "),(0,i.kt)("p",null,"The index of the transaction will be set automatically (based on the index of the last transaction). Select one of the transaction type, regarding the type you select, you might have specific information to provide to your transaction (for example a transaction of type ",(0,i.kt)("inlineCode",{parentName:"p"},"Transfer")," needs a UCO transfer or a token transfer. "),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," buttons sends the transaction and the ",(0,i.kt)("inlineCode",{parentName:"p"},"Reset")," button clears the form."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Main tab",src:a(3288).Z,width:"2224",height:"1418"})),(0,i.kt)("h3",{id:"uco-transfers"},"UCO transfers"),(0,i.kt)("p",null,"This tab allows you to create UCO transfers in your transaction. Type a valid address and an amount and press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button.\n",(0,i.kt)("img",{alt:"UCO transfer tab",src:a(3040).Z,width:"2224",height:"544"})),(0,i.kt)("p",null,"You will then have a list of configured UCO transfers. Using the up and down keys, you can highlight a configured transfer and delete it by typing ",(0,i.kt)("inlineCode",{parentName:"p"},"d"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"UCO transfer tab 2",src:a(5436).Z,width:"2226",height:"620"})),(0,i.kt)("h3",{id:"token-transfers"},"Token transfers"),(0,i.kt)("p",null,"The same logic applies to the token transfers tab. But you need to specify a token address and an token id."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Token transfers tab",src:a(6753).Z,width:"2212",height:"654"})),(0,i.kt)("h3",{id:"recipients"},"Recipients"),(0,i.kt)("p",null,"The same logic also applies to the recipients tab which targets smart contract executions."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Recipients tab",src:a(1699).Z,width:"2214",height:"518"})),(0,i.kt)("h4",{id:"ownerships"},"Ownerships"),(0,i.kt)("p",null,"The ownership tab contains the information about the access you give to execute your transaction. "),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This will be needed if you want to create a smart contract.")),(0,i.kt)("p",null,"You can define several ownerships.\nEach ownership has"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"a secret"),(0,i.kt)("li",{parentName:"ul"},"a list of authorization keys that get access to the secret. ")),(0,i.kt)("p",null,"At least one of the ownership must have the seed as a secret and the storage nouce public key as an authorization key. "),(0,i.kt)("p",null,"You can press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Load Storage Nounce Public Key")," to automatically set the authorization key with the value of the storage nonce public key. (ie. for smart contract's creation key delegation) "),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"You must have selected an endpoint in the main tab in order to load the storage nounce public key of the network you target.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerships tab",src:a(771).Z,width:"2216",height:"644"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerhips tab 2",src:a(4786).Z,width:"2222",height:"764"})),(0,i.kt)("p",null,"Pressing the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add authorization key")," allows you to add a new authorization key that will get access to the secret. Once added to the list of autorized keys, you can highlight a key and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d")," to delete it. "),(0,i.kt)("p",null,"Once you\u2019re done with the configuration, you can press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button to add the ownership configuration to the transaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerships tab 3",src:a(1100).Z,width:"2216",height:"708"})),(0,i.kt)("p",null,"And here also, if you want to delete a configured ownership, you can highlight it and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d"),"."),(0,i.kt)("h3",{id:"content"},"Content"),(0,i.kt)("p",null,"The content tab allows you to set the content of the transaction. Start typing to enter the edit mode of this tab and press ",(0,i.kt)("inlineCode",{parentName:"p"},"esc")," if you want to exit the edit mode and navigate to another tab."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Content tab",src:a(8914).Z,width:"2214",height:"450"})),(0,i.kt)("h3",{id:"smart-contract"},"Smart contract"),(0,i.kt)("p",null,"The smart contract tab allows you to set the smart contract of the transaction. Start typing to enter the edit mode of this tab and press ",(0,i.kt)("inlineCode",{parentName:"p"},"esc")," if you want to exit the edit mode and navigate to another tab."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Smart contract tab",src:a(4241).Z,width:"2226",height:"446"})),(0,i.kt)("h3",{id:"sending-the-transaction"},"Sending the transaction"),(0,i.kt)("p",null,"When you\u2019re done configuring the transaction, go back to the main tab and press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Sending transaction",src:a(7722).Z,width:"2216",height:"1340"})),(0,i.kt)("h2",{id:"keychain-management"},"Keychain management"),(0,i.kt)("p",null,"The keychain management menu allows you to "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create a keychain with a given seed"),(0,i.kt)("li",{parentName:"ul"},"access a keychain"),(0,i.kt)("li",{parentName:"ul"},"add and remove services from a keychain"),(0,i.kt)("li",{parentName:"ul"},"send a keychain transaction for a specific service")),(0,i.kt)("p",null,"In any cases you will need to start by selecting the endpoint you want, that will automatically feed the URL of the endpoint.\nThen specify your access seed."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Keychain management",src:a(2603).Z,width:"356",height:"538"})),(0,i.kt)("h3",{id:"creating-a-keychain"},"Creating a keychain"),(0,i.kt)("p",null,"If you press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create keychain")," button, a new keychain will be created. And the seed you provided will be used to access it. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create a keychain",src:a(7995).Z,width:"1982",height:"814"})),(0,i.kt)("h3",{id:"accessing-a-keychain"},"Accessing a keychain"),(0,i.kt)("p",null,"Pressing the ",(0,i.kt)("inlineCode",{parentName:"p"},"Access keychain")," button will give you access to the list of services associated with your keychain (one default ",(0,i.kt)("inlineCode",{parentName:"p"},"uco")," service has been created).\n",(0,i.kt)("img",{alt:"Access a keychain",src:a(8634).Z,width:"912",height:"1162"})),(0,i.kt)("h3",{id:"adding--removing-a-service"},"Adding / removing a service"),(0,i.kt)("p",null,"If you go down to the ",(0,i.kt)("inlineCode",{parentName:"p"},"service name")," field you can type a new service name and a default derivation path will be created. If you then press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create Service"),", your new service will be displayed in the list of services."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Add a service",src:a(3061).Z,width:"898",height:"1212"})),(0,i.kt)("p",null,"If you highlight a service and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d")," the service will be deleted."),(0,i.kt)("h3",{id:"create-a-transaction-for-a-service"},"Create a transaction for a service"),(0,i.kt)("p",null,"If you highlight a specific service and press ",(0,i.kt)("inlineCode",{parentName:"p"},"enter")," the highlighted will be selected."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create a transaction for a service",src:a(2029).Z,width:"898",height:"1208"})),(0,i.kt)("p",null,"If you then press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create Transaction for Service")," button, you will get a new menu to create a transaction for the selected service."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Main tab of create keychain transaction",src:a(9294).Z,width:"2212",height:"870"})),(0,i.kt)("p",null,"The mechanism to configure a keychain transaction for a service is the same as the one for a transaction (described above). Only a few configuration are not possible (like the endpoint, the seed, the index and the elliptic curve)."),(0,i.kt)("h2",{id:"cli---archethic-command-line-interpreter"},"CLI - Archethic Command Line Interpreter"),(0,i.kt)("p",null,"It is also possible to call the archethic cli tool using the command line."),(0,i.kt)("p",null,"For details of available commands, you can"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"consult the ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-cli#cli"},"readme")," of the corresponding github project."),(0,i.kt)("li",{parentName:"ul"},"display help with the command ",(0,i.kt)("inlineCode",{parentName:"li"},"--help"),".")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Help command",src:a(2941).Z,width:"1526",height:"810"})),(0,i.kt)("h2",{id:"contribution"},"Contribution"),(0,i.kt)("p",null,"If you like this product and wish to contribute to its development, please visit our ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-cli"},"Github Page")),(0,i.kt)("p",null,"We are welcoming contributions in any forms (code, issues, documentation, ideas, question, etc.)"))}p.isMDXComponent=!0},8634:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/access_keychain-9f933a8d669d6ed955e30dd1aa169bbb.png"},3061:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/add_service-0678042a796e4c8290090dc5ecfae0d2.png"},8914:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/content-ab19f634acaad0b5246fe5983d98f129.png"},7995:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/create_keychain-8addb948180651745f730122e7bce878.png"},2029:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/create_keychain_transaction-cedc8bbccf4171fbb0dd5eda74b3736e.png"},7848:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/generate_address-ba70791dfe6de72c28139e89d1584039.png"},2941:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/help-command-a79b629216cd48d2acca13cf35714ee5.png"},2603:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/keychain_management-c8b7e23b91a14f3f555ae8a054eb7bae.png"},9294:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/main_keychain_transaction-03d95c68a9a99ad66b7321d291387d22.png"},3288:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/main_tab-5783418ecc8dd832b65d81a6579b7d19.png"},771:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships-559b27b31d1a636f3fcb406889868258.png"},4786:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships_2-3ef9c28939b2def4fb31695668e0fa15.png"},1100:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships_3-b1e74fd7bb29438106163db16673b731.png"},1699:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/recipients-b1436cd932b7a6402cd47a8f1a1860ca.png"},7722:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/sending_transaction-970c825476f166398dededfcc355d705.png"},4241:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/smart_contract-2d09068ad09c2a03858e8463b4176964.png"},6753:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/token_transfers-7387b1e8c1f1049818261970230af678.png"},3040:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/uco_transfers-c67df50fb05e1d0062ad690ce2609f34.png"},5436:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/uco_transfers_2-2f1a38a418f288087aae516f1b9e11c4.png"},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1248],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=l(a),u=i,m=h["".concat(c,".").concat(u)]||h[u]||p[u]||r;return a?n.createElement(m,o(o({ref:t},d),{},{components:a})):n.createElement(m,o({ref:t},d))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[h]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var n=a(7462),i=(a(7294),a(3905));a(8209);const r={id:"archethic-cli",title:"Archethic's CLI"},o=void 0,s={unversionedId:"participate/cli/archethic-cli",id:"participate/cli/archethic-cli",title:"Archethic's CLI",description:"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also",source:"@site/docs/participate/cli/README.md",sourceDirName:"participate/cli",slug:"/participate/cli/",permalink:"/participate/cli/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"archethic-cli",title:"Archethic's CLI"},sidebar:"docs",previous:{title:"Bridge Front End",permalink:"/participate/bridge/usage/bridge-front"},next:{title:"Archethic Wallet",permalink:"/participate/wallet/"}},c={},l=[{value:"Installation",id:"installation",level:2},{value:"Generate address",id:"generate-address",level:2},{value:"Build and send transaction",id:"build-and-send-transaction",level:2},{value:"UCO transfers",id:"uco-transfers",level:3},{value:"Token transfers",id:"token-transfers",level:3},{value:"Recipients",id:"recipients",level:3},{value:"Ownerships",id:"ownerships",level:4},{value:"Content",id:"content",level:3},{value:"Smart contract",id:"smart-contract",level:3},{value:"Sending the transaction",id:"sending-the-transaction",level:3},{value:"Keychain management",id:"keychain-management",level:2},{value:"Creating a keychain",id:"creating-a-keychain",level:3},{value:"Accessing a keychain",id:"accessing-a-keychain",level:3},{value:"Adding / removing a service",id:"adding--removing-a-service",level:3},{value:"Create a transaction for a service",id:"create-a-transaction-for-a-service",level:3},{value:"CLI - Archethic Command Line Interpreter",id:"cli---archethic-command-line-interpreter",level:2},{value:"Contribution",id:"contribution",level:2}],d={toc:l},h="wrapper";function p(e){let{components:t,...r}=e;return(0,i.kt)(h,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Developers like to use terminal applications to speed up their productivity, therefore Archethic have also\nits own command line interpreter is available to make interaction with the Blockchain easier for power users."),(0,i.kt)("p",null,"This tool helps you to connect to your decentralized wallet (keychain), manage it, send transactions, etc."),(0,i.kt)("h2",{id:"installation"},"Installation"),(0,i.kt)("p",null,"Download a pre-compiled binary or package from the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-cli/releases"},"releases")," page."),(0,i.kt)("p",null,"Or install it with go:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"go install github.com/archethic-foundation/archethic-cli@latest\n")),(0,i.kt)("p",null,"Or just build it yourself (requires Go 1.18+):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/archethic-foundation/archethic-cli.git\ncd archethic-cli\ngo build .\n")),(0,i.kt)("hr",null),(0,i.kt)("p",null,"By default the CLI works as TUI (terminal user interface) application allowing the application to be interactive. "),(0,i.kt)("p",null,"When launching the Archethic CLI you will access to the main menu that allows you to select an action. "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Generate an address"),(0,i.kt)("li",{parentName:"ul"},"Build and send a transaction"),(0,i.kt)("li",{parentName:"ul"},"Manage keychains (and send transaction keychains)")),(0,i.kt)("h2",{id:"generate-address"},"Generate address"),(0,i.kt)("p",null,"This generate address page allows you to get the address for a given seed, a specific index and with a given elliptic curve and hash algorithm. The default values are probably fine for elliptic curve and hash algorithm."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Generate address",src:a(7848).Z,width:"1334",height:"698"})),(0,i.kt)("h2",{id:"build-and-send-transaction"},"Build and send transaction"),(0,i.kt)("p",null,"This menu allows you to create a transaction. There are 7 tabs you can navigate to, by using the left and right arrows of your keyboard in order to configure your transaction."),(0,i.kt)("p",null,"This is where you set the main info (like the endpoint, the seed, the transaction type\u2026) and send the transaction. By selecting one of the default node endpoint you will have the URL to send your transaction automatically set. You will need to enter your seed. "),(0,i.kt)("p",null,"The index of the transaction will be set automatically (based on the index of the last transaction). Select one of the transaction type, regarding the type you select, you might have specific information to provide to your transaction (for example a transaction of type ",(0,i.kt)("inlineCode",{parentName:"p"},"Transfer")," needs a UCO transfer or a token transfer. "),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," buttons sends the transaction and the ",(0,i.kt)("inlineCode",{parentName:"p"},"Reset")," button clears the form."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Main tab",src:a(3288).Z,width:"2224",height:"1418"})),(0,i.kt)("h3",{id:"uco-transfers"},"UCO transfers"),(0,i.kt)("p",null,"This tab allows you to create UCO transfers in your transaction. Type a valid address and an amount and press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button.\n",(0,i.kt)("img",{alt:"UCO transfer tab",src:a(3040).Z,width:"2224",height:"544"})),(0,i.kt)("p",null,"You will then have a list of configured UCO transfers. Using the up and down keys, you can highlight a configured transfer and delete it by typing ",(0,i.kt)("inlineCode",{parentName:"p"},"d"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"UCO transfer tab 2",src:a(5436).Z,width:"2226",height:"620"})),(0,i.kt)("h3",{id:"token-transfers"},"Token transfers"),(0,i.kt)("p",null,"The same logic applies to the token transfers tab. But you need to specify a token address and an token id."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Token transfers tab",src:a(6753).Z,width:"2212",height:"654"})),(0,i.kt)("h3",{id:"recipients"},"Recipients"),(0,i.kt)("p",null,"The same logic also applies to the recipients tab which targets smart contract executions."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Recipients tab",src:a(1699).Z,width:"2214",height:"518"})),(0,i.kt)("h4",{id:"ownerships"},"Ownerships"),(0,i.kt)("p",null,"The ownership tab contains the information about the access you give to execute your transaction. "),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This will be needed if you want to create a smart contract.")),(0,i.kt)("p",null,"You can define several ownerships.\nEach ownership has"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"a secret"),(0,i.kt)("li",{parentName:"ul"},"a list of authorization keys that get access to the secret. ")),(0,i.kt)("p",null,"At least one of the ownership must have the seed as a secret and the storage nouce public key as an authorization key. "),(0,i.kt)("p",null,"You can press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Load Storage Nounce Public Key")," to automatically set the authorization key with the value of the storage nonce public key. (ie. for smart contract's creation key delegation) "),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"You must have selected an endpoint in the main tab in order to load the storage nounce public key of the network you target.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerships tab",src:a(771).Z,width:"2216",height:"644"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerhips tab 2",src:a(4786).Z,width:"2222",height:"764"})),(0,i.kt)("p",null,"Pressing the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add authorization key")," allows you to add a new authorization key that will get access to the secret. Once added to the list of autorized keys, you can highlight a key and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d")," to delete it. "),(0,i.kt)("p",null,"Once you\u2019re done with the configuration, you can press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button to add the ownership configuration to the transaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Ownerships tab 3",src:a(1100).Z,width:"2216",height:"708"})),(0,i.kt)("p",null,"And here also, if you want to delete a configured ownership, you can highlight it and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d"),"."),(0,i.kt)("h3",{id:"content"},"Content"),(0,i.kt)("p",null,"The content tab allows you to set the content of the transaction. Start typing to enter the edit mode of this tab and press ",(0,i.kt)("inlineCode",{parentName:"p"},"esc")," if you want to exit the edit mode and navigate to another tab."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Content tab",src:a(8914).Z,width:"2214",height:"450"})),(0,i.kt)("h3",{id:"smart-contract"},"Smart contract"),(0,i.kt)("p",null,"The smart contract tab allows you to set the smart contract of the transaction. Start typing to enter the edit mode of this tab and press ",(0,i.kt)("inlineCode",{parentName:"p"},"esc")," if you want to exit the edit mode and navigate to another tab."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Smart contract tab",src:a(4241).Z,width:"2226",height:"446"})),(0,i.kt)("h3",{id:"sending-the-transaction"},"Sending the transaction"),(0,i.kt)("p",null,"When you\u2019re done configuring the transaction, go back to the main tab and press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Add")," button."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Sending transaction",src:a(7722).Z,width:"2216",height:"1340"})),(0,i.kt)("h2",{id:"keychain-management"},"Keychain management"),(0,i.kt)("p",null,"The keychain management menu allows you to "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create a keychain with a given seed"),(0,i.kt)("li",{parentName:"ul"},"access a keychain"),(0,i.kt)("li",{parentName:"ul"},"add and remove services from a keychain"),(0,i.kt)("li",{parentName:"ul"},"send a keychain transaction for a specific service")),(0,i.kt)("p",null,"In any cases you will need to start by selecting the endpoint you want, that will automatically feed the URL of the endpoint.\nThen specify your access seed."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Keychain management",src:a(2603).Z,width:"356",height:"538"})),(0,i.kt)("h3",{id:"creating-a-keychain"},"Creating a keychain"),(0,i.kt)("p",null,"If you press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create keychain")," button, a new keychain will be created. And the seed you provided will be used to access it. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create a keychain",src:a(7995).Z,width:"1982",height:"814"})),(0,i.kt)("h3",{id:"accessing-a-keychain"},"Accessing a keychain"),(0,i.kt)("p",null,"Pressing the ",(0,i.kt)("inlineCode",{parentName:"p"},"Access keychain")," button will give you access to the list of services associated with your keychain (one default ",(0,i.kt)("inlineCode",{parentName:"p"},"uco")," service has been created).\n",(0,i.kt)("img",{alt:"Access a keychain",src:a(8634).Z,width:"912",height:"1162"})),(0,i.kt)("h3",{id:"adding--removing-a-service"},"Adding / removing a service"),(0,i.kt)("p",null,"If you go down to the ",(0,i.kt)("inlineCode",{parentName:"p"},"service name")," field you can type a new service name and a default derivation path will be created. If you then press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create Service"),", your new service will be displayed in the list of services."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Add a service",src:a(3061).Z,width:"898",height:"1212"})),(0,i.kt)("p",null,"If you highlight a service and press ",(0,i.kt)("inlineCode",{parentName:"p"},"d")," the service will be deleted."),(0,i.kt)("h3",{id:"create-a-transaction-for-a-service"},"Create a transaction for a service"),(0,i.kt)("p",null,"If you highlight a specific service and press ",(0,i.kt)("inlineCode",{parentName:"p"},"enter")," the highlighted will be selected."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create a transaction for a service",src:a(2029).Z,width:"898",height:"1208"})),(0,i.kt)("p",null,"If you then press the ",(0,i.kt)("inlineCode",{parentName:"p"},"Create Transaction for Service")," button, you will get a new menu to create a transaction for the selected service."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Main tab of create keychain transaction",src:a(9294).Z,width:"2212",height:"870"})),(0,i.kt)("p",null,"The mechanism to configure a keychain transaction for a service is the same as the one for a transaction (described above). Only a few configuration are not possible (like the endpoint, the seed, the index and the elliptic curve)."),(0,i.kt)("h2",{id:"cli---archethic-command-line-interpreter"},"CLI - Archethic Command Line Interpreter"),(0,i.kt)("p",null,"It is also possible to call the archethic cli tool using the command line."),(0,i.kt)("p",null,"For details of available commands, you can"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"consult the ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-cli#cli"},"readme")," of the corresponding github project."),(0,i.kt)("li",{parentName:"ul"},"display help with the command ",(0,i.kt)("inlineCode",{parentName:"li"},"--help"),".")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Help command",src:a(2941).Z,width:"1526",height:"810"})),(0,i.kt)("h2",{id:"contribution"},"Contribution"),(0,i.kt)("p",null,"If you like this product and wish to contribute to its development, please visit our ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-cli"},"Github Page")),(0,i.kt)("p",null,"We are welcoming contributions in any forms (code, issues, documentation, ideas, question, etc.)"))}p.isMDXComponent=!0},8634:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/access_keychain-9f933a8d669d6ed955e30dd1aa169bbb.png"},3061:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/add_service-0678042a796e4c8290090dc5ecfae0d2.png"},8914:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/content-ab19f634acaad0b5246fe5983d98f129.png"},7995:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/create_keychain-8addb948180651745f730122e7bce878.png"},2029:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/create_keychain_transaction-cedc8bbccf4171fbb0dd5eda74b3736e.png"},7848:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/generate_address-ba70791dfe6de72c28139e89d1584039.png"},2941:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/help-command-a79b629216cd48d2acca13cf35714ee5.png"},2603:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/keychain_management-c8b7e23b91a14f3f555ae8a054eb7bae.png"},9294:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/main_keychain_transaction-03d95c68a9a99ad66b7321d291387d22.png"},3288:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/main_tab-5783418ecc8dd832b65d81a6579b7d19.png"},771:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships-559b27b31d1a636f3fcb406889868258.png"},4786:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships_2-3ef9c28939b2def4fb31695668e0fa15.png"},1100:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ownerships_3-b1e74fd7bb29438106163db16673b731.png"},1699:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/recipients-b1436cd932b7a6402cd47a8f1a1860ca.png"},7722:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/sending_transaction-970c825476f166398dededfcc355d705.png"},4241:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/smart_contract-2d09068ad09c2a03858e8463b4176964.png"},6753:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/token_transfers-7387b1e8c1f1049818261970230af678.png"},3040:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/uco_transfers-c67df50fb05e1d0062ad690ce2609f34.png"},5436:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/uco_transfers_2-2f1a38a418f288087aae516f1b9e11c4.png"},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/a1844ead.4dfea765.js b/assets/js/a1844ead.15d3ebba.js similarity index 99% rename from assets/js/a1844ead.4dfea765.js rename to assets/js/a1844ead.15d3ebba.js index 0a1f4a74f..24459c03c 100644 --- a/assets/js/a1844ead.4dfea765.js +++ b/assets/js/a1844ead.15d3ebba.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1778],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(h,i(i({ref:t},c),{},{components:n})):r.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"transaction-form",title:"Smart Contracts Playground - Transaction form",sidebar_label:"Transaction form",sidebar_position:99},i=void 0,s={unversionedId:"build/smart-contracts/playground/transaction-form",id:"build/smart-contracts/playground/transaction-form",title:"Smart Contracts Playground - Transaction form",description:"The transaction form is a form that you might encounter at different places:",source:"@site/docs/build/smart-contracts/playground/transaction-form.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/transaction-form",permalink:"/build/smart-contracts/playground/transaction-form",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:99,frontMatter:{id:"transaction-form",title:"Smart Contracts Playground - Transaction form",sidebar_label:"Transaction form",sidebar_position:99},sidebar:"docs",previous:{title:"Function calls",permalink:"/build/smart-contracts/playground/functions"},next:{title:"Mock form",permalink:"/build/smart-contracts/playground/mock-form"}},l={},d=[{value:"type",id:"type",level:3},{value:"code",id:"code",level:3},{value:"content",id:"content",level:3},{value:"validation timestamp (not used in deployment)",id:"validation-timestamp-not-used-in-deployment",level:3},{value:"address (not used in deployment)",id:"address-not-used-in-deployment",level:3},{value:"uco transfers",id:"uco-transfers",level:3},{value:"token transfers",id:"token-transfers",level:3},{value:"recipients",id:"recipients",level:3},{value:"ownerships",id:"ownerships",level:3}],c={toc:d},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The transaction form is a form that you might encounter at different places:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Trigger panel"),(0,a.kt)("li",{parentName:"ol"},"Previous contract panel"),(0,a.kt)("li",{parentName:"ol"},"Deploy panel")),(0,a.kt)("p",null,"The goal of this form is to prepare a transaction payload (everything non-crypto).\nWe'll describe here every subpart of this form."),(0,a.kt)("h3",{id:"type"},"type"),(0,a.kt)("p",null,"This is a selector to choose the transaction's type. It is used to give a hint about what's in the transaction. Some types impose some rules to follow."),(0,a.kt)("p",null,"Read ",(0,a.kt)("a",{parentName:"p",href:"/learn/transaction-types"},"Transaction types")," for the details."),(0,a.kt)("h3",{id:"code"},"code"),(0,a.kt)("p",null,"This is the text field for the code of the Smart Contract. It may be hidden because in the Smart Contracts Playground, the code is usually at the root level of the user interface."),(0,a.kt)("h3",{id:"content"},"content"),(0,a.kt)("p",null,"The content is a text field. It often depends on the transaction's type.\nFor Smart Contracts, we use it to store the aggregated state. This might change in the very near future (see ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-14.md"},"AEIP-14"),")."),(0,a.kt)("h3",{id:"validation-timestamp-not-used-in-deployment"},"validation timestamp (not used in deployment)"),(0,a.kt)("p",null,"It represents the time at which the transaction was validated. This is only used to mock a value for your tests."),(0,a.kt)("h3",{id:"address-not-used-in-deployment"},"address (not used in deployment)"),(0,a.kt)("p",null,"It's the transaction's address. It must be a 68 characters hexadecimal. This is only used to mock a value for your tests."),(0,a.kt)("h3",{id:"uco-transfers"},"uco transfers"),(0,a.kt)("p",null,"This is the list of transfers for the UCOs. Every transfer is defined by 2 fields:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"amount"),": required - float"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"to"),": required - hexadecimal address of destination (68 characters)")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The amount accepts 8 decimals maximum.")),(0,a.kt)("h3",{id:"token-transfers"},"token transfers"),(0,a.kt)("p",null,"This is the list of transfers for ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-02.md"},"AEIP-02")," tokens. Every transfer is defined by 3-4 fields:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"amount"),": required - float"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"to"),": required - hexadecimal address of destination (68 characters)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"token_address"),": required - hexadecimal address of the token's definition (68 characters)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"token_id"),": optional - default: 0 - the index of the token in the token's definition (mainly used for NFTs)")),(0,a.kt)("h3",{id:"recipients"},"recipients"),(0,a.kt)("p",null,"This is the list of the Smart Contracts addresses to trigger. Note that the Smart Contracts are executed in dry mode (not writing anything) when the transaction is being validated, which means that if an execution fails, the transaction is invalid."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"For now a Smart Contracts should not trigger other Smart Contracts because the execution is not atomic.")),(0,a.kt)("h3",{id:"ownerships"},"ownerships"),(0,a.kt)("p",null,"This is the list of secrets with the public keys authorized to decrypt them.\nEvery secret is defined by 2 fields: "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"secret"),": required - the ",(0,a.kt)("strong",{parentName:"li"},"non-encrypted")," secret (the SDK will encrypt with a key that is then encrypted for every authorized_public_keys below)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"authorized_public_keys"),": required - the list of public keys allowed to decrypt the secret")),(0,a.kt)("admonition",{title:"contract's ownership",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"When deploying, the playground automatically creates a secret that is used to give the ability to execute the contract to all authorized nodes. "),(0,a.kt)("p",{parentName:"admonition"},"In raw terms, it encrypts the ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," with the ",(0,a.kt)("inlineCode",{parentName:"p"},"storage nonce public key"),".")),(0,a.kt)("admonition",{title:"TODO",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"missing mock for movements")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1778],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(n),m=a,h=p["".concat(l,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(h,i(i({ref:t},c),{},{components:n})):r.createElement(h,i({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"transaction-form",title:"Smart Contracts Playground - Transaction form",sidebar_label:"Transaction form",sidebar_position:99},i=void 0,s={unversionedId:"build/smart-contracts/playground/transaction-form",id:"build/smart-contracts/playground/transaction-form",title:"Smart Contracts Playground - Transaction form",description:"The transaction form is a form that you might encounter at different places:",source:"@site/docs/build/smart-contracts/playground/transaction-form.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/transaction-form",permalink:"/build/smart-contracts/playground/transaction-form",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:99,frontMatter:{id:"transaction-form",title:"Smart Contracts Playground - Transaction form",sidebar_label:"Transaction form",sidebar_position:99},sidebar:"docs",previous:{title:"Function calls",permalink:"/build/smart-contracts/playground/functions"},next:{title:"Mock form",permalink:"/build/smart-contracts/playground/mock-form"}},l={},d=[{value:"type",id:"type",level:3},{value:"code",id:"code",level:3},{value:"content",id:"content",level:3},{value:"validation timestamp (not used in deployment)",id:"validation-timestamp-not-used-in-deployment",level:3},{value:"address (not used in deployment)",id:"address-not-used-in-deployment",level:3},{value:"uco transfers",id:"uco-transfers",level:3},{value:"token transfers",id:"token-transfers",level:3},{value:"recipients",id:"recipients",level:3},{value:"ownerships",id:"ownerships",level:3}],c={toc:d},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The transaction form is a form that you might encounter at different places:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Trigger panel"),(0,a.kt)("li",{parentName:"ol"},"Previous contract panel"),(0,a.kt)("li",{parentName:"ol"},"Deploy panel")),(0,a.kt)("p",null,"The goal of this form is to prepare a transaction payload (everything non-crypto).\nWe'll describe here every subpart of this form."),(0,a.kt)("h3",{id:"type"},"type"),(0,a.kt)("p",null,"This is a selector to choose the transaction's type. It is used to give a hint about what's in the transaction. Some types impose some rules to follow."),(0,a.kt)("p",null,"Read ",(0,a.kt)("a",{parentName:"p",href:"/learn/transaction-types"},"Transaction types")," for the details."),(0,a.kt)("h3",{id:"code"},"code"),(0,a.kt)("p",null,"This is the text field for the code of the Smart Contract. It may be hidden because in the Smart Contracts Playground, the code is usually at the root level of the user interface."),(0,a.kt)("h3",{id:"content"},"content"),(0,a.kt)("p",null,"The content is a text field. It often depends on the transaction's type.\nFor Smart Contracts, we use it to store the aggregated state. This might change in the very near future (see ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-14.md"},"AEIP-14"),")."),(0,a.kt)("h3",{id:"validation-timestamp-not-used-in-deployment"},"validation timestamp (not used in deployment)"),(0,a.kt)("p",null,"It represents the time at which the transaction was validated. This is only used to mock a value for your tests."),(0,a.kt)("h3",{id:"address-not-used-in-deployment"},"address (not used in deployment)"),(0,a.kt)("p",null,"It's the transaction's address. It must be a 68 characters hexadecimal. This is only used to mock a value for your tests."),(0,a.kt)("h3",{id:"uco-transfers"},"uco transfers"),(0,a.kt)("p",null,"This is the list of transfers for the UCOs. Every transfer is defined by 2 fields:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"amount"),": required - float"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"to"),": required - hexadecimal address of destination (68 characters)")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The amount accepts 8 decimals maximum.")),(0,a.kt)("h3",{id:"token-transfers"},"token transfers"),(0,a.kt)("p",null,"This is the list of transfers for ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-02.md"},"AEIP-02")," tokens. Every transfer is defined by 3-4 fields:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"amount"),": required - float"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"to"),": required - hexadecimal address of destination (68 characters)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"token_address"),": required - hexadecimal address of the token's definition (68 characters)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"token_id"),": optional - default: 0 - the index of the token in the token's definition (mainly used for NFTs)")),(0,a.kt)("h3",{id:"recipients"},"recipients"),(0,a.kt)("p",null,"This is the list of the Smart Contracts addresses to trigger. Note that the Smart Contracts are executed in dry mode (not writing anything) when the transaction is being validated, which means that if an execution fails, the transaction is invalid."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"For now a Smart Contracts should not trigger other Smart Contracts because the execution is not atomic.")),(0,a.kt)("h3",{id:"ownerships"},"ownerships"),(0,a.kt)("p",null,"This is the list of secrets with the public keys authorized to decrypt them.\nEvery secret is defined by 2 fields: "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"secret"),": required - the ",(0,a.kt)("strong",{parentName:"li"},"non-encrypted")," secret (the SDK will encrypt with a key that is then encrypted for every authorized_public_keys below)"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"authorized_public_keys"),": required - the list of public keys allowed to decrypt the secret")),(0,a.kt)("admonition",{title:"contract's ownership",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"When deploying, the playground automatically creates a secret that is used to give the ability to execute the contract to all authorized nodes. "),(0,a.kt)("p",{parentName:"admonition"},"In raw terms, it encrypts the ",(0,a.kt)("inlineCode",{parentName:"p"},"seed")," with the ",(0,a.kt)("inlineCode",{parentName:"p"},"storage nonce public key"),".")),(0,a.kt)("admonition",{title:"TODO",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"missing mock for movements")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/a18b1795.9f9eb0a5.js b/assets/js/a18b1795.1c35be55.js similarity index 98% rename from assets/js/a18b1795.9f9eb0a5.js rename to assets/js/a18b1795.1c35be55.js index 626d06af6..82ec3705c 100644 --- a/assets/js/a18b1795.9f9eb0a5.js +++ b/assets/js/a18b1795.1c35be55.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3890],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=l(n),m=r,y=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(y,s(s({ref:t},p),{},{components:n})):a.createElement(y,s({ref:t},p))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>f,frontMatter:()=>s,metadata:()=>c,toc:()=>p});var a=n(7462),r=n(7294),o=n(3905);n(8209);const s={id:"network-transactions",title:"networkTransactions",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/network-transactions",id:"build/api/schema/queries/network-transactions",title:"networkTransactions",description:"Query the network to list the transaction on the type",source:"@site/docs/build/api/schema/queries/network-transactions.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/network-transactions",permalink:"/build/api/schema/queries/network-transactions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"network-transactions",title:"networkTransactions",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"nearestEndpoints",permalink:"/build/api/schema/queries/nearest-endpoints"},next:{title:"nodes",permalink:"/build/api/schema/queries/nodes"}},l={},p=[{value:"Arguments",id:"arguments",level:3},{value:'networkTransactions.pagePosInteger ',id:"code-style-fontweight-normal-networktransactionsbpagebcodeposinteger-",level:4},{value:'networkTransactions.typeTransactionType! ',id:"code-style-fontweight-normal-networktransactionsbtypebcodetransactiontype--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],d=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},k="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},y,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to list the transaction on the type"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"networkTransactions(\n page: PosInteger\n type: TransactionType!\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-networktransactionsbpagebcodeposinteger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"networkTransactions.",(0,o.kt)("b",null,"page"))),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,o.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-networktransactionsbtypebcodetransactiontype--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"networkTransactions.",(0,o.kt)("b",null,"type"))),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/transaction-type"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionType!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3890],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=l(n),m=r,y=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(y,s(s({ref:t},p),{},{components:n})):a.createElement(y,s({ref:t},p))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>i,default:()=>f,frontMatter:()=>s,metadata:()=>c,toc:()=>p});var a=n(7462),r=n(7294),o=n(3905);n(8209);const s={id:"network-transactions",title:"networkTransactions",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/network-transactions",id:"build/api/schema/queries/network-transactions",title:"networkTransactions",description:"Query the network to list the transaction on the type",source:"@site/docs/build/api/schema/queries/network-transactions.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/network-transactions",permalink:"/build/api/schema/queries/network-transactions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"network-transactions",title:"networkTransactions",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"nearestEndpoints",permalink:"/build/api/schema/queries/nearest-endpoints"},next:{title:"nodes",permalink:"/build/api/schema/queries/nodes"}},l={},p=[{value:"Arguments",id:"arguments",level:3},{value:'networkTransactions.pagePosInteger ',id:"code-style-fontweight-normal-networktransactionsbpagebcodeposinteger-",level:4},{value:'networkTransactions.typeTransactionType! ',id:"code-style-fontweight-normal-networktransactionsbtypebcodetransactiontype--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],d=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:p,Bullet:d,SpecifiedBy:u,Badge:m},k="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},y,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to list the transaction on the type"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"networkTransactions(\n page: PosInteger\n type: TransactionType!\n): [Transaction]\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-networktransactionsbpagebcodeposinteger-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"networkTransactions.",(0,o.kt)("b",null,"page"))),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/pos-integer"},(0,o.kt)("inlineCode",{parentName:"a"},"PosInteger"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-networktransactionsbtypebcodetransactiontype--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"networkTransactions.",(0,o.kt)("b",null,"type"))),(0,o.kt)(d,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/transaction-type"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionType!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/a22626c5.77a1cfd6.js b/assets/js/a22626c5.b11552ea.js similarity index 97% rename from assets/js/a22626c5.77a1cfd6.js rename to assets/js/a22626c5.b11552ea.js index d0586fc2a..74f2ab76e 100644 --- a/assets/js/a22626c5.77a1cfd6.js +++ b/assets/js/a22626c5.b11552ea.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9286],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(r),h=o,f=d["".concat(c,".").concat(h)]||d[h]||p[h]||i;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"core",title:"Core development"},a=void 0,l={unversionedId:"build/core/core",id:"build/core/core",title:"Core development",description:"Archethic Node repository can be found here",source:"@site/docs/build/core/README.md",sourceDirName:"build/core",slug:"/build/core/",permalink:"/build/core/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"core",title:"Core development"},sidebar:"docs",previous:{title:"transactionError",permalink:"/build/api/schema/subscriptions/transaction-error"},next:{title:"Account",permalink:"/build/core/account"}},c={},s=[{value:"Technology Stack",id:"technology-stack",level:2},{value:"Why Elixir ?",id:"why-elixir-",level:3},{value:"Why C ?",id:"why-c-",level:3},{value:"Structure",id:"structure",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...i}=e;return(0,o.kt)(d,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Node repository can be found ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node"},"here")),(0,o.kt)("h2",{id:"technology-stack"},"Technology Stack"),(0,o.kt)("p",null,"Archethic Blockchain node used a combination of Elixir & C programming languages to achieve fast and reliable decentralized network."),(0,o.kt)("h3",{id:"why-elixir-"},"Why Elixir ?"),(0,o.kt)("p",null,"Elixir is a dynamic, functional language for building scalable and maintainable applications."),(0,o.kt)("p",null,"It leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems."),(0,o.kt)("p",null,"Elixir is successfully used in web development, embedded software, data ingestion, and multimedia processing, across a wide range of industries."),(0,o.kt)("p",null,"When we are building P2P systems and Blockchain technologies we need to think about fault-tolerance, low-latency, concurrent/parallelism.\nElixir matches all those requirements."),(0,o.kt)("p",null,"Because all Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages, we can build fast\nprocessing of data which result in a high TPS for a better scalability."),(0,o.kt)("p",null,"The unavoidable truth about software running in production is that things will go wrong."),(0,o.kt)("p",null,"Even more when we take network, file systems, and other third-party resources into account."),(0,o.kt)("p",null,"Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work."),(0,o.kt)("p",null,"This feature ensures in case of failure, the entire system will not be down, and the isolation provided by the processes and their restarting strategy helps us to achieve it."),(0,o.kt)("p",null,"Functional programming promotes a coding style that helps developers write code that is short, concise, and maintainable."),(0,o.kt)("p",null,"Out of the box, Erlang VM provides the capability to hot reload code, which is the best case scenario if we want to provide an on-chain governance without restarting nodes."),(0,o.kt)("h3",{id:"why-c-"},"Why C ?"),(0,o.kt)("p",null,"We need to interact with hardware components and C seems the best candidate, so we are using this language to communicate with TPM for instance."),(0,o.kt)("p",null,"But also, for some intensive task which are really complex in computing, we rely on C to perform those processing."),(0,o.kt)("h2",{id:"structure"},"Structure"),(0,o.kt)("p",null,"Code base is divided into domains (contexts) for better single responsibility principle:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core structure",src:r(3532).Z,width:"1568",height:"2446"})))}p.isMDXComponent=!0},3532:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/core_structure-e53af1776beef639ac15f67f9344dab0.png"},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9286],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(r),h=o,f=d["".concat(c,".").concat(h)]||d[h]||p[h]||i;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));r(8209);const i={id:"core",title:"Core development"},a=void 0,l={unversionedId:"build/core/core",id:"build/core/core",title:"Core development",description:"Archethic Node repository can be found here",source:"@site/docs/build/core/README.md",sourceDirName:"build/core",slug:"/build/core/",permalink:"/build/core/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"core",title:"Core development"},sidebar:"docs",previous:{title:"transactionError",permalink:"/build/api/schema/subscriptions/transaction-error"},next:{title:"Account",permalink:"/build/core/account"}},c={},s=[{value:"Technology Stack",id:"technology-stack",level:2},{value:"Why Elixir ?",id:"why-elixir-",level:3},{value:"Why C ?",id:"why-c-",level:3},{value:"Structure",id:"structure",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...i}=e;return(0,o.kt)(d,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Node repository can be found ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic-node"},"here")),(0,o.kt)("h2",{id:"technology-stack"},"Technology Stack"),(0,o.kt)("p",null,"Archethic Blockchain node used a combination of Elixir & C programming languages to achieve fast and reliable decentralized network."),(0,o.kt)("h3",{id:"why-elixir-"},"Why Elixir ?"),(0,o.kt)("p",null,"Elixir is a dynamic, functional language for building scalable and maintainable applications."),(0,o.kt)("p",null,"It leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems."),(0,o.kt)("p",null,"Elixir is successfully used in web development, embedded software, data ingestion, and multimedia processing, across a wide range of industries."),(0,o.kt)("p",null,"When we are building P2P systems and Blockchain technologies we need to think about fault-tolerance, low-latency, concurrent/parallelism.\nElixir matches all those requirements."),(0,o.kt)("p",null,"Because all Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages, we can build fast\nprocessing of data which result in a high TPS for a better scalability."),(0,o.kt)("p",null,"The unavoidable truth about software running in production is that things will go wrong."),(0,o.kt)("p",null,"Even more when we take network, file systems, and other third-party resources into account."),(0,o.kt)("p",null,"Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work."),(0,o.kt)("p",null,"This feature ensures in case of failure, the entire system will not be down, and the isolation provided by the processes and their restarting strategy helps us to achieve it."),(0,o.kt)("p",null,"Functional programming promotes a coding style that helps developers write code that is short, concise, and maintainable."),(0,o.kt)("p",null,"Out of the box, Erlang VM provides the capability to hot reload code, which is the best case scenario if we want to provide an on-chain governance without restarting nodes."),(0,o.kt)("h3",{id:"why-c-"},"Why C ?"),(0,o.kt)("p",null,"We need to interact with hardware components and C seems the best candidate, so we are using this language to communicate with TPM for instance."),(0,o.kt)("p",null,"But also, for some intensive task which are really complex in computing, we rely on C to perform those processing."),(0,o.kt)("h2",{id:"structure"},"Structure"),(0,o.kt)("p",null,"Code base is divided into domains (contexts) for better single responsibility principle:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core structure",src:r(3532).Z,width:"1568",height:"2446"})))}p.isMDXComponent=!0},3532:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/core_structure-e53af1776beef639ac15f67f9344dab0.png"},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/a90ecf70.f1e42c8c.js b/assets/js/a90ecf70.841855d6.js similarity index 98% rename from assets/js/a90ecf70.f1e42c8c.js rename to assets/js/a90ecf70.841855d6.js index 0636b96cc..0e1f931c1 100644 --- a/assets/js/a90ecf70.f1e42c8c.js +++ b/assets/js/a90ecf70.841855d6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9056],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),u=i,f=h["".concat(l,".").concat(u)]||h[u]||p[u]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"aeweb",title:"AEWeb"},a=void 0,s={unversionedId:"FAQ/aeweb",id:"FAQ/aeweb",title:"AEWeb",description:"General",source:"@site/docs/FAQ/aeweb.md",sourceDirName:"FAQ",slug:"/FAQ/aeweb",permalink:"/FAQ/aeweb",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"aeweb",title:"AEWeb"},sidebar:"docs",previous:{title:"FAQ",permalink:"/category/faq"},next:{title:"Archethic Bridge 2-ways",permalink:"/FAQ/bridge-2-ways"}},l={},c=[{value:"General",id:"general",level:2},{value:" How do I redirect my domain names to my websites deployed on the Archethic Blockchain?",id:"-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain",level:3},{value:"What is the purpose of a .gitignore file?",id:"what-is-the-purpose-of-a-gitignore-file",level:3},{value:"When using the Archethic wallet's "link to a file hosted on AEWeb" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?",id:"when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli",level:3}],d={toc:c},h="wrapper";function p(e){let{components:t,...n}=e;return(0,i.kt)(h,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"general"},"General"),(0,i.kt)("h3",{id:"-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"}," How do I redirect my domain names to my websites deployed on the Archethic Blockchain?")),(0,i.kt)("p",null,"All the information regarding DNS configuration is available in the ",(0,i.kt)("a",{href:"/participate/aeweb/dns",target:"_blank"},"dedicated section"),"."),(0,i.kt)("p",null,"You will also find ",(0,i.kt)("a",{href:"/participate/aeweb/dns#hosting-provider-integration",target:"_blank"},"examples")," for Gandi, Cloudflare, and OVH services."),(0,i.kt)("h3",{id:"what-is-the-purpose-of-a-gitignore-file"},(0,i.kt)("strong",{parentName:"h3"},"What is the purpose of a .gitignore file?")),(0,i.kt)("p",null,"The .gitignore file serves to exclude specific files and directories from version control with Git. In the context of AEWeb, it's used to prevent the upload and synchronization of configuration and development files that are specific to the Git repository. This ensures that only the essential files of the website are transferred during the upload process."),(0,i.kt)("h3",{id:"when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli"},(0,i.kt)("strong",{parentName:"h3"},'When using the Archethic wallet\'s "link to a file hosted on AEWeb" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?')),(0,i.kt)("p",null,"Currently, the AEWeb CLI is not directly connected to the wallet. Therefore, it is necessary to provision the chain that will host the files in order to pay the transaction fees. However, you can still use the wallet's keychain by retrieving the passphrase and utilizing the wallet's service to send funds to the service hosting the image, just as if you were performing the action directly from the wallet."),(0,i.kt)("p",null,"Here's an example using the Testnet:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website --keychain-funding-service "archethic-wallet-ALICE" --keychain-website-service myImageAEWeb\n')))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9056],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),u=i,f=h["".concat(l,".").concat(u)]||h[u]||p[u]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"aeweb",title:"AEWeb"},a=void 0,s={unversionedId:"FAQ/aeweb",id:"FAQ/aeweb",title:"AEWeb",description:"General",source:"@site/docs/FAQ/aeweb.md",sourceDirName:"FAQ",slug:"/FAQ/aeweb",permalink:"/FAQ/aeweb",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"aeweb",title:"AEWeb"},sidebar:"docs",previous:{title:"FAQ",permalink:"/category/faq"},next:{title:"Archethic Bridge 2-ways",permalink:"/FAQ/bridge-2-ways"}},l={},c=[{value:"General",id:"general",level:2},{value:" How do I redirect my domain names to my websites deployed on the Archethic Blockchain?",id:"-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain",level:3},{value:"What is the purpose of a .gitignore file?",id:"what-is-the-purpose-of-a-gitignore-file",level:3},{value:"When using the Archethic wallet's "link to a file hosted on AEWeb" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?",id:"when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli",level:3}],d={toc:c},h="wrapper";function p(e){let{components:t,...n}=e;return(0,i.kt)(h,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"general"},"General"),(0,i.kt)("h3",{id:"-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain"},(0,i.kt)("strong",{parentName:"h3"}," How do I redirect my domain names to my websites deployed on the Archethic Blockchain?")),(0,i.kt)("p",null,"All the information regarding DNS configuration is available in the ",(0,i.kt)("a",{href:"/participate/aeweb/dns",target:"_blank"},"dedicated section"),"."),(0,i.kt)("p",null,"You will also find ",(0,i.kt)("a",{href:"/participate/aeweb/dns#hosting-provider-integration",target:"_blank"},"examples")," for Gandi, Cloudflare, and OVH services."),(0,i.kt)("h3",{id:"what-is-the-purpose-of-a-gitignore-file"},(0,i.kt)("strong",{parentName:"h3"},"What is the purpose of a .gitignore file?")),(0,i.kt)("p",null,"The .gitignore file serves to exclude specific files and directories from version control with Git. In the context of AEWeb, it's used to prevent the upload and synchronization of configuration and development files that are specific to the Git repository. This ensures that only the essential files of the website are transferred during the upload process."),(0,i.kt)("h3",{id:"when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli"},(0,i.kt)("strong",{parentName:"h3"},'When using the Archethic wallet\'s "link to a file hosted on AEWeb" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?')),(0,i.kt)("p",null,"Currently, the AEWeb CLI is not directly connected to the wallet. Therefore, it is necessary to provision the chain that will host the files in order to pay the transaction fees. However, you can still use the wallet's keychain by retrieving the passphrase and utilizing the wallet's service to send funds to the service hosting the image, just as if you were performing the action directly from the wallet."),(0,i.kt)("p",null,"Here's an example using the Testnet:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website --keychain-funding-service "archethic-wallet-ALICE" --keychain-website-service myImageAEWeb\n')))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/aa1914e6.684d74f4.js b/assets/js/aa1914e6.91bf66fe.js similarity index 97% rename from assets/js/aa1914e6.684d74f4.js rename to assets/js/aa1914e6.91bf66fe.js index bd0bf8ee8..b4ca6259e 100644 --- a/assets/js/aa1914e6.684d74f4.js +++ b/assets/js/aa1914e6.91bf66fe.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6694],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,m=u["".concat(l,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,i(i({ref:t},s),{},{components:r})):n.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"sdk",title:"SDK"},i=void 0,c={unversionedId:"build/sdk/sdk",id:"build/sdk/sdk",title:"SDK",description:"",source:"@site/docs/build/sdk/README.md",sourceDirName:"build/sdk",slug:"/build/sdk/",permalink:"/build/sdk/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"sdk",title:"SDK"},sidebar:"docs",previous:{title:"Node",permalink:"/build/core/p2p/node"},next:{title:"Dart SDK",permalink:"/build/sdk/dart"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6694],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,m=u["".concat(l,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,i(i({ref:t},s),{},{components:r})):n.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"sdk",title:"SDK"},i=void 0,c={unversionedId:"build/sdk/sdk",id:"build/sdk/sdk",title:"SDK",description:"",source:"@site/docs/build/sdk/README.md",sourceDirName:"build/sdk",slug:"/build/sdk/",permalink:"/build/sdk/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"sdk",title:"SDK"},sidebar:"docs",previous:{title:"Node",permalink:"/build/core/p2p/node"},next:{title:"Dart SDK",permalink:"/build/sdk/dart"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/ac1890eb.1e4ae3d2.js b/assets/js/ac1890eb.a552e2df.js similarity index 99% rename from assets/js/ac1890eb.1e4ae3d2.js rename to assets/js/ac1890eb.a552e2df.js index cf552eb70..6d6210278 100644 --- a/assets/js/ac1890eb.1e4ae3d2.js +++ b/assets/js/ac1890eb.a552e2df.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),l=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=l(e.components);return n.createElement(o.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,c=d(e,["components","mdxType","originalType","parentName"]),p=l(a),u=r,y=p["".concat(o,".").concat(u)]||p[u]||m[u]||s;return a?n.createElement(y,i(i({ref:t},c),{},{components:a})):n.createElement(y,i({ref:t},c))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,i=new Array(s);i[0]=u;var d={};for(var o in t)hasOwnProperty.call(t,o)&&(d[o]=t[o]);d.originalType=e,d[p]="string"==typeof e?e:r,i[1]=d;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>l,contentTitle:()=>d,default:()=>b,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var n=a(7462),r=a(7294),s=a(3905);a(8209);const i={id:"address",title:"Address",hide_table_of_contents:!1},d=void 0,o={unversionedId:"build/api/schema/scalars/address",id:"build/api/schema/scalars/address",title:"Address",description:"The [Address] scalar type represents a transaction's address.",source:"@site/docs/build/api/schema/scalars/address.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/address",permalink:"/build/api/schema/scalars/address",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"address",title:"Address",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"version",permalink:"/build/api/schema/queries/version"},next:{title:"Boolean",permalink:"/build/api/schema/scalars/boolean"}},l={},c=[{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],p=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:c,Bullet:p,SpecifiedBy:m,Badge:u},k="wrapper";function b(e){let{components:t,...a}=e;return(0,s.kt)(k,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"The ","[Address]"," scalar type represents a transaction's address.\nThe Address appears in a JSON response as Base16 formatted string. The parsed address will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Address\n")),(0,s.kt)("h3",{id:"returned-by"},"Returned by"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/genesis-address"},(0,s.kt)("inlineCode",{parentName:"a"},"genesisAddress"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/balance"},(0,s.kt)("inlineCode",{parentName:"a"},"balance"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,s.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/genesis-address"},(0,s.kt)("inlineCode",{parentName:"a"},"genesisAddress"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/last-transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"lastTransaction"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,s.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,s.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/token"},(0,s.kt)("inlineCode",{parentName:"a"},"token"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-balance"},(0,s.kt)("inlineCode",{parentName:"a"},"TokenBalance"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-transfer"},(0,s.kt)("inlineCode",{parentName:"a"},"TokenTransfer"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-attestation"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-confirmed"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionConfirmed"))," ",(0,s.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-transfer"},(0,s.kt)("inlineCode",{parentName:"a"},"UcoTransfer"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,s.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),l=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=l(e.components);return n.createElement(o.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,c=d(e,["components","mdxType","originalType","parentName"]),p=l(a),u=r,y=p["".concat(o,".").concat(u)]||p[u]||m[u]||s;return a?n.createElement(y,i(i({ref:t},c),{},{components:a})):n.createElement(y,i({ref:t},c))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,i=new Array(s);i[0]=u;var d={};for(var o in t)hasOwnProperty.call(t,o)&&(d[o]=t[o]);d.originalType=e,d[p]="string"==typeof e?e:r,i[1]=d;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>m,assets:()=>l,contentTitle:()=>d,default:()=>b,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var n=a(7462),r=a(7294),s=a(3905);a(8209);const i={id:"address",title:"Address",hide_table_of_contents:!1},d=void 0,o={unversionedId:"build/api/schema/scalars/address",id:"build/api/schema/scalars/address",title:"Address",description:"The [Address] scalar type represents a transaction's address.",source:"@site/docs/build/api/schema/scalars/address.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/address",permalink:"/build/api/schema/scalars/address",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"address",title:"Address",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"version",permalink:"/build/api/schema/queries/version"},next:{title:"Boolean",permalink:"/build/api/schema/scalars/boolean"}},l={},c=[{value:"Returned by",id:"returned-by",level:3},{value:"Member of",id:"member-of",level:3}],p=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:c,Bullet:p,SpecifiedBy:m,Badge:u},k="wrapper";function b(e){let{components:t,...a}=e;return(0,s.kt)(k,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"The ","[Address]"," scalar type represents a transaction's address.\nThe Address appears in a JSON response as Base16 formatted string. The parsed address will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Address\n")),(0,s.kt)("h3",{id:"returned-by"},"Returned by"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/genesis-address"},(0,s.kt)("inlineCode",{parentName:"a"},"genesisAddress"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/balance"},(0,s.kt)("inlineCode",{parentName:"a"},"balance"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,s.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/genesis-address"},(0,s.kt)("inlineCode",{parentName:"a"},"genesisAddress"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/last-transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"lastTransaction"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,s.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,s.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/token"},(0,s.kt)("inlineCode",{parentName:"a"},"token"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-balance"},(0,s.kt)("inlineCode",{parentName:"a"},"TokenBalance"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-transfer"},(0,s.kt)("inlineCode",{parentName:"a"},"TokenTransfer"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-attestation"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-confirmed"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionConfirmed"))," ",(0,s.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/subscriptions/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"subscription",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,s.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,s.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/uco-transfer"},(0,s.kt)("inlineCode",{parentName:"a"},"UcoTransfer"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(p,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,s.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/ae218501.101c193f.js b/assets/js/ae218501.85eca28f.js similarity index 97% rename from assets/js/ae218501.101c193f.js rename to assets/js/ae218501.85eca28f.js index 36029e205..fabb29bae 100644 --- a/assets/js/ae218501.101c193f.js +++ b/assets/js/ae218501.85eca28f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7443],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),i=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=i(r),u=a,m=p["".concat(c,".").concat(u)]||p[u]||f[u]||o;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>f,assets:()=>i,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const l={id:"token-ledger",title:"TokenLedger",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/token-ledger",id:"build/api/schema/objects/token-ledger",title:"TokenLedger",description:"[TokenLedger] represents the transfers to perform on the UCO ledger",source:"@site/docs/build/api/schema/objects/token-ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-ledger",permalink:"/build/api/schema/objects/token-ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token-ledger",title:"TokenLedger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenBalance",permalink:"/build/api/schema/objects/token-balance"},next:{title:"TokenTransfer",permalink:"/build/api/schema/objects/token-transfer"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TokenLedger.transfers[TokenTransfer] ',id:"code-style-fontweight-normal-tokenledgerbtransfersbcodetokentransfer--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),f=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:f,Badge:u},b="wrapper";function k(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TokenLedger]"," represents the transfers to perform on the UCO ledger"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenLedger {\n transfers: [TokenTransfer]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenledgerbtransfersbcodetokentransfer--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenLedger.",(0,o.kt)("b",null,"transfers"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"[TokenTransfer]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}k.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7443],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),i=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=i(r),u=a,m=p["".concat(c,".").concat(u)]||p[u]||f[u]||o;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>u,Bullet:()=>p,SpecifiedBy:()=>f,assets:()=>i,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const l={id:"token-ledger",title:"TokenLedger",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/objects/token-ledger",id:"build/api/schema/objects/token-ledger",title:"TokenLedger",description:"[TokenLedger] represents the transfers to perform on the UCO ledger",source:"@site/docs/build/api/schema/objects/token-ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-ledger",permalink:"/build/api/schema/objects/token-ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token-ledger",title:"TokenLedger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenBalance",permalink:"/build/api/schema/objects/token-balance"},next:{title:"TokenTransfer",permalink:"/build/api/schema/objects/token-transfer"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'TokenLedger.transfers[TokenTransfer] ',id:"code-style-fontweight-normal-tokenledgerbtransfersbcodetokentransfer--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),f=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:f,Badge:u},b="wrapper";function k(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TokenLedger]"," represents the transfers to perform on the UCO ledger"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenLedger {\n transfers: [TokenTransfer]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokenledgerbtransfersbcodetokentransfer--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenLedger.",(0,o.kt)("b",null,"transfers"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/token-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"[TokenTransfer]"))," ",(0,o.kt)(u,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}k.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/aef11b3c.c599cf22.js b/assets/js/aef11b3c.d631b395.js similarity index 97% rename from assets/js/aef11b3c.c599cf22.js rename to assets/js/aef11b3c.d631b395.js index 720ab7849..aca710b44 100644 --- a/assets/js/aef11b3c.c599cf22.js +++ b/assets/js/aef11b3c.d631b395.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9573],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=l(n),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(f,i(i({ref:t},d),{},{components:n})):a.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const i={id:"transaction-confirmed",title:"transactionConfirmed",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/subscriptions/transaction-confirmed",id:"build/api/schema/subscriptions/transaction-confirmed",title:"transactionConfirmed",description:"Subscribe to be notified when a transaction is stored (if acted as welcome node)",source:"@site/docs/build/api/schema/subscriptions/transaction-confirmed.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/transaction-confirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-confirmed",title:"transactionConfirmed",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"oracleUpdate",permalink:"/build/api/schema/subscriptions/oracle-update"},next:{title:"transactionError",permalink:"/build/api/schema/subscriptions/transaction-error"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionConfirmed.addressAddress! ',id:"code-style-fontweight-normal-transactionconfirmedbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'TransactionAttestation ',id:"transactionattestation-",level:4}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a transaction is stored (if acted as welcome node)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionConfirmed(\n address: Address!\n): TransactionAttestation\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionconfirmedbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionConfirmed.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transactionattestation-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-attestation"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[TransactionAttestation]"," represents an attestation when a transaction is successfully validated and stored.\nFew attestations can be received with differents confirmations to ensure a better security of the replication.")))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9573],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=l(n),m=r,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return n?a.createElement(f,i(i({ref:t},d),{},{components:n})):a.createElement(f,i({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>l,contentTitle:()=>s,default:()=>y,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const i={id:"transaction-confirmed",title:"transactionConfirmed",hide_table_of_contents:!1},s=void 0,c={unversionedId:"build/api/schema/subscriptions/transaction-confirmed",id:"build/api/schema/subscriptions/transaction-confirmed",title:"transactionConfirmed",description:"Subscribe to be notified when a transaction is stored (if acted as welcome node)",source:"@site/docs/build/api/schema/subscriptions/transaction-confirmed.mdx",sourceDirName:"build/api/schema/subscriptions",slug:"/build/api/schema/subscriptions/transaction-confirmed",permalink:"/build/api/schema/subscriptions/transaction-confirmed",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-confirmed",title:"transactionConfirmed",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"oracleUpdate",permalink:"/build/api/schema/subscriptions/oracle-update"},next:{title:"transactionError",permalink:"/build/api/schema/subscriptions/transaction-error"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transactionConfirmed.addressAddress! ',id:"code-style-fontweight-normal-transactionconfirmedbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'TransactionAttestation ',id:"transactionattestation-",level:4}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Subscribe to be notified when a transaction is stored (if acted as welcome node)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transactionConfirmed(\n address: Address!\n): TransactionAttestation\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionconfirmedbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transactionConfirmed.",(0,o.kt)("b",null,"address"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transactionattestation-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction-attestation"},(0,o.kt)("inlineCode",{parentName:"a"},"TransactionAttestation"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[TransactionAttestation]"," represents an attestation when a transaction is successfully validated and stored.\nFew attestations can be received with differents confirmations to ensure a better security of the replication.")))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/b17a2c3b.2a990902.js b/assets/js/b17a2c3b.346acf95.js similarity index 97% rename from assets/js/b17a2c3b.2a990902.js rename to assets/js/b17a2c3b.346acf95.js index 34c282d28..6701b2879 100644 --- a/assets/js/b17a2c3b.2a990902.js +++ b/assets/js/b17a2c3b.346acf95.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4099],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(r),f=a,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||o;return r?n.createElement(m,i(i({ref:t},d),{},{components:r})):n.createElement(m,i({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>l,default:()=>b,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"nodes",title:"nodes",hide_table_of_contents:!1},l=void 0,s={unversionedId:"build/api/schema/queries/nodes",id:"build/api/schema/queries/nodes",title:"nodes",description:"List all the nodes registered in the network",source:"@site/docs/build/api/schema/queries/nodes.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/nodes",permalink:"/build/api/schema/queries/nodes",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"nodes",title:"nodes",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"networkTransactions",permalink:"/build/api/schema/queries/network-transactions"},next:{title:"oracleData",permalink:"/build/api/schema/queries/oracle-data"}},c={},d=[{value:"Type",id:"type",level:3},{value:'Node ',id:"node-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:u,Badge:f},y="wrapper";function b(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List all the nodes registered in the network"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"nodes: [Node]\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"node-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Node]"," represents a node in the network")))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4099],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(r),f=a,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||o;return r?n.createElement(m,i(i({ref:t},d),{},{components:r})):n.createElement(m,i({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>l,default:()=>b,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"nodes",title:"nodes",hide_table_of_contents:!1},l=void 0,s={unversionedId:"build/api/schema/queries/nodes",id:"build/api/schema/queries/nodes",title:"nodes",description:"List all the nodes registered in the network",source:"@site/docs/build/api/schema/queries/nodes.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/nodes",permalink:"/build/api/schema/queries/nodes",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"nodes",title:"nodes",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"networkTransactions",permalink:"/build/api/schema/queries/network-transactions"},next:{title:"oracleData",permalink:"/build/api/schema/queries/oracle-data"}},c={},d=[{value:"Type",id:"type",level:3},{value:'Node ',id:"node-",level:4}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:u,Badge:f},y="wrapper";function b(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"List all the nodes registered in the network"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"nodes: [Node]\n")),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"node-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/node"},(0,o.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Node]"," represents a node in the network")))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/b2e52e63.a998ff52.js b/assets/js/b2e52e63.627cf788.js similarity index 99% rename from assets/js/b2e52e63.a998ff52.js rename to assets/js/b2e52e63.627cf788.js index 05ce9a77c..ef21ed592 100644 --- a/assets/js/b2e52e63.a998ff52.js +++ b/assets/js/b2e52e63.627cf788.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1938],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,r(r({ref:t},p),{},{components:n})):a.createElement(h,r({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:i,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"condition",title:"Smart Contracts - Condition block",sidebar_label:"Condition",sidebar_position:2},r=void 0,s={unversionedId:"build/smart-contracts/language/condition",id:"build/smart-contracts/language/condition",title:"Smart Contracts - Condition block",description:"Conditions are blocks which purpose is to check the validity of a transaction.",source:"@site/docs/build/smart-contracts/language/condition.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/condition",permalink:"/build/smart-contracts/language/condition",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:2,frontMatter:{id:"condition",title:"Smart Contracts - Condition block",sidebar_label:"Condition",sidebar_position:2},sidebar:"docs",previous:{title:"Triggers",permalink:"/build/smart-contracts/language/triggers"},next:{title:"Actions",permalink:"/build/smart-contracts/language/actions"}},l={},c=[{value:"Rules",id:"rules",level:2},{value:"Condition inherit",id:"condition-inherit",level:2},{value:"Examples",id:"examples",level:3},{value:"Condition transaction",id:"condition-transaction",level:2},{value:"Examples",id:"examples-1",level:3},{value:"Condition oracle",id:"condition-oracle",level:2},{value:"Examples",id:"examples-2",level:3},{value:"Legacy syntax",id:"legacy-syntax",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Conditions are blocks which purpose is to check the validity of a transaction. "),(0,i.kt)("p",null,"There are 3 types of ",(0,i.kt)("inlineCode",{parentName:"p"},"condition")," block: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-inherit"},"inherit")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-transaction"},"transaction")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-oracle"},"oracle"))),(0,i.kt)("p",null,'The condition blocks are not code block, they are maps of what we call "boolean expressions". '),(0,i.kt)("p",null,"In this map, the keys are the transaction property, and the values are expressions that must return a boolean or a value."),(0,i.kt)("p",null,"Conditions ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"oracle")," are mandatory if the associated trigger is used. Condition ",(0,i.kt)("inlineCode",{parentName:"p"},"inherit")," is optional."),(0,i.kt)("p",null,"Pseudo-code:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: , as: [\n : ,\n : ,\n : ,\n : \n]\n\n# note the syntax is a bit different for the inherit\ncondition inherit: [\n : ,\n : ,\n : ,\n : \n]\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"type")," is either ",(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"oracle"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"prop")," is a property of the transaction or ",(0,i.kt)("inlineCode",{parentName:"li"},"origin_family"),". See ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the available properties."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"expr")," is a code expression.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"If you wish use a complex expression for condition property. You can use multi-lines block enclosed by parenthesis"),(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition transaction: [\n content: (\n # Complex logic\n # ...\n )\n]\n"))),(0,i.kt)("p",null,"Example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n # \n type: "contract",\n\n # \n content: true,\n\n # \n code:\n if Time.now() > 1677572714 do\n "condition inherit: []"\n else\n previous.code\n end,\n\n # \n uco_transfers: Map.size() > 0\n]\n')),(0,i.kt)("h2",{id:"rules"},"Rules"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},'All "boolean expressions" must pass for the transaction to be valid.')),(0,i.kt)("li",{parentName:"ol"},'If the expression returns true, this "boolean expression" passes.'),(0,i.kt)("li",{parentName:"ol"},'If the expression returns false, this "boolean expression" fails.'),(0,i.kt)("li",{parentName:"ol"},'If the expression returns a value, this "boolean expression" passes if the transaction\'s property has the same value.')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"In these blocks, there is also some sugar to automatically add the property as an argument of the functions called. For example ",(0,i.kt)("inlineCode",{parentName:"p"},"uco_transfers: Map.size() > 0")," will automatically expand to ",(0,i.kt)("inlineCode",{parentName:"p"},"uco_transfers: Map.size(transaction.uco_transfers) > 0"),".")),(0,i.kt)("h2",{id:"condition-inherit"},"Condition inherit"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition inherit")," purpose is to check the next transaction generated by the smart contract after its code execution. It ensures the next transaction respects specific rules so the smart contract chain cannot be compromised."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition inherit: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means the transaction chain is closed: no transaction will be accepted anymore.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"previous")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"next"),' is the "next transaction".')),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"A specific rule is applied for inherit condition, if a field is not specified in the conditions, it assumes that it must have the same value as the previous transaction. ie. ",(0,i.kt)("inlineCode",{parentName:"p"},"code: previous.code == next.code"))),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("p",null,"Pass only if it is executed before a timestamp:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition inherit: [\n timestamp: next.timestamp < 1677598185\n]\n")),(0,i.kt)("p",null,'Pass only if the transaction is type "transfer", without any uco_transfers and at least one token_transfers:'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n type: "transfer",\n uco_transfers: Map.size() == 0,\n token_transfers: Map.size() > 0\n]\n')),(0,i.kt)("p",null,"Pass only if chain has been closed (the code part) and there is a 2 UCO transfer to an address depending on the time:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n code: "condition inherit: []",\n uco_transfers: \n if Time.now() >= 1674564088 do\n ["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98": 2]\n else\n ["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd": 2]\n end\n]\n')),(0,i.kt)("p",null,'Pass only if the key "index" of the content is greater than the previous one:'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'# Note that we have to embed a block code inside parenthesis as we create complex code \n# like create/assign variables with multilines conditions statements\ncondition inherit: [\n content: (\n json_path = "$.index"\n if Json.path_match?(next.content, json_path) do\n previous_index = Json.path_extract(previous.content, json_path)\n new_index = Json.path_extract(next.content, json_path)\n\n new_index > previous_index\n else\n false\n end\n )\n]\n')),(0,i.kt)("h2",{id:"condition-transaction"},"Condition transaction"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition transaction")," purpose is to check the transaction that triggered the contract (a transaction with the contract address in the recipients)."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means any transaction can trigger the contract.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"contract")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," is the transaction that triggered the contract.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("h3",{id:"examples-1"},"Examples"),(0,i.kt)("p",null,"Pass only if the transaction that triggered the contract comes from a specific chain (a chain can be identified by it's genesis address):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [\n address: Chain.get_genesis_address() == 0x00001234ab\n]\n")),(0,i.kt)("p",null,"Pass only if the transaction that triggered sent 10 UCOs to this contract:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [\n uco_transfers: Map.get(contract.address) == 10\n]\n")),(0,i.kt)("p",null,"Pass only if the candidate is in the list:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition triggered_by: transaction, on: vote(candidate), as: [\n content: List.in?(["Peter", "Sofia", "Claire"], candidate)\n]\n')),(0,i.kt)("admonition",{title:"Did you notice?",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"We wrote the expression in the ",(0,i.kt)("inlineCode",{parentName:"p"},"content"),' and we did not use this field. We\'ll soon introduce a new syntax to avoid this "hack".')),(0,i.kt)("h2",{id:"condition-oracle"},"Condition oracle"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition oracle")," purpose is to check the oracle transaction that triggered the contract."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: oracle, as: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means any transaction can trigger the contract.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"contract")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," is the oracle transaction that triggered the contract.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("h3",{id:"examples-2"},"Examples"),(0,i.kt)("p",null,"Pass only if the transaction's content is a JSON string including the UCO price in USD."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition triggered_by: oracle, as: [\n content: Json.path_match?(transaction.content, "$.uco.usd")\n]\n')),(0,i.kt)("h2",{id:"legacy-syntax"},"Legacy syntax"),(0,i.kt)("admonition",{title:"Deprecated",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"The syntax still works, but we'd like everyone to use the new syntax.")),(0,i.kt)("p",null,"The condition ",(0,i.kt)("inlineCode",{parentName:"p"},"oracle")," & ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," used to have the same syntax as ",(0,i.kt)("inlineCode",{parentName:"p"},"inherit"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition transaction: [...]\ncondition oracle: [...]\n")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1938],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,r(r({ref:t},p),{},{components:n})):a.createElement(h,r({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:i,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"condition",title:"Smart Contracts - Condition block",sidebar_label:"Condition",sidebar_position:2},r=void 0,s={unversionedId:"build/smart-contracts/language/condition",id:"build/smart-contracts/language/condition",title:"Smart Contracts - Condition block",description:"Conditions are blocks which purpose is to check the validity of a transaction.",source:"@site/docs/build/smart-contracts/language/condition.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/condition",permalink:"/build/smart-contracts/language/condition",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:2,frontMatter:{id:"condition",title:"Smart Contracts - Condition block",sidebar_label:"Condition",sidebar_position:2},sidebar:"docs",previous:{title:"Triggers",permalink:"/build/smart-contracts/language/triggers"},next:{title:"Actions",permalink:"/build/smart-contracts/language/actions"}},l={},c=[{value:"Rules",id:"rules",level:2},{value:"Condition inherit",id:"condition-inherit",level:2},{value:"Examples",id:"examples",level:3},{value:"Condition transaction",id:"condition-transaction",level:2},{value:"Examples",id:"examples-1",level:3},{value:"Condition oracle",id:"condition-oracle",level:2},{value:"Examples",id:"examples-2",level:3},{value:"Legacy syntax",id:"legacy-syntax",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Conditions are blocks which purpose is to check the validity of a transaction. "),(0,i.kt)("p",null,"There are 3 types of ",(0,i.kt)("inlineCode",{parentName:"p"},"condition")," block: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-inherit"},"inherit")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-transaction"},"transaction")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#condition-oracle"},"oracle"))),(0,i.kt)("p",null,'The condition blocks are not code block, they are maps of what we call "boolean expressions". '),(0,i.kt)("p",null,"In this map, the keys are the transaction property, and the values are expressions that must return a boolean or a value."),(0,i.kt)("p",null,"Conditions ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"oracle")," are mandatory if the associated trigger is used. Condition ",(0,i.kt)("inlineCode",{parentName:"p"},"inherit")," is optional."),(0,i.kt)("p",null,"Pseudo-code:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: , as: [\n : ,\n : ,\n : ,\n : \n]\n\n# note the syntax is a bit different for the inherit\ncondition inherit: [\n : ,\n : ,\n : ,\n : \n]\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"type")," is either ",(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"oracle"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"prop")," is a property of the transaction or ",(0,i.kt)("inlineCode",{parentName:"li"},"origin_family"),". See ",(0,i.kt)("a",{parentName:"li",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the available properties."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"expr")," is a code expression.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"If you wish use a complex expression for condition property. You can use multi-lines block enclosed by parenthesis"),(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition transaction: [\n content: (\n # Complex logic\n # ...\n )\n]\n"))),(0,i.kt)("p",null,"Example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n # \n type: "contract",\n\n # \n content: true,\n\n # \n code:\n if Time.now() > 1677572714 do\n "condition inherit: []"\n else\n previous.code\n end,\n\n # \n uco_transfers: Map.size() > 0\n]\n')),(0,i.kt)("h2",{id:"rules"},"Rules"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},'All "boolean expressions" must pass for the transaction to be valid.')),(0,i.kt)("li",{parentName:"ol"},'If the expression returns true, this "boolean expression" passes.'),(0,i.kt)("li",{parentName:"ol"},'If the expression returns false, this "boolean expression" fails.'),(0,i.kt)("li",{parentName:"ol"},'If the expression returns a value, this "boolean expression" passes if the transaction\'s property has the same value.')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"In these blocks, there is also some sugar to automatically add the property as an argument of the functions called. For example ",(0,i.kt)("inlineCode",{parentName:"p"},"uco_transfers: Map.size() > 0")," will automatically expand to ",(0,i.kt)("inlineCode",{parentName:"p"},"uco_transfers: Map.size(transaction.uco_transfers) > 0"),".")),(0,i.kt)("h2",{id:"condition-inherit"},"Condition inherit"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition inherit")," purpose is to check the next transaction generated by the smart contract after its code execution. It ensures the next transaction respects specific rules so the smart contract chain cannot be compromised."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition inherit: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means the transaction chain is closed: no transaction will be accepted anymore.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"previous")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"next"),' is the "next transaction".')),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"A specific rule is applied for inherit condition, if a field is not specified in the conditions, it assumes that it must have the same value as the previous transaction. ie. ",(0,i.kt)("inlineCode",{parentName:"p"},"code: previous.code == next.code"))),(0,i.kt)("h3",{id:"examples"},"Examples"),(0,i.kt)("p",null,"Pass only if it is executed before a timestamp:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition inherit: [\n timestamp: next.timestamp < 1677598185\n]\n")),(0,i.kt)("p",null,'Pass only if the transaction is type "transfer", without any uco_transfers and at least one token_transfers:'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n type: "transfer",\n uco_transfers: Map.size() == 0,\n token_transfers: Map.size() > 0\n]\n')),(0,i.kt)("p",null,"Pass only if chain has been closed (the code part) and there is a 2 UCO transfer to an address depending on the time:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition inherit: [\n code: "condition inherit: []",\n uco_transfers: \n if Time.now() >= 1674564088 do\n ["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98": 2]\n else\n ["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd": 2]\n end\n]\n')),(0,i.kt)("p",null,'Pass only if the key "index" of the content is greater than the previous one:'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'# Note that we have to embed a block code inside parenthesis as we create complex code \n# like create/assign variables with multilines conditions statements\ncondition inherit: [\n content: (\n json_path = "$.index"\n if Json.path_match?(next.content, json_path) do\n previous_index = Json.path_extract(previous.content, json_path)\n new_index = Json.path_extract(next.content, json_path)\n\n new_index > previous_index\n else\n false\n end\n )\n]\n')),(0,i.kt)("h2",{id:"condition-transaction"},"Condition transaction"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition transaction")," purpose is to check the transaction that triggered the contract (a transaction with the contract address in the recipients)."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means any transaction can trigger the contract.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"contract")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," is the transaction that triggered the contract.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("h3",{id:"examples-1"},"Examples"),(0,i.kt)("p",null,"Pass only if the transaction that triggered the contract comes from a specific chain (a chain can be identified by it's genesis address):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [\n address: Chain.get_genesis_address() == 0x00001234ab\n]\n")),(0,i.kt)("p",null,"Pass only if the transaction that triggered sent 10 UCOs to this contract:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: transaction, as: [\n uco_transfers: Map.get(contract.address) == 10\n]\n")),(0,i.kt)("p",null,"Pass only if the candidate is in the list:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition triggered_by: transaction, on: vote(candidate), as: [\n content: List.in?(["Peter", "Sofia", "Claire"], candidate)\n]\n')),(0,i.kt)("admonition",{title:"Did you notice?",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"We wrote the expression in the ",(0,i.kt)("inlineCode",{parentName:"p"},"content"),' and we did not use this field. We\'ll soon introduce a new syntax to avoid this "hack".')),(0,i.kt)("h2",{id:"condition-oracle"},"Condition oracle"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"condition oracle")," purpose is to check the oracle transaction that triggered the contract."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition triggered_by: oracle, as: [...]\n")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"If the map is empty ",(0,i.kt)("inlineCode",{parentName:"p"},"[]"),", it means any transaction can trigger the contract.")),(0,i.kt)("p",null,"There are 2 global variables for this condition block:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"contract")," is the transaction of the current contract."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"transaction")," is the oracle transaction that triggered the contract.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Action's Appendix 1")," for the details of the transaction map."),(0,i.kt)("h3",{id:"examples-2"},"Examples"),(0,i.kt)("p",null,"Pass only if the transaction's content is a JSON string including the UCO price in USD."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},'condition triggered_by: oracle, as: [\n content: Json.path_match?(transaction.content, "$.uco.usd")\n]\n')),(0,i.kt)("h2",{id:"legacy-syntax"},"Legacy syntax"),(0,i.kt)("admonition",{title:"Deprecated",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"The syntax still works, but we'd like everyone to use the new syntax.")),(0,i.kt)("p",null,"The condition ",(0,i.kt)("inlineCode",{parentName:"p"},"oracle")," & ",(0,i.kt)("inlineCode",{parentName:"p"},"transaction")," used to have the same syntax as ",(0,i.kt)("inlineCode",{parentName:"p"},"inherit"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-elixir"},"condition transaction: [...]\ncondition oracle: [...]\n")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/b4914bc5.154d8b0b.js b/assets/js/b4914bc5.3854a83d.js similarity index 97% rename from assets/js/b4914bc5.154d8b0b.js rename to assets/js/b4914bc5.3854a83d.js index 7cf14446a..aa7cd3e4e 100644 --- a/assets/js/b4914bc5.154d8b0b.js +++ b/assets/js/b4914bc5.3854a83d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8959],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),f=o,h=d["".concat(c,".").concat(f)]||d[f]||p[f]||i;return n?r.createElement(h,a(a({ref:t},u),{},{components:n})):r.createElement(h,a({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"transaction-context",title:"Transaction context retrieval"},a=void 0,l={unversionedId:"build/core/mining/transaction-context",id:"build/core/mining/transaction-context",title:"Transaction context retrieval",description:"When a transaction is under validation, after the pending transaction validation, the nodes are fetching the context of the transaction.",source:"@site/docs/build/core/mining/transaction-context.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/transaction-context",permalink:"/build/core/mining/transaction-context",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-context",title:"Transaction context retrieval"},sidebar:"docs",previous:{title:"Proof of Work algorithm",permalink:"/build/core/mining/proof-of-work"},next:{title:"OracleChain",permalink:"/build/core/oracle-chain/"}},c={},s=[{value:"Retrieval",id:"retrieval",level:2},{value:"Node distribution",id:"node-distribution",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"When a transaction is under validation, after the ",(0,o.kt)("a",{parentName:"p",href:"/build/core/mining/transaction-validation"},"pending transaction validation"),", the nodes are fetching the context of the transaction."),(0,o.kt)("h2",{id:"retrieval"},"Retrieval"),(0,o.kt)("p",null,"This retrieval include multiple queries to be able to perform an efficient validation:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Get the previous transaction"),(0,o.kt)("li",{parentName:"ul"},"Get the unspent outputs"),(0,o.kt)("li",{parentName:"ul"},"Get the P2P view of the storage nodes (chain and beacon)")),(0,o.kt)("p",null,"All of thoses queries happen concurrently making efficient the transaction validation."),(0,o.kt)("p",null,"To be sure the data is fetched faster, an algorithm is provided to first target the closest nodes from the validation node but\nalso ensure the if node fails to respond, other nodes will take the relay."),(0,o.kt)("p",null,"However, if for the P2P view query, some node doesn't respond in a timeframe, it will be considered as offline, and through aggregation during the replication tree creation, this node will not receive replication request"),(0,o.kt)("h2",{id:"node-distribution"},"Node distribution"),(0,o.kt)("p",null,"To be sure all the validation will get the best of this retrieval, an algorithm have been developed to ensure a fair distribution of the nodes invovled in those queries."),(0,o.kt)("p",null,"The storage nodes for the previous chain are split into 2 group: previous transaction and unspent outputs"),(0,o.kt)("p",null,"This way a given node will get several responses ensuring the atomic commitment of the transaction."),(0,o.kt)("p",null,"The algorithm defines the number of group to have and the number of nodes in each group."),(0,o.kt)("p",null,"Also it balances the groups to be sure a group have the same number of node without duplication"))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8959],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),f=o,h=d["".concat(c,".").concat(f)]||d[f]||p[f]||i;return n?r.createElement(h,a(a({ref:t},u),{},{components:n})):r.createElement(h,a({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"transaction-context",title:"Transaction context retrieval"},a=void 0,l={unversionedId:"build/core/mining/transaction-context",id:"build/core/mining/transaction-context",title:"Transaction context retrieval",description:"When a transaction is under validation, after the pending transaction validation, the nodes are fetching the context of the transaction.",source:"@site/docs/build/core/mining/transaction-context.md",sourceDirName:"build/core/mining",slug:"/build/core/mining/transaction-context",permalink:"/build/core/mining/transaction-context",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-context",title:"Transaction context retrieval"},sidebar:"docs",previous:{title:"Proof of Work algorithm",permalink:"/build/core/mining/proof-of-work"},next:{title:"OracleChain",permalink:"/build/core/oracle-chain/"}},c={},s=[{value:"Retrieval",id:"retrieval",level:2},{value:"Node distribution",id:"node-distribution",level:2}],u={toc:s},d="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"When a transaction is under validation, after the ",(0,o.kt)("a",{parentName:"p",href:"/build/core/mining/transaction-validation"},"pending transaction validation"),", the nodes are fetching the context of the transaction."),(0,o.kt)("h2",{id:"retrieval"},"Retrieval"),(0,o.kt)("p",null,"This retrieval include multiple queries to be able to perform an efficient validation:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Get the previous transaction"),(0,o.kt)("li",{parentName:"ul"},"Get the unspent outputs"),(0,o.kt)("li",{parentName:"ul"},"Get the P2P view of the storage nodes (chain and beacon)")),(0,o.kt)("p",null,"All of thoses queries happen concurrently making efficient the transaction validation."),(0,o.kt)("p",null,"To be sure the data is fetched faster, an algorithm is provided to first target the closest nodes from the validation node but\nalso ensure the if node fails to respond, other nodes will take the relay."),(0,o.kt)("p",null,"However, if for the P2P view query, some node doesn't respond in a timeframe, it will be considered as offline, and through aggregation during the replication tree creation, this node will not receive replication request"),(0,o.kt)("h2",{id:"node-distribution"},"Node distribution"),(0,o.kt)("p",null,"To be sure all the validation will get the best of this retrieval, an algorithm have been developed to ensure a fair distribution of the nodes invovled in those queries."),(0,o.kt)("p",null,"The storage nodes for the previous chain are split into 2 group: previous transaction and unspent outputs"),(0,o.kt)("p",null,"This way a given node will get several responses ensuring the atomic commitment of the transaction."),(0,o.kt)("p",null,"The algorithm defines the number of group to have and the number of nodes in each group."),(0,o.kt)("p",null,"Also it balances the groups to be sure a group have the same number of node without duplication"))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/b5651cae.19b35354.js b/assets/js/b5651cae.9a62a652.js similarity index 99% rename from assets/js/b5651cae.19b35354.js rename to assets/js/b5651cae.9a62a652.js index b501ec2c9..b1ab36e2f 100644 --- a/assets/js/b5651cae.19b35354.js +++ b/assets/js/b5651cae.9a62a652.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1855],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var n=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=d(a),m=l,c=u["".concat(s,".").concat(m)]||u[m]||k[m]||i;return a?n.createElement(c,r(r({ref:t},p),{},{components:a})):n.createElement(c,r({ref:t},p))}));function c(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,r=new Array(i);r[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:l,r[1]=o;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>k,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(7462),l=(a(7294),a(3905));a(8209);const i={id:"library",title:"Smart Contracts - Library",sidebar_label:"Library",sidebar_position:4},r=void 0,o={unversionedId:"build/smart-contracts/language/library",id:"build/smart-contracts/language/library",title:"Smart Contracts - Library",description:"The Smart Contract library is composed of many modules with many functions in each.",source:"@site/docs/build/smart-contracts/language/library.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/library",permalink:"/build/smart-contracts/language/library",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"library",title:"Smart Contracts - Library",sidebar_label:"Library",sidebar_position:4},sidebar:"docs",previous:{title:"Actions",permalink:"/build/smart-contracts/language/actions"},next:{title:"Examples",permalink:"/build/smart-contracts/language/examples"}},s={},d=[{value:"String",id:"string",level:2},{value:"size/1",id:"size1",level:3},{value:"in?/2",id:"in2",level:3},{value:"to_number/1",id:"to_number1",level:3},{value:"from_number/1",id:"from_number1",level:3},{value:"to_hex/1",id:"to_hex1",level:3},{value:"to_uppercase/1",id:"to_uppercase1",level:3},{value:"to_lowercase/1",id:"to_lowercase1",level:3},{value:"Map",id:"map",level:2},{value:"new/0",id:"new0",level:3},{value:"size/1",id:"size1-1",level:3},{value:"get/2",id:"get2",level:3},{value:"get/3",id:"get3",level:3},{value:"set/3",id:"set3",level:3},{value:"keys/1",id:"keys1",level:3},{value:"values/1",id:"values1",level:3},{value:"delete/2",id:"delete2",level:3},{value:"List",id:"list",level:2},{value:"at/2",id:"at2",level:3},{value:"size/1",id:"size1-2",level:3},{value:"in?/2",id:"in2-1",level:3},{value:"empty?/1",id:"empty1",level:3},{value:"concat/2",id:"concat2",level:3},{value:"append/2",id:"append2",level:3},{value:"prepend/2",id:"prepend2",level:3},{value:"join/2",id:"join2",level:3},{value:"Regex",id:"regex",level:2},{value:"extract/2",id:"extract2",level:3},{value:"match?/2",id:"match2",level:3},{value:"scan/2",id:"scan2",level:3},{value:"Json",id:"json",level:2},{value:"path_extract/2",id:"path_extract2",level:3},{value:"path_match?/2",id:"path_match2",level:3},{value:"to_string/1",id:"to_string1",level:3},{value:"parse/1",id:"parse1",level:3},{value:"is_valid?/1",id:"is_valid1",level:3},{value:"Time",id:"time",level:2},{value:"now/0",id:"now0",level:3},{value:"Chain",id:"chain",level:2},{value:"get_genesis_address/1 [I/O]",id:"get_genesis_address1-io",level:3},{value:"get_first_transaction_address/1 [I/O]",id:"get_first_transaction_address1-io",level:3},{value:"get_genesis_public_key/1 [I/O]",id:"get_genesis_public_key1-io",level:3},{value:"get_burn_address/0",id:"get_burn_address0",level:3},{value:"get_transaction/1 [I/O]",id:"get_transaction1--io",level:3},{value:"get_last_address/1 [I/O]",id:"get_last_address1-io",level:3},{value:"get_last_transaction/1 [I/O]",id:"get_last_transaction1-io",level:3},{value:"get_previous_address/1",id:"get_previous_address1",level:3},{value:"get_balance/1 [I/O]",id:"get_balance1-io",level:3},{value:"get_uco_balance/1 [I/O]",id:"get_uco_balance1-io",level:3},{value:"get_token_balance/2 [I/O]",id:"get_token_balance2-io",level:3},{value:"get_token_balance/3 [I/O]",id:"get_token_balance3-io",level:3},{value:"get_tokens_balance/1 [I/O]",id:"get_tokens_balance1-io",level:3},{value:"get_tokens_balance/2 [I/O]",id:"get_tokens_balance2-io",level:3},{value:"Crypto",id:"crypto",level:2},{value:"hash/1",id:"hash1",level:3},{value:"hash/2",id:"hash2",level:3},{value:"hmac/1",id:"hmac1",level:3},{value:"hmac/2",id:"hmac2",level:3},{value:"hmac/3",id:"hmac3",level:3},{value:"sign_with_recovery/1",id:"sign_with_recovery1",level:3},{value:"Token",id:"token",level:2},{value:"fetch_id_from_address/1 [I/O]",id:"fetch_id_from_address1-io",level:3},{value:"Code",id:"code",level:2},{value:"is_same?/2",id:"is_same2",level:3},{value:"is_valid?/1",id:"is_valid1-1",level:3},{value:"Math",id:"math",level:2},{value:"pow/2",id:"pow2",level:3},{value:"trunc/1",id:"trunc1",level:3},{value:"sqrt/1",id:"sqrt1",level:3},{value:"rem/2",id:"rem2",level:3},{value:"Http",id:"http",level:2},{value:"request/1 [I/O]",id:"request1-io",level:3},{value:"request/2 [I/O]",id:"request2-io",level:3},{value:"request/3 [I/O]",id:"request3-io",level:3},{value:"request/4 [I/O]",id:"request4-io",level:3},{value:"request_many/1 [I/O]",id:"request_many1-io",level:3},{value:"Contract",id:"contract",level:2},{value:"call_function/3 [I/O]",id:"call_function3-io",level:3},{value:"set_type/1 [Transaction]",id:"set_type1-transaction",level:3},{value:"set_content/1 [Transaction]",id:"set_content1-transaction",level:3},{value:"set_code/1 [Transaction]",id:"set_code1-transaction",level:3},{value:"add_uco_transfer/1 [Transaction]",id:"add_uco_transfer1-transaction",level:3},{value:"add_uco_transfers/1 [Transaction]",id:"add_uco_transfers1-transaction",level:3},{value:"add_token_transfer/1 [Transaction]",id:"add_token_transfer1-transaction",level:3},{value:"add_token_transfers/1 [Transaction]",id:"add_token_transfers1-transaction",level:3},{value:"add_ownership/1 [Transaction]",id:"add_ownership1-transaction",level:3},{value:"add_ownerships/1 [Transaction]",id:"add_ownerships1-transaction",level:3},{value:"add_recipient/1 [Transaction]",id:"add_recipient1-transaction",level:3},{value:"add_recipients/1 [Transaction]",id:"add_recipients1-transaction",level:3},{value:"Evm",id:"evm",level:2},{value:"abi_encode/2",id:"abi_encode2",level:3},{value:"abi_decode/2",id:"abi_decode2",level:3}],p={toc:d},u="wrapper";function k(e){let{components:t,...a}=e;return(0,l.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"The Smart Contract library is composed of many modules with many functions in each.\n",(0,l.kt)("strong",{parentName:"p"},"Unless it is explicitely written, the functions will not mutate their arguments"),":"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"# Don't\nsold_items = [1,2,3]\nList.concat(sold_items, [4,5,6])\n\n# Do\nsold_items = [1,2,3]\nsold_items = List.concat(sold_items, [4,5,6])\n")),(0,l.kt)("admonition",{title:"function/arity",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"In this page, the number after the slash indicates the arity of the function (number or arguments)."),(0,l.kt)("p",{parentName:"admonition"},"For example ",(0,l.kt)("inlineCode",{parentName:"p"},"size/1")," means the function ",(0,l.kt)("inlineCode",{parentName:"p"},"size")," has 1 argument.")),(0,l.kt)("admonition",{title:"Tagged functions",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Functions are tagged as ",(0,l.kt)("inlineCode",{parentName:"p"},"[Transaction]")," are special:"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"They are only available in the ",(0,l.kt)("inlineCode",{parentName:"li"},"actions")," block."),(0,l.kt)("li",{parentName:"ul"},'They mutate an internal state, the "next transaction".'),(0,l.kt)("li",{parentName:"ul"},'This "next transaction" is initiated with current contract (all values but transfers are copied)')),(0,l.kt)("p",{parentName:"admonition"},"Other functions are tagged as ",(0,l.kt)("inlineCode",{parentName:"p"},"[I/O]")," and help to fetch data making network calls by either:"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"requesting Archethic"),(0,l.kt)("li",{parentName:"ul"},"requesting the outside world"))),(0,l.kt)("h2",{id:"string"},"String"),(0,l.kt)("h3",{id:"size1"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.size("hello") # 5\nString.size("\u4f60\u597d") # 2\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Returns the number of characters in ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),"."),(0,l.kt)("h3",{id:"in2"},"in?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.in?("bob,alice,julia", "alice") # true\nString.in?("bob,alice,julia", "fred") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str1")," the haystack"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str2")," the needle")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"needle")," is in the ",(0,l.kt)("inlineCode",{parentName:"p"},"haystack"),"."),(0,l.kt)("h3",{id:"to_number1"},"to_number/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_number("12") # 12\nString.to_number("-12") # -12\nString.to_number("12.1") # 12.1\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Returns the number which text representation is ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),"."),(0,l.kt)("h3",{id:"from_number1"},"from_number/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.from_number(13) # "13"\nString.from_number(13.2) # "13.2"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number")),(0,l.kt)("p",null,"Returns the text representation of ",(0,l.kt)("inlineCode",{parentName:"p"},"number"),"."),(0,l.kt)("h3",{id:"to_hex1"},"to_hex/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_hex("592ac76afa") # "592AC76AFA"\nString.to_hex("592AC76AFA") # "592AC76AFA"\nString.to_hex("hello") # "68656C6C6F"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the text representation of hexadecimal ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),".\nIf ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," is already an hex it just uppercase it"),(0,l.kt)("h3",{id:"to_uppercase1"},"to_uppercase/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_uppercase("Ars\xe8ne Lupin") # "ARS\xc8NE LUPIN"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," in uppercase."),(0,l.kt)("h3",{id:"to_lowercase1"},"to_lowercase/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_lowercase("Sherlock Holmes") # "sherlock holmes"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," in lowercase."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"map"},"Map"),(0,l.kt)("h3",{id:"new0"},"new/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Map.new() # empty map\n")),(0,l.kt)("p",null,"Returns an empty map. There is no shorthand notation."),(0,l.kt)("h3",{id:"size1-1"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.size(key1: "value", key2: "value2") # 2\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the number of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"get2"},"get/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.get([key1: "value", key2: "value2"], "key1") # "value"\nMap.get([key1: "value", key2: "value2"], "key3") # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key")),(0,l.kt)("p",null,"Returns the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," or ",(0,l.kt)("inlineCode",{parentName:"p"},"nil")," if ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is not in the ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"There is a shorthand notation ",(0,l.kt)("inlineCode",{parentName:"p"},"map.key")," when key is not a variable.")),(0,l.kt)("h3",{id:"get3"},"get/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.get([key1: "value", key2: "value2"], "key1", "not in map") # "value"\nMap.get([key1: "value", key2: "value2"], "key3", "not in map") # "not in map"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"default")," the default value")),(0,l.kt)("p",null,"Returns the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," or ",(0,l.kt)("inlineCode",{parentName:"p"},"default")," if ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is not in the ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"set3"},"set/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.set([key1: "value", key2: "value2"], "key1", "valueX") # [key1: "valueX", key2: "value2"]\nMap.get([key1: "value", key2: "value2"], "key3", "value3") # [key1: "value", key2: "value2, key3: "value3"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"value")," the value to set")),(0,l.kt)("p",null,"Returns a copy of ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," where the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is ",(0,l.kt)("inlineCode",{parentName:"p"},"value"),"."),(0,l.kt)("h3",{id:"keys1"},"keys/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.keys(key1: "value", key2: "value2") # ["key1", "key2"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the list of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"Use it with a ",(0,l.kt)("inlineCode",{parentName:"p"},"for loop")," to iterate on a map!"),(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre"},"for key in Map.keys(map) do\n ...\n value = map[key]\n ...\nend\n"))),(0,l.kt)("h3",{id:"values1"},"values/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.values(key1: "value", key2: "value2") # ["value", "value2"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the list of values in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"delete2"},"delete/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.delete([key1: "value", key2: "value2"], "key2") # [key1: "value"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key to remove")),(0,l.kt)("p",null,"Returns a copy of the ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," without the value at given ",(0,l.kt)("inlineCode",{parentName:"p"},"key"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"list"},"List"),(0,l.kt)("p",null,"Lists are actually ",(0,l.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Linked_list"},"Linked List"),"."),(0,l.kt)("h3",{id:"at2"},"at/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.at(["a", "b", "c"], 0) # "a"\nList.at(["a", "b", "c"], 1) # "b"\nList.at(["a", "b", "c"], 2) # "c"\nList.at([], 0) # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"index")," the index (zero-based)")),(0,l.kt)("p",null,"Returns the element at ",(0,l.kt)("inlineCode",{parentName:"p"},"index")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"size1-2"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.size([]) # 0\nList.size([1,2,3,4]) # 4\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list")),(0,l.kt)("p",null,"Returns the number of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"in2-1"},"in?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.in?(["bob", "alice"], "alice") # true\nList.in?(["bob", "alice"], "fred") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the haystack"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the needle")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"needle")," is in the ",(0,l.kt)("inlineCode",{parentName:"p"},"haystack"),"."),(0,l.kt)("h3",{id:"empty1"},"empty?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.empty?([]) # true\nList.empty?(["apple"]) # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"list")," is empty or not."),(0,l.kt)("h3",{id:"concat2"},"concat/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.concat([], []) # []\nList.concat([1,2], [3,4]) # [1,2,3,4]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list1")," a list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list2")," another list")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"list2")," is concatenated to ",(0,l.kt)("inlineCode",{parentName:"p"},"list1"),"."),(0,l.kt)("h3",{id:"append2"},"append/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.append([], 1) # [1]\nList.append([1], 2) # [1,2]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the element")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"element")," is appended to the end of ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"If order doesn't matter, we suggest to use ",(0,l.kt)("inlineCode",{parentName:"p"},"prepend/2")," instead (Complexity: O(1) instead of O(n)).")),(0,l.kt)("h3",{id:"prepend2"},"prepend/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.prepend([], 1) # [1]\nList.prepend([1], 0) # [0,1]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the element")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"element")," is appended to the start of ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"join2"},"join/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.join([], ", ") # ""\nList.join(["Mike", "Robert", "Joe"], ", ") # "Mike, Robert, Joe"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list of strings"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"separator")," the separator")),(0,l.kt)("p",null,"Returns a string where all ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"'s elements have been joined with ",(0,l.kt)("inlineCode",{parentName:"p"},"separator")," separator."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"regex"},"Regex"),(0,l.kt)("h3",{id:"extract2"},"extract/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.extract("123456abc", "[0-9]+") # "123456"\nRegex.extract("voodoo", "[abc]") # ""\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns the data from ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," extract via the regex ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern"),"."),(0,l.kt)("h3",{id:"match2"},"match?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.match?("123456", "^[0-9]+$") # true\nRegex.match?("123456abc", "^[0-9]+$") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern")," matches the ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," or not."),(0,l.kt)("h3",{id:"scan2"},"scan/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.scan("foo", "bar") # []\nRegex.scan("toto,123\\ntutu,456\\n", "toto,([0-9]+)") # ["123"]\nRegex.scan("toto,123\\ntutu,456\\n", "t.t.,([0-9]+)") # ["123", "456"]\nRegex.scan("A0B1C2,123\\nD3E4F5,456\\n", "^(\\\\w+),(\\\\d+)$") # [["A0B1C2", "123"], ["D3E4F5", "456"]]\n\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns the data from ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," extract via the regex ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern"),"."),(0,l.kt)("admonition",{type:"note"},(0,l.kt)("p",{parentName:"admonition"},"This function requires the usage of capture groups (subexpressions).")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"json"},"Json"),(0,l.kt)("p",null,"Functions to manipulate JSON strings."),(0,l.kt)("p",null,"Useful resources:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://goessner.net/articles/JsonPath/"},"JSONPath documentation"))),(0,l.kt)("h3",{id:"path_extract2"},"path_extract/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.path_extract("{ \\"firstName\\": \\"John\\", \\"lastName\\": \\"Doe\\"}", "$.firstName") # "John"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"path")," the path")),(0,l.kt)("p",null,"Returns the data at ",(0,l.kt)("inlineCode",{parentName:"p"},"path")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"path_match2"},"path_match?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.path_match?("{\\"1622541930\\":{\\"uco\\":{\\"eur\\":0.176922,\\"usd\\":0.21642}}}", "$.*.uco.usd") # true\nJson.path_match?("{\\"1622541930\\":{\\"uco\\":{\\"eur\\":0.176922,\\"usd\\":0.21642}}}", "$.*.uco.aud") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"path")," the path")),(0,l.kt)("p",null,"Returns if there is a value at ",(0,l.kt)("inlineCode",{parentName:"p"},"path")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"to_string1"},"to_string/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.to_string(1) # "1"\nJson.to_string("str") # "\\"str\\""\nJson.to_string([1,2,3]) # "[1,2,3]"\nJson.to_string(foo: "bar") # "{\\"foo\\":\\"bar\\"}"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"any")," anything")),(0,l.kt)("p",null,"Returns the Json representation of ",(0,l.kt)("inlineCode",{parentName:"p"},"any"),"."),(0,l.kt)("h3",{id:"parse1"},"parse/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.parse("1") # "1"\nJson.parse("\\"str\\"") # "str"\nJson.parse("[1,2,3]") # [1,2,3]\nJson.parse("{\\"foo\\":\\"bar\\"}") # foo: "bar"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string")),(0,l.kt)("p",null,"Returns the value represented by ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"is_valid1"},"is_valid?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.is_valid?("str") # false\nJson.is_valid?("\\"str\\"") # true\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string")),(0,l.kt)("p",null,"Returns whether the string is valid JSON or not."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"time"},"Time"),(0,l.kt)("h3",{id:"now0"},"now/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Time.now() # 1677493444\n")),(0,l.kt)("p",null,"Returns an approximation of current time (seconds since epoch).\n",(0,l.kt)("strong",{parentName:"p"},"It will always return the same value within a contract.")),(0,l.kt)("admonition",{title:"Why an approximation?",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Because we need the smart contracts to be determinist.\nMany nodes will run them and all of them must produce the same transaction to validate a contract's execution.")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"chain"},"Chain"),(0,l.kt)("h3",{id:"get_genesis_address1-io"},"get_genesis_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_genesis_address("000012345...") # "000056789..."\nChain.get_genesis_address("000012345...") # "000012345..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the genesis address of the transaction chain that contains a transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". If there is no transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),", it returns ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_first_transaction_address1-io"},"get_first_transaction_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_first_transaction_address("000012345...") # "000056789..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the address of the first transaction of the transaction chain that contains a transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("admonition",{type:"danger"},(0,l.kt)("p",{parentName:"admonition"},"[IT CURRENTLY CRASH IF THERE IS NO TRANSACTION]")),(0,l.kt)("h3",{id:"get_genesis_public_key1-io"},"get_genesis_public_key/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_genesis_public_key("00013B08D...") # "000108A5C..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"public_key")," the public key")),(0,l.kt)("p",null,"Returns the genesis public key of ",(0,l.kt)("inlineCode",{parentName:"p"},"public_key"),"."),(0,l.kt)("h3",{id:"get_burn_address0"},"get_burn_address/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_burn_address() # "0000000000..."\n')),(0,l.kt)("p",null,"Returns the burn address."),(0,l.kt)("h3",{id:"get_transaction1--io"},"get_transaction/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_transaction(0x00ABCD..) # [address: "00ABCD..", content: "...", uco_transfers: [], ...]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". If there is no transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),", it returns ",(0,l.kt)("inlineCode",{parentName:"p"},"nil"),". See ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,l.kt)("h3",{id:"get_last_address1-io"},"get_last_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_last_address(0x00ABCD..) # "00EFAB..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the latest transaction address of the chain that contains ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_last_transaction1-io"},"get_last_transaction/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_last_transaction(0x00ABCD..) # [address: "00EFAB..", content: "...", uco_transfers: [], ...]\nChain.get_last_transaction(0x00ABCF..) # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the latest transaction of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". May return nil if ",(0,l.kt)("inlineCode",{parentName:"p"},"address")," does not exist. See ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,l.kt)("h3",{id:"get_previous_address1"},"get_previous_address/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_previous_address(0x00ABCD..) # "00EFAB.."\nChain.get_previous_address(transaction) # "0014AC.."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"previous_public_key")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"transaction")," either a transaction map or a the previous_public_key")),(0,l.kt)("p",null,"Returns previous transaction's address. Usually called with a ",(0,l.kt)("inlineCode",{parentName:"p"},"transaction"),", it is also possible to call it with the ",(0,l.kt)("inlineCode",{parentName:"p"},"previous_public_key")," directly."),(0,l.kt)("h3",{id:"get_balance1-io"},"get_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_balance(0x00ABCD..)\nuco_balance = balance.uco # 181812.87\ntestcoin_balance = Map.get(balance.tokens, [token_address: 0x00ABCD.., token_id: 0]) # 4756.5401\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns the balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("p",null,"The return value is a map with two keys ",(0,l.kt)("inlineCode",{parentName:"p"},"uco")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"tokens"),". The value behind ",(0,l.kt)("inlineCode",{parentName:"p"},"tokens")," is a map where the keys are tokens' identifiers (",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]"),") and the values are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve the entire list of tokens (and uco) at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested at UCO, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_uco_balance1-io"},"get_uco_balance/1"),"."),(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),"."),(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a few specific tokens, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_tokens_balance2-io"},"get_tokens_balance/2"),".")),(0,l.kt)("h3",{id:"get_uco_balance1-io"},"get_uco_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Chain.get_uco_balance(0x00ABCD..) # 14.26239\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns the amount of UCO in the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_token_balance2-io"},"get_token_balance/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Same as ",(0,l.kt)("a",{parentName:"p",href:"#get_token_balance3-io"},"get_token_balance/3")," called with ",(0,l.kt)("inlineCode",{parentName:"p"},"token_id: 0"),"."),(0,l.kt)("h3",{id:"get_token_balance3-io"},"get_token_balance/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"transaction_address = 0x00ABCD..\nfungible_token_address = 0x00BCDE..\nnon_fungible_token_address = 0x00FEDC..\nChain.get_token_balance(transaction_address, fungible_token_address, 0) # 14.26239591\nChain.get_token_balance(transaction_address, non_fungible_token_address, 1) # 1\nChain.get_token_balance(transaction_address, non_fungible_token_address, 2) # 0\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_address")," the address of the transaction that defined the token"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_id")," the index of the element in the collection (0 for fungible tokens)")),(0,l.kt)("p",null,"Returns the token balance of the token defined at ",(0,l.kt)("inlineCode",{parentName:"p"},"token_address")," in the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nNon-fungible tokens must precise the ",(0,l.kt)("inlineCode",{parentName:"p"},"token_id")," (index of the token in the collection)."),(0,l.kt)("h3",{id:"get_tokens_balance1-io"},"get_tokens_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_tokens_balance(0x00ABCD..)\nabdecoin_balance = Map.get(balance, [token_address: 0x00ABDE.., token_id: 0]) # 8.90800012\ndefacoin_balance = Map.get(balance, [token_address: 0x00DEFA.., token_id: 0]) # 4.05902597\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns a subset of the token balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nThe return value is a map where the keys are the tokens' identifiers: ",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]")," and the value are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve many tokens at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),".")),(0,l.kt)("h3",{id:"get_tokens_balance2-io"},"get_tokens_balance/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_tokens_balance(0x00ABCD.., [\n [token_address: 0x00DEFA.., token_id: 1],\n [token_address: 0x00DEFA.., token_id: 2]\n])\nnft1 = Map.get(balance, [token_address: 0x00DEFA.., token_id: 1]) # 1\nnft2 = Map.get(balance, [token_address: 0x00DEFA.., token_id: 2]) # 0\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"tokens_identifiers")," the list of tokens' identifiers (",(0,l.kt)("inlineCode",{parentName:"li"},"[token_address: HEX, token_id: POS_INT]"),") to return")),(0,l.kt)("p",null,"Returns a subset of the token balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nThe return value is a map where the keys are the tokens' identifiers: ",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]")," and the value are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve many tokens at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),".")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"crypto"},"Crypto"),(0,l.kt)("h3",{id:"hash1"},"hash/1"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hash2"},"hash/2"),' with the second argument "sha256".'),(0,l.kt)("h3",{id:"hash2"},"hash/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Crypto.hash("my text", "sha256") # "7330D2B39CA35EA..."\nCrypto.hash("my text", "sha512") # "A3D7E45A0D9BE5F..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the text to hash"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"algo"),' the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512", "blake2b", "keccak256")')),(0,l.kt)("p",null,"Returns the hash of ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," by using ",(0,l.kt)("inlineCode",{parentName:"p"},"algo")," algorithm."),(0,l.kt)("h3",{id:"hmac1"},"hmac/1"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hmac2"},"hmac/2"),' with the second argument "sha256".'),(0,l.kt)("h3",{id:"hmac2"},"hmac/2"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hmac3"},"hmac/3")," with the third argument being a key created from the contract seed and secret data known by nodes.\nThe key created is deterministic and will always be the same for a contract."),(0,l.kt)("h3",{id:"hmac3"},"hmac/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Crypto.hmac("my text") # "374C7527733556..."\nCrypto.hmac("my text", "sha256") # "374C7527733556..."\nCrypto.hmac("my text", "sha256", "secret_key") # "901A365FF22B895..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"data")," the data to hash (if the data is hexadecimal it will be decoded in binary)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"algo"),' the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key to perform the hmac (if the data is hexadecimal it will be decoded in binary)")),(0,l.kt)("p",null,"Returns the hmac of ",(0,l.kt)("inlineCode",{parentName:"p"},"data")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," using ",(0,l.kt)("inlineCode",{parentName:"p"},"algo"),"."),(0,l.kt)("h3",{id:"sign_with_recovery1"},"sign_with_recovery/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'signature_payload = Crypto.hash("tintin", "keccak256")\nCrypto.sign_with_recovery(signature_payload) # [r: "00ABCD...", s: "00BCDE...", v: 0]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"hash")," the hash to sign")),(0,l.kt)("p",null,"Return a signature of the given ",(0,l.kt)("inlineCode",{parentName:"p"},"hash"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"token"},"Token"),(0,l.kt)("h3",{id:"fetch_id_from_address1-io"},"fetch_id_from_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Token.fetch_id_from_address("000012345") # "3C21EF708BF11B4232..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the token address")),(0,l.kt)("p",null,"Returns the token's id of the token at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"code"},"Code"),(0,l.kt)("h3",{id:"is_same2"},"is_same?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'code = """\n@version\n\ncondition triggered_by: transaction, as: []\n\nactions triggered_by: transaction do\n Contract.add_uco_transfer to: 0x1234, amount: 15.5\nend\n"""\n\nCode.is_same?(code, transaction.code)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"first_code")," a string containing a smart contract code"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"second_code")," a string containing a smart contract code")),(0,l.kt)("p",null,"Return true if codes are the same, false otherwise.\nThis function is more accurate than comparing two strings, as it convert code into structured AST and compare only code instruction and not line numbers, carriage return ..."),(0,l.kt)("h3",{id:"is_valid1-1"},"is_valid?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'code = """\n@version\n\ncondition triggered_by: transaction, as: []\n\nactions triggered_by: transaction do\n Contract.add_uco_transfer to: 0x1234, amount: 15.5\nend\n"""\n\nCode.is_valid?(code)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"code")," a string containing a smart contract code")),(0,l.kt)("p",null,"Returns true if the code is valid according to Archethic smart contracts language, false otherwise"),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"math"},"Math"),(0,l.kt)("h3",{id:"pow2"},"pow/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.pow(2, 3)\n# 8\nMath.pow(1.7, 8)\n# 69.75757441\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to apply the power"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"exponent")," the exponent of the power")),(0,l.kt)("p",null,"Returns the result of the power of number by exponent."),(0,l.kt)("h3",{id:"trunc1"},"trunc/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.trunc(8.32)\n# 8\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to truncate")),(0,l.kt)("p",null,"Returns the truncated number as an integer."),(0,l.kt)("h3",{id:"sqrt1"},"sqrt/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.sqrt(16)\n# 4\nMath.sqrt(12.5)\n# 3.53553390\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to calculate the square root")),(0,l.kt)("p",null,"Returns the square root if the number."),(0,l.kt)("h3",{id:"rem2"},"rem/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.rem(2.1, 3)\n# 2.1\nMath.rem(10, 3)\n# 1\nMath.rem(-10, 3)\n# -1\nMath.rem(10.2, 1)\n# 0.2\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"dividend")," the number to divid"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"divisor")," the number which divid")),(0,l.kt)("p",null,"Returns the remainder (modulo) of a division."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"http"},"Http"),(0,l.kt)("h3",{id:"request1-io"},"request/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request2-io"},"request/2")," with ",(0,l.kt)("inlineCode",{parentName:"p"},'method: "GET"'),"."),(0,l.kt)("h3",{id:"request2-io"},"request/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request3-io"},"request/3")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"headers: Map.new()"),"."),(0,l.kt)("h3",{id:"request3-io"},"request/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request4-io"},"request/4")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"body: nil"),"."),(0,l.kt)("h3",{id:"request4-io"},"request/4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'response = Http.request("https://fakerapi.it/api/v1/addresses?_quantity=1&_seed=watermelon", "GET", Map.new(), nil) # [status: 200, body: "..."]\nif response.status == 200 do\n # do something with response.body\nend\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"url")," the url to fetch"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"method")," the HTTP method (",(0,l.kt)("inlineCode",{parentName:"li"},'"GET"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"POST"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"PUT"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"DELETE"')," or ",(0,l.kt)("inlineCode",{parentName:"li"},'"PATCH"'),")"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"headers")," the HTTP headers"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"body")," the HTTP body")),(0,l.kt)("p",null,"Performs a HTTP request and returns a map with ",(0,l.kt)("inlineCode",{parentName:"p"},"status")," (integer) and ",(0,l.kt)("inlineCode",{parentName:"p"},"body")," (string)."),(0,l.kt)("p",null,"This status integer can be any ",(0,l.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status"},"HTTP status code"),"."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The URL must use HTTPS protocol."),(0,l.kt)("li",{parentName:"ul"},"The response body's size must be less than 256KB."),(0,l.kt)("li",{parentName:"ul"},"The response must be received in less than 2 seconds."),(0,l.kt)("li",{parentName:"ul"},"The response must be idempotent (= identical every time it is called)"),(0,l.kt)("li",{parentName:"ul"},"Only 1 call of either ",(0,l.kt)("inlineCode",{parentName:"li"},"request/1,2,3,4")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"request_many/1")," is allowed per execution.")),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"The function raises if these requirements are not meet.")),(0,l.kt)("admonition",{title:"Disclaimer",type:"danger"},(0,l.kt)("p",{parentName:"admonition"},"We discourage to call services that change their internal state directly (such as writing to a database or notifying a user). Because Archethic ",(0,l.kt)("strong",{parentName:"p"},"relies on atomic commitment of all storage nodes"),", it may happen that atomic commitment is not reached and the transaction resulting of a Smart Contract is not validated."),(0,l.kt)("p",{parentName:"admonition"},"Instead, you should notify the service of the transaction being validated. The service subscribes to that transaction via the GraphQL API, and once it receives a confirmation, it should act accordingly.")),(0,l.kt)("h3",{id:"request_many1-io"},"request_many/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'responses = Http.request_many([\n [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=male&_seed=cucumber"],\n [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=female&_seed=tomato", method: "GET", headers: Map.new(), body: nil]\n])\nfor r in responses do\n if r.status == 200 do\n # do something with r.body\n end\nend\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"request")," a list of requests to perform")),(0,l.kt)("p",null,"Performs a HTTP request and returns a map with ",(0,l.kt)("inlineCode",{parentName:"p"},"status")," (integer) and ",(0,l.kt)("inlineCode",{parentName:"p"},"body")," (string). Order and length is preserved."),(0,l.kt)("p",null,"See ",(0,l.kt)("a",{parentName:"p",href:"#request4-io"},"request/4")," for rules and more details."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"contract"},"Contract"),(0,l.kt)("h3",{id:"call_function3-io"},"call_function/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.call_function(0x0000ABCD..., "add", [1, 2])\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"contract_address")," the contract's adddress"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"function_name")," the function name"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"args")," the list of arguments to call the function with")),(0,l.kt)("p",null,"Calls the exported function ",(0,l.kt)("inlineCode",{parentName:"p"},"function_name")," of the Smart Contract at ",(0,l.kt)("inlineCode",{parentName:"p"},"contract_address")," with given ",(0,l.kt)("inlineCode",{parentName:"p"},"args")," and return the result value."),(0,l.kt)("h3",{id:"set_type1-transaction"},"set_type/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_type("transfer")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"type"),' the transaction type ("contract", "transfer", "data", "hosting")')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to be of type ",(0,l.kt)("inlineCode",{parentName:"p"},"type"),"."),(0,l.kt)("h3",{id:"set_content1-transaction"},"set_content/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_content("Hello Smart Contract")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"content")," the transaction's content (we usually use this as the state of the smart contract)")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction content to be ",(0,l.kt)("inlineCode",{parentName:"p"},"content"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"While ",(0,l.kt)("inlineCode",{parentName:"p"},"content")," is always a string when you read it, it is possible here to send an integer or a float for convenience.\nFor any other data structure, you should serialize it with the ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#json"},"Json module")," for example.")),(0,l.kt)("h3",{id:"set_code1-transaction"},"set_code/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_code("@version 1\\ncondition inherit: []")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"code")," the code")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction code to be ",(0,l.kt)("inlineCode",{parentName:"p"},"code"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},'This example "closes" the contract, by adding an ',(0,l.kt)("inlineCode",{parentName:"p"},"condition inherit")," that doesn't accept anything. It will be impossible to create a new transaction in this chain.")),(0,l.kt)("h3",{id:"add_uco_transfer1-transaction"},"add_uco_transfer/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_uco_transfer(to: "000012345...", amount: 1)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"uco_transfer")," a map with two keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"to"),": the destination address"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"amount"),": the number of UCO")))),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"uco_transfer"),"."),(0,l.kt)("h3",{id:"add_uco_transfers1-transaction"},"add_uco_transfers/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_uco_transfer1-transaction"},"add_uco_transfer/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_token_transfer1-transaction"},"add_token_transfer/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_token_transfer(\n to: "000012345...",\n amount: 1.2,\n token_address: "000023456...")\nContract.add_token_transfer(\n to: "000012345...",\n amount: 1.2,\n token_id: 4,\n token_address: "000023456...")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_transfer")," a map with three or four keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"to"),": the destination address"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"amount"),": the number of UCO"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_address"),": the transaction address of the token"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[token_id]"),": an optional integer to specify which index in the list (used for the NFTs)")))),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"token_transfer"),"."),(0,l.kt)("h3",{id:"add_token_transfers1-transaction"},"add_token_transfers/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_token_transfer1-transaction"},"add_token_transfer/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_ownership1-transaction"},"add_ownership/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'authorized_keys = Map.new()\nauthorized_keys = Map.set(authorized_keys, public_key, encoded_secret_key)\nContract.add_ownership(\n secret: "ENCODED_SECRET1",\n authorized_keys: authorized_keys\n)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ownership")," a map with two keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"secret"),": the encoded secret"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"authorized_keys"),": a map where the keys are the ",(0,l.kt)("inlineCode",{parentName:"li"},"public_keys")," and the values are the ",(0,l.kt)("inlineCode",{parentName:"li"},"encoded_secret_keys")," (the keys to decode the secret encoded by each ",(0,l.kt)("inlineCode",{parentName:"li"},"public_key"),")")))),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"It is the developer's job to encode the secret & the secret key for each authorized key.")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"ownership"),"."),(0,l.kt)("h3",{id:"add_ownerships1-transaction"},"add_ownerships/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_ownership1-transaction"},"add_ownership/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_recipient1-transaction"},"add_recipient/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_recipient("000012345...")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address"),": a transaction address (one with a smart contract)")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"address")," in the recipients."),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Recipients are used to trigger smart contracts")),(0,l.kt)("h3",{id:"add_recipients1-transaction"},"add_recipients/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_recipient1-transaction"},"add_recipients/1")," for each element of the list"),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"evm"},"Evm"),(0,l.kt)("h3",{id:"abi_encode2"},"abi_encode/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Evm.abi_encode(signature, data)\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"signature"),': the function or tuple signature (ex: "baz(uint,address)")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"data"),": the data to encode")),(0,l.kt)("p",null,"Encodes the given ",(0,l.kt)("inlineCode",{parentName:"p"},"data")," according to the ",(0,l.kt)("inlineCode",{parentName:"p"},"signature"),"."),(0,l.kt)("h3",{id:"abi_decode2"},"abi_decode/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Evm.abi_decode(signature, encoded_data)\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"signature"),': the function or tuple signature (ex: "baz(uint,address)")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"encoded_data"),": the data to decode")),(0,l.kt)("p",null,"Decodes the given ",(0,l.kt)("inlineCode",{parentName:"p"},"encoded_data")," according to the ",(0,l.kt)("inlineCode",{parentName:"p"},"signature"),"."))}k.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1855],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var n=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=d(a),m=l,c=u["".concat(s,".").concat(m)]||u[m]||k[m]||i;return a?n.createElement(c,r(r({ref:t},p),{},{components:a})):n.createElement(c,r({ref:t},p))}));function c(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,r=new Array(i);r[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:l,r[1]=o;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>k,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(7462),l=(a(7294),a(3905));a(8209);const i={id:"library",title:"Smart Contracts - Library",sidebar_label:"Library",sidebar_position:4},r=void 0,o={unversionedId:"build/smart-contracts/language/library",id:"build/smart-contracts/language/library",title:"Smart Contracts - Library",description:"The Smart Contract library is composed of many modules with many functions in each.",source:"@site/docs/build/smart-contracts/language/library.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/library",permalink:"/build/smart-contracts/language/library",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"library",title:"Smart Contracts - Library",sidebar_label:"Library",sidebar_position:4},sidebar:"docs",previous:{title:"Actions",permalink:"/build/smart-contracts/language/actions"},next:{title:"Examples",permalink:"/build/smart-contracts/language/examples"}},s={},d=[{value:"String",id:"string",level:2},{value:"size/1",id:"size1",level:3},{value:"in?/2",id:"in2",level:3},{value:"to_number/1",id:"to_number1",level:3},{value:"from_number/1",id:"from_number1",level:3},{value:"to_hex/1",id:"to_hex1",level:3},{value:"to_uppercase/1",id:"to_uppercase1",level:3},{value:"to_lowercase/1",id:"to_lowercase1",level:3},{value:"Map",id:"map",level:2},{value:"new/0",id:"new0",level:3},{value:"size/1",id:"size1-1",level:3},{value:"get/2",id:"get2",level:3},{value:"get/3",id:"get3",level:3},{value:"set/3",id:"set3",level:3},{value:"keys/1",id:"keys1",level:3},{value:"values/1",id:"values1",level:3},{value:"delete/2",id:"delete2",level:3},{value:"List",id:"list",level:2},{value:"at/2",id:"at2",level:3},{value:"size/1",id:"size1-2",level:3},{value:"in?/2",id:"in2-1",level:3},{value:"empty?/1",id:"empty1",level:3},{value:"concat/2",id:"concat2",level:3},{value:"append/2",id:"append2",level:3},{value:"prepend/2",id:"prepend2",level:3},{value:"join/2",id:"join2",level:3},{value:"Regex",id:"regex",level:2},{value:"extract/2",id:"extract2",level:3},{value:"match?/2",id:"match2",level:3},{value:"scan/2",id:"scan2",level:3},{value:"Json",id:"json",level:2},{value:"path_extract/2",id:"path_extract2",level:3},{value:"path_match?/2",id:"path_match2",level:3},{value:"to_string/1",id:"to_string1",level:3},{value:"parse/1",id:"parse1",level:3},{value:"is_valid?/1",id:"is_valid1",level:3},{value:"Time",id:"time",level:2},{value:"now/0",id:"now0",level:3},{value:"Chain",id:"chain",level:2},{value:"get_genesis_address/1 [I/O]",id:"get_genesis_address1-io",level:3},{value:"get_first_transaction_address/1 [I/O]",id:"get_first_transaction_address1-io",level:3},{value:"get_genesis_public_key/1 [I/O]",id:"get_genesis_public_key1-io",level:3},{value:"get_burn_address/0",id:"get_burn_address0",level:3},{value:"get_transaction/1 [I/O]",id:"get_transaction1--io",level:3},{value:"get_last_address/1 [I/O]",id:"get_last_address1-io",level:3},{value:"get_last_transaction/1 [I/O]",id:"get_last_transaction1-io",level:3},{value:"get_previous_address/1",id:"get_previous_address1",level:3},{value:"get_balance/1 [I/O]",id:"get_balance1-io",level:3},{value:"get_uco_balance/1 [I/O]",id:"get_uco_balance1-io",level:3},{value:"get_token_balance/2 [I/O]",id:"get_token_balance2-io",level:3},{value:"get_token_balance/3 [I/O]",id:"get_token_balance3-io",level:3},{value:"get_tokens_balance/1 [I/O]",id:"get_tokens_balance1-io",level:3},{value:"get_tokens_balance/2 [I/O]",id:"get_tokens_balance2-io",level:3},{value:"Crypto",id:"crypto",level:2},{value:"hash/1",id:"hash1",level:3},{value:"hash/2",id:"hash2",level:3},{value:"hmac/1",id:"hmac1",level:3},{value:"hmac/2",id:"hmac2",level:3},{value:"hmac/3",id:"hmac3",level:3},{value:"sign_with_recovery/1",id:"sign_with_recovery1",level:3},{value:"Token",id:"token",level:2},{value:"fetch_id_from_address/1 [I/O]",id:"fetch_id_from_address1-io",level:3},{value:"Code",id:"code",level:2},{value:"is_same?/2",id:"is_same2",level:3},{value:"is_valid?/1",id:"is_valid1-1",level:3},{value:"Math",id:"math",level:2},{value:"pow/2",id:"pow2",level:3},{value:"trunc/1",id:"trunc1",level:3},{value:"sqrt/1",id:"sqrt1",level:3},{value:"rem/2",id:"rem2",level:3},{value:"Http",id:"http",level:2},{value:"request/1 [I/O]",id:"request1-io",level:3},{value:"request/2 [I/O]",id:"request2-io",level:3},{value:"request/3 [I/O]",id:"request3-io",level:3},{value:"request/4 [I/O]",id:"request4-io",level:3},{value:"request_many/1 [I/O]",id:"request_many1-io",level:3},{value:"Contract",id:"contract",level:2},{value:"call_function/3 [I/O]",id:"call_function3-io",level:3},{value:"set_type/1 [Transaction]",id:"set_type1-transaction",level:3},{value:"set_content/1 [Transaction]",id:"set_content1-transaction",level:3},{value:"set_code/1 [Transaction]",id:"set_code1-transaction",level:3},{value:"add_uco_transfer/1 [Transaction]",id:"add_uco_transfer1-transaction",level:3},{value:"add_uco_transfers/1 [Transaction]",id:"add_uco_transfers1-transaction",level:3},{value:"add_token_transfer/1 [Transaction]",id:"add_token_transfer1-transaction",level:3},{value:"add_token_transfers/1 [Transaction]",id:"add_token_transfers1-transaction",level:3},{value:"add_ownership/1 [Transaction]",id:"add_ownership1-transaction",level:3},{value:"add_ownerships/1 [Transaction]",id:"add_ownerships1-transaction",level:3},{value:"add_recipient/1 [Transaction]",id:"add_recipient1-transaction",level:3},{value:"add_recipients/1 [Transaction]",id:"add_recipients1-transaction",level:3},{value:"Evm",id:"evm",level:2},{value:"abi_encode/2",id:"abi_encode2",level:3},{value:"abi_decode/2",id:"abi_decode2",level:3}],p={toc:d},u="wrapper";function k(e){let{components:t,...a}=e;return(0,l.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"The Smart Contract library is composed of many modules with many functions in each.\n",(0,l.kt)("strong",{parentName:"p"},"Unless it is explicitely written, the functions will not mutate their arguments"),":"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"# Don't\nsold_items = [1,2,3]\nList.concat(sold_items, [4,5,6])\n\n# Do\nsold_items = [1,2,3]\nsold_items = List.concat(sold_items, [4,5,6])\n")),(0,l.kt)("admonition",{title:"function/arity",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"In this page, the number after the slash indicates the arity of the function (number or arguments)."),(0,l.kt)("p",{parentName:"admonition"},"For example ",(0,l.kt)("inlineCode",{parentName:"p"},"size/1")," means the function ",(0,l.kt)("inlineCode",{parentName:"p"},"size")," has 1 argument.")),(0,l.kt)("admonition",{title:"Tagged functions",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Functions are tagged as ",(0,l.kt)("inlineCode",{parentName:"p"},"[Transaction]")," are special:"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"They are only available in the ",(0,l.kt)("inlineCode",{parentName:"li"},"actions")," block."),(0,l.kt)("li",{parentName:"ul"},'They mutate an internal state, the "next transaction".'),(0,l.kt)("li",{parentName:"ul"},'This "next transaction" is initiated with current contract (all values but transfers are copied)')),(0,l.kt)("p",{parentName:"admonition"},"Other functions are tagged as ",(0,l.kt)("inlineCode",{parentName:"p"},"[I/O]")," and help to fetch data making network calls by either:"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"requesting Archethic"),(0,l.kt)("li",{parentName:"ul"},"requesting the outside world"))),(0,l.kt)("h2",{id:"string"},"String"),(0,l.kt)("h3",{id:"size1"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.size("hello") # 5\nString.size("\u4f60\u597d") # 2\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Returns the number of characters in ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),"."),(0,l.kt)("h3",{id:"in2"},"in?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.in?("bob,alice,julia", "alice") # true\nString.in?("bob,alice,julia", "fred") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str1")," the haystack"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str2")," the needle")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"needle")," is in the ",(0,l.kt)("inlineCode",{parentName:"p"},"haystack"),"."),(0,l.kt)("h3",{id:"to_number1"},"to_number/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_number("12") # 12\nString.to_number("-12") # -12\nString.to_number("12.1") # 12.1\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Returns the number which text representation is ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),"."),(0,l.kt)("h3",{id:"from_number1"},"from_number/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.from_number(13) # "13"\nString.from_number(13.2) # "13.2"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number")),(0,l.kt)("p",null,"Returns the text representation of ",(0,l.kt)("inlineCode",{parentName:"p"},"number"),"."),(0,l.kt)("h3",{id:"to_hex1"},"to_hex/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_hex("592ac76afa") # "592AC76AFA"\nString.to_hex("592AC76AFA") # "592AC76AFA"\nString.to_hex("hello") # "68656C6C6F"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the text representation of hexadecimal ",(0,l.kt)("inlineCode",{parentName:"p"},"str"),".\nIf ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," is already an hex it just uppercase it"),(0,l.kt)("h3",{id:"to_uppercase1"},"to_uppercase/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_uppercase("Ars\xe8ne Lupin") # "ARS\xc8NE LUPIN"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," in uppercase."),(0,l.kt)("h3",{id:"to_lowercase1"},"to_lowercase/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'String.to_lowercase("Sherlock Holmes") # "sherlock holmes"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the string")),(0,l.kt)("p",null,"Return the ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," in lowercase."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"map"},"Map"),(0,l.kt)("h3",{id:"new0"},"new/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Map.new() # empty map\n")),(0,l.kt)("p",null,"Returns an empty map. There is no shorthand notation."),(0,l.kt)("h3",{id:"size1-1"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.size(key1: "value", key2: "value2") # 2\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the number of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"get2"},"get/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.get([key1: "value", key2: "value2"], "key1") # "value"\nMap.get([key1: "value", key2: "value2"], "key3") # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key")),(0,l.kt)("p",null,"Returns the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," or ",(0,l.kt)("inlineCode",{parentName:"p"},"nil")," if ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is not in the ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"There is a shorthand notation ",(0,l.kt)("inlineCode",{parentName:"p"},"map.key")," when key is not a variable.")),(0,l.kt)("h3",{id:"get3"},"get/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.get([key1: "value", key2: "value2"], "key1", "not in map") # "value"\nMap.get([key1: "value", key2: "value2"], "key3", "not in map") # "not in map"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"default")," the default value")),(0,l.kt)("p",null,"Returns the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," or ",(0,l.kt)("inlineCode",{parentName:"p"},"default")," if ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is not in the ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"set3"},"set/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.set([key1: "value", key2: "value2"], "key1", "valueX") # [key1: "valueX", key2: "value2"]\nMap.get([key1: "value", key2: "value2"], "key3", "value3") # [key1: "value", key2: "value2, key3: "value3"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"value")," the value to set")),(0,l.kt)("p",null,"Returns a copy of ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," where the value at ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," is ",(0,l.kt)("inlineCode",{parentName:"p"},"value"),"."),(0,l.kt)("h3",{id:"keys1"},"keys/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.keys(key1: "value", key2: "value2") # ["key1", "key2"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the list of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"Use it with a ",(0,l.kt)("inlineCode",{parentName:"p"},"for loop")," to iterate on a map!"),(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre"},"for key in Map.keys(map) do\n ...\n value = map[key]\n ...\nend\n"))),(0,l.kt)("h3",{id:"values1"},"values/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.values(key1: "value", key2: "value2") # ["value", "value2"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map")),(0,l.kt)("p",null,"Returns the list of values in ",(0,l.kt)("inlineCode",{parentName:"p"},"map"),"."),(0,l.kt)("h3",{id:"delete2"},"delete/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Map.delete([key1: "value", key2: "value2"], "key2") # [key1: "value"]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"map")," the map"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key to remove")),(0,l.kt)("p",null,"Returns a copy of the ",(0,l.kt)("inlineCode",{parentName:"p"},"map")," without the value at given ",(0,l.kt)("inlineCode",{parentName:"p"},"key"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"list"},"List"),(0,l.kt)("p",null,"Lists are actually ",(0,l.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Linked_list"},"Linked List"),"."),(0,l.kt)("h3",{id:"at2"},"at/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.at(["a", "b", "c"], 0) # "a"\nList.at(["a", "b", "c"], 1) # "b"\nList.at(["a", "b", "c"], 2) # "c"\nList.at([], 0) # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"index")," the index (zero-based)")),(0,l.kt)("p",null,"Returns the element at ",(0,l.kt)("inlineCode",{parentName:"p"},"index")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"size1-2"},"size/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.size([]) # 0\nList.size([1,2,3,4]) # 4\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list")),(0,l.kt)("p",null,"Returns the number of keys in ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"in2-1"},"in?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.in?(["bob", "alice"], "alice") # true\nList.in?(["bob", "alice"], "fred") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the haystack"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the needle")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"needle")," is in the ",(0,l.kt)("inlineCode",{parentName:"p"},"haystack"),"."),(0,l.kt)("h3",{id:"empty1"},"empty?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.empty?([]) # true\nList.empty?(["apple"]) # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"list")," is empty or not."),(0,l.kt)("h3",{id:"concat2"},"concat/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.concat([], []) # []\nList.concat([1,2], [3,4]) # [1,2,3,4]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list1")," a list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list2")," another list")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"list2")," is concatenated to ",(0,l.kt)("inlineCode",{parentName:"p"},"list1"),"."),(0,l.kt)("h3",{id:"append2"},"append/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.append([], 1) # [1]\nList.append([1], 2) # [1,2]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the element")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"element")," is appended to the end of ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"If order doesn't matter, we suggest to use ",(0,l.kt)("inlineCode",{parentName:"p"},"prepend/2")," instead (Complexity: O(1) instead of O(n)).")),(0,l.kt)("h3",{id:"prepend2"},"prepend/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"List.prepend([], 1) # [1]\nList.prepend([1], 0) # [0,1]\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"element")," the element")),(0,l.kt)("p",null,"Returns a new list where ",(0,l.kt)("inlineCode",{parentName:"p"},"element")," is appended to the start of ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"."),(0,l.kt)("h3",{id:"join2"},"join/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'List.join([], ", ") # ""\nList.join(["Mike", "Robert", "Joe"], ", ") # "Mike, Robert, Joe"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"list")," the list of strings"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"separator")," the separator")),(0,l.kt)("p",null,"Returns a string where all ",(0,l.kt)("inlineCode",{parentName:"p"},"list"),"'s elements have been joined with ",(0,l.kt)("inlineCode",{parentName:"p"},"separator")," separator."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"regex"},"Regex"),(0,l.kt)("h3",{id:"extract2"},"extract/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.extract("123456abc", "[0-9]+") # "123456"\nRegex.extract("voodoo", "[abc]") # ""\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns the data from ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," extract via the regex ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern"),"."),(0,l.kt)("h3",{id:"match2"},"match?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.match?("123456", "^[0-9]+$") # true\nRegex.match?("123456abc", "^[0-9]+$") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns whether the ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern")," matches the ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," or not."),(0,l.kt)("h3",{id:"scan2"},"scan/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Regex.scan("foo", "bar") # []\nRegex.scan("toto,123\\ntutu,456\\n", "toto,([0-9]+)") # ["123"]\nRegex.scan("toto,123\\ntutu,456\\n", "t.t.,([0-9]+)") # ["123", "456"]\nRegex.scan("A0B1C2,123\\nD3E4F5,456\\n", "^(\\\\w+),(\\\\d+)$") # [["A0B1C2", "123"], ["D3E4F5", "456"]]\n\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"text")," the list"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"pattern")," the element")),(0,l.kt)("p",null,"Returns the data from ",(0,l.kt)("inlineCode",{parentName:"p"},"text")," extract via the regex ",(0,l.kt)("inlineCode",{parentName:"p"},"pattern"),"."),(0,l.kt)("admonition",{type:"note"},(0,l.kt)("p",{parentName:"admonition"},"This function requires the usage of capture groups (subexpressions).")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"json"},"Json"),(0,l.kt)("p",null,"Functions to manipulate JSON strings."),(0,l.kt)("p",null,"Useful resources:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"https://goessner.net/articles/JsonPath/"},"JSONPath documentation"))),(0,l.kt)("h3",{id:"path_extract2"},"path_extract/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.path_extract("{ \\"firstName\\": \\"John\\", \\"lastName\\": \\"Doe\\"}", "$.firstName") # "John"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"path")," the path")),(0,l.kt)("p",null,"Returns the data at ",(0,l.kt)("inlineCode",{parentName:"p"},"path")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"path_match2"},"path_match?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.path_match?("{\\"1622541930\\":{\\"uco\\":{\\"eur\\":0.176922,\\"usd\\":0.21642}}}", "$.*.uco.usd") # true\nJson.path_match?("{\\"1622541930\\":{\\"uco\\":{\\"eur\\":0.176922,\\"usd\\":0.21642}}}", "$.*.uco.aud") # false\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"path")," the path")),(0,l.kt)("p",null,"Returns if there is a value at ",(0,l.kt)("inlineCode",{parentName:"p"},"path")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"to_string1"},"to_string/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.to_string(1) # "1"\nJson.to_string("str") # "\\"str\\""\nJson.to_string([1,2,3]) # "[1,2,3]"\nJson.to_string(foo: "bar") # "{\\"foo\\":\\"bar\\"}"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"any")," anything")),(0,l.kt)("p",null,"Returns the Json representation of ",(0,l.kt)("inlineCode",{parentName:"p"},"any"),"."),(0,l.kt)("h3",{id:"parse1"},"parse/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.parse("1") # "1"\nJson.parse("\\"str\\"") # "str"\nJson.parse("[1,2,3]") # [1,2,3]\nJson.parse("{\\"foo\\":\\"bar\\"}") # foo: "bar"\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string")),(0,l.kt)("p",null,"Returns the value represented by ",(0,l.kt)("inlineCode",{parentName:"p"},"json"),"."),(0,l.kt)("h3",{id:"is_valid1"},"is_valid?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Json.is_valid?("str") # false\nJson.is_valid?("\\"str\\"") # true\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"json")," the json string")),(0,l.kt)("p",null,"Returns whether the string is valid JSON or not."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"time"},"Time"),(0,l.kt)("h3",{id:"now0"},"now/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Time.now() # 1677493444\n")),(0,l.kt)("p",null,"Returns an approximation of current time (seconds since epoch).\n",(0,l.kt)("strong",{parentName:"p"},"It will always return the same value within a contract.")),(0,l.kt)("admonition",{title:"Why an approximation?",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Because we need the smart contracts to be determinist.\nMany nodes will run them and all of them must produce the same transaction to validate a contract's execution.")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"chain"},"Chain"),(0,l.kt)("h3",{id:"get_genesis_address1-io"},"get_genesis_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_genesis_address("000012345...") # "000056789..."\nChain.get_genesis_address("000012345...") # "000012345..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the genesis address of the transaction chain that contains a transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". If there is no transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),", it returns ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_first_transaction_address1-io"},"get_first_transaction_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_first_transaction_address("000012345...") # "000056789..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the address of the first transaction of the transaction chain that contains a transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("admonition",{type:"danger"},(0,l.kt)("p",{parentName:"admonition"},"[IT CURRENTLY CRASH IF THERE IS NO TRANSACTION]")),(0,l.kt)("h3",{id:"get_genesis_public_key1-io"},"get_genesis_public_key/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_genesis_public_key("00013B08D...") # "000108A5C..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"public_key")," the public key")),(0,l.kt)("p",null,"Returns the genesis public key of ",(0,l.kt)("inlineCode",{parentName:"p"},"public_key"),"."),(0,l.kt)("h3",{id:"get_burn_address0"},"get_burn_address/0"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_burn_address() # "0000000000..."\n')),(0,l.kt)("p",null,"Returns the burn address."),(0,l.kt)("h3",{id:"get_transaction1--io"},"get_transaction/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_transaction(0x00ABCD..) # [address: "00ABCD..", content: "...", uco_transfers: [], ...]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". If there is no transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),", it returns ",(0,l.kt)("inlineCode",{parentName:"p"},"nil"),". See ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,l.kt)("h3",{id:"get_last_address1-io"},"get_last_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_last_address(0x00ABCD..) # "00EFAB..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the latest transaction address of the chain that contains ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_last_transaction1-io"},"get_last_transaction/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_last_transaction(0x00ABCD..) # [address: "00EFAB..", content: "...", uco_transfers: [], ...]\nChain.get_last_transaction(0x00ABCF..) # nil\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the transaction address")),(0,l.kt)("p",null,"Returns the latest transaction of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),". May return nil if ",(0,l.kt)("inlineCode",{parentName:"p"},"address")," does not exist. See ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/actions#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,l.kt)("h3",{id:"get_previous_address1"},"get_previous_address/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Chain.get_previous_address(0x00ABCD..) # "00EFAB.."\nChain.get_previous_address(transaction) # "0014AC.."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"previous_public_key")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"transaction")," either a transaction map or a the previous_public_key")),(0,l.kt)("p",null,"Returns previous transaction's address. Usually called with a ",(0,l.kt)("inlineCode",{parentName:"p"},"transaction"),", it is also possible to call it with the ",(0,l.kt)("inlineCode",{parentName:"p"},"previous_public_key")," directly."),(0,l.kt)("h3",{id:"get_balance1-io"},"get_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_balance(0x00ABCD..)\nuco_balance = balance.uco # 181812.87\ntestcoin_balance = Map.get(balance.tokens, [token_address: 0x00ABCD.., token_id: 0]) # 4756.5401\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns the balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("p",null,"The return value is a map with two keys ",(0,l.kt)("inlineCode",{parentName:"p"},"uco")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"tokens"),". The value behind ",(0,l.kt)("inlineCode",{parentName:"p"},"tokens")," is a map where the keys are tokens' identifiers (",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]"),") and the values are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve the entire list of tokens (and uco) at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested at UCO, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_uco_balance1-io"},"get_uco_balance/1"),"."),(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),"."),(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a few specific tokens, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_tokens_balance2-io"},"get_tokens_balance/2"),".")),(0,l.kt)("h3",{id:"get_uco_balance1-io"},"get_uco_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Chain.get_uco_balance(0x00ABCD..) # 14.26239\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns the amount of UCO in the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("h3",{id:"get_token_balance2-io"},"get_token_balance/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Same as ",(0,l.kt)("a",{parentName:"p",href:"#get_token_balance3-io"},"get_token_balance/3")," called with ",(0,l.kt)("inlineCode",{parentName:"p"},"token_id: 0"),"."),(0,l.kt)("h3",{id:"get_token_balance3-io"},"get_token_balance/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"transaction_address = 0x00ABCD..\nfungible_token_address = 0x00BCDE..\nnon_fungible_token_address = 0x00FEDC..\nChain.get_token_balance(transaction_address, fungible_token_address, 0) # 14.26239591\nChain.get_token_balance(transaction_address, non_fungible_token_address, 1) # 1\nChain.get_token_balance(transaction_address, non_fungible_token_address, 2) # 0\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_address")," the address of the transaction that defined the token"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_id")," the index of the element in the collection (0 for fungible tokens)")),(0,l.kt)("p",null,"Returns the token balance of the token defined at ",(0,l.kt)("inlineCode",{parentName:"p"},"token_address")," in the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nNon-fungible tokens must precise the ",(0,l.kt)("inlineCode",{parentName:"p"},"token_id")," (index of the token in the collection)."),(0,l.kt)("h3",{id:"get_tokens_balance1-io"},"get_tokens_balance/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_tokens_balance(0x00ABCD..)\nabdecoin_balance = Map.get(balance, [token_address: 0x00ABDE.., token_id: 0]) # 8.90800012\ndefacoin_balance = Map.get(balance, [token_address: 0x00DEFA.., token_id: 0]) # 4.05902597\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in")),(0,l.kt)("p",null,"Returns a subset of the token balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nThe return value is a map where the keys are the tokens' identifiers: ",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]")," and the value are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve many tokens at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),".")),(0,l.kt)("h3",{id:"get_tokens_balance2-io"},"get_tokens_balance/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"balance = Chain.get_tokens_balance(0x00ABCD.., [\n [token_address: 0x00DEFA.., token_id: 1],\n [token_address: 0x00DEFA.., token_id: 2]\n])\nnft1 = Map.get(balance, [token_address: 0x00DEFA.., token_id: 1]) # 1\nnft2 = Map.get(balance, [token_address: 0x00DEFA.., token_id: 2]) # 0\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the address of a transaction in the chain you're interested in"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"tokens_identifiers")," the list of tokens' identifiers (",(0,l.kt)("inlineCode",{parentName:"li"},"[token_address: HEX, token_id: POS_INT]"),") to return")),(0,l.kt)("p",null,"Returns a subset of the token balance of the chain that contains the transaction at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),".\nThe return value is a map where the keys are the tokens' identifiers: ",(0,l.kt)("inlineCode",{parentName:"p"},"[token_address: HEX, token_id: POS_INT]")," and the value are floats."),(0,l.kt)("p",null,"Useful if you need to retrieve many tokens at the same time."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If you're only interested in a specific token, consider ",(0,l.kt)("a",{parentName:"li",href:"#get_token_balance2-io"},"get_token_balance/2"),".")),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"crypto"},"Crypto"),(0,l.kt)("h3",{id:"hash1"},"hash/1"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hash2"},"hash/2"),' with the second argument "sha256".'),(0,l.kt)("h3",{id:"hash2"},"hash/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Crypto.hash("my text", "sha256") # "7330D2B39CA35EA..."\nCrypto.hash("my text", "sha512") # "A3D7E45A0D9BE5F..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"str")," the text to hash"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"algo"),' the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512", "blake2b", "keccak256")')),(0,l.kt)("p",null,"Returns the hash of ",(0,l.kt)("inlineCode",{parentName:"p"},"str")," by using ",(0,l.kt)("inlineCode",{parentName:"p"},"algo")," algorithm."),(0,l.kt)("h3",{id:"hmac1"},"hmac/1"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hmac2"},"hmac/2"),' with the second argument "sha256".'),(0,l.kt)("h3",{id:"hmac2"},"hmac/2"),(0,l.kt)("p",null,"Equivalent to ",(0,l.kt)("a",{parentName:"p",href:"#hmac3"},"hmac/3")," with the third argument being a key created from the contract seed and secret data known by nodes.\nThe key created is deterministic and will always be the same for a contract."),(0,l.kt)("h3",{id:"hmac3"},"hmac/3"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Crypto.hmac("my text") # "374C7527733556..."\nCrypto.hmac("my text", "sha256") # "374C7527733556..."\nCrypto.hmac("my text", "sha256", "secret_key") # "901A365FF22B895..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"data")," the data to hash (if the data is hexadecimal it will be decoded in binary)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"algo"),' the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"key")," the key to perform the hmac (if the data is hexadecimal it will be decoded in binary)")),(0,l.kt)("p",null,"Returns the hmac of ",(0,l.kt)("inlineCode",{parentName:"p"},"data")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"key")," using ",(0,l.kt)("inlineCode",{parentName:"p"},"algo"),"."),(0,l.kt)("h3",{id:"sign_with_recovery1"},"sign_with_recovery/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'signature_payload = Crypto.hash("tintin", "keccak256")\nCrypto.sign_with_recovery(signature_payload) # [r: "00ABCD...", s: "00BCDE...", v: 0]\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"hash")," the hash to sign")),(0,l.kt)("p",null,"Return a signature of the given ",(0,l.kt)("inlineCode",{parentName:"p"},"hash"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"token"},"Token"),(0,l.kt)("h3",{id:"fetch_id_from_address1-io"},"fetch_id_from_address/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Token.fetch_id_from_address("000012345") # "3C21EF708BF11B4232..."\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address")," the token address")),(0,l.kt)("p",null,"Returns the token's id of the token at ",(0,l.kt)("inlineCode",{parentName:"p"},"address"),"."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"code"},"Code"),(0,l.kt)("h3",{id:"is_same2"},"is_same?/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'code = """\n@version\n\ncondition triggered_by: transaction, as: []\n\nactions triggered_by: transaction do\n Contract.add_uco_transfer to: 0x1234, amount: 15.5\nend\n"""\n\nCode.is_same?(code, transaction.code)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"first_code")," a string containing a smart contract code"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"second_code")," a string containing a smart contract code")),(0,l.kt)("p",null,"Return true if codes are the same, false otherwise.\nThis function is more accurate than comparing two strings, as it convert code into structured AST and compare only code instruction and not line numbers, carriage return ..."),(0,l.kt)("h3",{id:"is_valid1-1"},"is_valid?/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'code = """\n@version\n\ncondition triggered_by: transaction, as: []\n\nactions triggered_by: transaction do\n Contract.add_uco_transfer to: 0x1234, amount: 15.5\nend\n"""\n\nCode.is_valid?(code)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"code")," a string containing a smart contract code")),(0,l.kt)("p",null,"Returns true if the code is valid according to Archethic smart contracts language, false otherwise"),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"math"},"Math"),(0,l.kt)("h3",{id:"pow2"},"pow/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.pow(2, 3)\n# 8\nMath.pow(1.7, 8)\n# 69.75757441\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to apply the power"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"exponent")," the exponent of the power")),(0,l.kt)("p",null,"Returns the result of the power of number by exponent."),(0,l.kt)("h3",{id:"trunc1"},"trunc/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.trunc(8.32)\n# 8\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to truncate")),(0,l.kt)("p",null,"Returns the truncated number as an integer."),(0,l.kt)("h3",{id:"sqrt1"},"sqrt/1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.sqrt(16)\n# 4\nMath.sqrt(12.5)\n# 3.53553390\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"number")," the number to calculate the square root")),(0,l.kt)("p",null,"Returns the square root if the number."),(0,l.kt)("h3",{id:"rem2"},"rem/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Math.rem(2.1, 3)\n# 2.1\nMath.rem(10, 3)\n# 1\nMath.rem(-10, 3)\n# -1\nMath.rem(10.2, 1)\n# 0.2\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"dividend")," the number to divid"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"divisor")," the number which divid")),(0,l.kt)("p",null,"Returns the remainder (modulo) of a division."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"http"},"Http"),(0,l.kt)("h3",{id:"request1-io"},"request/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request2-io"},"request/2")," with ",(0,l.kt)("inlineCode",{parentName:"p"},'method: "GET"'),"."),(0,l.kt)("h3",{id:"request2-io"},"request/2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request3-io"},"request/3")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"headers: Map.new()"),"."),(0,l.kt)("h3",{id:"request3-io"},"request/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("p",null,"Similar to ",(0,l.kt)("a",{parentName:"p",href:"#request4-io"},"request/4")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"body: nil"),"."),(0,l.kt)("h3",{id:"request4-io"},"request/4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'response = Http.request("https://fakerapi.it/api/v1/addresses?_quantity=1&_seed=watermelon", "GET", Map.new(), nil) # [status: 200, body: "..."]\nif response.status == 200 do\n # do something with response.body\nend\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"url")," the url to fetch"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"method")," the HTTP method (",(0,l.kt)("inlineCode",{parentName:"li"},'"GET"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"POST"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"PUT"'),", ",(0,l.kt)("inlineCode",{parentName:"li"},'"DELETE"')," or ",(0,l.kt)("inlineCode",{parentName:"li"},'"PATCH"'),")"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"headers")," the HTTP headers"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"body")," the HTTP body")),(0,l.kt)("p",null,"Performs a HTTP request and returns a map with ",(0,l.kt)("inlineCode",{parentName:"p"},"status")," (integer) and ",(0,l.kt)("inlineCode",{parentName:"p"},"body")," (string)."),(0,l.kt)("p",null,"This status integer can be any ",(0,l.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status"},"HTTP status code"),"."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The URL must use HTTPS protocol."),(0,l.kt)("li",{parentName:"ul"},"The response body's size must be less than 256KB."),(0,l.kt)("li",{parentName:"ul"},"The response must be received in less than 2 seconds."),(0,l.kt)("li",{parentName:"ul"},"The response must be idempotent (= identical every time it is called)"),(0,l.kt)("li",{parentName:"ul"},"Only 1 call of either ",(0,l.kt)("inlineCode",{parentName:"li"},"request/1,2,3,4")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"request_many/1")," is allowed per execution.")),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"The function raises if these requirements are not meet.")),(0,l.kt)("admonition",{title:"Disclaimer",type:"danger"},(0,l.kt)("p",{parentName:"admonition"},"We discourage to call services that change their internal state directly (such as writing to a database or notifying a user). Because Archethic ",(0,l.kt)("strong",{parentName:"p"},"relies on atomic commitment of all storage nodes"),", it may happen that atomic commitment is not reached and the transaction resulting of a Smart Contract is not validated."),(0,l.kt)("p",{parentName:"admonition"},"Instead, you should notify the service of the transaction being validated. The service subscribes to that transaction via the GraphQL API, and once it receives a confirmation, it should act accordingly.")),(0,l.kt)("h3",{id:"request_many1-io"},"request_many/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'responses = Http.request_many([\n [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=male&_seed=cucumber"],\n [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=female&_seed=tomato", method: "GET", headers: Map.new(), body: nil]\n])\nfor r in responses do\n if r.status == 200 do\n # do something with r.body\n end\nend\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"request")," a list of requests to perform")),(0,l.kt)("p",null,"Performs a HTTP request and returns a map with ",(0,l.kt)("inlineCode",{parentName:"p"},"status")," (integer) and ",(0,l.kt)("inlineCode",{parentName:"p"},"body")," (string). Order and length is preserved."),(0,l.kt)("p",null,"See ",(0,l.kt)("a",{parentName:"p",href:"#request4-io"},"request/4")," for rules and more details."),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"contract"},"Contract"),(0,l.kt)("h3",{id:"call_function3-io"},"call_function/3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[I/O]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.call_function(0x0000ABCD..., "add", [1, 2])\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"contract_address")," the contract's adddress"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"function_name")," the function name"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"args")," the list of arguments to call the function with")),(0,l.kt)("p",null,"Calls the exported function ",(0,l.kt)("inlineCode",{parentName:"p"},"function_name")," of the Smart Contract at ",(0,l.kt)("inlineCode",{parentName:"p"},"contract_address")," with given ",(0,l.kt)("inlineCode",{parentName:"p"},"args")," and return the result value."),(0,l.kt)("h3",{id:"set_type1-transaction"},"set_type/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_type("transfer")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"type"),' the transaction type ("contract", "transfer", "data", "hosting")')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to be of type ",(0,l.kt)("inlineCode",{parentName:"p"},"type"),"."),(0,l.kt)("h3",{id:"set_content1-transaction"},"set_content/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_content("Hello Smart Contract")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"content")," the transaction's content (we usually use this as the state of the smart contract)")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction content to be ",(0,l.kt)("inlineCode",{parentName:"p"},"content"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"While ",(0,l.kt)("inlineCode",{parentName:"p"},"content")," is always a string when you read it, it is possible here to send an integer or a float for convenience.\nFor any other data structure, you should serialize it with the ",(0,l.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#json"},"Json module")," for example.")),(0,l.kt)("h3",{id:"set_code1-transaction"},"set_code/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.set_code("@version 1\\ncondition inherit: []")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"code")," the code")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction code to be ",(0,l.kt)("inlineCode",{parentName:"p"},"code"),"."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},'This example "closes" the contract, by adding an ',(0,l.kt)("inlineCode",{parentName:"p"},"condition inherit")," that doesn't accept anything. It will be impossible to create a new transaction in this chain.")),(0,l.kt)("h3",{id:"add_uco_transfer1-transaction"},"add_uco_transfer/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_uco_transfer(to: "000012345...", amount: 1)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"uco_transfer")," a map with two keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"to"),": the destination address"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"amount"),": the number of UCO")))),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"uco_transfer"),"."),(0,l.kt)("h3",{id:"add_uco_transfers1-transaction"},"add_uco_transfers/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_uco_transfer1-transaction"},"add_uco_transfer/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_token_transfer1-transaction"},"add_token_transfer/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_token_transfer(\n to: "000012345...",\n amount: 1.2,\n token_address: "000023456...")\nContract.add_token_transfer(\n to: "000012345...",\n amount: 1.2,\n token_id: 4,\n token_address: "000023456...")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_transfer")," a map with three or four keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"to"),": the destination address"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"amount"),": the number of UCO"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"token_address"),": the transaction address of the token"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[token_id]"),": an optional integer to specify which index in the list (used for the NFTs)")))),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"token_transfer"),"."),(0,l.kt)("h3",{id:"add_token_transfers1-transaction"},"add_token_transfers/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_token_transfer1-transaction"},"add_token_transfer/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_ownership1-transaction"},"add_ownership/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'authorized_keys = Map.new()\nauthorized_keys = Map.set(authorized_keys, public_key, encoded_secret_key)\nContract.add_ownership(\n secret: "ENCODED_SECRET1",\n authorized_keys: authorized_keys\n)\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ownership")," a map with two keys:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"secret"),": the encoded secret"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"authorized_keys"),": a map where the keys are the ",(0,l.kt)("inlineCode",{parentName:"li"},"public_keys")," and the values are the ",(0,l.kt)("inlineCode",{parentName:"li"},"encoded_secret_keys")," (the keys to decode the secret encoded by each ",(0,l.kt)("inlineCode",{parentName:"li"},"public_key"),")")))),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"It is the developer's job to encode the secret & the secret key for each authorized key.")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"ownership"),"."),(0,l.kt)("h3",{id:"add_ownerships1-transaction"},"add_ownerships/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_ownership1-transaction"},"add_ownership/1")," for each element of the list"),(0,l.kt)("h3",{id:"add_recipient1-transaction"},"add_recipient/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},'Contract.add_recipient("000012345...")\n')),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"address"),": a transaction address (one with a smart contract)")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Mutates")," the next transaction to add the ",(0,l.kt)("inlineCode",{parentName:"p"},"address")," in the recipients."),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Recipients are used to trigger smart contracts")),(0,l.kt)("h3",{id:"add_recipients1-transaction"},"add_recipients/1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[Transaction]")),(0,l.kt)("p",null,"Equivalent to call ",(0,l.kt)("a",{parentName:"p",href:"#add_recipient1-transaction"},"add_recipients/1")," for each element of the list"),(0,l.kt)("hr",null),(0,l.kt)("h2",{id:"evm"},"Evm"),(0,l.kt)("h3",{id:"abi_encode2"},"abi_encode/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Evm.abi_encode(signature, data)\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"signature"),': the function or tuple signature (ex: "baz(uint,address)")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"data"),": the data to encode")),(0,l.kt)("p",null,"Encodes the given ",(0,l.kt)("inlineCode",{parentName:"p"},"data")," according to the ",(0,l.kt)("inlineCode",{parentName:"p"},"signature"),"."),(0,l.kt)("h3",{id:"abi_decode2"},"abi_decode/2"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-elixir"},"Evm.abi_decode(signature, encoded_data)\n")),(0,l.kt)("p",null,"Parameters:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"signature"),': the function or tuple signature (ex: "baz(uint,address)")'),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"encoded_data"),": the data to decode")),(0,l.kt)("p",null,"Decodes the given ",(0,l.kt)("inlineCode",{parentName:"p"},"encoded_data")," according to the ",(0,l.kt)("inlineCode",{parentName:"p"},"signature"),"."))}k.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/b684cce9.9d64b9e8.js b/assets/js/b684cce9.7ff56709.js similarity index 99% rename from assets/js/b684cce9.9d64b9e8.js rename to assets/js/b684cce9.7ff56709.js index d6426c11e..150e8f709 100644 --- a/assets/js/b684cce9.9d64b9e8.js +++ b/assets/js/b684cce9.7ff56709.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6829],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},u),{},{components:n})):a.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>C,contentTitle:()=>S,default:()=>A,frontMatter:()=>_,metadata:()=>D,toc:()=>O});var a=n(7462),r=n(7294),i=n(3905),o=(n(8209),n(6010)),l=n(2466),s=n(6550),c=n(1980),u=n(7392),d=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function m(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,c._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=m(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[s,c]=f({queryString:n,groupId:a}),[u,p]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,d.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),b=(()=>{const e=s??u;return h({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{b&&l(b)}),[b]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),p(e)}),[c,p,i]),tabValues:i}}var k=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:i,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),p=e=>{const t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),s(a))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:l}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:p},l,{className:(0,o.Z)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":i===t})}),n??t)})))}function w(e){let{lazy:t,children:n,selectedValue:a}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=b(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},r.createElement(y,(0,a.Z)({},e,t)),r.createElement(w,(0,a.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}const T={tabItem:"tabItem_Ymn6"};function E(e){let{children:t,hidden:n,className:a}=e;return r.createElement("div",{role:"tabpanel",className:(0,o.Z)(T.tabItem,a),hidden:n},t)}const _={id:"dns",title:"AEWeb - Domain names",sidebar_label:"Domain Names",sidebar_position:2},S=void 0,D={unversionedId:"participate/aeweb/dns",id:"participate/aeweb/dns",title:"AEWeb - Domain names",description:"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website's URL nicer.",source:"@site/docs/participate/aeweb/dns.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/dns",permalink:"/participate/aeweb/dns",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:2,frontMatter:{id:"dns",title:"AEWeb - Domain names",sidebar_label:"Domain Names",sidebar_position:2},sidebar:"docs",previous:{title:"How it works",permalink:"/participate/aeweb/how-it-works"},next:{title:"Usage",permalink:"/category/usage"}},C={},O=[{value:"DNSLink",id:"dnslink",level:2},{value:"Hosting provider integration",id:"hosting-provider-integration",level:3},{value:"SSL",id:"ssl",level:2},{value:"1. Get the certificate",id:"1-get-the-certificate",level:3},{value:"Manual",id:"manual",level:4},{value:"2. Add the certificate on chain",id:"2-add-the-certificate-on-chain",level:3}],I={toc:O},x="wrapper";function A(e){let{components:t,...r}=e;return(0,i.kt)(x,(0,a.Z)({},I,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website's URL nicer."),(0,i.kt)("p",null,"This works well for classical websites, however for decentralized websites new solutions need to be found such as: DNSLink, extensions, etc."),(0,i.kt)("h2",{id:"dnslink"},"DNSLink"),(0,i.kt)("p",null,"We suggest using a hybrid approach, where ordinary DNS systems would still be used, but would point to Archethic nodes (gateways) instead."),(0,i.kt)("p",null,"To redirect your domain name to your Archethic hosted website, a simple operation needs to be done."),(0,i.kt)("p",null,"In your website domain provider administration, you must add two entries:"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"NAME"),(0,i.kt)("th",{parentName:"tr",align:null},"TYPE"),(0,i.kt)("th",{parentName:"tr",align:null},"VALUE"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"example.com"),(0,i.kt)("td",{parentName:"tr",align:null},"CNAME"),(0,i.kt)("td",{parentName:"tr",align:null},"mainnet.archethic.net")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"_","dnslink.example.com"),(0,i.kt)("td",{parentName:"tr",align:null},"TXT"),(0,i.kt)("td",{parentName:"tr",align:null},"dnslink=/archethic/0f1e3....")))),(0,i.kt)("p",null,"The subdomain ",(0,i.kt)("inlineCode",{parentName:"p"},"_dnslink")," is used to indicate the reference address and will be used by the nodes to redirect to the on-chain version of your website."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"aeweb_CDN",src:n(2088).Z+"#gh-light-mode-only",width:"329",height:"135"}),"\n",(0,i.kt)("img",{alt:"aeweb_CDN",src:n(6436).Z+"#gh-dark-mode-only",width:"329",height:"135"})),(0,i.kt)("h3",{id:"hosting-provider-integration"},"Hosting provider integration"),(0,i.kt)(N,{mdxType:"Tabs"},(0,i.kt)(E,{value:"gandi",label:"Gandi",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/gandi_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/gandi_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net')),(0,i.kt)(E,{value:"cloudfare",label:"Cloudfare",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/cloudfare_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/cloudfare_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net')),(0,i.kt)(E,{value:"ovh",label:"OVH",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/ovh_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/ovh_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net'))),(0,i.kt)("h2",{id:"ssl"},"SSL"),(0,i.kt)("p",null,"We defined above to create a link between a domain and a hosted website on Archethic."),(0,i.kt)("p",null,"However, if we let it like this the modern browsers will not able to render the website without security warning."),(0,i.kt)("p",null,"Indeed, we said the example.com should be redirect to mainnet.archethic.net, but the certificate for mainnet.archethic.net can't\nverify example.com"),(0,i.kt)("p",null,"No worry, we can request a SSL certificate and embed it into AEWeb transactions.\nThe website will then be certified and the blockchain will render the website with security enabled."),(0,i.kt)("p",null,"To support it, we have to do two things:"),(0,i.kt)("h3",{id:"1-get-the-certificate"},"1. Get the certificate"),(0,i.kt)("h4",{id:"manual"},"Manual"),(0,i.kt)("p",null,"We recommand to use certbot CLI to perform this task, but we can use any other ACME client to request certificates."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"certbot certonly --manual --domain example.com --preferred-challenges dns\n")),(0,i.kt)("p",null,"This command will request a certificate to Let's Encrypt about ",(0,i.kt)("inlineCode",{parentName:"p"},"example.com")," and will require to prove\nthe ownership of the domain with a DNS challenge."),(0,i.kt)("p",null,"The certificate can be found at: ",(0,i.kt)("inlineCode",{parentName:"p"},"/etc/letsencrypt/live/example.com/cert.pem"),"\nand the key at: ",(0,i.kt)("inlineCode",{parentName:"p"},"/etc/letsencrypt/live/example.com/privatekey.pem")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"We might notice the command gives the end of validity for the certificate.\nBefore this date, you just have to reply the command to assert you still own the domain to get the new certificate and/or key.")),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(8647).Z,width:"2000",height:"1024"})),(0,i.kt)("h3",{id:"2-add-the-certificate-on-chain"},"2. Add the certificate on chain"),(0,i.kt)("p",null,"You need to get the certificate and the private key associated."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The private key is necessary to sign/encrypt the webpages to match the certificates and be considered as valid.\nOnly the nodes will have access to this key to allow the servers to use SSL communications.")),(0,i.kt)("p",null,"If you use the AEWeb CLI, we can perform this by running the command: "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"aeweb deploy --seed XXX --path ./my_website --ssl-certificate ./cert.pem --ssl-key ./key.pem --endpoint https://mainnet.archethic.net \n")),(0,i.kt)("p",null,"You're website transaction chain will then contains a ",(0,i.kt)("inlineCode",{parentName:"p"},"Reference")," transaction with the ssl certificate in the content\nand the private key end to end encrypted for the network."))}A.isMDXComponent=!0},8647:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/acme_dns-3c3182fe25541047fc08bf5307993f70.png"},6436:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_dns-dark-f3e9f702ea266d0aec084ba4960e8c62.svg"},2088:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_dns-06778c4756739f0a9144cff45a4dd64e.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6829],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},u),{},{components:n})):a.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>C,contentTitle:()=>S,default:()=>A,frontMatter:()=>_,metadata:()=>D,toc:()=>O});var a=n(7462),r=n(7294),i=n(3905),o=(n(8209),n(6010)),l=n(2466),s=n(6550),c=n(1980),u=n(7392),d=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function m(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,c._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=m(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[s,c]=f({queryString:n,groupId:a}),[u,p]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,d.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),b=(()=>{const e=s??u;return h({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{b&&l(b)}),[b]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),p(e)}),[c,p,i]),tabValues:i}}var k=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:i,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),p=e=>{const t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),s(a))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:l}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:p},l,{className:(0,o.Z)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":i===t})}),n??t)})))}function w(e){let{lazy:t,children:n,selectedValue:a}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=b(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},r.createElement(y,(0,a.Z)({},e,t)),r.createElement(w,(0,a.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}const T={tabItem:"tabItem_Ymn6"};function E(e){let{children:t,hidden:n,className:a}=e;return r.createElement("div",{role:"tabpanel",className:(0,o.Z)(T.tabItem,a),hidden:n},t)}const _={id:"dns",title:"AEWeb - Domain names",sidebar_label:"Domain Names",sidebar_position:2},S=void 0,D={unversionedId:"participate/aeweb/dns",id:"participate/aeweb/dns",title:"AEWeb - Domain names",description:"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website's URL nicer.",source:"@site/docs/participate/aeweb/dns.md",sourceDirName:"participate/aeweb",slug:"/participate/aeweb/dns",permalink:"/participate/aeweb/dns",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:2,frontMatter:{id:"dns",title:"AEWeb - Domain names",sidebar_label:"Domain Names",sidebar_position:2},sidebar:"docs",previous:{title:"How it works",permalink:"/participate/aeweb/how-it-works"},next:{title:"Usage",permalink:"/category/usage"}},C={},O=[{value:"DNSLink",id:"dnslink",level:2},{value:"Hosting provider integration",id:"hosting-provider-integration",level:3},{value:"SSL",id:"ssl",level:2},{value:"1. Get the certificate",id:"1-get-the-certificate",level:3},{value:"Manual",id:"manual",level:4},{value:"2. Add the certificate on chain",id:"2-add-the-certificate-on-chain",level:3}],I={toc:O},x="wrapper";function A(e){let{components:t,...r}=e;return(0,i.kt)(x,(0,a.Z)({},I,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"DNS (Domain Name System) is a mechanism which resolves websites names to server IP addresses, making website's URL nicer."),(0,i.kt)("p",null,"This works well for classical websites, however for decentralized websites new solutions need to be found such as: DNSLink, extensions, etc."),(0,i.kt)("h2",{id:"dnslink"},"DNSLink"),(0,i.kt)("p",null,"We suggest using a hybrid approach, where ordinary DNS systems would still be used, but would point to Archethic nodes (gateways) instead."),(0,i.kt)("p",null,"To redirect your domain name to your Archethic hosted website, a simple operation needs to be done."),(0,i.kt)("p",null,"In your website domain provider administration, you must add two entries:"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"NAME"),(0,i.kt)("th",{parentName:"tr",align:null},"TYPE"),(0,i.kt)("th",{parentName:"tr",align:null},"VALUE"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"example.com"),(0,i.kt)("td",{parentName:"tr",align:null},"CNAME"),(0,i.kt)("td",{parentName:"tr",align:null},"mainnet.archethic.net")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"_","dnslink.example.com"),(0,i.kt)("td",{parentName:"tr",align:null},"TXT"),(0,i.kt)("td",{parentName:"tr",align:null},"dnslink=/archethic/0f1e3....")))),(0,i.kt)("p",null,"The subdomain ",(0,i.kt)("inlineCode",{parentName:"p"},"_dnslink")," is used to indicate the reference address and will be used by the nodes to redirect to the on-chain version of your website."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"aeweb_CDN",src:n(2088).Z+"#gh-light-mode-only",width:"329",height:"135"}),"\n",(0,i.kt)("img",{alt:"aeweb_CDN",src:n(6436).Z+"#gh-dark-mode-only",width:"329",height:"135"})),(0,i.kt)("h3",{id:"hosting-provider-integration"},"Hosting provider integration"),(0,i.kt)(N,{mdxType:"Tabs"},(0,i.kt)(E,{value:"gandi",label:"Gandi",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/gandi_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/gandi_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net')),(0,i.kt)(E,{value:"cloudfare",label:"Cloudfare",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/cloudfare_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/cloudfare_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net')),(0,i.kt)(E,{value:"ovh",label:"OVH",default:!0,mdxType:"TabItem"},(0,i.kt)("p",null,'Click on the "Add record" from the DNS record page'),(0,i.kt)("img",{src:"/img/ovh_list_dns_record.png"}),(0,i.kt)("p",null,'Fill the form with "TXT" record type and with _dnslink entry to point the website to the hosting transaction chain'),(0,i.kt)("img",{src:"/img/ovh_add_dns_record.png"}),(0,i.kt)("p",null,'Then you need to do the same for the "CNAME" record to point it to mainnet.archethic.net'))),(0,i.kt)("h2",{id:"ssl"},"SSL"),(0,i.kt)("p",null,"We defined above to create a link between a domain and a hosted website on Archethic."),(0,i.kt)("p",null,"However, if we let it like this the modern browsers will not able to render the website without security warning."),(0,i.kt)("p",null,"Indeed, we said the example.com should be redirect to mainnet.archethic.net, but the certificate for mainnet.archethic.net can't\nverify example.com"),(0,i.kt)("p",null,"No worry, we can request a SSL certificate and embed it into AEWeb transactions.\nThe website will then be certified and the blockchain will render the website with security enabled."),(0,i.kt)("p",null,"To support it, we have to do two things:"),(0,i.kt)("h3",{id:"1-get-the-certificate"},"1. Get the certificate"),(0,i.kt)("h4",{id:"manual"},"Manual"),(0,i.kt)("p",null,"We recommand to use certbot CLI to perform this task, but we can use any other ACME client to request certificates."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"certbot certonly --manual --domain example.com --preferred-challenges dns\n")),(0,i.kt)("p",null,"This command will request a certificate to Let's Encrypt about ",(0,i.kt)("inlineCode",{parentName:"p"},"example.com")," and will require to prove\nthe ownership of the domain with a DNS challenge."),(0,i.kt)("p",null,"The certificate can be found at: ",(0,i.kt)("inlineCode",{parentName:"p"},"/etc/letsencrypt/live/example.com/cert.pem"),"\nand the key at: ",(0,i.kt)("inlineCode",{parentName:"p"},"/etc/letsencrypt/live/example.com/privatekey.pem")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"We might notice the command gives the end of validity for the certificate.\nBefore this date, you just have to reply the command to assert you still own the domain to get the new certificate and/or key.")),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(8647).Z,width:"2000",height:"1024"})),(0,i.kt)("h3",{id:"2-add-the-certificate-on-chain"},"2. Add the certificate on chain"),(0,i.kt)("p",null,"You need to get the certificate and the private key associated."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The private key is necessary to sign/encrypt the webpages to match the certificates and be considered as valid.\nOnly the nodes will have access to this key to allow the servers to use SSL communications.")),(0,i.kt)("p",null,"If you use the AEWeb CLI, we can perform this by running the command: "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"aeweb deploy --seed XXX --path ./my_website --ssl-certificate ./cert.pem --ssl-key ./key.pem --endpoint https://mainnet.archethic.net \n")),(0,i.kt)("p",null,"You're website transaction chain will then contains a ",(0,i.kt)("inlineCode",{parentName:"p"},"Reference")," transaction with the ssl certificate in the content\nand the private key end to end encrypted for the network."))}A.isMDXComponent=!0},8647:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/acme_dns-3c3182fe25541047fc08bf5307993f70.png"},6436:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_dns-dark-f3e9f702ea266d0aec084ba4960e8c62.svg"},2088:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/aeweb_dns-06778c4756739f0a9144cff45a4dd64e.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/bb9d9339.22e54186.js b/assets/js/bb9d9339.c09c1ea3.js similarity index 97% rename from assets/js/bb9d9339.22e54186.js rename to assets/js/bb9d9339.c09c1ea3.js index 692a84b63..863cc3f86 100644 --- a/assets/js/bb9d9339.22e54186.js +++ b/assets/js/bb9d9339.c09c1ea3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4398],{3905:(t,e,r)=>{r.d(e,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var i=n.createContext({}),s=function(t){var e=n.useContext(i),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},p="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},y=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,i=t.parentName,u=c(t,["components","mdxType","originalType","parentName"]),p=s(r),y=a,m=p["".concat(i,".").concat(y)]||p[y]||d[y]||o;return r?n.createElement(m,l(l({ref:e},u),{},{components:r})):n.createElement(m,l({ref:e},u))}));function m(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,l=new Array(o);l[0]=y;var c={};for(var i in e)hasOwnProperty.call(e,i)&&(c[i]=e[i]);c.originalType=t,c[p]="string"==typeof t?t:a,l[1]=c;for(var s=2;s{r.r(e),r.d(e,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"sc-playground",title:"Smart Contracts Playground",sidebar_label:"Playground",sidebar_position:3},l=void 0,c={unversionedId:"build/smart-contracts/playground/sc-playground",id:"build/smart-contracts/playground/sc-playground",title:"Smart Contracts Playground",description:"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.",source:"@site/docs/build/smart-contracts/playground/README.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/",permalink:"/build/smart-contracts/playground/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"sc-playground",title:"Smart Contracts Playground",sidebar_label:"Playground",sidebar_position:3},sidebar:"docs",previous:{title:"Language",permalink:"/build/smart-contracts/language/legacy/language"},next:{title:"Build",permalink:"/build/smart-contracts/playground/build"}},i={},s=[],u={toc:s},p="wrapper";function d(t){let{components:e,...o}=t;return(0,a.kt)(p,(0,n.Z)({},u,o,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.\nIt is available here: ",(0,a.kt)("a",{parentName:"p",href:"https://playground.archethic.net/"},"https://playground.archethic.net/"),". "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Follow the ",(0,a.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/build"},"Build")," menu to build a smart contracts with the playground."),(0,a.kt)("li",{parentName:"ul"},"Follow the ",(0,a.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/deploy"},"Deploy")," menu to deploy a smart contracts.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"The Smart Contracts playground",src:r(3161).Z,width:"3600",height:"2390"})))}d.isMDXComponent=!0},3161:(t,e,r)=>{r.d(e,{Z:()=>n});const n=r.p+"assets/images/playground_hello_contract-41f5d178b0db8bcc3a7406bffc3f5035.png"},8209:(t,e,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4398],{3905:(t,e,r)=>{r.d(e,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var i=n.createContext({}),s=function(t){var e=n.useContext(i),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},u=function(t){var e=s(t.components);return n.createElement(i.Provider,{value:e},t.children)},p="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},y=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,i=t.parentName,u=c(t,["components","mdxType","originalType","parentName"]),p=s(r),y=a,m=p["".concat(i,".").concat(y)]||p[y]||d[y]||o;return r?n.createElement(m,l(l({ref:e},u),{},{components:r})):n.createElement(m,l({ref:e},u))}));function m(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,l=new Array(o);l[0]=y;var c={};for(var i in e)hasOwnProperty.call(e,i)&&(c[i]=e[i]);c.originalType=t,c[p]="string"==typeof t?t:a,l[1]=c;for(var s=2;s{r.r(e),r.d(e,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"sc-playground",title:"Smart Contracts Playground",sidebar_label:"Playground",sidebar_position:3},l=void 0,c={unversionedId:"build/smart-contracts/playground/sc-playground",id:"build/smart-contracts/playground/sc-playground",title:"Smart Contracts Playground",description:"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.",source:"@site/docs/build/smart-contracts/playground/README.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/",permalink:"/build/smart-contracts/playground/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"sc-playground",title:"Smart Contracts Playground",sidebar_label:"Playground",sidebar_position:3},sidebar:"docs",previous:{title:"Language",permalink:"/build/smart-contracts/language/legacy/language"},next:{title:"Build",permalink:"/build/smart-contracts/playground/build"}},i={},s=[],u={toc:s},p="wrapper";function d(t){let{components:e,...o}=t;return(0,a.kt)(p,(0,n.Z)({},u,o,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The Smart Contracts playground is an online service use to write, test and deploy smart contracts.\nIt is available here: ",(0,a.kt)("a",{parentName:"p",href:"https://playground.archethic.net/"},"https://playground.archethic.net/"),". "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Follow the ",(0,a.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/build"},"Build")," menu to build a smart contracts with the playground."),(0,a.kt)("li",{parentName:"ul"},"Follow the ",(0,a.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/deploy"},"Deploy")," menu to deploy a smart contracts.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"The Smart Contracts playground",src:r(3161).Z,width:"3600",height:"2390"})))}d.isMDXComponent=!0},3161:(t,e,r)=>{r.d(e,{Z:()=>n});const n=r.p+"assets/images/playground_hello_contract-41f5d178b0db8bcc3a7406bffc3f5035.png"},8209:(t,e,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/bbc3785e.3298e81c.js b/assets/js/bbc3785e.f98bb5a6.js similarity index 98% rename from assets/js/bbc3785e.3298e81c.js rename to assets/js/bbc3785e.f98bb5a6.js index 201202399..c3cf04322 100644 --- a/assets/js/bbc3785e.3298e81c.js +++ b/assets/js/bbc3785e.f98bb5a6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1690],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(n),m=a,f=s["".concat(d,".").concat(m)]||s[m]||u[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[s]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>s,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>d,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"endpoint",title:"Endpoint",hide_table_of_contents:!1},l=void 0,d={unversionedId:"build/api/schema/objects/endpoint",id:"build/api/schema/objects/endpoint",title:"Endpoint",description:"[Endpoint] represents a network node's endpoint",source:"@site/docs/build/api/schema/objects/endpoint.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/endpoint",permalink:"/build/api/schema/objects/endpoint",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"endpoint",title:"Endpoint",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Data",permalink:"/build/api/schema/objects/data"},next:{title:"LedgerOperations",permalink:"/build/api/schema/objects/ledger-operations"}},c={},p=[{value:"Fields",id:"fields",level:3},{value:'Endpoint.ipString ',id:"code-style-fontweight-normal-endpointbipbcodestring-",level:4},{value:'Endpoint.portInt ',id:"code-style-fontweight-normal-endpointbportbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],s=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:s,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[Endpoint]"," represents a network node's endpoint"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Endpoint {\n ip: String\n port: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-endpointbipbcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Endpoint.",(0,o.kt)("b",null,"ip"))),(0,o.kt)(s,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-endpointbportbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Endpoint.",(0,o.kt)("b",null,"port"))),(0,o.kt)(s,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/nearest-endpoints"},(0,o.kt)("inlineCode",{parentName:"a"},"nearestEndpoints"))," ",(0,o.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1690],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(n),m=a,f=s["".concat(d,".").concat(m)]||s[m]||u[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[s]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>s,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>l,default:()=>y,frontMatter:()=>i,metadata:()=>d,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const i={id:"endpoint",title:"Endpoint",hide_table_of_contents:!1},l=void 0,d={unversionedId:"build/api/schema/objects/endpoint",id:"build/api/schema/objects/endpoint",title:"Endpoint",description:"[Endpoint] represents a network node's endpoint",source:"@site/docs/build/api/schema/objects/endpoint.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/endpoint",permalink:"/build/api/schema/objects/endpoint",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"endpoint",title:"Endpoint",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Data",permalink:"/build/api/schema/objects/data"},next:{title:"LedgerOperations",permalink:"/build/api/schema/objects/ledger-operations"}},c={},p=[{value:"Fields",id:"fields",level:3},{value:'Endpoint.ipString ',id:"code-style-fontweight-normal-endpointbipbcodestring-",level:4},{value:'Endpoint.portInt ',id:"code-style-fontweight-normal-endpointbportbcodeint-",level:4},{value:"Returned by",id:"returned-by",level:3}],s=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:s,SpecifiedBy:u,Badge:m},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[Endpoint]"," represents a network node's endpoint"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type Endpoint {\n ip: String\n port: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-endpointbipbcodestring-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Endpoint.",(0,o.kt)("b",null,"ip"))),(0,o.kt)(s,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,o.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-endpointbportbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"Endpoint.",(0,o.kt)("b",null,"port"))),(0,o.kt)(s,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"returned-by"},"Returned by"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/nearest-endpoints"},(0,o.kt)("inlineCode",{parentName:"a"},"nearestEndpoints"))," ",(0,o.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/bd1424fb.818e58cf.js b/assets/js/bd1424fb.50035d95.js similarity index 99% rename from assets/js/bd1424fb.818e58cf.js rename to assets/js/bd1424fb.50035d95.js index a11c3c5a5..0dcab9aaa 100644 --- a/assets/js/bd1424fb.818e58cf.js +++ b/assets/js/bd1424fb.50035d95.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9036],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=c(n),u=i,k=s["".concat(p,".").concat(u)]||s[u]||h[u]||l;return n?a.createElement(k,r(r({ref:t},d),{},{components:n})):a.createElement(k,r({ref:t},d))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,r=new Array(l);r[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[s]="string"==typeof e?e:i,r[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const l={id:"wallet-spec",title:"Archethic's wallet specification"},r=void 0,o={unversionedId:"build/clients/wallet-spec",id:"build/clients/wallet-spec",title:"Archethic's wallet specification",description:"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form.",source:"@site/docs/build/clients/wallet-specification.md",sourceDirName:"build/clients",slug:"/build/clients/wallet-spec",permalink:"/build/clients/wallet-spec",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"wallet-spec",title:"Archethic's wallet specification"},sidebar:"docs",previous:{title:"Archethic's wallet access",permalink:"/build/clients/wallet-access"},next:{title:"API",permalink:"/category/api"}},p={},c=[{value:"Glossary",id:"glossary",level:2},{value:"Cryptography",id:"cryptography",level:2},{value:"Derivation path",id:"derivation-path",level:3},{value:"Key derivation",id:"key-derivation",level:3},{value:"Replace the derivation path index",id:"replace-the-derivation-path-index",level:4},{value:"Hash of the derivation path",id:"hash-of-the-derivation-path",level:4},{value:"Derive private key",id:"derive-private-key",level:4},{value:"Derive public key",id:"derive-public-key",level:4},{value:"Encryption",id:"encryption",level:3},{value:"Encrypting the Onchain Wallet",id:"encrypting-the-onchain-wallet",level:4},{value:"Encoding of Encrypted Wallet",id:"encoding-of-encrypted-wallet",level:4},{value:"Encrypting Wallet Encryption Key",id:"encrypting-wallet-encryption-key",level:4},{value:"Encoding of Encrypted Wallet Key",id:"encoding-of-encrypted-wallet-key",level:4},{value:"Encoding",id:"encoding",level:2},{value:"Encoding of wallet",id:"encoding-of-wallet",level:3},{value:"Encoding of Curve Types",id:"encoding-of-curve-types",level:3},{value:"Encoding of Hash Types",id:"encoding-of-hash-types",level:3},{value:"Transaction representation",id:"transaction-representation",level:2},{value:"Format",id:"format",level:2},{value:"Public Key Format",id:"public-key-format",level:3},{value:"Account Address Format",id:"account-address-format",level:3}],d={toc:c},s="wrapper";function h(e){let{components:t,...n}=e;return(0,i.kt)(s,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Onchain wallet (aka ",(0,i.kt)("strong",{parentName:"p"},"Keychain"),") is a wallet stored on Archethic blockchain in encrypted form. "),(0,i.kt)("p",null,"This keychain aims to support several way to identify a user and its transaction chains.\nIt can also support multichains identification through the use of key derivation and derivation path."),(0,i.kt)("p",null,"A keychain is then a wallet which stores a main master seed, with a list of services (Archethic chains / other crypto identification) encrypted and only accessible by a list of authorized public keys"),(0,i.kt)("h2",{id:"glossary"},"Glossary"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"w_{e}")," = Encoded Onchain Archethic Wallet"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," = AES256 CTR Key used to encrypt w_{e}"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"enc(w_{e})")," = AES256 CTR Encryption of ",(0,i.kt)("inlineCode",{parentName:"li"},"w_{e}")," using ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ew_{aes}")," = Encoded ",(0,i.kt)("inlineCode",{parentName:"li"},"enc(w_{e})")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")," = AES256 CBC Key used to encrypt ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"enc(wk_{aes})")," = AES256 CBC Encryption of ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," using ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ewk_{aes}")," = Encoded ",(0,i.kt)("inlineCode",{parentName:"li"},"enc(wk_{aes})")," "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encode(pub_key)")," = Encoded Public Key. "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"arch_address")," = Encoded Account Address. "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"o_{priv}")," = Origin Device Private Key "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"o_{pub}")," = Origin Device Public Key (raw 04xy) "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encode(o_{pub})")," = Encoded Origin Device Public Key "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{key}")," = Ephemeral Key Pair "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{pub}")," = Ephemeral Public Key (raw 04xy) "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{priv}")," = Ephemeral Private Key ")),(0,i.kt)("h2",{id:"cryptography"},"Cryptography"),(0,i.kt)("h3",{id:"derivation-path"},"Derivation path"),(0,i.kt)("p",null,"Archethic's keychain is using hierarchical derivation key scheme inspired by BIP32 to define a way\nto generate keys and addresses."),(0,i.kt)("p",null,"Because Archethic cryptography and transaction chain paradigm differs from traditional blockchain (used in BIP32/BIP44)\nwe adapted it to use specific derivation scheme (as describe in the BIP43)"),(0,i.kt)("p",null,"The main derivation path of Archethic keychain is: ",(0,i.kt)("strong",{parentName:"p"},"m/650'/account/index")," (where 650 is the Archethic transaction chain purpose - in the BIP43 terminology)"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"account")," can be anything, by default ",(0,i.kt)("inlineCode",{parentName:"p"},"0")," is the main uco transaction chain, but it could be customized to create more entropy."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"index")," is the number of transaction in the chain, used to compute the derived keys and addresses"),(0,i.kt)("h3",{id:"key-derivation"},"Key derivation"),(0,i.kt)("p",null,"In order to derive the keys using the derivation path mentioned above, we implemented our own key derivation scheme, which takes inspiration from BIP32 but simplifies it a bit."),(0,i.kt)("h4",{id:"replace-the-derivation-path-index"},"Replace the derivation path index"),(0,i.kt)("p",null,"Given the derivation path: ",(0,i.kt)("inlineCode",{parentName:"p"},"m/650'/0/0"),", we change the last number (the transaction's index in the chain) we some variable provided by the application(ie: ",(0,i.kt)("inlineCode",{parentName:"p"},"m/650'/0/1")," will give the 1st transaction's address on the chain)"),(0,i.kt)("h4",{id:"hash-of-the-derivation-path"},"Hash of the derivation path"),(0,i.kt)("p",null,"Once the derivation path index is replaced we hashed it to give a constant size through ",(0,i.kt)("inlineCode",{parentName:"p"},"SHA256")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"hashedPath = SHA256(ReplaceDerivationPath(derivationPath, index))\n")),(0,i.kt)("h4",{id:"derive-private-key"},"Derive private key"),(0,i.kt)("p",null,"Then we have to derive the private key based on the hashedPath and the master seed by using HMAC and extracting the first 32 bytes of the result"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"extendedSeed = HMAC-SHA512(Key=MasterSeed, Data=hashedPath)\nextendedPrivateKey = extendedSeed.slice(0, 32)\n")),(0,i.kt)("h4",{id:"derive-public-key"},"Derive public key"),(0,i.kt)("p",null,"Now with the given private key we can easily extract the public key for the given curve specified in the Keychain's service"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"{ publicKey, private } = generateKeyPair(extendedPrivateKey, curve)\n")),(0,i.kt)("h3",{id:"encryption"},"Encryption"),(0,i.kt)("p",null,"The keychain is using a double encryption scheme where:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"the wallet is encrypted with AES "),(0,i.kt)("li",{parentName:"ul"},"the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")," is encrypted with elliptic curve cryptography using ECIES (Elliptic Curve Integration Encryption Scheme): ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," for the authorized public keys")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Ephemeral key is used to perform ECDH with authorized public key, in order to derive ",(0,i.kt)("inlineCode",{parentName:"p"},"aes_key"),". This ",(0,i.kt)("inlineCode",{parentName:"p"},"aes_key")," is then used to encrypt the ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),". This is called ",(0,i.kt)("inlineCode",{parentName:"p"},"ECIESE"),"(Elliptic Curve Integration Encryption Scheme Ephemeral)")),(0,i.kt)("p",null,"Then to guarantee the security of the wallet, only the authorized public keys are able to decrypt the encrypted aes key(",(0,i.kt)("inlineCode",{parentName:"p"},"enc(aes_key)"),") to be able to decrypt the encrypted wallet (",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),")"),(0,i.kt)("h4",{id:"encrypting-the-onchain-wallet"},"Encrypting the Onchain Wallet"),(0,i.kt)("p",null,"The onchain encoded wallet ",(0,i.kt)("inlineCode",{parentName:"p"},"w_{e}")," is encrypted using symmetric encryption AES256 CTR key ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}")," as follows: "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"wallet_iv [16 bytes], reserved [16 bytes] = sha256(sha256(wk_{aes})) \nenc(w_{e}) = aes256(mode=ctr, key = wk_{aes}, iv = wallet_iv, data = w_{e}) \n")),(0,i.kt)("h4",{id:"encoding-of-encrypted-wallet"},"Encoding of Encrypted Wallet"),(0,i.kt)("p",null,"The above encrypted wallet ",(0,i.kt)("inlineCode",{parentName:"p"},"enc(w_{e})")," is stored on the Archethic Blockchain with the following format. "),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"enc(w_{e}) ","[bytes]")))),(0,i.kt)("h4",{id:"encrypting-wallet-encryption-key"},"Encrypting Wallet Encryption Key"),(0,i.kt)("p",null,"The key (",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),") which encrypts the wallet (",(0,i.kt)("inlineCode",{parentName:"p"},"w_{e}"),") is subsequently encrypted using Elliptic Curve Integrated Encryption Scheme to support different authorized public keys and to reduce the increased space overhead of the encryptions. "),(0,i.kt)("p",null,"Algorithm$ for encrypting ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),"= ECIES (ECDH + AES256 CBC) "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"ecdh_secret = ecdh_point_x(e_{pub}, o_{priv}) = ecdh_point_x(e_{priv}, o_{pub}) \n \naes_key [32 bytes], iv [16 bytes], auth_seed [16 bytes] = sha512(sha512(ecdh\\_secret)) \n \nenc(wk_{aes}) = aes256(mode=cbc, key = aes\\_key, iv = iv, data = wk_{aes}) \n \nauth_key = sha256(auth_seed) \n \nauth_tag [16 bytes], reserved [16 bytes] = hmac256(key = auth_key, data = enc(wk_{aes}))\n")),(0,i.kt)("h4",{id:"encoding-of-encrypted-wallet-key"},"Encoding of Encrypted Wallet Key"),(0,i.kt)("p",null,"The above encrypted key ",(0,i.kt)("inlineCode",{parentName:"p"},"enc(wk_{aes})")," is stored on the Archethic Blockchain with the following format. "),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"e_{pub} 04xy ","[bytes]"),(0,i.kt)("th",{parentName:"tr",align:null},"auth_tag ","[16 bytes]"),(0,i.kt)("th",{parentName:"tr",align:null},"enc(wk_{aes}) ","[32 bytes]")))),(0,i.kt)("h2",{id:"encoding"},"Encoding"),(0,i.kt)("p",null,"The wallet before encryption is encoding into a binary format"),(0,i.kt)("h3",{id:"encoding-of-wallet"},"Encoding of wallet"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Version"),(0,i.kt)("th",{parentName:"tr",align:null},"Seed size"),(0,i.kt)("th",{parentName:"tr",align:null},"Seed"),(0,i.kt)("th",{parentName:"tr",align:null},"Nb services"),(0,i.kt)("th",{parentName:"tr",align:null},"Service name size"),(0,i.kt)("th",{parentName:"tr",align:null},"Service name"),(0,i.kt)("th",{parentName:"tr",align:null},"Derivation path length"),(0,i.kt)("th",{parentName:"tr",align:null},"Derivation path"),(0,i.kt)("th",{parentName:"tr",align:null},"Curve type"),(0,i.kt)("th",{parentName:"tr",align:null},"Hash type"),(0,i.kt)("th",{parentName:"tr",align:null},"..."))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"4 bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"...")))),(0,i.kt)("h3",{id:"encoding-of-curve-types"},"Encoding of Curve Types"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"curve_type")," is a 1 byte long field, hex encoded. Currently, following curves are supported: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: ED25519 "),(0,i.kt)("li",{parentName:"ul"},"1: NISTP256 "),(0,i.kt)("li",{parentName:"ul"},"2: SECP256K1 ")),(0,i.kt)("h3",{id:"encoding-of-hash-types"},"Encoding of Hash Types"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"hash_type")," is a 1 byte long field, hex encoded. Currently, following hashes are supported: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: SHA256 (sha2) "),(0,i.kt)("li",{parentName:"ul"},"1: SHA512 (sha2) "),(0,i.kt)("li",{parentName:"ul"},"2: SHA3_256 (keccak) "),(0,i.kt)("li",{parentName:"ul"},"3: SHA3_512 (keccak) "),(0,i.kt)("li",{parentName:"ul"},"4: BLAKE2B ")),(0,i.kt)("h2",{id:"transaction-representation"},"Transaction representation"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Transaction \n- Data: \n - Ownerships: \n Secret: Encrypted Wallet, \n Authorized Keys: \n Public Key: Origin Device / Password Public Key, \n Encrypted Secret Key: Encrypted AES Key for the authorized public key \n")),(0,i.kt)("h2",{id:"format"},"Format"),(0,i.kt)("h3",{id:"public-key-format"},"Public Key Format"),(0,i.kt)("p",null,"When clients have to produce public key, an origin type identification byte have to prepend before the key material as well as the curve type."),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Curve ID"),(0,i.kt)("th",{parentName:"tr",align:null},"Origin ID"),(0,i.kt)("th",{parentName:"tr",align:null},"Key material"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes")))),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"origin_type")," is a 1 byte long field, hex encoded. Currently, following origins are defined: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: Onchain Wallet"),(0,i.kt)("li",{parentName:"ul"},"1: Software Wallet (Node, Mobile App, Desktop, etc.)"),(0,i.kt)("li",{parentName:"ul"},"2: TPM (Node) "),(0,i.kt)("li",{parentName:"ul"},"3: Yubikey (Node, Hardware Wallet)"),(0,i.kt)("li",{parentName:"ul"},"4: Ledger (Hardware Wallet) ")),(0,i.kt)("h3",{id:"account-address-format"},"Account Address Format"),(0,i.kt)("p",null,"Archethic addresses following a specific format to version algorithms used helping\nto evolve easily between curves and hash algorithms."),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Curve Type"),(0,i.kt)("th",{parentName:"tr",align:null},"Hash algo"),(0,i.kt)("th",{parentName:"tr",align:null},"hash(encode(pub_key))"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes")))))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9036],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},s="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=c(n),u=i,k=s["".concat(p,".").concat(u)]||s[u]||h[u]||l;return n?a.createElement(k,r(r({ref:t},d),{},{components:n})):a.createElement(k,r({ref:t},d))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,r=new Array(l);r[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[s]="string"==typeof e?e:i,r[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const l={id:"wallet-spec",title:"Archethic's wallet specification"},r=void 0,o={unversionedId:"build/clients/wallet-spec",id:"build/clients/wallet-spec",title:"Archethic's wallet specification",description:"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form.",source:"@site/docs/build/clients/wallet-specification.md",sourceDirName:"build/clients",slug:"/build/clients/wallet-spec",permalink:"/build/clients/wallet-spec",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"wallet-spec",title:"Archethic's wallet specification"},sidebar:"docs",previous:{title:"Archethic's wallet access",permalink:"/build/clients/wallet-access"},next:{title:"API",permalink:"/category/api"}},p={},c=[{value:"Glossary",id:"glossary",level:2},{value:"Cryptography",id:"cryptography",level:2},{value:"Derivation path",id:"derivation-path",level:3},{value:"Key derivation",id:"key-derivation",level:3},{value:"Replace the derivation path index",id:"replace-the-derivation-path-index",level:4},{value:"Hash of the derivation path",id:"hash-of-the-derivation-path",level:4},{value:"Derive private key",id:"derive-private-key",level:4},{value:"Derive public key",id:"derive-public-key",level:4},{value:"Encryption",id:"encryption",level:3},{value:"Encrypting the Onchain Wallet",id:"encrypting-the-onchain-wallet",level:4},{value:"Encoding of Encrypted Wallet",id:"encoding-of-encrypted-wallet",level:4},{value:"Encrypting Wallet Encryption Key",id:"encrypting-wallet-encryption-key",level:4},{value:"Encoding of Encrypted Wallet Key",id:"encoding-of-encrypted-wallet-key",level:4},{value:"Encoding",id:"encoding",level:2},{value:"Encoding of wallet",id:"encoding-of-wallet",level:3},{value:"Encoding of Curve Types",id:"encoding-of-curve-types",level:3},{value:"Encoding of Hash Types",id:"encoding-of-hash-types",level:3},{value:"Transaction representation",id:"transaction-representation",level:2},{value:"Format",id:"format",level:2},{value:"Public Key Format",id:"public-key-format",level:3},{value:"Account Address Format",id:"account-address-format",level:3}],d={toc:c},s="wrapper";function h(e){let{components:t,...n}=e;return(0,i.kt)(s,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Onchain wallet (aka ",(0,i.kt)("strong",{parentName:"p"},"Keychain"),") is a wallet stored on Archethic blockchain in encrypted form. "),(0,i.kt)("p",null,"This keychain aims to support several way to identify a user and its transaction chains.\nIt can also support multichains identification through the use of key derivation and derivation path."),(0,i.kt)("p",null,"A keychain is then a wallet which stores a main master seed, with a list of services (Archethic chains / other crypto identification) encrypted and only accessible by a list of authorized public keys"),(0,i.kt)("h2",{id:"glossary"},"Glossary"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"w_{e}")," = Encoded Onchain Archethic Wallet"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," = AES256 CTR Key used to encrypt w_{e}"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"enc(w_{e})")," = AES256 CTR Encryption of ",(0,i.kt)("inlineCode",{parentName:"li"},"w_{e}")," using ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ew_{aes}")," = Encoded ",(0,i.kt)("inlineCode",{parentName:"li"},"enc(w_{e})")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")," = AES256 CBC Key used to encrypt ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"enc(wk_{aes})")," = AES256 CBC Encryption of ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," using ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ewk_{aes}")," = Encoded ",(0,i.kt)("inlineCode",{parentName:"li"},"enc(wk_{aes})")," "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encode(pub_key)")," = Encoded Public Key. "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"arch_address")," = Encoded Account Address. "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"o_{priv}")," = Origin Device Private Key "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"o_{pub}")," = Origin Device Public Key (raw 04xy) "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"encode(o_{pub})")," = Encoded Origin Device Public Key "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{key}")," = Ephemeral Key Pair "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{pub}")," = Ephemeral Public Key (raw 04xy) "),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"e_{priv}")," = Ephemeral Private Key ")),(0,i.kt)("h2",{id:"cryptography"},"Cryptography"),(0,i.kt)("h3",{id:"derivation-path"},"Derivation path"),(0,i.kt)("p",null,"Archethic's keychain is using hierarchical derivation key scheme inspired by BIP32 to define a way\nto generate keys and addresses."),(0,i.kt)("p",null,"Because Archethic cryptography and transaction chain paradigm differs from traditional blockchain (used in BIP32/BIP44)\nwe adapted it to use specific derivation scheme (as describe in the BIP43)"),(0,i.kt)("p",null,"The main derivation path of Archethic keychain is: ",(0,i.kt)("strong",{parentName:"p"},"m/650'/account/index")," (where 650 is the Archethic transaction chain purpose - in the BIP43 terminology)"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"account")," can be anything, by default ",(0,i.kt)("inlineCode",{parentName:"p"},"0")," is the main uco transaction chain, but it could be customized to create more entropy."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"index")," is the number of transaction in the chain, used to compute the derived keys and addresses"),(0,i.kt)("h3",{id:"key-derivation"},"Key derivation"),(0,i.kt)("p",null,"In order to derive the keys using the derivation path mentioned above, we implemented our own key derivation scheme, which takes inspiration from BIP32 but simplifies it a bit."),(0,i.kt)("h4",{id:"replace-the-derivation-path-index"},"Replace the derivation path index"),(0,i.kt)("p",null,"Given the derivation path: ",(0,i.kt)("inlineCode",{parentName:"p"},"m/650'/0/0"),", we change the last number (the transaction's index in the chain) we some variable provided by the application(ie: ",(0,i.kt)("inlineCode",{parentName:"p"},"m/650'/0/1")," will give the 1st transaction's address on the chain)"),(0,i.kt)("h4",{id:"hash-of-the-derivation-path"},"Hash of the derivation path"),(0,i.kt)("p",null,"Once the derivation path index is replaced we hashed it to give a constant size through ",(0,i.kt)("inlineCode",{parentName:"p"},"SHA256")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"hashedPath = SHA256(ReplaceDerivationPath(derivationPath, index))\n")),(0,i.kt)("h4",{id:"derive-private-key"},"Derive private key"),(0,i.kt)("p",null,"Then we have to derive the private key based on the hashedPath and the master seed by using HMAC and extracting the first 32 bytes of the result"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"extendedSeed = HMAC-SHA512(Key=MasterSeed, Data=hashedPath)\nextendedPrivateKey = extendedSeed.slice(0, 32)\n")),(0,i.kt)("h4",{id:"derive-public-key"},"Derive public key"),(0,i.kt)("p",null,"Now with the given private key we can easily extract the public key for the given curve specified in the Keychain's service"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"{ publicKey, private } = generateKeyPair(extendedPrivateKey, curve)\n")),(0,i.kt)("h3",{id:"encryption"},"Encryption"),(0,i.kt)("p",null,"The keychain is using a double encryption scheme where:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"the wallet is encrypted with AES "),(0,i.kt)("li",{parentName:"ul"},"the ",(0,i.kt)("inlineCode",{parentName:"li"},"aes_key")," is encrypted with elliptic curve cryptography using ECIES (Elliptic Curve Integration Encryption Scheme): ",(0,i.kt)("inlineCode",{parentName:"li"},"wk_{aes}")," for the authorized public keys")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Ephemeral key is used to perform ECDH with authorized public key, in order to derive ",(0,i.kt)("inlineCode",{parentName:"p"},"aes_key"),". This ",(0,i.kt)("inlineCode",{parentName:"p"},"aes_key")," is then used to encrypt the ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),". This is called ",(0,i.kt)("inlineCode",{parentName:"p"},"ECIESE"),"(Elliptic Curve Integration Encryption Scheme Ephemeral)")),(0,i.kt)("p",null,"Then to guarantee the security of the wallet, only the authorized public keys are able to decrypt the encrypted aes key(",(0,i.kt)("inlineCode",{parentName:"p"},"enc(aes_key)"),") to be able to decrypt the encrypted wallet (",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),")"),(0,i.kt)("h4",{id:"encrypting-the-onchain-wallet"},"Encrypting the Onchain Wallet"),(0,i.kt)("p",null,"The onchain encoded wallet ",(0,i.kt)("inlineCode",{parentName:"p"},"w_{e}")," is encrypted using symmetric encryption AES256 CTR key ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}")," as follows: "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"wallet_iv [16 bytes], reserved [16 bytes] = sha256(sha256(wk_{aes})) \nenc(w_{e}) = aes256(mode=ctr, key = wk_{aes}, iv = wallet_iv, data = w_{e}) \n")),(0,i.kt)("h4",{id:"encoding-of-encrypted-wallet"},"Encoding of Encrypted Wallet"),(0,i.kt)("p",null,"The above encrypted wallet ",(0,i.kt)("inlineCode",{parentName:"p"},"enc(w_{e})")," is stored on the Archethic Blockchain with the following format. "),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"enc(w_{e}) ","[bytes]")))),(0,i.kt)("h4",{id:"encrypting-wallet-encryption-key"},"Encrypting Wallet Encryption Key"),(0,i.kt)("p",null,"The key (",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),") which encrypts the wallet (",(0,i.kt)("inlineCode",{parentName:"p"},"w_{e}"),") is subsequently encrypted using Elliptic Curve Integrated Encryption Scheme to support different authorized public keys and to reduce the increased space overhead of the encryptions. "),(0,i.kt)("p",null,"Algorithm$ for encrypting ",(0,i.kt)("inlineCode",{parentName:"p"},"wk_{aes}"),"= ECIES (ECDH + AES256 CBC) "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"ecdh_secret = ecdh_point_x(e_{pub}, o_{priv}) = ecdh_point_x(e_{priv}, o_{pub}) \n \naes_key [32 bytes], iv [16 bytes], auth_seed [16 bytes] = sha512(sha512(ecdh\\_secret)) \n \nenc(wk_{aes}) = aes256(mode=cbc, key = aes\\_key, iv = iv, data = wk_{aes}) \n \nauth_key = sha256(auth_seed) \n \nauth_tag [16 bytes], reserved [16 bytes] = hmac256(key = auth_key, data = enc(wk_{aes}))\n")),(0,i.kt)("h4",{id:"encoding-of-encrypted-wallet-key"},"Encoding of Encrypted Wallet Key"),(0,i.kt)("p",null,"The above encrypted key ",(0,i.kt)("inlineCode",{parentName:"p"},"enc(wk_{aes})")," is stored on the Archethic Blockchain with the following format. "),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"e_{pub} 04xy ","[bytes]"),(0,i.kt)("th",{parentName:"tr",align:null},"auth_tag ","[16 bytes]"),(0,i.kt)("th",{parentName:"tr",align:null},"enc(wk_{aes}) ","[32 bytes]")))),(0,i.kt)("h2",{id:"encoding"},"Encoding"),(0,i.kt)("p",null,"The wallet before encryption is encoding into a binary format"),(0,i.kt)("h3",{id:"encoding-of-wallet"},"Encoding of wallet"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Version"),(0,i.kt)("th",{parentName:"tr",align:null},"Seed size"),(0,i.kt)("th",{parentName:"tr",align:null},"Seed"),(0,i.kt)("th",{parentName:"tr",align:null},"Nb services"),(0,i.kt)("th",{parentName:"tr",align:null},"Service name size"),(0,i.kt)("th",{parentName:"tr",align:null},"Service name"),(0,i.kt)("th",{parentName:"tr",align:null},"Derivation path length"),(0,i.kt)("th",{parentName:"tr",align:null},"Derivation path"),(0,i.kt)("th",{parentName:"tr",align:null},"Curve type"),(0,i.kt)("th",{parentName:"tr",align:null},"Hash type"),(0,i.kt)("th",{parentName:"tr",align:null},"..."))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"4 bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"...")))),(0,i.kt)("h3",{id:"encoding-of-curve-types"},"Encoding of Curve Types"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"curve_type")," is a 1 byte long field, hex encoded. Currently, following curves are supported: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: ED25519 "),(0,i.kt)("li",{parentName:"ul"},"1: NISTP256 "),(0,i.kt)("li",{parentName:"ul"},"2: SECP256K1 ")),(0,i.kt)("h3",{id:"encoding-of-hash-types"},"Encoding of Hash Types"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"hash_type")," is a 1 byte long field, hex encoded. Currently, following hashes are supported: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: SHA256 (sha2) "),(0,i.kt)("li",{parentName:"ul"},"1: SHA512 (sha2) "),(0,i.kt)("li",{parentName:"ul"},"2: SHA3_256 (keccak) "),(0,i.kt)("li",{parentName:"ul"},"3: SHA3_512 (keccak) "),(0,i.kt)("li",{parentName:"ul"},"4: BLAKE2B ")),(0,i.kt)("h2",{id:"transaction-representation"},"Transaction representation"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Transaction \n- Data: \n - Ownerships: \n Secret: Encrypted Wallet, \n Authorized Keys: \n Public Key: Origin Device / Password Public Key, \n Encrypted Secret Key: Encrypted AES Key for the authorized public key \n")),(0,i.kt)("h2",{id:"format"},"Format"),(0,i.kt)("h3",{id:"public-key-format"},"Public Key Format"),(0,i.kt)("p",null,"When clients have to produce public key, an origin type identification byte have to prepend before the key material as well as the curve type."),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Curve ID"),(0,i.kt)("th",{parentName:"tr",align:null},"Origin ID"),(0,i.kt)("th",{parentName:"tr",align:null},"Key material"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes")))),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"origin_type")," is a 1 byte long field, hex encoded. Currently, following origins are defined: "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"0: Onchain Wallet"),(0,i.kt)("li",{parentName:"ul"},"1: Software Wallet (Node, Mobile App, Desktop, etc.)"),(0,i.kt)("li",{parentName:"ul"},"2: TPM (Node) "),(0,i.kt)("li",{parentName:"ul"},"3: Yubikey (Node, Hardware Wallet)"),(0,i.kt)("li",{parentName:"ul"},"4: Ledger (Hardware Wallet) ")),(0,i.kt)("h3",{id:"account-address-format"},"Account Address Format"),(0,i.kt)("p",null,"Archethic addresses following a specific format to version algorithms used helping\nto evolve easily between curves and hash algorithms."),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Curve Type"),(0,i.kt)("th",{parentName:"tr",align:null},"Hash algo"),(0,i.kt)("th",{parentName:"tr",align:null},"hash(encode(pub_key))"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"1 byte"),(0,i.kt)("td",{parentName:"tr",align:null},"N bytes")))))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/bd14bfe1.6616611b.js b/assets/js/bd14bfe1.145935ab.js similarity index 97% rename from assets/js/bd14bfe1.6616611b.js rename to assets/js/bd14bfe1.145935ab.js index 9634fc383..c7227a26d 100644 --- a/assets/js/bd14bfe1.6616611b.js +++ b/assets/js/bd14bfe1.145935ab.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4060],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>y});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),s=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(n),u=a,y=p["".concat(o,".").concat(u)]||p[u]||h[u]||i;return n?r.createElement(y,c(c({ref:t},d),{},{components:n})):r.createElement(y,c({ref:t},d))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,c=new Array(i);c[0]=u;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:a,c[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"wallet-access",title:"Archethic's wallet access"},c=void 0,l={unversionedId:"build/clients/wallet-access",id:"build/clients/wallet-access",title:"Archethic's wallet access",description:"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it.",source:"@site/docs/build/clients/wallet-access.md",sourceDirName:"build/clients",slug:"/build/clients/wallet-access",permalink:"/build/clients/wallet-access",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"wallet-access",title:"Archethic's wallet access"},sidebar:"docs",previous:{title:"ADPU commands",permalink:"/build/clients/ledger-wallet/commands"},next:{title:"Archethic's wallet specification",permalink:"/build/clients/wallet-spec"}},o={},s=[{value:"Access enrollment",id:"access-enrollment",level:2},{value:"Keychain retrieval",id:"keychain-retrieval",level:2}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Onchain wallet (aka ",(0,a.kt)("strong",{parentName:"p"},"Keychain"),") is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it."),(0,a.kt)("p",null,"Also to avoid disclosure of information, access and keychain are using end to end encryption with elliptic curve cryptography to secure it."),(0,a.kt)("p",null,"Hence any client which would like to support wallet access and transaction building will have to be authorized."),(0,a.kt)("h2",{id:"access-enrollment"},"Access enrollment"),(0,a.kt)("p",null,"When a device or application want to become an access to the wallet, it first have to create a transaction where the keychain transaction's address is encrypted into it.\nThis data is stored in the ",(0,a.kt)("inlineCode",{parentName:"p"},"/data/ownerships")," section of the transaction., where the authorized public key is the ",(0,a.kt)("inlineCode",{parentName:"p"},"transaction's public key")," and the secret is an aes encryption of the keychain's address."),(0,a.kt)("p",null,"Then the keychain will create a new transaction on its chain by encrypting the wallet with a new AES key itself encrypted for the list of authorized access public keys wanted. (For instance the new device or application)"),(0,a.kt)("h2",{id:"keychain-retrieval"},"Keychain retrieval"),(0,a.kt)("p",null,"In order to retrieve the keychain from a device or application perspective, the access transaction's will be generated to be retrieved from the network."),(0,a.kt)("p",null,"Then the device or application will decrypt the encrypted keychain address to be able to download the keychain transaction."),(0,a.kt)("p",null,"Once received, the device or application - as being authorized by the keychain - will be able to decrypt the AES key to decrypt the wallet and perform any key derivation and transaction building from it."),(0,a.kt)("p",null,"Then, because the key have been generated on the fly, the client will forget about the private keys and seeds decrypted."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4060],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>y});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),s=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=s(e.components);return r.createElement(o.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=s(n),u=a,y=p["".concat(o,".").concat(u)]||p[u]||h[u]||i;return n?r.createElement(y,c(c({ref:t},d),{},{components:n})):r.createElement(y,c({ref:t},d))}));function y(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,c=new Array(i);c[0]=u;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[p]="string"==typeof e?e:a,c[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));n(8209);const i={id:"wallet-access",title:"Archethic's wallet access"},c=void 0,l={unversionedId:"build/clients/wallet-access",id:"build/clients/wallet-access",title:"Archethic's wallet access",description:"Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it.",source:"@site/docs/build/clients/wallet-access.md",sourceDirName:"build/clients",slug:"/build/clients/wallet-access",permalink:"/build/clients/wallet-access",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"wallet-access",title:"Archethic's wallet access"},sidebar:"docs",previous:{title:"ADPU commands",permalink:"/build/clients/ledger-wallet/commands"},next:{title:"Archethic's wallet specification",permalink:"/build/clients/wallet-spec"}},o={},s=[{value:"Access enrollment",id:"access-enrollment",level:2},{value:"Keychain retrieval",id:"keychain-retrieval",level:2}],d={toc:s},p="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Onchain wallet (aka ",(0,a.kt)("strong",{parentName:"p"},"Keychain"),") is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it."),(0,a.kt)("p",null,"Also to avoid disclosure of information, access and keychain are using end to end encryption with elliptic curve cryptography to secure it."),(0,a.kt)("p",null,"Hence any client which would like to support wallet access and transaction building will have to be authorized."),(0,a.kt)("h2",{id:"access-enrollment"},"Access enrollment"),(0,a.kt)("p",null,"When a device or application want to become an access to the wallet, it first have to create a transaction where the keychain transaction's address is encrypted into it.\nThis data is stored in the ",(0,a.kt)("inlineCode",{parentName:"p"},"/data/ownerships")," section of the transaction., where the authorized public key is the ",(0,a.kt)("inlineCode",{parentName:"p"},"transaction's public key")," and the secret is an aes encryption of the keychain's address."),(0,a.kt)("p",null,"Then the keychain will create a new transaction on its chain by encrypting the wallet with a new AES key itself encrypted for the list of authorized access public keys wanted. (For instance the new device or application)"),(0,a.kt)("h2",{id:"keychain-retrieval"},"Keychain retrieval"),(0,a.kt)("p",null,"In order to retrieve the keychain from a device or application perspective, the access transaction's will be generated to be retrieved from the network."),(0,a.kt)("p",null,"Then the device or application will decrypt the encrypted keychain address to be able to download the keychain transaction."),(0,a.kt)("p",null,"Once received, the device or application - as being authorized by the keychain - will be able to decrypt the AES key to decrypt the wallet and perform any key derivation and transaction building from it."),(0,a.kt)("p",null,"Then, because the key have been generated on the fly, the client will forget about the private keys and seeds decrypted."))}h.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/be94c4be.1f4d1a52.js b/assets/js/be94c4be.463097b0.js similarity index 99% rename from assets/js/be94c4be.1f4d1a52.js rename to assets/js/be94c4be.463097b0.js index 322b5589a..c519113a2 100644 --- a/assets/js/be94c4be.1f4d1a52.js +++ b/assets/js/be94c4be.463097b0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6697],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>p});var l=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var c=l.createContext({}),i=function(e){var t=l.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},s=function(e){var t=i(e.components);return l.createElement(c.Provider,{value:t},e.children)},b="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,c=e.parentName,s=d(e,["components","mdxType","originalType","parentName"]),b=i(a),u=o,p=b["".concat(c,".").concat(u)]||b[u]||m[u]||n;return a?l.createElement(p,r(r({ref:t},s),{},{components:a})):l.createElement(p,r({ref:t},s))}));function p(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,r=new Array(n);r[0]=u;var d={};for(var c in t)hasOwnProperty.call(t,c)&&(d[c]=t[c]);d.originalType=e,d[b]="string"==typeof e?e:o,r[1]=d;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>b,SpecifiedBy:()=>m,assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>s});var l=a(7462),o=a(7294),n=a(3905);a(8209);const r={id:"node",title:"Node",hide_table_of_contents:!1},d=void 0,c={unversionedId:"build/api/schema/objects/node",id:"build/api/schema/objects/node",title:"Node",description:"[Node] represents a node in the network",source:"@site/docs/build/api/schema/objects/node.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/node",permalink:"/build/api/schema/objects/node",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"node",title:"Node",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Ledger",permalink:"/build/api/schema/objects/ledger"},next:{title:"OracleData",permalink:"/build/api/schema/objects/oracle-data"}},i={},s=[{value:"Fields",id:"fields",level:3},{value:'Node.authorizationDateTimestamp ',id:"code-style-fontweight-normal-nodebauthorizationdatebcodetimestamp-",level:4},{value:'Node.authorizedBoolean ',id:"code-style-fontweight-normal-nodebauthorizedbcodeboolean-",level:4},{value:'Node.availableBoolean ',id:"code-style-fontweight-normal-nodebavailablebcodeboolean-",level:4},{value:'Node.averageAvailabilityFloat ',id:"code-style-fontweight-normal-nodebaverageavailabilitybcodefloat-",level:4},{value:'Node.enrollmentDateTimestamp ',id:"code-style-fontweight-normal-nodebenrollmentdatebcodetimestamp-",level:4},{value:'Node.firstPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodebfirstpublickeybcodepublickey-",level:4},{value:'Node.geoPatchString ',id:"code-style-fontweight-normal-nodebgeopatchbcodestring-",level:4},{value:'Node.ipString ',id:"code-style-fontweight-normal-nodebipbcodestring-",level:4},{value:'Node.lastPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodeblastpublickeybcodepublickey-",level:4},{value:'Node.networkPatchString ',id:"code-style-fontweight-normal-nodebnetworkpatchbcodestring-",level:4},{value:'Node.originPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodeboriginpublickeybcodepublickey-",level:4},{value:'Node.portInt ',id:"code-style-fontweight-normal-nodebportbcodeint-",level:4},{value:'Node.rewardAddressAddress ',id:"code-style-fontweight-normal-nodebrewardaddressbcodeaddress-",level:4},{value:"Returned by",id:"returned-by",level:3}],b=()=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,n.kt)(o.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),p={toc:s,Bullet:b,SpecifiedBy:m,Badge:u},y="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(y,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"[Node]"," represents a node in the network"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"type Node {\n authorizationDate: Timestamp\n authorized: Boolean\n available: Boolean\n averageAvailability: Float\n enrollmentDate: Timestamp\n firstPublicKey: PublicKey\n geoPatch: String\n ip: String\n lastPublicKey: PublicKey\n networkPatch: String\n originPublicKey: PublicKey\n port: Int\n rewardAddress: Address\n}\n")),(0,n.kt)("h3",{id:"fields"},"Fields"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebauthorizationdatebcodetimestamp-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"authorizationDate"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,n.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebauthorizedbcodeboolean-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"authorized"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,n.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebavailablebcodeboolean-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"available"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,n.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebaverageavailabilitybcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"averageAvailability"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebenrollmentdatebcodetimestamp-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"enrollmentDate"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,n.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebfirstpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"firstPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebgeopatchbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"geoPatch"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebipbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"ip"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodeblastpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"lastPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebnetworkpatchbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"networkPatch"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodeboriginpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"originPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebportbcodeint-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"port"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,n.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebrewardaddressbcodeaddress-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"rewardAddress"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"returned-by"},"Returned by"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"/build/api/schema/queries/nodes"},(0,n.kt)("inlineCode",{parentName:"a"},"nodes"))," ",(0,n.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6697],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>p});var l=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var c=l.createContext({}),i=function(e){var t=l.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},s=function(e){var t=i(e.components);return l.createElement(c.Provider,{value:t},e.children)},b="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,c=e.parentName,s=d(e,["components","mdxType","originalType","parentName"]),b=i(a),u=o,p=b["".concat(c,".").concat(u)]||b[u]||m[u]||n;return a?l.createElement(p,r(r({ref:t},s),{},{components:a})):l.createElement(p,r({ref:t},s))}));function p(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,r=new Array(n);r[0]=u;var d={};for(var c in t)hasOwnProperty.call(t,c)&&(d[c]=t[c]);d.originalType=e,d[b]="string"==typeof e?e:o,r[1]=d;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>b,SpecifiedBy:()=>m,assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>s});var l=a(7462),o=a(7294),n=a(3905);a(8209);const r={id:"node",title:"Node",hide_table_of_contents:!1},d=void 0,c={unversionedId:"build/api/schema/objects/node",id:"build/api/schema/objects/node",title:"Node",description:"[Node] represents a node in the network",source:"@site/docs/build/api/schema/objects/node.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/node",permalink:"/build/api/schema/objects/node",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"node",title:"Node",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Ledger",permalink:"/build/api/schema/objects/ledger"},next:{title:"OracleData",permalink:"/build/api/schema/objects/oracle-data"}},i={},s=[{value:"Fields",id:"fields",level:3},{value:'Node.authorizationDateTimestamp ',id:"code-style-fontweight-normal-nodebauthorizationdatebcodetimestamp-",level:4},{value:'Node.authorizedBoolean ',id:"code-style-fontweight-normal-nodebauthorizedbcodeboolean-",level:4},{value:'Node.availableBoolean ',id:"code-style-fontweight-normal-nodebavailablebcodeboolean-",level:4},{value:'Node.averageAvailabilityFloat ',id:"code-style-fontweight-normal-nodebaverageavailabilitybcodefloat-",level:4},{value:'Node.enrollmentDateTimestamp ',id:"code-style-fontweight-normal-nodebenrollmentdatebcodetimestamp-",level:4},{value:'Node.firstPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodebfirstpublickeybcodepublickey-",level:4},{value:'Node.geoPatchString ',id:"code-style-fontweight-normal-nodebgeopatchbcodestring-",level:4},{value:'Node.ipString ',id:"code-style-fontweight-normal-nodebipbcodestring-",level:4},{value:'Node.lastPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodeblastpublickeybcodepublickey-",level:4},{value:'Node.networkPatchString ',id:"code-style-fontweight-normal-nodebnetworkpatchbcodestring-",level:4},{value:'Node.originPublicKeyPublicKey ',id:"code-style-fontweight-normal-nodeboriginpublickeybcodepublickey-",level:4},{value:'Node.portInt ',id:"code-style-fontweight-normal-nodebportbcodeint-",level:4},{value:'Node.rewardAddressAddress ',id:"code-style-fontweight-normal-nodebrewardaddressbcodeaddress-",level:4},{value:"Returned by",id:"returned-by",level:3}],b=()=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,n.kt)(o.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,n.kt)(o.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),p={toc:s,Bullet:b,SpecifiedBy:m,Badge:u},y="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(y,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"[Node]"," represents a node in the network"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"type Node {\n authorizationDate: Timestamp\n authorized: Boolean\n available: Boolean\n averageAvailability: Float\n enrollmentDate: Timestamp\n firstPublicKey: PublicKey\n geoPatch: String\n ip: String\n lastPublicKey: PublicKey\n networkPatch: String\n originPublicKey: PublicKey\n port: Int\n rewardAddress: Address\n}\n")),(0,n.kt)("h3",{id:"fields"},"Fields"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebauthorizationdatebcodetimestamp-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"authorizationDate"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,n.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebauthorizedbcodeboolean-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"authorized"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,n.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebavailablebcodeboolean-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"available"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/boolean"},(0,n.kt)("inlineCode",{parentName:"a"},"Boolean"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebaverageavailabilitybcodefloat-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"averageAvailability"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/float"},(0,n.kt)("inlineCode",{parentName:"a"},"Float"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebenrollmentdatebcodetimestamp-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"enrollmentDate"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,n.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebfirstpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"firstPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebgeopatchbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"geoPatch"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebipbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"ip"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodeblastpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"lastPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebnetworkpatchbcodestring-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"networkPatch"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,n.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodeboriginpublickeybcodepublickey-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"originPublicKey"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,n.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebportbcodeint-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"port"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,n.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h4",{id:"code-style-fontweight-normal-nodebrewardaddressbcodeaddress-"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"Node.",(0,n.kt)("b",null,"rewardAddress"))),(0,n.kt)(b,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,n.kt)(u,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"returned-by"},"Returned by"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"/build/api/schema/queries/nodes"},(0,n.kt)("inlineCode",{parentName:"a"},"nodes"))," ",(0,n.kt)(u,{class:"secondary",text:"query",mdxType:"Badge"})))}h.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/bf608a00.08d4d1aa.js b/assets/js/bf608a00.9dd6c6da.js similarity index 98% rename from assets/js/bf608a00.08d4d1aa.js rename to assets/js/bf608a00.9dd6c6da.js index 9166c64e1..25c2f65dc 100644 --- a/assets/js/bf608a00.08d4d1aa.js +++ b/assets/js/bf608a00.9dd6c6da.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2052],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(a),m=n,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||l;return a?r.createElement(f,o(o({ref:t},d),{},{components:a})):r.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:n,o[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>b,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=a(7462),n=a(7294),l=a(3905);a(8209);const o={id:"oracle-data",title:"oracleData",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/queries/oracle-data",id:"build/api/schema/queries/oracle-data",title:"oracleData",description:"Query the network to get the value of an oracle at a specific time or the last value",source:"@site/docs/build/api/schema/queries/oracle-data.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/oracle-data",permalink:"/build/api/schema/queries/oracle-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"oracle-data",title:"oracleData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"nodes",permalink:"/build/api/schema/queries/nodes"},next:{title:"sharedSecrets",permalink:"/build/api/schema/queries/shared-secrets"}},s={},d=[{value:"Arguments",id:"arguments",level:3},{value:'oracleData.timestampTimestamp ',id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-",level:4},{value:"Type",id:"type",level:3},{value:'OracleData ',id:"oracledata-",level:4}],p=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},y="wrapper";function b(e){let{components:t,...a}=e;return(0,l.kt)(y,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Query the network to get the value of an oracle at a specific time or the last value"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"oracleData(\n timestamp: Timestamp\n): OracleData\n")),(0,l.kt)("h3",{id:"arguments"},"Arguments"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"oracleData.",(0,l.kt)("b",null,"timestamp"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,l.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"type"},"Type"),(0,l.kt)("h4",{id:"oracledata-"},(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-data"},(0,l.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"[OracleData]"," represents an oracle data.")))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2052],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var i=r.createContext({}),s=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(a),m=n,f=p["".concat(i,".").concat(m)]||p[m]||u[m]||l;return a?r.createElement(f,o(o({ref:t},d),{},{components:a})):r.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:n,o[1]=c;for(var s=2;s{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>b,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=a(7462),n=a(7294),l=a(3905);a(8209);const o={id:"oracle-data",title:"oracleData",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/queries/oracle-data",id:"build/api/schema/queries/oracle-data",title:"oracleData",description:"Query the network to get the value of an oracle at a specific time or the last value",source:"@site/docs/build/api/schema/queries/oracle-data.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/oracle-data",permalink:"/build/api/schema/queries/oracle-data",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"oracle-data",title:"oracleData",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"nodes",permalink:"/build/api/schema/queries/nodes"},next:{title:"sharedSecrets",permalink:"/build/api/schema/queries/shared-secrets"}},s={},d=[{value:"Arguments",id:"arguments",level:3},{value:'oracleData.timestampTimestamp ',id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-",level:4},{value:"Type",id:"type",level:3},{value:'OracleData ',id:"oracledata-",level:4}],p=()=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,l.kt)(n.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(n.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},y="wrapper";function b(e){let{components:t,...a}=e;return(0,l.kt)(y,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Query the network to get the value of an oracle at a specific time or the last value"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"oracleData(\n timestamp: Timestamp\n): OracleData\n")),(0,l.kt)("h3",{id:"arguments"},"Arguments"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-oracledatabtimestampbcodetimestamp-"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"oracleData.",(0,l.kt)("b",null,"timestamp"))),(0,l.kt)(p,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,l.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"type"},"Type"),(0,l.kt)("h4",{id:"oracledata-"},(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/oracle-data"},(0,l.kt)("inlineCode",{parentName:"a"},"OracleData"))," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"[OracleData]"," represents an oracle data.")))}b.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/bf6e295d.b3682a54.js b/assets/js/bf6e295d.e6da95b2.js similarity index 97% rename from assets/js/bf6e295d.b3682a54.js rename to assets/js/bf6e295d.e6da95b2.js index 3dad368ab..4131492e4 100644 --- a/assets/js/bf6e295d.b3682a54.js +++ b/assets/js/bf6e295d.e6da95b2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1697],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(f,o(o({ref:t},p),{},{components:r})):n.createElement(f,o({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(7462),a=r(7294),i=r(3905);r(8209);const o={id:"pos-integer",title:"PosInteger",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/scalars/pos-integer",id:"build/api/schema/scalars/pos-integer",title:"PosInteger",description:"The [Positive Integer] scalar type represents a positive number",source:"@site/docs/build/api/schema/scalars/pos-integer.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/pos-integer",permalink:"/build/api/schema/scalars/pos-integer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"pos-integer",title:"PosInteger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"P2pAvailabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities"},next:{title:"PublicKey",permalink:"/build/api/schema/scalars/public-key"}},c={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},y="wrapper";function b(e){let{components:t,...r}=e;return(0,i.kt)(y,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Positive Integer]"," scalar type represents a positive number"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar PosInteger\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,i.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,i.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transactions"},(0,i.kt)("inlineCode",{parentName:"a"},"transactions"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1697],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return r?n.createElement(f,o(o({ref:t},p),{},{components:r})):n.createElement(f,o({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(7462),a=r(7294),i=r(3905);r(8209);const o={id:"pos-integer",title:"PosInteger",hide_table_of_contents:!1},s=void 0,l={unversionedId:"build/api/schema/scalars/pos-integer",id:"build/api/schema/scalars/pos-integer",title:"PosInteger",description:"The [Positive Integer] scalar type represents a positive number",source:"@site/docs/build/api/schema/scalars/pos-integer.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/pos-integer",permalink:"/build/api/schema/scalars/pos-integer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"pos-integer",title:"PosInteger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"P2pAvailabilities",permalink:"/build/api/schema/scalars/p2-p-availabilities"},next:{title:"PublicKey",permalink:"/build/api/schema/scalars/public-key"}},c={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,i.kt)(a.Fragment,null,"Specification",(0,i.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,i.kt)(a.Fragment,null,(0,i.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:p,Bullet:u,SpecifiedBy:d,Badge:m},y="wrapper";function b(e){let{components:t,...r}=e;return(0,i.kt)(y,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The ","[Positive Integer]"," scalar type represents a positive number"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar PosInteger\n")),(0,i.kt)("h3",{id:"member-of"},"Member of"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,i.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-inputs"},(0,i.kt)("inlineCode",{parentName:"a"},"transactionInputs"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"}),(0,i.kt)(u,{mdxType:"Bullet"}),(0,i.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transactions"},(0,i.kt)("inlineCode",{parentName:"a"},"transactions"))," ",(0,i.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/c204078c.9a201e98.js b/assets/js/c204078c.ff9b82b6.js similarity index 98% rename from assets/js/c204078c.9a201e98.js rename to assets/js/c204078c.ff9b82b6.js index 252a04723..eac934dd8 100644 --- a/assets/js/c204078c.9a201e98.js +++ b/assets/js/c204078c.ff9b82b6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3723],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));n(8209);const a={id:"messaging",title:"Messaging"},o=void 0,l={unversionedId:"build/core/p2p/messaging",id:"build/core/p2p/messaging",title:"Messaging",description:"Archethic Blockchain is used a brand new P2P layer from the Supervised Multicast, but to ensure the best data transmission possible, we are using two modern approaches: Stream Multiplexer and Binary Protocol.",source:"@site/docs/build/core/p2p/messaging.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/messaging",permalink:"/build/core/p2p/messaging",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"messaging",title:"Messaging"},sidebar:"docs",previous:{title:"P2P",permalink:"/build/core/p2p/"},next:{title:"Node",permalink:"/build/core/p2p/node"}},s={},p=[{value:"Stream Multiplexer",id:"stream-multiplexer",level:2},{value:"Binary Protocol",id:"binary-protocol",level:2},{value:"Message envelop",id:"message-envelop",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is used a brand new P2P layer from the ",(0,i.kt)("a",{parentName:"p",href:"/learn/p2p#archethics-way"},"Supervised Multicast"),", but to ensure the best data transmission possible, we are using two modern approaches: ",(0,i.kt)("inlineCode",{parentName:"p"},"Stream Multiplexer")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"Binary Protocol"),". "),(0,i.kt)("p",null,"Those two features helps to achieve a low latency P2P messaging."),(0,i.kt)("h2",{id:"stream-multiplexer"},"Stream Multiplexer"),(0,i.kt)("p",null,"Stream Multiplexing allows multiple independent logical streams to share a common underlying transport stream and ",(0,i.kt)("br",null),"\nthere are many independent streams of communication between peers."),(0,i.kt)("p",null,"Stream Multiplexing amortizes the overhead of establishing a transport connection and helps to distinguish which messages to handle in a concurrent way."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"|---------| |---------|\n| Service | | Service |\n|---------| |---------|\n | Msg ID: 2 |------------| |\n |--------------| Connection |---------| Msg ID: 1\n | TCP |\n |--------------|------------|---------|\n | Msg ID: 1 | Msg ID: 2\n|---------| |---------|\n| Service | | Service |\n|---------| |---------|\n")),(0,i.kt)("p",null,"In the current implementation, each node connection is backed by a GenServer which serializes the call the remote endpoint, through an established connection."),(0,i.kt)("p",null,"Even if the calls are serialized, it leverages a non-blocking messaging, so multiple messages can be sent with several independant clients. However after a certain amount of time(timeout: 5s), the message is dropped to reduce the message queue."),(0,i.kt)("h2",{id:"binary-protocol"},"Binary Protocol"),(0,i.kt)("p",null,"Network latency is very important to reach an unlimited and really scalable network and using binary protocol helps to reduce bandwidth."),(0,i.kt)("p",null,"Different kind of solutions existing for binary protocol: Protobuf, Avro, Thrift, MsgPack, etc."),(0,i.kt)("p",null,"However, to support a custom and efficient binary serialization, Archethic uses it own binary protocol through the transport layer to reduce and to optimize by the message, the data to send."),(0,i.kt)("p",null,"This aspect is important, when we are dealing with bits, to reduce byte size."),(0,i.kt)("p",null,"For example, if we want to serialize this bitstring: 11100000"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"With existing solutions, we may end up with a list of 8 bytes"),(0,i.kt)("li",{parentName:"ul"},"With a custom solution, we serialize it with only 1 byte")),(0,i.kt)("h2",{id:"message-envelop"},"Message envelop"),(0,i.kt)("p",null,"To support privacy and security, each message is wrapped in a ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageEnvelop")," struct within:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Message ID: used in the stream multiplexing"),(0,i.kt)("li",{parentName:"ul"},"Message to send"),(0,i.kt)("li",{parentName:"ul"},"Sender public key: used to determine the liveness of the node from the recipient P2P view")),(0,i.kt)("p",null,"The envelop is then encrypted with the recipient public key (known by the network) using ECIES cryptography protocol."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3723],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));n(8209);const a={id:"messaging",title:"Messaging"},o=void 0,l={unversionedId:"build/core/p2p/messaging",id:"build/core/p2p/messaging",title:"Messaging",description:"Archethic Blockchain is used a brand new P2P layer from the Supervised Multicast, but to ensure the best data transmission possible, we are using two modern approaches: Stream Multiplexer and Binary Protocol.",source:"@site/docs/build/core/p2p/messaging.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/messaging",permalink:"/build/core/p2p/messaging",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"messaging",title:"Messaging"},sidebar:"docs",previous:{title:"P2P",permalink:"/build/core/p2p/"},next:{title:"Node",permalink:"/build/core/p2p/node"}},s={},p=[{value:"Stream Multiplexer",id:"stream-multiplexer",level:2},{value:"Binary Protocol",id:"binary-protocol",level:2},{value:"Message envelop",id:"message-envelop",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is used a brand new P2P layer from the ",(0,i.kt)("a",{parentName:"p",href:"/learn/p2p#archethics-way"},"Supervised Multicast"),", but to ensure the best data transmission possible, we are using two modern approaches: ",(0,i.kt)("inlineCode",{parentName:"p"},"Stream Multiplexer")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"Binary Protocol"),". "),(0,i.kt)("p",null,"Those two features helps to achieve a low latency P2P messaging."),(0,i.kt)("h2",{id:"stream-multiplexer"},"Stream Multiplexer"),(0,i.kt)("p",null,"Stream Multiplexing allows multiple independent logical streams to share a common underlying transport stream and ",(0,i.kt)("br",null),"\nthere are many independent streams of communication between peers."),(0,i.kt)("p",null,"Stream Multiplexing amortizes the overhead of establishing a transport connection and helps to distinguish which messages to handle in a concurrent way."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"|---------| |---------|\n| Service | | Service |\n|---------| |---------|\n | Msg ID: 2 |------------| |\n |--------------| Connection |---------| Msg ID: 1\n | TCP |\n |--------------|------------|---------|\n | Msg ID: 1 | Msg ID: 2\n|---------| |---------|\n| Service | | Service |\n|---------| |---------|\n")),(0,i.kt)("p",null,"In the current implementation, each node connection is backed by a GenServer which serializes the call the remote endpoint, through an established connection."),(0,i.kt)("p",null,"Even if the calls are serialized, it leverages a non-blocking messaging, so multiple messages can be sent with several independant clients. However after a certain amount of time(timeout: 5s), the message is dropped to reduce the message queue."),(0,i.kt)("h2",{id:"binary-protocol"},"Binary Protocol"),(0,i.kt)("p",null,"Network latency is very important to reach an unlimited and really scalable network and using binary protocol helps to reduce bandwidth."),(0,i.kt)("p",null,"Different kind of solutions existing for binary protocol: Protobuf, Avro, Thrift, MsgPack, etc."),(0,i.kt)("p",null,"However, to support a custom and efficient binary serialization, Archethic uses it own binary protocol through the transport layer to reduce and to optimize by the message, the data to send."),(0,i.kt)("p",null,"This aspect is important, when we are dealing with bits, to reduce byte size."),(0,i.kt)("p",null,"For example, if we want to serialize this bitstring: 11100000"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"With existing solutions, we may end up with a list of 8 bytes"),(0,i.kt)("li",{parentName:"ul"},"With a custom solution, we serialize it with only 1 byte")),(0,i.kt)("h2",{id:"message-envelop"},"Message envelop"),(0,i.kt)("p",null,"To support privacy and security, each message is wrapped in a ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageEnvelop")," struct within:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Message ID: used in the stream multiplexing"),(0,i.kt)("li",{parentName:"ul"},"Message to send"),(0,i.kt)("li",{parentName:"ul"},"Sender public key: used to determine the liveness of the node from the recipient P2P view")),(0,i.kt)("p",null,"The envelop is then encrypted with the recipient public key (known by the network) using ECIES cryptography protocol."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/c31d0f42.0d79c0c6.js b/assets/js/c31d0f42.4f985764.js similarity index 96% rename from assets/js/c31d0f42.0d79c0c6.js rename to assets/js/c31d0f42.4f985764.js index d8422ff7a..f753aa619 100644 --- a/assets/js/c31d0f42.0d79c0c6.js +++ b/assets/js/c31d0f42.4f985764.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7527],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=p(r),f=a,h=d["".concat(l,".").concat(f)]||d[f]||s[f]||o;return r?n.createElement(h,i(i({ref:t},u),{},{components:r})):n.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"dart",title:"Dart SDK"},i=void 0,c={unversionedId:"build/sdk/dart",id:"build/sdk/dart",title:"Dart SDK",description:"Archethic Blockchain Official Dart SDK available on Github",source:"@site/docs/build/sdk/dart.md",sourceDirName:"build/sdk",slug:"/build/sdk/dart",permalink:"/build/sdk/dart",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"dart",title:"Dart SDK"},sidebar:"docs",previous:{title:"SDK",permalink:"/build/sdk/"},next:{title:"Go SDK",permalink:"/build/sdk/go"}},l={},p=[],u={toc:p},d="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain Official Dart SDK available on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libdart"},"Github"),"\nDart Packages published on ",(0,a.kt)("a",{parentName:"p",href:"https://pub.dev/packages/archethic_lib_dart"},"Pub.dev")),(0,a.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This SDK is mainly used in the official ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic_wallet"},"Archethic Wallet")," using Flutter. Please have a look if you are interested.")))}s.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7527],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=p(r),f=a,h=d["".concat(l,".").concat(f)]||d[f]||s[f]||o;return r?n.createElement(h,i(i({ref:t},u),{},{components:r})):n.createElement(h,i({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"dart",title:"Dart SDK"},i=void 0,c={unversionedId:"build/sdk/dart",id:"build/sdk/dart",title:"Dart SDK",description:"Archethic Blockchain Official Dart SDK available on Github",source:"@site/docs/build/sdk/dart.md",sourceDirName:"build/sdk",slug:"/build/sdk/dart",permalink:"/build/sdk/dart",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"dart",title:"Dart SDK"},sidebar:"docs",previous:{title:"SDK",permalink:"/build/sdk/"},next:{title:"Go SDK",permalink:"/build/sdk/go"}},l={},p=[],u={toc:p},d="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain Official Dart SDK available on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libdart"},"Github"),"\nDart Packages published on ",(0,a.kt)("a",{parentName:"p",href:"https://pub.dev/packages/archethic_lib_dart"},"Pub.dev")),(0,a.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"This SDK is mainly used in the official ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/archethic_wallet"},"Archethic Wallet")," using Flutter. Please have a look if you are interested.")))}s.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/c325c1c7.6500a969.js b/assets/js/c325c1c7.0ef06873.js similarity index 99% rename from assets/js/c325c1c7.6500a969.js rename to assets/js/c325c1c7.0ef06873.js index dec0f1425..cea666372 100644 --- a/assets/js/c325c1c7.6500a969.js +++ b/assets/js/c325c1c7.0ef06873.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8208],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>b});var r=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),h=l,b=d["".concat(u,".").concat(h)]||d[h]||c[h]||n;return a?r.createElement(b,i(i({ref:t},s),{},{components:a})):r.createElement(b,i({ref:t},s))}));function b(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,i=new Array(n);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:l,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var r=a(7462),l=(a(7294),a(3905));a(8209);const n={id:"node",title:"Node"},i=void 0,o={unversionedId:"build/core/p2p/node",id:"build/core/p2p/node",title:"Node",description:"Data structure",source:"@site/docs/build/core/p2p/node.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/node",permalink:"/build/core/p2p/node",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"node",title:"Node"},sidebar:"docs",previous:{title:"Messaging",permalink:"/build/core/p2p/messaging"},next:{title:"SDK",permalink:"/build/sdk/"}},u={},p=[{value:"Data structure",id:"data-structure",level:2},{value:"P2P tables view",id:"p2p-tables-view",level:2},{value:"Discovery table",id:"discovery-table",level:3},{value:"Availability lookup table",id:"availability-lookup-table",level:3},{value:"Authorized nodes table",id:"authorized-nodes-table",level:3},{value:"Nodes key lookup table",id:"nodes-key-lookup-table",level:3}],s={toc:p},d="wrapper";function c(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"data-structure"},"Data structure"),(0,l.kt)("p",null,"Archethic is using a structured and open P2P network based on some properties:"),(0,l.kt)("p",null,"A node include a list P2P information such as:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"IP"),(0,l.kt)("li",{parentName:"ul"},"P2P Port"),(0,l.kt)("li",{parentName:"ul"},"HTTP Port (Web layer - Explorer)"),(0,l.kt)("li",{parentName:"ul"},"P2P Protocol (i.e TCP)"),(0,l.kt)("li",{parentName:"ul"},"First public key"),(0,l.kt)("li",{parentName:"ul"},"Last public key"),(0,l.kt)("li",{parentName:"ul"},"GeoPatch (for geographical distribution based on the GeoIP of the IP)"),(0,l.kt)("li",{parentName:"ul"},"NetworkPatch (for P2P responsiveness based on the latency to reach it)"),(0,l.kt)("li",{parentName:"ul"},"Reward address (the address where the mining rewards should be sent)"),(0,l.kt)("li",{parentName:"ul"},"Global availability (from BeaconChain qualification)"),(0,l.kt)("li",{parentName:"ul"},"Local availability (from Supervised Multicast)"),(0,l.kt)("li",{parentName:"ul"},"Average availability (from BeaconChain qualification)"),(0,l.kt)("li",{parentName:"ul"},"Authorized"),(0,l.kt)("li",{parentName:"ul"},"Authorization Date")),(0,l.kt)("h2",{id:"p2p-tables-view"},"P2P tables view"),(0,l.kt)("p",null,"The application is stored a P2P view in memory table using ETS (Erlang Term Storage) to support fast query to fetch node information."),(0,l.kt)("p",null,"When network transaction(node, node shared secrets) are loaded inside the system, ",(0,l.kt)("inlineCode",{parentName:"p"},"MemTableLoader")," module is called to populate the tables. This is also true during the bootstrap of the node to fill up the data as cache."),(0,l.kt)("h3",{id:"discovery-table"},"Discovery table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key"),(0,l.kt)("th",{parentName:"tr",align:null},"last public key"),(0,l.kt)("th",{parentName:"tr",align:null},"IP"),(0,l.kt)("th",{parentName:"tr",align:null},"P2P port"),(0,l.kt)("th",{parentName:"tr",align:null},"HTTP port"),(0,l.kt)("th",{parentName:"tr",align:null},"geo patch"),(0,l.kt)("th",{parentName:"tr",align:null},"network patch"),(0,l.kt)("th",{parentName:"tr",align:null},"average availability"),(0,l.kt)("th",{parentName:"tr",align:null},"availability history"),(0,l.kt)("th",{parentName:"tr",align:null},"enrollment date"),(0,l.kt)("th",{parentName:"tr",align:null},"transport"),(0,l.kt)("th",{parentName:"tr",align:null},"reward ddress")))),(0,l.kt)("p",null,"This table contains all the P2P information for a given node index by its first public key"),(0,l.kt)("h3",{id:"availability-lookup-table"},"Availability lookup table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key")))),(0,l.kt)("p",null,"This table indicates the node availability, if its first public key is present in the table.\nThe purpose of this short table is to provide a really fast access to determine the availability."),(0,l.kt)("h3",{id:"authorized-nodes-table"},"Authorized nodes table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key"),(0,l.kt)("th",{parentName:"tr",align:null},"authorization date")))),(0,l.kt)("p",null,"All the node public keys presents in this table will be considered at authorized nodes along with their authorization date."),(0,l.kt)("p",null,"So in order to determine if a node is authorized a fast lookup can be performed."),(0,l.kt)("p",null,"In the same order, to get the list of authorized nodes by folding this table which can then lookup data from the discovery table to fetch all the information regarding the authorized node."),(0,l.kt)("h3",{id:"nodes-key-lookup-table"},"Nodes key lookup table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"last public key"),(0,l.kt)("th",{parentName:"tr",align:null},"first public key")))),(0,l.kt)("p",null,"This is a reverse ordered table where we can have access to the first node public key from its last public key, without traversing the entire discovery table"))}c.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8208],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>b});var r=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var u=r.createContext({}),p=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=p(a),h=l,b=d["".concat(u,".").concat(h)]||d[h]||c[h]||n;return a?r.createElement(b,i(i({ref:t},s),{},{components:a})):r.createElement(b,i({ref:t},s))}));function b(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,i=new Array(n);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:l,i[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>c,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var r=a(7462),l=(a(7294),a(3905));a(8209);const n={id:"node",title:"Node"},i=void 0,o={unversionedId:"build/core/p2p/node",id:"build/core/p2p/node",title:"Node",description:"Data structure",source:"@site/docs/build/core/p2p/node.md",sourceDirName:"build/core/p2p",slug:"/build/core/p2p/node",permalink:"/build/core/p2p/node",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"node",title:"Node"},sidebar:"docs",previous:{title:"Messaging",permalink:"/build/core/p2p/messaging"},next:{title:"SDK",permalink:"/build/sdk/"}},u={},p=[{value:"Data structure",id:"data-structure",level:2},{value:"P2P tables view",id:"p2p-tables-view",level:2},{value:"Discovery table",id:"discovery-table",level:3},{value:"Availability lookup table",id:"availability-lookup-table",level:3},{value:"Authorized nodes table",id:"authorized-nodes-table",level:3},{value:"Nodes key lookup table",id:"nodes-key-lookup-table",level:3}],s={toc:p},d="wrapper";function c(e){let{components:t,...a}=e;return(0,l.kt)(d,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"data-structure"},"Data structure"),(0,l.kt)("p",null,"Archethic is using a structured and open P2P network based on some properties:"),(0,l.kt)("p",null,"A node include a list P2P information such as:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"IP"),(0,l.kt)("li",{parentName:"ul"},"P2P Port"),(0,l.kt)("li",{parentName:"ul"},"HTTP Port (Web layer - Explorer)"),(0,l.kt)("li",{parentName:"ul"},"P2P Protocol (i.e TCP)"),(0,l.kt)("li",{parentName:"ul"},"First public key"),(0,l.kt)("li",{parentName:"ul"},"Last public key"),(0,l.kt)("li",{parentName:"ul"},"GeoPatch (for geographical distribution based on the GeoIP of the IP)"),(0,l.kt)("li",{parentName:"ul"},"NetworkPatch (for P2P responsiveness based on the latency to reach it)"),(0,l.kt)("li",{parentName:"ul"},"Reward address (the address where the mining rewards should be sent)"),(0,l.kt)("li",{parentName:"ul"},"Global availability (from BeaconChain qualification)"),(0,l.kt)("li",{parentName:"ul"},"Local availability (from Supervised Multicast)"),(0,l.kt)("li",{parentName:"ul"},"Average availability (from BeaconChain qualification)"),(0,l.kt)("li",{parentName:"ul"},"Authorized"),(0,l.kt)("li",{parentName:"ul"},"Authorization Date")),(0,l.kt)("h2",{id:"p2p-tables-view"},"P2P tables view"),(0,l.kt)("p",null,"The application is stored a P2P view in memory table using ETS (Erlang Term Storage) to support fast query to fetch node information."),(0,l.kt)("p",null,"When network transaction(node, node shared secrets) are loaded inside the system, ",(0,l.kt)("inlineCode",{parentName:"p"},"MemTableLoader")," module is called to populate the tables. This is also true during the bootstrap of the node to fill up the data as cache."),(0,l.kt)("h3",{id:"discovery-table"},"Discovery table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key"),(0,l.kt)("th",{parentName:"tr",align:null},"last public key"),(0,l.kt)("th",{parentName:"tr",align:null},"IP"),(0,l.kt)("th",{parentName:"tr",align:null},"P2P port"),(0,l.kt)("th",{parentName:"tr",align:null},"HTTP port"),(0,l.kt)("th",{parentName:"tr",align:null},"geo patch"),(0,l.kt)("th",{parentName:"tr",align:null},"network patch"),(0,l.kt)("th",{parentName:"tr",align:null},"average availability"),(0,l.kt)("th",{parentName:"tr",align:null},"availability history"),(0,l.kt)("th",{parentName:"tr",align:null},"enrollment date"),(0,l.kt)("th",{parentName:"tr",align:null},"transport"),(0,l.kt)("th",{parentName:"tr",align:null},"reward ddress")))),(0,l.kt)("p",null,"This table contains all the P2P information for a given node index by its first public key"),(0,l.kt)("h3",{id:"availability-lookup-table"},"Availability lookup table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key")))),(0,l.kt)("p",null,"This table indicates the node availability, if its first public key is present in the table.\nThe purpose of this short table is to provide a really fast access to determine the availability."),(0,l.kt)("h3",{id:"authorized-nodes-table"},"Authorized nodes table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"first public key"),(0,l.kt)("th",{parentName:"tr",align:null},"authorization date")))),(0,l.kt)("p",null,"All the node public keys presents in this table will be considered at authorized nodes along with their authorization date."),(0,l.kt)("p",null,"So in order to determine if a node is authorized a fast lookup can be performed."),(0,l.kt)("p",null,"In the same order, to get the list of authorized nodes by folding this table which can then lookup data from the discovery table to fetch all the information regarding the authorized node."),(0,l.kt)("h3",{id:"nodes-key-lookup-table"},"Nodes key lookup table"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"last public key"),(0,l.kt)("th",{parentName:"tr",align:null},"first public key")))),(0,l.kt)("p",null,"This is a reverse ordered table where we can have access to the first node public key from its last public key, without traversing the entire discovery table"))}c.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/c47075b4.a25fedf9.js b/assets/js/c47075b4.2c8cecfa.js similarity index 98% rename from assets/js/c47075b4.a25fedf9.js rename to assets/js/c47075b4.2c8cecfa.js index ef12920fe..e41e5cf6b 100644 --- a/assets/js/c47075b4.a25fedf9.js +++ b/assets/js/c47075b4.2c8cecfa.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7136],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(n),m=r,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return n?a.createElement(f,s(s({ref:t},d),{},{components:n})):a.createElement(f,s({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>l,contentTitle:()=>i,default:()=>b,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const s={id:"transaction",title:"transaction",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/transaction",id:"build/api/schema/queries/transaction",title:"transaction",description:"Query the network to find a transaction",source:"@site/docs/build/api/schema/queries/transaction.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction",permalink:"/build/api/schema/queries/transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction",title:"transaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionInputs",permalink:"/build/api/schema/queries/transaction-inputs"},next:{title:"transactions",permalink:"/build/api/schema/queries/transactions"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transaction.addressAddress! ',id:"code-style-fontweight-normal-transactionbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a transaction"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transaction(\n address: Address!\n): Transaction\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transaction.",(0,o.kt)("b",null,"address"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7136],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(n),m=r,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||o;return n?a.createElement(f,s(s({ref:t},d),{},{components:n})):a.createElement(f,s({ref:t},d))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:r,s[1]=i;for(var l=2;l{n.r(t),n.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>l,contentTitle:()=>i,default:()=>b,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var a=n(7462),r=n(7294),o=n(3905);n(8209);const s={id:"transaction",title:"transaction",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/queries/transaction",id:"build/api/schema/queries/transaction",title:"transaction",description:"Query the network to find a transaction",source:"@site/docs/build/api/schema/queries/transaction.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/transaction",permalink:"/build/api/schema/queries/transaction",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction",title:"transaction",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"transactionInputs",permalink:"/build/api/schema/queries/transaction-inputs"},next:{title:"transactions",permalink:"/build/api/schema/queries/transactions"}},l={},d=[{value:"Arguments",id:"arguments",level:3},{value:'transaction.addressAddress! ',id:"code-style-fontweight-normal-transactionbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Transaction ',id:"transaction-",level:4}],u=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,a.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Query the network to find a transaction"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"transaction(\n address: Address!\n): Transaction\n")),(0,o.kt)("h3",{id:"arguments"},"Arguments"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-transactionbaddressbcodeaddress--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"transaction.",(0,o.kt)("b",null,"address"))),(0,o.kt)(u,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,o.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"type"},"Type"),(0,o.kt)("h4",{id:"transaction-"},(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"[Transaction]"," represents a unitary transaction in the Archethic network.")))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/c4bb8d44.0007b4a3.js b/assets/js/c4bb8d44.93e50b0e.js similarity index 99% rename from assets/js/c4bb8d44.0007b4a3.js rename to assets/js/c4bb8d44.93e50b0e.js index 001c527ea..ac7fcf79f 100644 --- a/assets/js/c4bb8d44.0007b4a3.js +++ b/assets/js/c4bb8d44.93e50b0e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9852],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},h=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=l(n),u=i,m=d["".concat(c,".").concat(u)]||d[u]||p[u]||o;return n?a.createElement(m,r(r({ref:t},h),{},{components:n})):a.createElement(m,r({ref:t},h))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,r[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"p2p",title:"P2P"},r=void 0,s={unversionedId:"learn/p2p/p2p",id:"learn/p2p/p2p",title:"P2P",description:"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys",source:"@site/docs/learn/p2p/README.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/",permalink:"/learn/p2p/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"p2p",title:"P2P"},sidebar:"docs",previous:{title:"OracleChain",permalink:"/learn/oracle-chain"},next:{title:"Bootstrapping",permalink:"/learn/p2p/bootstrapping"}},c={},l=[{value:"Existing solutions",id:"existing-solutions",level:2},{value:"Gossip",id:"gossip",level:3},{value:"Broadcast",id:"broadcast",level:3},{value:"Archethic's way",id:"archethics-way",level:2},{value:"Transaction Validation Process",id:"transaction-validation-process",level:3},{value:"Network transaction chains",id:"network-transaction-chains",level:3},{value:"Beacons Chains",id:"beacons-chains",level:3},{value:"Data propagation",id:"data-propagation",level:3}],h={toc:l},d="wrapper";function p(e){let{components:t,...o}=e;return(0,i.kt)(d,(0,a.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys\navoiding any disclosure of keys. (See ",(0,i.kt)("a",{parentName:"p",href:"/learn/cryptography/hardware-root-of-trust"},"Hardware Root of Trust"),")"),(0,i.kt)("p",null,"However, the network is able to detect if the new joined nodes should act as validation nodes by authorizing them to validate transactions."),(0,i.kt)("p",null,"So to achieve an unlimited permissionless network, the entire P2P layer have been redesigned from the ground to be more effective to support higher TPS and adaption."),(0,i.kt)("h2",{id:"existing-solutions"},"Existing solutions"),(0,i.kt)("p",null,"In the current P2P and distributed networks, there are two methods of communication for discovery and data propagation: "),(0,i.kt)("h3",{id:"gossip"},"Gossip"),(0,i.kt)("p",null,"Inspired from the gossip in the social network, Gossip's properties are defined by the knowledge of the outgoing neighbors, which means each node of the network will discover the properties of the other nodes by interrogating them randomly periodically."),(0,i.kt)("p",null,"While this approach is high available and fault tolerant, it's performing some unnecessary network traffic and sending data through nearest nodes for propagation. This will use most of the bandwidth and is subject to network latency. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"gossip",src:n(4989).Z,width:"611",height:"431"})),(0,i.kt)("h3",{id:"broadcast"},"Broadcast"),(0,i.kt)("p",null,"Classical and native communication is called Broadcast which is defined by the knowledge of the incoming neighbors dispatch the data through all the nodes."),(0,i.kt)("p",null,"This mode of communication is efficient in a small network but in a bigger network the complexity time will not scale."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"broadcast",src:n(8517).Z,width:"451",height:"451"})),(0,i.kt)("h2",{id:"archethics-way"},"Archethic's way"),(0,i.kt)("p",null,"Archethic introduces a new concept called: ",(0,i.kt)("inlineCode",{parentName:"p"},"Supervised Multicast")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"supervised_multicast",src:n(4064).Z,width:"431",height:"421"})),(0,i.kt)("p",null,"Archethic is using a hybrid communication that uses Supervised Multicast, which is closer to the properties of Multicast network.\nIt uses some kind of Multi Unicast communication protocol, where a node communicates with a group of nodes during several phases: transaction validation/replication, beacon chain, self-repair phases, while keeping the exchanging low if no activity is present. "),(0,i.kt)("h3",{id:"transaction-validation-process"},"Transaction Validation Process"),(0,i.kt)("p",null,"During transaction validation through mining and replication, nodes communicates and are able to gather information from incoming or outgoing connection."),(0,i.kt)("p",null,"When a node receives a message or send a message, it can capitalize on this information to determine if the node is available or not, in a local view.\nThen through this view, if the node is not considered as available it can pick another node to fetch an information, while data pushing will remain to check/recheck the availability over time."),(0,i.kt)("h3",{id:"network-transaction-chains"},"Network transaction chains"),(0,i.kt)("p",null,"Network transaction chains are a way to announce information to the network through consensus and replicated throw all the nodes."),(0,i.kt)("p",null,"Other networks may leverage gossip for P2P information, Archethic uses transaction based node information for P2P connectivity and cryptography.\nSo when a node joins/rejoins the network or when its IP/Port/Key changed, a new transaction is disseminated to all the nodes in the network after its validation."),(0,i.kt)("p",null,"Then each node knows the entire list of nodes allowed to participate in the network through the use of Node transaction chains.\nTo provide a high level of security and privacy, each connection is encrypted and authenticated by the first node public key known from the transaction chains."),(0,i.kt)("h3",{id:"beacons-chains"},"Beacons Chains"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," is a sharded layer able to monitor the entire network and therefore able to snapshot and sample P2P availability/latencies to produce summaries each day to maintain a qualified vision of the network."),(0,i.kt)("p",null,"The P2P availability can also be broadcasted to the network in a shorter time range (such a epoch/slot times) to provide a fresher node availability."),(0,i.kt)("h3",{id:"data-propagation"},"Data propagation"),(0,i.kt)("p",null,"Archethic uses a ",(0,i.kt)("a",{parentName:"p",href:"/learn/sharding"},"sharding")," and distributed replication.\nThis property limits the number of information and messages sent through the network to reduce bandwidth and data traffic"))}p.isMDXComponent=!0},8517:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/broadcast-c18e0f2b670f7a2d10c0b2e372e191be.svg"},4989:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/gossip-5aba8d31999ec7981edfdd3fe1b5c7ce.svg"},4064:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/supervised_multicast-928366485a4348d3539b30b60bcc06ea.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9852],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},h=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=l(n),u=i,m=d["".concat(c,".").concat(u)]||d[u]||p[u]||o;return n?a.createElement(m,r(r({ref:t},h),{},{components:n})):a.createElement(m,r({ref:t},h))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,r[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"p2p",title:"P2P"},r=void 0,s={unversionedId:"learn/p2p/p2p",id:"learn/p2p/p2p",title:"P2P",description:"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys",source:"@site/docs/learn/p2p/README.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/",permalink:"/learn/p2p/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"p2p",title:"P2P"},sidebar:"docs",previous:{title:"OracleChain",permalink:"/learn/oracle-chain"},next:{title:"Bootstrapping",permalink:"/learn/p2p/bootstrapping"}},c={},l=[{value:"Existing solutions",id:"existing-solutions",level:2},{value:"Gossip",id:"gossip",level:3},{value:"Broadcast",id:"broadcast",level:3},{value:"Archethic's way",id:"archethics-way",level:2},{value:"Transaction Validation Process",id:"transaction-validation-process",level:3},{value:"Network transaction chains",id:"network-transaction-chains",level:3},{value:"Beacons Chains",id:"beacons-chains",level:3},{value:"Data propagation",id:"data-propagation",level:3}],h={toc:l},d="wrapper";function p(e){let{components:t,...o}=e;return(0,i.kt)(d,(0,a.Z)({},h,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic is a permissionless network where any node can participate into the network as long as they have some hardware requirements such secure element to enclave the private keys\navoiding any disclosure of keys. (See ",(0,i.kt)("a",{parentName:"p",href:"/learn/cryptography/hardware-root-of-trust"},"Hardware Root of Trust"),")"),(0,i.kt)("p",null,"However, the network is able to detect if the new joined nodes should act as validation nodes by authorizing them to validate transactions."),(0,i.kt)("p",null,"So to achieve an unlimited permissionless network, the entire P2P layer have been redesigned from the ground to be more effective to support higher TPS and adaption."),(0,i.kt)("h2",{id:"existing-solutions"},"Existing solutions"),(0,i.kt)("p",null,"In the current P2P and distributed networks, there are two methods of communication for discovery and data propagation: "),(0,i.kt)("h3",{id:"gossip"},"Gossip"),(0,i.kt)("p",null,"Inspired from the gossip in the social network, Gossip's properties are defined by the knowledge of the outgoing neighbors, which means each node of the network will discover the properties of the other nodes by interrogating them randomly periodically."),(0,i.kt)("p",null,"While this approach is high available and fault tolerant, it's performing some unnecessary network traffic and sending data through nearest nodes for propagation. This will use most of the bandwidth and is subject to network latency. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"gossip",src:n(4989).Z,width:"611",height:"431"})),(0,i.kt)("h3",{id:"broadcast"},"Broadcast"),(0,i.kt)("p",null,"Classical and native communication is called Broadcast which is defined by the knowledge of the incoming neighbors dispatch the data through all the nodes."),(0,i.kt)("p",null,"This mode of communication is efficient in a small network but in a bigger network the complexity time will not scale."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"broadcast",src:n(8517).Z,width:"451",height:"451"})),(0,i.kt)("h2",{id:"archethics-way"},"Archethic's way"),(0,i.kt)("p",null,"Archethic introduces a new concept called: ",(0,i.kt)("inlineCode",{parentName:"p"},"Supervised Multicast")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"supervised_multicast",src:n(4064).Z,width:"431",height:"421"})),(0,i.kt)("p",null,"Archethic is using a hybrid communication that uses Supervised Multicast, which is closer to the properties of Multicast network.\nIt uses some kind of Multi Unicast communication protocol, where a node communicates with a group of nodes during several phases: transaction validation/replication, beacon chain, self-repair phases, while keeping the exchanging low if no activity is present. "),(0,i.kt)("h3",{id:"transaction-validation-process"},"Transaction Validation Process"),(0,i.kt)("p",null,"During transaction validation through mining and replication, nodes communicates and are able to gather information from incoming or outgoing connection."),(0,i.kt)("p",null,"When a node receives a message or send a message, it can capitalize on this information to determine if the node is available or not, in a local view.\nThen through this view, if the node is not considered as available it can pick another node to fetch an information, while data pushing will remain to check/recheck the availability over time."),(0,i.kt)("h3",{id:"network-transaction-chains"},"Network transaction chains"),(0,i.kt)("p",null,"Network transaction chains are a way to announce information to the network through consensus and replicated throw all the nodes."),(0,i.kt)("p",null,"Other networks may leverage gossip for P2P information, Archethic uses transaction based node information for P2P connectivity and cryptography.\nSo when a node joins/rejoins the network or when its IP/Port/Key changed, a new transaction is disseminated to all the nodes in the network after its validation."),(0,i.kt)("p",null,"Then each node knows the entire list of nodes allowed to participate in the network through the use of Node transaction chains.\nTo provide a high level of security and privacy, each connection is encrypted and authenticated by the first node public key known from the transaction chains."),(0,i.kt)("h3",{id:"beacons-chains"},"Beacons Chains"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," is a sharded layer able to monitor the entire network and therefore able to snapshot and sample P2P availability/latencies to produce summaries each day to maintain a qualified vision of the network."),(0,i.kt)("p",null,"The P2P availability can also be broadcasted to the network in a shorter time range (such a epoch/slot times) to provide a fresher node availability."),(0,i.kt)("h3",{id:"data-propagation"},"Data propagation"),(0,i.kt)("p",null,"Archethic uses a ",(0,i.kt)("a",{parentName:"p",href:"/learn/sharding"},"sharding")," and distributed replication.\nThis property limits the number of information and messages sent through the network to reduce bandwidth and data traffic"))}p.isMDXComponent=!0},8517:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/broadcast-c18e0f2b670f7a2d10c0b2e372e191be.svg"},4989:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/gossip-5aba8d31999ec7981edfdd3fe1b5c7ce.svg"},4064:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/supervised_multicast-928366485a4348d3539b30b60bcc06ea.svg"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/c65c1395.ea7bda6d.js b/assets/js/c65c1395.0be46385.js similarity index 98% rename from assets/js/c65c1395.ea7bda6d.js rename to assets/js/c65c1395.0be46385.js index 04014bc69..b6abcb6b0 100644 --- a/assets/js/c65c1395.ea7bda6d.js +++ b/assets/js/c65c1395.0be46385.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5344],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),f=a,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>c,default:()=>b,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"transaction-type",title:"TransactionType",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/scalars/transaction-type",id:"build/api/schema/scalars/transaction-type",title:"TransactionType",description:"The [TransactionType] scalar type represents a transaction type",source:"@site/docs/build/api/schema/scalars/transaction-type.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/transaction-type",permalink:"/build/api/schema/scalars/transaction-type",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-type",title:"TransactionType",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenProperties",permalink:"/build/api/schema/scalars/token-properties"},next:{title:"oracleUpdate",permalink:"/build/api/schema/subscriptions/oracle-update"}},l={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:u,SpecifiedBy:d,Badge:f},y="wrapper";function b(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ","[TransactionType]"," scalar type represents a transaction type"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar TransactionType\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,o.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,o.kt)(f,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5344],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),f=a,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(m,i(i({ref:t},p),{},{components:r})):n.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var l=2;l{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>u,SpecifiedBy:()=>d,assets:()=>l,contentTitle:()=>c,default:()=>b,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=r(7462),a=r(7294),o=r(3905);r(8209);const i={id:"transaction-type",title:"TransactionType",hide_table_of_contents:!1},c=void 0,s={unversionedId:"build/api/schema/scalars/transaction-type",id:"build/api/schema/scalars/transaction-type",title:"TransactionType",description:"The [TransactionType] scalar type represents a transaction type",source:"@site/docs/build/api/schema/scalars/transaction-type.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/transaction-type",permalink:"/build/api/schema/scalars/transaction-type",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-type",title:"TransactionType",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenProperties",permalink:"/build/api/schema/scalars/token-properties"},next:{title:"oracleUpdate",permalink:"/build/api/schema/subscriptions/oracle-update"}},l={},p=[{value:"Member of",id:"member-of",level:3}],u=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:u,SpecifiedBy:d,Badge:f},y="wrapper";function b(e){let{components:t,...r}=e;return(0,o.kt)(y,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ","[TransactionType]"," scalar type represents a transaction type"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar TransactionType\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/queries/network-transactions"},(0,o.kt)("inlineCode",{parentName:"a"},"networkTransactions"))," ",(0,o.kt)(f,{class:"secondary",text:"query",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/c8c61268.a04e6b67.js b/assets/js/c8c61268.1cc02e9e.js similarity index 98% rename from assets/js/c8c61268.a04e6b67.js rename to assets/js/c8c61268.1cc02e9e.js index 3af4ae185..d9d52f5e7 100644 --- a/assets/js/c8c61268.a04e6b67.js +++ b/assets/js/c8c61268.1cc02e9e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9909],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(n),f=o,h=d["".concat(p,".").concat(f)]||d[f]||u[f]||i;return n?r.createElement(h,a(a({ref:t},c),{},{components:n})):r.createElement(h,a({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"bootstrapping",title:"Bootstrapping"},a=void 0,s={unversionedId:"learn/p2p/bootstrapping",id:"learn/p2p/bootstrapping",title:"Bootstrapping",description:"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed",source:"@site/docs/learn/p2p/bootstrapping.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/bootstrapping",permalink:"/learn/p2p/bootstrapping",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"bootstrapping",title:"Bootstrapping"},sidebar:"docs",previous:{title:"P2P",permalink:"/learn/p2p/"},next:{title:"Self Repair",permalink:"/learn/p2p/self-repair"}},p={},l=[{value:"Joining",id:"joining",level:2},{value:"Updates",id:"updates",level:2},{value:"Synchronization",id:"synchronization",level:2}],c={toc:l},d="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed\nwhen a node is bootstrapping. These operations will ensure synchronization and P2P awareness."),(0,o.kt)("h2",{id:"joining"},"Joining"),(0,o.kt)("p",null,'When a node joins the network for the first time, it will request from a list of preconfigured nodes to reach (called "bootstrapping seeds"), the closest nodes from its position.'),(0,o.kt)("p",null,"Then, it will generate a first node transaction including as data: ip, port, protocol, reward address, key certificate (to ensure the key is coming from a secure element)\nOnce the network will attest and verify its transaction, the node will be able to start a SelfRepair process"),(0,o.kt)("h2",{id:"updates"},"Updates"),(0,o.kt)("p",null,"When a node rejoins the network after some time, depending on if its previous data expired, it will generate a new transaction with the new information"),(0,o.kt)("h2",{id:"synchronization"},"Synchronization"),(0,o.kt)("p",null,"Once the transaction is validated, the node will start by requesting the list of nodes."),(0,o.kt)("p",null,"Then, it will start the ",(0,o.kt)("a",{parentName:"p",href:"/learn/p2p/self-repair"},"Self-Repair")," sequence to get and synchronize the missing transactions and publish its end of sync to the network."),(0,o.kt)("p",null,"By this way, the entire will know the existence the readiness of this node."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9909],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(n),f=o,h=d["".concat(p,".").concat(f)]||d[f]||u[f]||i;return n?r.createElement(h,a(a({ref:t},c),{},{components:n})):r.createElement(h,a({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));n(8209);const i={id:"bootstrapping",title:"Bootstrapping"},a=void 0,s={unversionedId:"learn/p2p/bootstrapping",id:"learn/p2p/bootstrapping",title:"Bootstrapping",description:"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed",source:"@site/docs/learn/p2p/bootstrapping.md",sourceDirName:"learn/p2p",slug:"/learn/p2p/bootstrapping",permalink:"/learn/p2p/bootstrapping",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"bootstrapping",title:"Bootstrapping"},sidebar:"docs",previous:{title:"P2P",permalink:"/learn/p2p/"},next:{title:"Self Repair",permalink:"/learn/p2p/self-repair"}},p={},l=[{value:"Joining",id:"joining",level:2},{value:"Updates",id:"updates",level:2},{value:"Synchronization",id:"synchronization",level:2}],c={toc:l},d="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed\nwhen a node is bootstrapping. These operations will ensure synchronization and P2P awareness."),(0,o.kt)("h2",{id:"joining"},"Joining"),(0,o.kt)("p",null,'When a node joins the network for the first time, it will request from a list of preconfigured nodes to reach (called "bootstrapping seeds"), the closest nodes from its position.'),(0,o.kt)("p",null,"Then, it will generate a first node transaction including as data: ip, port, protocol, reward address, key certificate (to ensure the key is coming from a secure element)\nOnce the network will attest and verify its transaction, the node will be able to start a SelfRepair process"),(0,o.kt)("h2",{id:"updates"},"Updates"),(0,o.kt)("p",null,"When a node rejoins the network after some time, depending on if its previous data expired, it will generate a new transaction with the new information"),(0,o.kt)("h2",{id:"synchronization"},"Synchronization"),(0,o.kt)("p",null,"Once the transaction is validated, the node will start by requesting the list of nodes."),(0,o.kt)("p",null,"Then, it will start the ",(0,o.kt)("a",{parentName:"p",href:"/learn/p2p/self-repair"},"Self-Repair")," sequence to get and synchronize the missing transactions and publish its end of sync to the network."),(0,o.kt)("p",null,"By this way, the entire will know the existence the readiness of this node."))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/cc668907.37159abc.js b/assets/js/cc668907.dcb88331.js similarity index 97% rename from assets/js/cc668907.37159abc.js rename to assets/js/cc668907.dcb88331.js index ca60dcc79..b433f7f18 100644 --- a/assets/js/cc668907.37159abc.js +++ b/assets/js/cc668907.dcb88331.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6753],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),c=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(a),m=r,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:r,l[1]=i;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const l={id:"cross-validation-stamp",title:"CrossValidationStamp",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/cross-validation-stamp",id:"build/api/schema/objects/cross-validation-stamp",title:"CrossValidationStamp",description:"[CrossValidationStamp] represents the approval of the validation stamp by a cross validation node.",source:"@site/docs/build/api/schema/objects/cross-validation-stamp.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/cross-validation-stamp",permalink:"/build/api/schema/objects/cross-validation-stamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"cross-validation-stamp",title:"CrossValidationStamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"BeaconChainSummary",permalink:"/build/api/schema/objects/beacon-chain-summary"},next:{title:"Data",permalink:"/build/api/schema/objects/data"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'CrossValidationStamp.nodePublicKeyPublicKey ',id:"code-style-fontweight-normal-crossvalidationstampbnodepublickeybcodepublickey-",level:4},{value:'CrossValidationStamp.signatureHex ',id:"code-style-fontweight-normal-crossvalidationstampbsignaturebcodehex-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[CrossValidationStamp]"," represents the approval of the validation stamp by a cross validation node.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Signature: signature of the validation stamp"),(0,o.kt)("li",{parentName:"ul"},"Node public key: cross validation node's public key")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type CrossValidationStamp {\n nodePublicKey: PublicKey\n signature: Hex\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-crossvalidationstampbnodepublickeybcodepublickey-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"CrossValidationStamp.",(0,o.kt)("b",null,"nodePublicKey"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,o.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-crossvalidationstampbsignaturebcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"CrossValidationStamp.",(0,o.kt)("b",null,"signature"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6753],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),c=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=c(a),m=r,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return a?n.createElement(b,l(l({ref:t},d),{},{components:a})):n.createElement(b,l({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:r,l[1]=i;for(var c=2;c{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=a(7462),r=a(7294),o=a(3905);a(8209);const l={id:"cross-validation-stamp",title:"CrossValidationStamp",hide_table_of_contents:!1},i=void 0,s={unversionedId:"build/api/schema/objects/cross-validation-stamp",id:"build/api/schema/objects/cross-validation-stamp",title:"CrossValidationStamp",description:"[CrossValidationStamp] represents the approval of the validation stamp by a cross validation node.",source:"@site/docs/build/api/schema/objects/cross-validation-stamp.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/cross-validation-stamp",permalink:"/build/api/schema/objects/cross-validation-stamp",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"cross-validation-stamp",title:"CrossValidationStamp",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"BeaconChainSummary",permalink:"/build/api/schema/objects/beacon-chain-summary"},next:{title:"Data",permalink:"/build/api/schema/objects/data"}},c={},d=[{value:"Fields",id:"fields",level:3},{value:'CrossValidationStamp.nodePublicKeyPublicKey ',id:"code-style-fontweight-normal-crossvalidationstampbnodepublickeybcodepublickey-",level:4},{value:'CrossValidationStamp.signatureHex ',id:"code-style-fontweight-normal-crossvalidationstampbsignaturebcodehex-",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(r.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,o.kt)(r.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:p,SpecifiedBy:u,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,o.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[CrossValidationStamp]"," represents the approval of the validation stamp by a cross validation node.\nIt includes:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Signature: signature of the validation stamp"),(0,o.kt)("li",{parentName:"ul"},"Node public key: cross validation node's public key")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type CrossValidationStamp {\n nodePublicKey: PublicKey\n signature: Hex\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-crossvalidationstampbnodepublickeybcodepublickey-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"CrossValidationStamp.",(0,o.kt)("b",null,"nodePublicKey"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/public-key"},(0,o.kt)("inlineCode",{parentName:"a"},"PublicKey"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-crossvalidationstampbsignaturebcodehex-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"CrossValidationStamp.",(0,o.kt)("b",null,"signature"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hex"},(0,o.kt)("inlineCode",{parentName:"a"},"Hex"))," ",(0,o.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,o.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,o.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/cc71d488.c8961cd6.js b/assets/js/cc71d488.15fc1b32.js similarity index 99% rename from assets/js/cc71d488.c8961cd6.js rename to assets/js/cc71d488.15fc1b32.js index 95cb2a056..6d2cd1d3d 100644 --- a/assets/js/cc71d488.c8961cd6.js +++ b/assets/js/cc71d488.15fc1b32.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9216],{3905:(t,e,r)=>{r.d(e,{Zo:()=>g,kt:()=>h});var a=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,a)}return r}function i(t){for(var e=1;e=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var l=a.createContext({}),c=function(t){var e=a.useContext(l),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},g=function(t){var e=c(t.components);return a.createElement(l.Provider,{value:e},t.children)},d="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},p=a.forwardRef((function(t,e){var r=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,g=s(t,["components","mdxType","originalType","parentName"]),d=c(r),p=n,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||o;return r?a.createElement(h,i(i({ref:e},g),{},{components:r})):a.createElement(h,i({ref:e},g))}));function h(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=r.length,i=new Array(o);i[0]=p;var s={};for(var l in e)hasOwnProperty.call(e,l)&&(s[l]=e[l]);s.originalType=t,s[d]="string"==typeof t?t:n,i[1]=s;for(var c=2;c{r.r(e),r.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"build",title:"Smart Contracts Playground - Build",sidebar_label:"Build",sidebar_position:1},i=void 0,s={unversionedId:"build/smart-contracts/playground/build",id:"build/smart-contracts/playground/build",title:"Smart Contracts Playground - Build",description:"Let's create a small smart contracts that reacts to two different triggers. We'll then be able to test them separately.",source:"@site/docs/build/smart-contracts/playground/build.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/build",permalink:"/build/smart-contracts/playground/build",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"build",title:"Smart Contracts Playground - Build",sidebar_label:"Build",sidebar_position:1},sidebar:"docs",previous:{title:"Playground",permalink:"/build/smart-contracts/playground/"},next:{title:"Deploy",permalink:"/build/smart-contracts/playground/deploy"}},l={},c=[{value:"I. Write the contract",id:"i-write-the-contract",level:2},{value:"II. Test the triggers",id:"ii-test-the-triggers",level:2},{value:"Test trigger 'interval'",id:"test-trigger-interval",level:3},{value:"Test trigger 'transaction'",id:"test-trigger-transaction",level:3},{value:"Test trigger 'datetime'",id:"test-trigger-datetime",level:3},{value:"Test trigger 'oracle'",id:"test-trigger-oracle",level:3}],g={toc:c},d="wrapper";function u(t){let{components:e,...o}=t;return(0,n.kt)(d,(0,a.Z)({},g,o,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Let's create a small smart contracts that reacts to two different triggers. We'll then be able to test them separately."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 * * * *" do\n Contract.set_content "Hello from interval"\nend\n\ncondition triggered_by: transaction, as: []\nactions triggered_by: transaction do\n Contract.set_content "Hello from tx"\nend\n')),(0,n.kt)("h2",{id:"i-write-the-contract"},"I. Write the contract"),(0,n.kt)("p",null,"Write the code of the smart contract in the text area:\n",(0,n.kt)("img",{alt:"the contract is written in the textarea",src:r(8933).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"As you write, you might see the console at the bottom reacting with different errors:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"a parsing error visible in the console",src:r(9566).Z,width:"3600",height:"2390"})),(0,n.kt)("h2",{id:"ii-test-the-triggers"},"II. Test the triggers"),(0,n.kt)("p",null,"To test a smart contract, you need to test all its triggers. We are going to open the trigger panel by clicking on the trigger button:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the trigger button",src:r(7624).Z,width:"90",height:"67"})),(0,n.kt)("p",null,"The trigger panel opens on the left hand side:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the trigger panel",src:r(3984).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"You are now able to select which trigger you want to test, for this contract a selector of two triggers is displayed (as per the contract):\nYou'll also see the ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/playground/mock-form"},"mock form")," that is used to mock the functions that does side-effect."),(0,n.kt)("h3",{id:"test-trigger-interval"},"Test trigger 'interval'"),(0,n.kt)("p",null,"An interval trigger is a contract that triggers automatically at a specific interval. It does not require anything so it's pretty easy to test. Just click on the ",(0,n.kt)("inlineCode",{parentName:"p"},"trigger")," button."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the resulting transaction is displayed in the console",src:r(6179).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"What you see above is the JSON representation of the output transaction payload. Here we can control that my contract behaved as expected. The ",(0,n.kt)("inlineCode",{parentName:"p"},"content"),' is set to "Hello from interval" as expected.'),(0,n.kt)("p",null,"You probably saw the ",(0,n.kt)("inlineCode",{parentName:"p"},"trigger and update contract's transaction")," button. Let's click on it to see the difference:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the resulting transaction is displayed in the contract' transaction panel",src:r(1325).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"The difference is not easy to spot, but the transaction of the contract (the right panel) has been updated. This is useful to test a sequence of triggers."),(0,n.kt)("h3",{id:"test-trigger-transaction"},"Test trigger 'transaction'"),(0,n.kt)("p",null,"This trigger is more complex to test because it requires you to mock the transaction that should trigger the contract. After selecting the ",(0,n.kt)("inlineCode",{parentName:"p"},"transaction")," from the trigger selector, a form appears:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the transaction form appears in the panel",src:r(5953).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"This form is composed of two forms:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"the ",(0,n.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/transaction-form"},"transaction form")),(0,n.kt)("li",{parentName:"ol"},"the ",(0,n.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/mock-form"},"mock form"))),(0,n.kt)("p",null,"Which results in a very big form that are covered in the links above. For this contract, we'll just submit the form without changing anything."),(0,n.kt)("p",null,"I can now control that the output transaction payload is correct."),(0,n.kt)("h3",{id:"test-trigger-datetime"},"Test trigger 'datetime'"),(0,n.kt)("p",null,"Testing a 'datetime' trigger is similar to testing a trigger 'interval'."),(0,n.kt)("h3",{id:"test-trigger-oracle"},"Test trigger 'oracle'"),(0,n.kt)("p",null,"Testing an 'oracle' trigger is similar to testing a trigger 'transaction' (where the transaction is of type 'oracle')."),(0,n.kt)("admonition",{title:"That's it!",type:"success"},(0,n.kt)("p",{parentName:"admonition"},"You should now be able to build your own smart contracts and test them! The next step now is to ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/playground/deploy"},"deploy them"),".")))}u.isMDXComponent=!0},8933:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step1-d174efd7243f621764cf7dc42672f055.png"},6179:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2a-1b389fceb33d5b61491396bee90616f0.png"},5953:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2b-0ec2d5f241bbb36f96d1f11409ba1438.png"},1325:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2e-c1d5cb06bc75cc1e631aae66a1b3f715.png"},7624:(t,e,r)=>{r.d(e,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABDCAYAAAAccRJRAAADjklEQVR4Xu2aPWgTYRjHn065LiYuTafExUSH4lLbJdrB1qVWoR+Cn6BFEcRBRBDBSRB3P1FbwU+wH6C1i20HPxZrF62DrYvpYq6LiUsvk77PyZVrzNd7uTxX6P8gZMj7Pv+73/3zfFzSEN/e/odw1J1AA0DXnbEtANAynAFaiDNAA7QUASEd5GiAFiIgJANHA7QQASEZOBqghQgIycDRAC1EQEgGjgZoIQJCMnD0RgO9o6WFwuFNvl52NpejL/NffY3pNdi6cPTezk5qb2v1eg1l932cnaM309N1ia0TNHDQRihEFy+cpxXLoonXk2RZeZ3zL7nWMELUs6+bGg2Drl677kvMWoIEDjoei9Hxo4fpRzpNj58+r+Va/tt77Mgh2hKP06Mnzyi9tORrbN1gAK1LzON6gPYITnfbugW9e1eKOtRL53j7/gO9Uy/nQOpw0SuVoxl0285WmpqaoYXFRbLy/4rklcuX7HenwHExTSYS1NW1h2Y/zQF0KWeWA8173A4tBtqJyzemcD0cXYWjeYDJLJtkmstr7lGho50Po9Emam6K0uf5eaSOQldzauhIpchoNOyPuMUbGR1fTRPFvgWlQLvXcjoZ6O+1Wzs+rBVLDS0za26CTu73Y21gxZAdu7+n2x5UTNMkQw0WzdEo/crm6ObtOyWvrRrQ586eoUg4QhkV11LxoyouDy6vJiYDgx0Y6FODJ2yw94aGV9PDQF8vbUsm6MXomCqA34vCrgQ6mdhKB/v76NvCIo2MjdsxOK2cHjxJPzMmPRh+6IdBtWMEBroYMKelK2zT3FdVCXSpGJX2aZPT3BAY6CAczank/tAGc7STo7lQcXcRVjl1cyRM2VyWbty660uO5lSRz1urRXFD5mgmybB50OBCVc+ugwsuDz7u1k/zm1/z8sBSh3Pmuk/vdHItBhaXP3RAO8+ueXs1z5gB2iNop3Xj7eVaQCc8QHsA7Qwh7mRZabgBaA+gvVQjgAZoL76pbY9OMdRVgqNdxJxOggeXl+pX8Lzqef04Qqo3P6B+Becng9V0KH5olosReB/NJ4f/ddT7Nrvi85QYj8d8+7dSLveb0umlQKdBN7514WjB+xmYFEALoQdogBYiICQDRwO0EAEhGTgaoIUICMnA0QAtREBIBo4GaCECQjJwNEALERCSgaMBWoiAkAwcDdBCBIRk4GiAFiIgJANHA7QQASEZOFoI9F+dpylcDyuw1AAAAABJRU5ErkJggg=="},9566:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_parse_error-ed4c0a0a7c8cb31134641160c5c416fd.png"},3984:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_trigger_panel-8fdbf19ac3c721478edeccaa6aab9126.png"},8209:(t,e,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9216],{3905:(t,e,r)=>{r.d(e,{Zo:()=>g,kt:()=>h});var a=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,a)}return r}function i(t){for(var e=1;e=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var l=a.createContext({}),c=function(t){var e=a.useContext(l),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},g=function(t){var e=c(t.components);return a.createElement(l.Provider,{value:e},t.children)},d="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},p=a.forwardRef((function(t,e){var r=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,g=s(t,["components","mdxType","originalType","parentName"]),d=c(r),p=n,h=d["".concat(l,".").concat(p)]||d[p]||u[p]||o;return r?a.createElement(h,i(i({ref:e},g),{},{components:r})):a.createElement(h,i({ref:e},g))}));function h(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=r.length,i=new Array(o);i[0]=p;var s={};for(var l in e)hasOwnProperty.call(e,l)&&(s[l]=e[l]);s.originalType=t,s[d]="string"==typeof t?t:n,i[1]=s;for(var c=2;c{r.r(e),r.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=r(7462),n=(r(7294),r(3905));r(8209);const o={id:"build",title:"Smart Contracts Playground - Build",sidebar_label:"Build",sidebar_position:1},i=void 0,s={unversionedId:"build/smart-contracts/playground/build",id:"build/smart-contracts/playground/build",title:"Smart Contracts Playground - Build",description:"Let's create a small smart contracts that reacts to two different triggers. We'll then be able to test them separately.",source:"@site/docs/build/smart-contracts/playground/build.md",sourceDirName:"build/smart-contracts/playground",slug:"/build/smart-contracts/playground/build",permalink:"/build/smart-contracts/playground/build",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"build",title:"Smart Contracts Playground - Build",sidebar_label:"Build",sidebar_position:1},sidebar:"docs",previous:{title:"Playground",permalink:"/build/smart-contracts/playground/"},next:{title:"Deploy",permalink:"/build/smart-contracts/playground/deploy"}},l={},c=[{value:"I. Write the contract",id:"i-write-the-contract",level:2},{value:"II. Test the triggers",id:"ii-test-the-triggers",level:2},{value:"Test trigger 'interval'",id:"test-trigger-interval",level:3},{value:"Test trigger 'transaction'",id:"test-trigger-transaction",level:3},{value:"Test trigger 'datetime'",id:"test-trigger-datetime",level:3},{value:"Test trigger 'oracle'",id:"test-trigger-oracle",level:3}],g={toc:c},d="wrapper";function u(t){let{components:e,...o}=t;return(0,n.kt)(d,(0,a.Z)({},g,o,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Let's create a small smart contracts that reacts to two different triggers. We'll then be able to test them separately."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-elixir"},'@version 1\n\nactions triggered_by: interval, at: "0 * * * *" do\n Contract.set_content "Hello from interval"\nend\n\ncondition triggered_by: transaction, as: []\nactions triggered_by: transaction do\n Contract.set_content "Hello from tx"\nend\n')),(0,n.kt)("h2",{id:"i-write-the-contract"},"I. Write the contract"),(0,n.kt)("p",null,"Write the code of the smart contract in the text area:\n",(0,n.kt)("img",{alt:"the contract is written in the textarea",src:r(8933).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"As you write, you might see the console at the bottom reacting with different errors:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"a parsing error visible in the console",src:r(9566).Z,width:"3600",height:"2390"})),(0,n.kt)("h2",{id:"ii-test-the-triggers"},"II. Test the triggers"),(0,n.kt)("p",null,"To test a smart contract, you need to test all its triggers. We are going to open the trigger panel by clicking on the trigger button:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the trigger button",src:r(7624).Z,width:"90",height:"67"})),(0,n.kt)("p",null,"The trigger panel opens on the left hand side:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the trigger panel",src:r(3984).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"You are now able to select which trigger you want to test, for this contract a selector of two triggers is displayed (as per the contract):\nYou'll also see the ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/playground/mock-form"},"mock form")," that is used to mock the functions that does side-effect."),(0,n.kt)("h3",{id:"test-trigger-interval"},"Test trigger 'interval'"),(0,n.kt)("p",null,"An interval trigger is a contract that triggers automatically at a specific interval. It does not require anything so it's pretty easy to test. Just click on the ",(0,n.kt)("inlineCode",{parentName:"p"},"trigger")," button."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the resulting transaction is displayed in the console",src:r(6179).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"What you see above is the JSON representation of the output transaction payload. Here we can control that my contract behaved as expected. The ",(0,n.kt)("inlineCode",{parentName:"p"},"content"),' is set to "Hello from interval" as expected.'),(0,n.kt)("p",null,"You probably saw the ",(0,n.kt)("inlineCode",{parentName:"p"},"trigger and update contract's transaction")," button. Let's click on it to see the difference:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the resulting transaction is displayed in the contract' transaction panel",src:r(1325).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"The difference is not easy to spot, but the transaction of the contract (the right panel) has been updated. This is useful to test a sequence of triggers."),(0,n.kt)("h3",{id:"test-trigger-transaction"},"Test trigger 'transaction'"),(0,n.kt)("p",null,"This trigger is more complex to test because it requires you to mock the transaction that should trigger the contract. After selecting the ",(0,n.kt)("inlineCode",{parentName:"p"},"transaction")," from the trigger selector, a form appears:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"the transaction form appears in the panel",src:r(5953).Z,width:"3600",height:"2390"})),(0,n.kt)("p",null,"This form is composed of two forms:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"the ",(0,n.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/transaction-form"},"transaction form")),(0,n.kt)("li",{parentName:"ol"},"the ",(0,n.kt)("a",{parentName:"li",href:"/build/smart-contracts/playground/mock-form"},"mock form"))),(0,n.kt)("p",null,"Which results in a very big form that are covered in the links above. For this contract, we'll just submit the form without changing anything."),(0,n.kt)("p",null,"I can now control that the output transaction payload is correct."),(0,n.kt)("h3",{id:"test-trigger-datetime"},"Test trigger 'datetime'"),(0,n.kt)("p",null,"Testing a 'datetime' trigger is similar to testing a trigger 'interval'."),(0,n.kt)("h3",{id:"test-trigger-oracle"},"Test trigger 'oracle'"),(0,n.kt)("p",null,"Testing an 'oracle' trigger is similar to testing a trigger 'transaction' (where the transaction is of type 'oracle')."),(0,n.kt)("admonition",{title:"That's it!",type:"success"},(0,n.kt)("p",{parentName:"admonition"},"You should now be able to build your own smart contracts and test them! The next step now is to ",(0,n.kt)("a",{parentName:"p",href:"/build/smart-contracts/playground/deploy"},"deploy them"),".")))}u.isMDXComponent=!0},8933:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step1-d174efd7243f621764cf7dc42672f055.png"},6179:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2a-1b389fceb33d5b61491396bee90616f0.png"},5953:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2b-0ec2d5f241bbb36f96d1f11409ba1438.png"},1325:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_build_step2e-c1d5cb06bc75cc1e631aae66a1b3f715.png"},7624:(t,e,r)=>{r.d(e,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABDCAYAAAAccRJRAAADjklEQVR4Xu2aPWgTYRjHn065LiYuTafExUSH4lLbJdrB1qVWoR+Cn6BFEcRBRBDBSRB3P1FbwU+wH6C1i20HPxZrF62DrYvpYq6LiUsvk77PyZVrzNd7uTxX6P8gZMj7Pv+73/3zfFzSEN/e/odw1J1AA0DXnbEtANAynAFaiDNAA7QUASEd5GiAFiIgJANHA7QQASEZOBqghQgIycDRAC1EQEgGjgZoIQJCMnD0RgO9o6WFwuFNvl52NpejL/NffY3pNdi6cPTezk5qb2v1eg1l932cnaM309N1ia0TNHDQRihEFy+cpxXLoonXk2RZeZ3zL7nWMELUs6+bGg2Drl677kvMWoIEDjoei9Hxo4fpRzpNj58+r+Va/tt77Mgh2hKP06Mnzyi9tORrbN1gAK1LzON6gPYITnfbugW9e1eKOtRL53j7/gO9Uy/nQOpw0SuVoxl0285WmpqaoYXFRbLy/4rklcuX7HenwHExTSYS1NW1h2Y/zQF0KWeWA8173A4tBtqJyzemcD0cXYWjeYDJLJtkmstr7lGho50Po9Emam6K0uf5eaSOQldzauhIpchoNOyPuMUbGR1fTRPFvgWlQLvXcjoZ6O+1Wzs+rBVLDS0za26CTu73Y21gxZAdu7+n2x5UTNMkQw0WzdEo/crm6ObtOyWvrRrQ586eoUg4QhkV11LxoyouDy6vJiYDgx0Y6FODJ2yw94aGV9PDQF8vbUsm6MXomCqA34vCrgQ6mdhKB/v76NvCIo2MjdsxOK2cHjxJPzMmPRh+6IdBtWMEBroYMKelK2zT3FdVCXSpGJX2aZPT3BAY6CAczank/tAGc7STo7lQcXcRVjl1cyRM2VyWbty660uO5lSRz1urRXFD5mgmybB50OBCVc+ugwsuDz7u1k/zm1/z8sBSh3Pmuk/vdHItBhaXP3RAO8+ueXs1z5gB2iNop3Xj7eVaQCc8QHsA7Qwh7mRZabgBaA+gvVQjgAZoL76pbY9OMdRVgqNdxJxOggeXl+pX8Lzqef04Qqo3P6B+Becng9V0KH5olosReB/NJ4f/ddT7Nrvi85QYj8d8+7dSLveb0umlQKdBN7514WjB+xmYFEALoQdogBYiICQDRwO0EAEhGTgaoIUICMnA0QAtREBIBo4GaCECQjJwNEALERCSgaMBWoiAkAwcDdBCBIRk4GiAFiIgJANHA7QQASEZOFoI9F+dpylcDyuw1AAAAABJRU5ErkJggg=="},9566:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_parse_error-ed4c0a0a7c8cb31134641160c5c416fd.png"},3984:(t,e,r)=>{r.d(e,{Z:()=>a});const a=r.p+"assets/images/playground_trigger_panel-8fdbf19ac3c721478edeccaa6aab9126.png"},8209:(t,e,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/ceaeeb36.41779d5f.js b/assets/js/ceaeeb36.d27ff7c0.js similarity index 97% rename from assets/js/ceaeeb36.41779d5f.js rename to assets/js/ceaeeb36.d27ff7c0.js index 8436d7e3e..06830f897 100644 --- a/assets/js/ceaeeb36.41779d5f.js +++ b/assets/js/ceaeeb36.d27ff7c0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2323],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},s),{},{components:n})):r.createElement(f,i({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"code-proposals-cd",title:"CD"},i=void 0,c={unversionedId:"build/core/governance/code-proposals-cd",id:"build/core/governance/code-proposals-cd",title:"CD",description:"The archethic-cd target produces an image capable of running archethic_node release.",source:"@site/docs/build/core/governance/cd.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals-cd",permalink:"/build/core/governance/code-proposals-cd",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"code-proposals-cd",title:"CD"},sidebar:"docs",previous:{title:"Election",permalink:"/build/core/election"},next:{title:"CI",permalink:"/build/core/governance/code-proposals-ci"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"archethic-cd")," target produces an image capable of running ",(0,a.kt)("inlineCode",{parentName:"p"},"archethic_node")," release.\nThe objective of cd is to test the code proposal in a testnet environment which means spawning:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"5 nodes that run the new version"),(0,a.kt)("li",{parentName:"ul"},"2 validator containers"),(0,a.kt)("li",{parentName:"ul"},"1 prometheus container"),(0,a.kt)("li",{parentName:"ul"},"1 benchmark container")),(0,a.kt)("p",null,"the cd happens in multiple steps:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"first we start by copying the upgrade release and the logs we created in the CI part to a tmp folder"),(0,a.kt)("li",{parentName:"ul"},"next we create the subnet and we start all the containers responsible for the CD"),(0,a.kt)("li",{parentName:"ul"},"The validator container ensures that every node is up and do a benchmark before we apply the upgrade"),(0,a.kt)("li",{parentName:"ul"},"We apply the upgrade"),(0,a.kt)("li",{parentName:"ul"},"we start the second round of validation which is responsible for running benchmarks again, running the playbooks and gathering metrics from prometheus."),(0,a.kt)("li",{parentName:"ul"},"we wait for the final validation message and we clean all containers and images we created.")),(0,a.kt)("p",null,"nb: the cleaning phase will happen even in the case of failure."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2323],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},s),{},{components:n})):r.createElement(f,i({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"code-proposals-cd",title:"CD"},i=void 0,c={unversionedId:"build/core/governance/code-proposals-cd",id:"build/core/governance/code-proposals-cd",title:"CD",description:"The archethic-cd target produces an image capable of running archethic_node release.",source:"@site/docs/build/core/governance/cd.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals-cd",permalink:"/build/core/governance/code-proposals-cd",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"code-proposals-cd",title:"CD"},sidebar:"docs",previous:{title:"Election",permalink:"/build/core/election"},next:{title:"CI",permalink:"/build/core/governance/code-proposals-ci"}},l={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"archethic-cd")," target produces an image capable of running ",(0,a.kt)("inlineCode",{parentName:"p"},"archethic_node")," release.\nThe objective of cd is to test the code proposal in a testnet environment which means spawning:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"5 nodes that run the new version"),(0,a.kt)("li",{parentName:"ul"},"2 validator containers"),(0,a.kt)("li",{parentName:"ul"},"1 prometheus container"),(0,a.kt)("li",{parentName:"ul"},"1 benchmark container")),(0,a.kt)("p",null,"the cd happens in multiple steps:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"first we start by copying the upgrade release and the logs we created in the CI part to a tmp folder"),(0,a.kt)("li",{parentName:"ul"},"next we create the subnet and we start all the containers responsible for the CD"),(0,a.kt)("li",{parentName:"ul"},"The validator container ensures that every node is up and do a benchmark before we apply the upgrade"),(0,a.kt)("li",{parentName:"ul"},"We apply the upgrade"),(0,a.kt)("li",{parentName:"ul"},"we start the second round of validation which is responsible for running benchmarks again, running the playbooks and gathering metrics from prometheus."),(0,a.kt)("li",{parentName:"ul"},"we wait for the final validation message and we clean all containers and images we created.")),(0,a.kt)("p",null,"nb: the cleaning phase will happen even in the case of failure."))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/d0a652bb.7274f371.js b/assets/js/d0a652bb.2c7745ee.js similarity index 98% rename from assets/js/d0a652bb.7274f371.js rename to assets/js/d0a652bb.2c7745ee.js index 49029a502..982478a20 100644 --- a/assets/js/d0a652bb.7274f371.js +++ b/assets/js/d0a652bb.2c7745ee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5944],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},h=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,m=p["".concat(l,".").concat(u)]||p[u]||d[u]||o;return n?a.createElement(m,i(i({ref:t},h),{},{components:n})):a.createElement(m,i({ref:t},h))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"explorer",title:"Beacon Explorer"},i=void 0,s={unversionedId:"learn/sharding/beacon-chain/explorer",id:"learn/sharding/beacon-chain/explorer",title:"Beacon Explorer",description:"Archethic Blockchain leverages Sharding to outperform the exiting blockchains using shards called: subsets and BeaconChain Explorer displays the entire transactions across subsets.",source:"@site/docs/learn/sharding/beacon-chain/explorer.md",sourceDirName:"learn/sharding/beacon-chain",slug:"/learn/sharding/beacon-chain/explorer",permalink:"/learn/sharding/beacon-chain/explorer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"explorer",title:"Beacon Explorer"},sidebar:"docs",previous:{title:"Beacon Chain",permalink:"/learn/sharding/beacon-chain/"},next:{title:"Replication attestation",permalink:"/learn/sharding/replication-attestation"}},l={},c=[{value:"Concepts",id:"concepts",level:2},{value:"Slot",id:"slot",level:3},{value:"Epoch",id:"epoch",level:3},{value:"Subset",id:"subset",level:3},{value:"Process to get transaction notifications",id:"process-to-get-transaction-notifications",level:2},{value:"How to get transactions in realtime",id:"how-to-get-transactions-in-realtime",level:2}],h={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Archethic")," Blockchain leverages ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding")," to outperform the exiting blockchains using shards called: ",(0,r.kt)("inlineCode",{parentName:"p"},"subsets")," and BeaconChain Explorer displays the entire transactions across subsets.\nSo, users can overcome the overhead of searching in each shard."),(0,r.kt)("h2",{id:"concepts"},"Concepts"),(0,r.kt)("p",null,"To better understand about Beacon Chain Explorer one need to first have overview the some basic concepts below: "),(0,r.kt)("h3",{id:"slot"},"Slot"),(0,r.kt)("p",null,"It is the time interval for a slot. We can explicitly give any time interval based on our testnet/mainnet environmnent."),(0,r.kt)("p",null,"A slot is responsible for transaction being added to the Beacon Chain and shards. ",(0,r.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain#slot"},"See Slot")),(0,r.kt)("h3",{id:"epoch"},"Epoch"),(0,r.kt)("p",null,"It is an time interval within Archethic network for the Beacon chain subsets.\nOne epoch may have many slots based on the slot timer interval.\nAt each epoch a new transaction is emitted to have a summary of the entire epoch."),(0,r.kt)("p",null,"Epoch interval may differ between mainnet, testnet or development. For instance mainnet epoch interval is daily while for testnet it is currently every minute, to ease integration and simulation of the network."),(0,r.kt)("p",null,"So in this time interval beacon transactions are sealing the transaction in the current beacon summary transaction and replicates the transactions to other nodes."),(0,r.kt)("h3",{id:"subset"},"Subset"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Archethic")," Blockchain have 256 subsets, from 00 to FF ","[0-255]"," (two nibbles) as the byte capacity and the first byte of the transaction."),(0,r.kt)("h2",{id:"process-to-get-transaction-notifications"},"Process to get transaction notifications"),(0,r.kt)("p",null,"Beacon Chain will store the transactions in slots and at the beacon summary time all those transactions are summarized and will be replicated among the beacon storage nodes which are elected as storage nodes."),(0,r.kt)("p",null,"The day 1 will be the next beacon summary date from the first node enrollment date, which means, if the first node joins on ",(0,r.kt)("inlineCode",{parentName:"p"},"02/11/2021 10:00:00"),", the beacon chain date to pull will be ",(0,r.kt)("inlineCode",{parentName:"p"},"03/11/2021 00:00:00")),(0,r.kt)("p",null,"The explorer then exposes a pagination based on date, since we can easily reproduce the addresses through a deterministic\naddress generation based on date."),(0,r.kt)("p",null,"So from the ",(0,r.kt)("inlineCode",{parentName:"p"},"day 1")," until now, we can offer pagination over the beacon summaries."),(0,r.kt)("p",null,"Because we are able to have a reproducible storage node election algorithm we can fetch data for a given date\nfor the right nodes."),(0,r.kt)("h2",{id:"how-to-get-transactions-in-realtime"},"How to get transactions in realtime"),(0,r.kt)("p",null,"When a client is displaying the beacon chain explorer, a request is sent to the BeaconChain subset in charge of the current slot, to subscribe notifications about transactions replications."),(0,r.kt)("p",null,"On the BeaconChain, once a transaction is replicated a subset will enlist it for the next slot to be persisted."),(0,r.kt)("p",null,"Then we have the capability to notify subscribed clients (aka explorer nodes) the transaction completion."),(0,r.kt)("p",null,"But because Archethic is using a rotating sharding implementation, the nodes involved for a given slot will change over the time, therefore behind the scenes the explorer will subscribe for each new slot to have the latest transactions in a soft real time fashion."),(0,r.kt)("mermaid",{value:"graph TD\n A[Explorer] --\x3e|Subscribe to updates| B{BeaconChains}\n B --\x3eD[Subset 0]\n B --\x3eE[Subset 1]\n B --\x3eF[Subset 2]\n F --\x3e|Notify new transaction|A\n \n X[Transaction Validator] --\x3e|Attest transaction|F"}))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5944],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},h=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,m=p["".concat(l,".").concat(u)]||p[u]||d[u]||o;return n?a.createElement(m,i(i({ref:t},h),{},{components:n})):a.createElement(m,i({ref:t},h))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"explorer",title:"Beacon Explorer"},i=void 0,s={unversionedId:"learn/sharding/beacon-chain/explorer",id:"learn/sharding/beacon-chain/explorer",title:"Beacon Explorer",description:"Archethic Blockchain leverages Sharding to outperform the exiting blockchains using shards called: subsets and BeaconChain Explorer displays the entire transactions across subsets.",source:"@site/docs/learn/sharding/beacon-chain/explorer.md",sourceDirName:"learn/sharding/beacon-chain",slug:"/learn/sharding/beacon-chain/explorer",permalink:"/learn/sharding/beacon-chain/explorer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"explorer",title:"Beacon Explorer"},sidebar:"docs",previous:{title:"Beacon Chain",permalink:"/learn/sharding/beacon-chain/"},next:{title:"Replication attestation",permalink:"/learn/sharding/replication-attestation"}},l={},c=[{value:"Concepts",id:"concepts",level:2},{value:"Slot",id:"slot",level:3},{value:"Epoch",id:"epoch",level:3},{value:"Subset",id:"subset",level:3},{value:"Process to get transaction notifications",id:"process-to-get-transaction-notifications",level:2},{value:"How to get transactions in realtime",id:"how-to-get-transactions-in-realtime",level:2}],h={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Archethic")," Blockchain leverages ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding")," to outperform the exiting blockchains using shards called: ",(0,r.kt)("inlineCode",{parentName:"p"},"subsets")," and BeaconChain Explorer displays the entire transactions across subsets.\nSo, users can overcome the overhead of searching in each shard."),(0,r.kt)("h2",{id:"concepts"},"Concepts"),(0,r.kt)("p",null,"To better understand about Beacon Chain Explorer one need to first have overview the some basic concepts below: "),(0,r.kt)("h3",{id:"slot"},"Slot"),(0,r.kt)("p",null,"It is the time interval for a slot. We can explicitly give any time interval based on our testnet/mainnet environmnent."),(0,r.kt)("p",null,"A slot is responsible for transaction being added to the Beacon Chain and shards. ",(0,r.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain#slot"},"See Slot")),(0,r.kt)("h3",{id:"epoch"},"Epoch"),(0,r.kt)("p",null,"It is an time interval within Archethic network for the Beacon chain subsets.\nOne epoch may have many slots based on the slot timer interval.\nAt each epoch a new transaction is emitted to have a summary of the entire epoch."),(0,r.kt)("p",null,"Epoch interval may differ between mainnet, testnet or development. For instance mainnet epoch interval is daily while for testnet it is currently every minute, to ease integration and simulation of the network."),(0,r.kt)("p",null,"So in this time interval beacon transactions are sealing the transaction in the current beacon summary transaction and replicates the transactions to other nodes."),(0,r.kt)("h3",{id:"subset"},"Subset"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Archethic")," Blockchain have 256 subsets, from 00 to FF ","[0-255]"," (two nibbles) as the byte capacity and the first byte of the transaction."),(0,r.kt)("h2",{id:"process-to-get-transaction-notifications"},"Process to get transaction notifications"),(0,r.kt)("p",null,"Beacon Chain will store the transactions in slots and at the beacon summary time all those transactions are summarized and will be replicated among the beacon storage nodes which are elected as storage nodes."),(0,r.kt)("p",null,"The day 1 will be the next beacon summary date from the first node enrollment date, which means, if the first node joins on ",(0,r.kt)("inlineCode",{parentName:"p"},"02/11/2021 10:00:00"),", the beacon chain date to pull will be ",(0,r.kt)("inlineCode",{parentName:"p"},"03/11/2021 00:00:00")),(0,r.kt)("p",null,"The explorer then exposes a pagination based on date, since we can easily reproduce the addresses through a deterministic\naddress generation based on date."),(0,r.kt)("p",null,"So from the ",(0,r.kt)("inlineCode",{parentName:"p"},"day 1")," until now, we can offer pagination over the beacon summaries."),(0,r.kt)("p",null,"Because we are able to have a reproducible storage node election algorithm we can fetch data for a given date\nfor the right nodes."),(0,r.kt)("h2",{id:"how-to-get-transactions-in-realtime"},"How to get transactions in realtime"),(0,r.kt)("p",null,"When a client is displaying the beacon chain explorer, a request is sent to the BeaconChain subset in charge of the current slot, to subscribe notifications about transactions replications."),(0,r.kt)("p",null,"On the BeaconChain, once a transaction is replicated a subset will enlist it for the next slot to be persisted."),(0,r.kt)("p",null,"Then we have the capability to notify subscribed clients (aka explorer nodes) the transaction completion."),(0,r.kt)("p",null,"But because Archethic is using a rotating sharding implementation, the nodes involved for a given slot will change over the time, therefore behind the scenes the explorer will subscribe for each new slot to have the latest transactions in a soft real time fashion."),(0,r.kt)("mermaid",{value:"graph TD\n A[Explorer] --\x3e|Subscribe to updates| B{BeaconChains}\n B --\x3eD[Subset 0]\n B --\x3eE[Subset 1]\n B --\x3eF[Subset 2]\n F --\x3e|Notify new transaction|A\n \n X[Transaction Validator] --\x3e|Attest transaction|F"}))}d.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/d2674f84.f821bc06.js b/assets/js/d2674f84.0f20fedb.js similarity index 99% rename from assets/js/d2674f84.f821bc06.js rename to assets/js/d2674f84.0f20fedb.js index f9571ebab..413fff980 100644 --- a/assets/js/d2674f84.f821bc06.js +++ b/assets/js/d2674f84.0f20fedb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[669],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,h=p["".concat(l,".").concat(u)]||p[u]||m[u]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"actions",title:"Smart Contracts - Actions block",sidebar_label:"Actions",sidebar_position:3},i=void 0,s={unversionedId:"build/smart-contracts/language/actions",id:"build/smart-contracts/language/actions",title:"Smart Contracts - Actions block",description:"The actions block is the code executed when the associated trigger is triggered.",source:"@site/docs/build/smart-contracts/language/actions.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/actions",permalink:"/build/smart-contracts/language/actions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"actions",title:"Smart Contracts - Actions block",sidebar_label:"Actions",sidebar_position:3},sidebar:"docs",previous:{title:"Condition",permalink:"/build/smart-contracts/language/condition"},next:{title:"Library",permalink:"/build/smart-contracts/language/library"}},l={},c=[{value:"Global variables",id:"global-variables",level:2},{value:"contract",id:"contract",level:4},{value:"transaction",id:"transaction",level:4},{value:"Named action arguments",id:"named-action-arguments",level:2},{value:"Generating the next transaction",id:"generating-the-next-transaction",level:2},{value:"Appendix 1: The transaction map",id:"appendix-1-the-transaction-map",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")," block is the code executed when the associated ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/triggers"},"trigger")," is triggered."),(0,r.kt)("h2",{id:"global-variables"},"Global variables"),(0,r.kt)("p",null,"Depending on the trigger, there are different global variables accessible."),(0,r.kt)("h4",{id:"contract"},"contract"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"contract")," variable is a map of the current contract's transaction. See ",(0,r.kt)("a",{parentName:"p",href:"#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,r.kt)("h4",{id:"transaction"},"transaction"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"transaction")," variable is a map of the transaction that triggered the ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")," block. See ",(0,r.kt)("a",{parentName:"p",href:"#appendix-1-the-transaction-map"},"Appendix 1"),". ",(0,r.kt)("strong",{parentName:"p"},"It is only available when the trigger is a transaction or an oracle"),"."),(0,r.kt)("h2",{id:"named-action-arguments"},"Named action arguments"),(0,r.kt)("p",null,"In the case of named action trigger, arguments sent by the callers are provided to the action block as variables.\nBe careful not to rebind them inadvertedly. Do not use any of the ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/#reserved-keywords"},"reserved keywords")," as parameter."),(0,r.kt)("admonition",{title:"Argument VS Parameter",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"A parameter is a variable in a function definition. It is a placeholder and hence does not have a concrete value. An argument is a value passed during function invocation. In a way, arguments fill in the place the parameters have held for them.\nSource: ",(0,r.kt)("a",{parentName:"p",href:"https://www.educative.io/answers/parameter-vs-argument"},"https://www.educative.io/answers/parameter-vs-argument"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'actions trigger_by: transaction, on: vote(firstname, lastname) do\n full_name = String.to_lowercase("#{firstname} #{lastname}")\n ...\nend\n')),(0,r.kt)("h2",{id:"generating-the-next-transaction"},"Generating the next transaction"),(0,r.kt)("p",null,"The main goal of the action block is to generate a new transaction in the smart contract chain.\nTo do so, you can use the ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#contract"},"Contract")," module that allows to set the transaction field value."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'# Set uco ATH in content\nactions triggered_by: oracle do\n current_ath = String.to_number(contract.content)\n new_price = Json.path_extract(transaction.content, "$.uco.usd")\n\n if new_price > current_ath do\n Contract.set_content(new_price)\n end\nend\n')),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that there are 3 fields that are preset before executing the action code."),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},'type: set to "contract" by default'),(0,r.kt)("li",{parentName:"ul"},"code: set with the previous contract code"),(0,r.kt)("li",{parentName:"ul"},"ownerships: set with the previous contract ownerships")),(0,r.kt)("p",{parentName:"admonition"},"So you don't need to set the type, the code and the ownerships each time you generate a new transaction.")),(0,r.kt)("h2",{id:"appendix-1-the-transaction-map"},"Appendix 1: The transaction map"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"address")," is the transaction's address."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")," is the transaction's type."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")," is the transaction's content (it's a string that can contain anything, for example a smart contract state)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")," is the transaction's code"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"timestamp")," is the transaction's validation timestamp"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_movements")," is a map of UCO transfers grouped by ",(0,r.kt)("em",{parentName:"li"},"resolved")," address of the transaction.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...": 1, "00001bc...": 2]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_movements")," is a map of list of token transfers grouped by ",(0,r.kt)("em",{parentName:"li"},"resolved")," address of the transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...":\n [\n [amount: 1, token_address: "0000ab12..." , token_id: 1],\n [amount: 1, token_address: "0000ab12..." , token_id: 4],\n ]\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")," is a map of UCO transfers grouped by address of the transaction.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...": 1, "00001bc...": 2]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")," is a map of list of token transfers grouped by address of the transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...":\n [\n [amount: 1, token_address: "0000ab12..." , token_id: 1],\n [amount: 1, token_address: "0000ab12..." , token_id: 4],\n ]\n]\n')),(0,r.kt)("admonition",{title:"Difference between transfers and movements",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'The transfers and movements are almost the same thing. The difference is in the addresses.\nThe addresses of the transfers are "raw" whereas the addresses of the movements are "resolved".'),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"raw address"),": address that was specified on a transfer (usually the genesis but not mandatory)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"resolved address"),": address of the latest transaction of the chain (the chain that contains ",(0,r.kt)("inlineCode",{parentName:"li"},"raw address"),")")),(0,r.kt)("p",{parentName:"admonition"},"Here's an example to understand the difference:"),(0,r.kt)("p",{parentName:"admonition"},"This is a UCO transfer to MyAmazingContract. The transfer is usually done on the genesis address (here: ",(0,r.kt)("inlineCode",{parentName:"p"},"0x00abc"),"). But the transfer is actually creating an UTXO on the latest transaction of the chain (here: ",(0,r.kt)("inlineCode",{parentName:"p"},"0x00def"),")."),(0,r.kt)("mermaid",{parentName:"admonition",value:"flowchart LR\n subgraph MyAmazingContract\n Tx1((genesis 0x00abc)) --\x3e Tx2[transaction 0x00bcd]\n Tx2 --\x3e Tx3[transaction 0x00cde]\n Tx3 --\x3e Tx4[transaction 0x00def]\n end\n Transfer-.->|raw|Tx1\n Transfer-.->|resolved|Tx4"}),(0,r.kt)("p",{parentName:"admonition"},"Thus ",(0,r.kt)("inlineCode",{parentName:"p"},"contract.uco_transfers == [0x00abc: 1]")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"contract.uco_movements == [0x00def: 1]"),"."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"In most cases, you'll want to use ",(0,r.kt)("inlineCode",{parentName:"strong"},"movements")," instead of ",(0,r.kt)("inlineCode",{parentName:"strong"},"transfers"),"."))))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[669],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,h=p["".concat(l,".").concat(u)]||p[u]||m[u]||o;return n?a.createElement(h,i(i({ref:t},d),{},{components:n})):a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"actions",title:"Smart Contracts - Actions block",sidebar_label:"Actions",sidebar_position:3},i=void 0,s={unversionedId:"build/smart-contracts/language/actions",id:"build/smart-contracts/language/actions",title:"Smart Contracts - Actions block",description:"The actions block is the code executed when the associated trigger is triggered.",source:"@site/docs/build/smart-contracts/language/actions.md",sourceDirName:"build/smart-contracts/language",slug:"/build/smart-contracts/language/actions",permalink:"/build/smart-contracts/language/actions",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"actions",title:"Smart Contracts - Actions block",sidebar_label:"Actions",sidebar_position:3},sidebar:"docs",previous:{title:"Condition",permalink:"/build/smart-contracts/language/condition"},next:{title:"Library",permalink:"/build/smart-contracts/language/library"}},l={},c=[{value:"Global variables",id:"global-variables",level:2},{value:"contract",id:"contract",level:4},{value:"transaction",id:"transaction",level:4},{value:"Named action arguments",id:"named-action-arguments",level:2},{value:"Generating the next transaction",id:"generating-the-next-transaction",level:2},{value:"Appendix 1: The transaction map",id:"appendix-1-the-transaction-map",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")," block is the code executed when the associated ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/triggers"},"trigger")," is triggered."),(0,r.kt)("h2",{id:"global-variables"},"Global variables"),(0,r.kt)("p",null,"Depending on the trigger, there are different global variables accessible."),(0,r.kt)("h4",{id:"contract"},"contract"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"contract")," variable is a map of the current contract's transaction. See ",(0,r.kt)("a",{parentName:"p",href:"#appendix-1-the-transaction-map"},"Appendix 1"),"."),(0,r.kt)("h4",{id:"transaction"},"transaction"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"transaction")," variable is a map of the transaction that triggered the ",(0,r.kt)("inlineCode",{parentName:"p"},"actions")," block. See ",(0,r.kt)("a",{parentName:"p",href:"#appendix-1-the-transaction-map"},"Appendix 1"),". ",(0,r.kt)("strong",{parentName:"p"},"It is only available when the trigger is a transaction or an oracle"),"."),(0,r.kt)("h2",{id:"named-action-arguments"},"Named action arguments"),(0,r.kt)("p",null,"In the case of named action trigger, arguments sent by the callers are provided to the action block as variables.\nBe careful not to rebind them inadvertedly. Do not use any of the ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/#reserved-keywords"},"reserved keywords")," as parameter."),(0,r.kt)("admonition",{title:"Argument VS Parameter",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"A parameter is a variable in a function definition. It is a placeholder and hence does not have a concrete value. An argument is a value passed during function invocation. In a way, arguments fill in the place the parameters have held for them.\nSource: ",(0,r.kt)("a",{parentName:"p",href:"https://www.educative.io/answers/parameter-vs-argument"},"https://www.educative.io/answers/parameter-vs-argument"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'actions trigger_by: transaction, on: vote(firstname, lastname) do\n full_name = String.to_lowercase("#{firstname} #{lastname}")\n ...\nend\n')),(0,r.kt)("h2",{id:"generating-the-next-transaction"},"Generating the next transaction"),(0,r.kt)("p",null,"The main goal of the action block is to generate a new transaction in the smart contract chain.\nTo do so, you can use the ",(0,r.kt)("a",{parentName:"p",href:"/build/smart-contracts/language/library#contract"},"Contract")," module that allows to set the transaction field value."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-elixir"},'# Set uco ATH in content\nactions triggered_by: oracle do\n current_ath = String.to_number(contract.content)\n new_price = Json.path_extract(transaction.content, "$.uco.usd")\n\n if new_price > current_ath do\n Contract.set_content(new_price)\n end\nend\n')),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that there are 3 fields that are preset before executing the action code."),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},'type: set to "contract" by default'),(0,r.kt)("li",{parentName:"ul"},"code: set with the previous contract code"),(0,r.kt)("li",{parentName:"ul"},"ownerships: set with the previous contract ownerships")),(0,r.kt)("p",{parentName:"admonition"},"So you don't need to set the type, the code and the ownerships each time you generate a new transaction.")),(0,r.kt)("h2",{id:"appendix-1-the-transaction-map"},"Appendix 1: The transaction map"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"address")," is the transaction's address."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"type")," is the transaction's type."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"content")," is the transaction's content (it's a string that can contain anything, for example a smart contract state)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"code")," is the transaction's code"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"timestamp")," is the transaction's validation timestamp"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_movements")," is a map of UCO transfers grouped by ",(0,r.kt)("em",{parentName:"li"},"resolved")," address of the transaction.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...": 1, "00001bc...": 2]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_movements")," is a map of list of token transfers grouped by ",(0,r.kt)("em",{parentName:"li"},"resolved")," address of the transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...":\n [\n [amount: 1, token_address: "0000ab12..." , token_id: 1],\n [amount: 1, token_address: "0000ab12..." , token_id: 4],\n ]\n]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"uco_transfers")," is a map of UCO transfers grouped by address of the transaction.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...": 1, "00001bc...": 2]\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"token_transfers")," is a map of list of token transfers grouped by address of the transaction")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'["00001ab...":\n [\n [amount: 1, token_address: "0000ab12..." , token_id: 1],\n [amount: 1, token_address: "0000ab12..." , token_id: 4],\n ]\n]\n')),(0,r.kt)("admonition",{title:"Difference between transfers and movements",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'The transfers and movements are almost the same thing. The difference is in the addresses.\nThe addresses of the transfers are "raw" whereas the addresses of the movements are "resolved".'),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"raw address"),": address that was specified on a transfer (usually the genesis but not mandatory)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"resolved address"),": address of the latest transaction of the chain (the chain that contains ",(0,r.kt)("inlineCode",{parentName:"li"},"raw address"),")")),(0,r.kt)("p",{parentName:"admonition"},"Here's an example to understand the difference:"),(0,r.kt)("p",{parentName:"admonition"},"This is a UCO transfer to MyAmazingContract. The transfer is usually done on the genesis address (here: ",(0,r.kt)("inlineCode",{parentName:"p"},"0x00abc"),"). But the transfer is actually creating an UTXO on the latest transaction of the chain (here: ",(0,r.kt)("inlineCode",{parentName:"p"},"0x00def"),")."),(0,r.kt)("mermaid",{parentName:"admonition",value:"flowchart LR\n subgraph MyAmazingContract\n Tx1((genesis 0x00abc)) --\x3e Tx2[transaction 0x00bcd]\n Tx2 --\x3e Tx3[transaction 0x00cde]\n Tx3 --\x3e Tx4[transaction 0x00def]\n end\n Transfer-.->|raw|Tx1\n Transfer-.->|resolved|Tx4"}),(0,r.kt)("p",{parentName:"admonition"},"Thus ",(0,r.kt)("inlineCode",{parentName:"p"},"contract.uco_transfers == [0x00abc: 1]")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"contract.uco_movements == [0x00def: 1]"),"."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"In most cases, you'll want to use ",(0,r.kt)("inlineCode",{parentName:"strong"},"movements")," instead of ",(0,r.kt)("inlineCode",{parentName:"strong"},"transfers"),"."))))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/d409b53d.8ec4dace.js b/assets/js/d409b53d.0dcb8ca0.js similarity index 99% rename from assets/js/d409b53d.8ec4dace.js rename to assets/js/d409b53d.0dcb8ca0.js index b176bf1c2..6caa2299a 100644 --- a/assets/js/d409b53d.8ec4dace.js +++ b/assets/js/d409b53d.0dcb8ca0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6907],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>p});var n=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function d(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var o=n.createContext({}),r=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):d(d({},t),e)),a},h=function(e){var t=r(e.components);return n.createElement(o.Provider,{value:t},e.children)},c="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},T=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,o=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=r(a),T=l,p=c["".concat(o,".").concat(T)]||c[T]||k[T]||i;return a?n.createElement(p,d(d({ref:t},h),{},{components:a})):n.createElement(p,d({ref:t},h))}));function p(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,d=new Array(i);d[0]=T;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[c]="string"==typeof e?e:l,d[1]=s;for(var r=2;r{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>k,frontMatter:()=>i,metadata:()=>s,toc:()=>r});var n=a(7462),l=(a(7294),a(3905));a(8209);const i={id:"database",title:"Archethic's database"},d=void 0,s={unversionedId:"build/core/database",id:"build/core/database",title:"Archethic's database",description:"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support",source:"@site/docs/build/core/database.md",sourceDirName:"build/core",slug:"/build/core/database",permalink:"/build/core/database",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"database",title:"Archethic's database"},sidebar:"docs",previous:{title:"Yubikey implementation",permalink:"/build/core/cryptography/yubikey"},next:{title:"Election",permalink:"/build/core/election"}},o={},r=[{value:"Rationale",id:"rationale",level:2},{value:"Log Structured Merge",id:"log-structured-merge",level:3},{value:"Log Structured Hash Tables",id:"log-structured-hash-tables",level:3},{value:"Our approach",id:"our-approach",level:3},{value:"Design",id:"design",level:2},{value:"Chains storage",id:"chains-storage",level:3},{value:"Chain indexing",id:"chain-indexing",level:3},{value:"File indexes",id:"file-indexes",level:4},{value:"Summary",id:"summary",level:5},{value:"Addresses",id:"addresses",level:5},{value:"Keys",id:"keys",level:5},{value:"Types",id:"types",level:5},{value:"Memory indexes",id:"memory-indexes",level:4},{value:"Transaction index",id:"transaction-index",level:5},{value:"Chain stats",id:"chain-stats",level:5},{value:"Last index",id:"last-index",level:5},{value:"Type index",id:"type-index",level:5},{value:"Chain reader",id:"chain-reader",level:3},{value:"Write path",id:"write-path",level:3},{value:"Read path",id:"read-path",level:3},{value:"Additional of-chain storage",id:"additional-of-chain-storage",level:2}],h={toc:r},c="wrapper";function k(e){let{components:t,...i}=e;return(0,l.kt)(c,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support\nconcurrent writes and reads while avoiding much as I/O as possible."),(0,l.kt)("h2",{id:"rationale"},"Rationale"),(0,l.kt)("p",null,"Several solutions have been analyzed and uses from benchmarks, to implementation until the need to implement a solution which will fit the needs and requirements. (ie. LevelDB, RocksDB, Cassandra, ScyllaDB, Aerospike, Redis, etc.)"),(0,l.kt)("p",null,"There are multiple database engines which provides different needs, but we wanted to focus on NoSQL and efficient disk amangement and writes."),(0,l.kt)("p",null,"Our choice ended with log structued family storages (instead of B-tree which are more read efficient, but suffer for random writes)"),(0,l.kt)("h3",{id:"log-structured-merge"},"Log Structured Merge"),(0,l.kt)("p",null,"LSM (Log Structured Merge) comes with the immutable datastructures and append only writes."),(0,l.kt)("p",null,"Append only writes are really efficient in term of disk I/O as a single seek in the file is needed to be placed at the end of the file, and write the new data."),(0,l.kt)("p",null,"There are also shipped with inmemory structure which is flush over time while keeping this append-only log on disk for backup and safety measure. So those dumps are immutable and provided the database view at certain time."),(0,l.kt)("p",null,"But because most of the KeyValue database using LSM, involving updates of keys, they must manage the redundancy of the data and provide cleanup (deleted or updates entries).\nTo support this clean, they are using ",(0,l.kt)("inlineCode",{parentName:"p"},"compaction")," which is a merge operation which take only the last data information from multiple immutable dumps."),(0,l.kt)("h3",{id:"log-structured-hash-tables"},"Log Structured Hash Tables"),(0,l.kt)("p",null,"Log Structured Hash Tables as Bitcask are really interesting as the writing and the reading are efficient because it's using immutable data and key indexing in memory for a predictable and fast reading."),(0,l.kt)("p",null,"Its main requirement is to hold all the key of the value into the memory otherwise"),(0,l.kt)("p",null,"This approach also invovles a ",(0,l.kt)("inlineCode",{parentName:"p"},"compaction")," as data blocks are appended with immutability but needs to be merged after some time to avoid filesystem exhaustion."),(0,l.kt)("h3",{id:"our-approach"},"Our approach"),(0,l.kt)("p",null,"All those database Key-value, Wide column storage, etc.. which are using LSM are considered as global database to support different kind of use cases. However in our case, we have a specific need and requirements: ",(0,l.kt)("strong",{parentName:"p"},"we are only dealing with immutable data at all"),". The data stored in the transaction will never changed, and the mutation and views are managed from an application perspective but not from the disk itself."),(0,l.kt)("p",null,"Then we can reduce a lot of effort and I/O which are heavy in term of computations as compaction/merges, dump of memory structures"),(0,l.kt)("p",null,"In additional to it, we can keep some indexing in memory while providing file backup to avoid memory exhaustion and be able to scale more.\nEvenif we might the indexing on file not efficient, because we are using append only strategy for everything, the indexing is better as the last index bring the last update."),(0,l.kt)("h2",{id:"design"},"Design"),(0,l.kt)("p",null,"So in order to fullfill all those requirements and optimize performances for our needs, we create a new data layer from scratch.\nNevertheless, we took concepts interesting from log structured and wide column storages to support efficient writes/reads with the support of nested column filtering."),(0,l.kt)("h3",{id:"chains-storage"},"Chains storage"),(0,l.kt)("p",null,"The main concept is simple: ",(0,l.kt)("strong",{parentName:"p"},"each chain has its own file"),"."),(0,l.kt)("p",null,"Each chain is uniquely identified by its ",(0,l.kt)("inlineCode",{parentName:"p"},"genesis address"),": which is the address of the first's previous public key, aka the 0th address."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(7635).Z,width:"513",height:"231"})),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"The append-only strategy is straighforward, each time a new transaction in a chain is persisted, the transaction is added at the end of the file of a chain. So in term of disk access and I/O, it requires a simple seek at the end of the file and dumps of the transaction serialized."),(0,l.kt)("p",{parentName:"admonition"},"This concept led to the streaming capability of the writes to avoid exhaustion of the system (as a backpressure mechanism)")),(0,l.kt)("p",null,"So in order to be able to read specific columns from the transaction, the transaction is serialized in a specific format before to be written to disk.\nThis encoding wraps each key value of the transaction into self-descriptive and schema less write.\nEach key/value pair is encoded in that way:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Column name size (1 byte)"),(0,l.kt)("th",{parentName:"tr",align:null},"Value size (32 byte)"),(0,l.kt)("th",{parentName:"tr",align:null},"Column name (binary)"),(0,l.kt)("th",{parentName:"tr",align:null},"Value (binary)"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"7"),(0,l.kt)("td",{parentName:"tr",align:null},"33"),(0,l.kt)("td",{parentName:"tr",align:null},"Address"),(0,l.kt)("td",{parentName:"tr",align:null},"00743B809ADDE7E1E3E9B5AFB704813D06155958FBBB78CD052CC45A1B19F976BE")))),(0,l.kt)("p",null,"However, because we are using a schemaless approach letting the code defining the encoding and decoding, each transaction is prepended by its size length (4 bytes) and its version."),(0,l.kt)("p",null,"So by this way, we know the boundaries of the transaction within a file and the way to decode it."),(0,l.kt)("h3",{id:"chain-indexing"},"Chain indexing"),(0,l.kt)("p",null,"Because each chain has its own file, we need also a mechanism to identify a transaction without a chain, or identify a transaction amongs the chains."),(0,l.kt)("p",null,"Different kind of indexing are performed some completly both in memory and disks for backup and long term storage."),(0,l.kt)("h4",{id:"file-indexes"},"File indexes"),(0,l.kt)("h5",{id:"summary"},"Summary"),(0,l.kt)("p",null,"To provide a way to find a transaction without knowing its genesis address, we implemented a summary index (as there are in other solutions) to help the identify the location of the data.\nThen, as the ",(0,l.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," used this concept, we also applied the address's subset identification here.\nSo each address contains a subset which is the first byte of the digest (exluding the metadata to identify curve and hash algorithm)."),(0,l.kt)("p",null,"So each subset has its own index, with a list of transaction, genesis addresses, the transaction size and its offset (location in the chain's genesis file)"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(4662).Z,width:"641",height:"31"})),(0,l.kt)("h5",{id:"addresses"},"Addresses"),(0,l.kt)("p",null,"One principle of the transaction chain is to able to target any address of a chain as recipient.\nSo during the transaction validation, nodes are able to resolve recipient last address and then target the right shard of the chain. They are doing this resolution by asking the recipient shard about the last transaction address."),(0,l.kt)("p",null,"But in order to make this possible, previous nodes of a given chain need to keep a track of the last transaction of the chain."),(0,l.kt)("p",null,"Then a specific index file is provided (",(0,l.kt)("inlineCode",{parentName:"p"},'"Genesis-address"-addresses'),") for this purpose which contains a given chain (genesis file), a list of timestamps and addresses for this chain."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(1624).Z,width:"321",height:"31"})),(0,l.kt)("p",null,"The timestamp is useful during replication and validation to be sure to get the last chain address at the time of the validation, so we can reproduce the validation later without problem."),(0,l.kt)("p",null,"However during the transaction validation we keep the latest one."),(0,l.kt)("h5",{id:"keys"},"Keys"),(0,l.kt)("p",null,"Sometimes we also want to identify the genesis address or first public key of a chain.\nBut we need to track it as well."),(0,l.kt)("p",null,"For instance, in smart contract code, we want to do some actions depending if a transaction's coming from a specific person, but how to identify it, as its transaction chain evolves and we don't keep a track of all the transactions."),(0,l.kt)("p",null,"Then being able to identify the first transaction of a chain is important."),(0,l.kt)("p",null,"So we are adding a new chain index file (",(0,l.kt)("inlineCode",{parentName:"p"},'"Genesis address"-key'),") to support this feature."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(8825).Z,width:"321",height:"31"})),(0,l.kt)("h5",{id:"types"},"Types"),(0,l.kt)("p",null,"We also want to be able to list of the transactions of a given type, this is useful when the starts and fill memory tables but also to list transactions in UI or API for network transactions."),(0,l.kt)("p",null,"Then a index is given by type for this purpose where the addresses are appended"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(1613).Z,width:"411",height:"137"})),(0,l.kt)("h4",{id:"memory-indexes"},"Memory indexes"),(0,l.kt)("p",null,"Among the files indexes for backup or long term storage, we are proving some in memory indexes (a bit like Log structured Hash tables) to read data with predictable latency.\nThis make reads fast."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(8321).Z,width:"482",height:"95"})),(0,l.kt)("h5",{id:"transaction-index"},"Transaction index"),(0,l.kt)("p",null,"This index works a bit like a chache and is identified by a transaction address with the following information:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"genesis address"),(0,l.kt)("li",{parentName:"ul"},"offset"),(0,l.kt)("li",{parentName:"ul"},"size")),(0,l.kt)("p",null,"So once the a transaction is present in this cache, we can easily read transaction give information about the position of the file, and read it really quickly."),(0,l.kt)("p",null,"But if the transaction is not present, we can easily use the index summary as fallback, to identify the file and the offset."),(0,l.kt)("h5",{id:"chain-stats"},"Chain stats"),(0,l.kt)("p",null,"This index is built from the genesis chain files and contains information about the number of transactions within and the last offset.\nSo during the write, the transaction index/summary is notified about the last offset of the chain, and help to move forward in the location of new transaction."),(0,l.kt)("h5",{id:"last-index"},"Last index"),(0,l.kt)("p",null,"As we mentioned in the last addresses chain index file, we need to quickly know what is the last address of a chain, so here we a cache, we says for a given genesis address what is the latest."),(0,l.kt)("p",null,"So this table is filled every time a node receives a last address notification."),(0,l.kt)("h5",{id:"type-index"},"Type index"),(0,l.kt)("p",null,"Because we have type index file, we can also leverages a memory index to know how many transactions for a given type exists.\nThis is useful for key derivation for network transactions.\nSo we can easily and quickly get the size of a chain."),(0,l.kt)("h3",{id:"chain-reader"},"Chain reader"),(0,l.kt)("p",null,"Wide column storages provides the capability to extract sub columns information to avoid the load of an entire row in the memory to let the application filter the data.\nThe filtering can be done on the disk, while make it efficients."),(0,l.kt)("p",null,"The behaviour like is a two dimensional key-value pair, where the 1st dimension targets the partition key and the 2nd targets the columns of the row."),(0,l.kt)("p",null,"So we achieve a similar approach here, by eing the 1st dimension as the chain file and the 2nd as the list of columns names encoded during the transaction write."),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"After being able to get the lookup informations from the chain indexes to identify the file and offset in the file of a given transaction, we ",(0,l.kt)("inlineCode",{parentName:"li"},"seek")," (put the cursor) at the offset position."),(0,l.kt)("li",{parentName:"ol"},"Then we can sequentially read columns and values and pick the ones we want"),(0,l.kt)("li",{parentName:"ol"},"When we reached the end of the transaction (thanks to the size information from the indexes) or the enf of file, we convert those values into a transaction where the values retrieved will be filled in to the structure.")),(0,l.kt)("h3",{id:"write-path"},"Write path"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(9525).Z,width:"811",height:"481"})),(0,l.kt)("p",null,"So in order to be written, a transaction follows a write path to make reads efficient."),(0,l.kt)("p",null,"After a transaction is written to disk in the genesis chain file, several disks and memory writes are performed to help the indexing of this transaction."),(0,l.kt)("p",null,"Transaction's address is written to:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"the summary index from the subset of the transaction (file)"),(0,l.kt)("li",{parentName:"ul"},"the last addresses index of the chain (in memory and file)"),(0,l.kt)("li",{parentName:"ul"},"the transaction's type index (in memory)"),(0,l.kt)("li",{parentName:"ul"},"the bloom filters (in memory)"),(0,l.kt)("li",{parentName:"ul"},"transaction index (in memory)")),(0,l.kt)("p",null,"Its public key is also written to the chain's public key index. (file)"),(0,l.kt)("p",null,"Then transaction's type in memory index number incremented, as well as the chain stats in memory index."),(0,l.kt)("h3",{id:"read-path"},"Read path"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(401).Z,width:"505",height:"441"})),(0,l.kt)("p",null,"To make read efficients, when a transaction wants to be retrieved, it goes to the read path:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Check if the transaction index is present, if yes we have information about the file and position"),(0,l.kt)("li",{parentName:"ul"},"Otherwise we check the bloom filter, if yes, we read the subset summary to identify the position of the transaction, otherwise you inform the transaction does not exists"),(0,l.kt)("li",{parentName:"ul"},"Then a reader is able to perform reads according to the fields requested and the position retrieved.")),(0,l.kt)("h2",{id:"additional-of-chain-storage"},"Additional of-chain storage"),(0,l.kt)("p",null,"For now, we have covered the scope of chain storage and retrieval, however we also need to persist some data which are not really inserted into a chain and are important for well-being of the node execution."),(0,l.kt)("p",null,"So we have to leverage others kind of storages and indexes as simple key-value in memory loaded from disk."),(0,l.kt)("p",null,"The scope of those storages are:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Bootstrapping information (last P2P bootstrapping seeds, storage nonce, last sync date)"),(0,l.kt)("li",{parentName:"ul"},"Network statistics (aggregated TPS and nb of transactions)"),(0,l.kt)("li",{parentName:"ul"},"P2P view (aggregated node availability from the beacon chain)")))}k.isMDXComponent=!0},8825:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUEAAAAfCAYAAAB5/X8CAAAPe3RFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBNDElM0E1OS43ODBaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJYZGR3Z1V6WG9rZngyd3l3NXNRaCUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjI0JTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMnZETHdETjlxQkZkTHVKRlhfNzB2JTIyJTIwbmFtZSUzRCUyMlBhZ2UtMyUyMiUzRTNaVmJUOEl3R0laJTJGelM1TmVzQzVYU0o0VEV3MFN5UmUxdllycTNZcmxvNkJ2OTRDSFdPQ01ScFA4V3J0JTJCeDI2NyUyQm1iTktLRFluNW0yU1MlMkZNZ0owUkpDWVIzUVlFWUl4aXYxbnFTeldTcG9lcllXeFZTSWt0VUttbmlHSUtLaVZFakR0SkRwanRGT1Ryc2hOV1FKM0hZMVphJTJCcHVtalM2ZSUyQnFFaldGSHlEalR1JTJCcElDWmMzYzhWcEd6Z0hOYzdEMFFrSjh4V3NTUTZUVEhNbVRMMGwwWk9JRHF3eGJyMHE1Z1BRUzNnTkZ6NFRmWFZIMDRkS1A1ME5ieDl2YmxKNnNHNTIlMkJwR1N6UWdXU3ZmcDFyMVptYkclMkJ1cjAlMkJ5QzR2Sk1aeVZEVWxhTVowRlhoRlBkVFhpa000ZE9vV0RVbHJxbExBc2h1SzZIR2RLd2ZaaFBGbHRQYmU4VnJ1Q3UxMzJDJTJCbDBucGd0TEdyV2lvWUpKSjdmZXFzZVlTdFNNd1R1SmMlMkJFdjRFcklQNXE2dDdaMjY4dVF6dllqQUZPTHZ3ZFUyWE9Bd1pERXhRMk5ldEhaSWc1VnRHb0VGandZRGpUZWNXc2w4RXpoOWdqbmVZWTRRUjZxWGtTNUZMS1FuZmkxekU5JTJGRmglMkZJM0lrejlHbkx6cDhxOUYlMkZvc3VwJTJCU1BNYWY3WFg2WTB2JTJGaWN0TDdNZVIlMkIyNzR6cTlqV2EwMVBYZ0ElM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyVExmNkd1azZJZjQ2bExsQ2dRbW8lMjIlMjBuYW1lJTNEJTIyUGFnZS00JTIyJTNFM1pWQlQ0TXdGTWMlMkZEVWNUYUFmQ2NVNTBCNDJISFRUZU92cUF4a0pKS1lQdDAxdEdHZUNXbUNWVEYwJTJCMCUyRiUyRmY2SHUlMkZYZjFJTEw3TG1VWklpZlJZVXVJVnMybGo0M2tMSWNXeFBmMXBsMnlsQmNOc0ppV1RVSkEzQ2l1M0FpTFpSSzBhaG5DUXFJYmhpeFZTTVJKNURwQ1lha1ZMVTA3Ulk4R25YZ2lSd0pLd2l3byUyRlZWMFpWMnMlMkZsQlVOZ0NTeEpUV3NmbWZreTBpZWJTY3FVVUZHUEpCeGFlQ0dGVU4wcWF4YkFXM2c5bCUyRnBwOTE2R2ViVlpydWN2YndLRjBwM2ZkTVVlempseUdFRkNyaTViR25XbE40UlhodGVjc3doTXgxSnRlNHhTVkRtRnRwUnQ0YnM2WlFwV0JZbmFhSzJObzdWVVpWenZITDJNR2VjTHdZWGNuOFdVZ0I5SFdpJTJCVkZCOHdpbmlSRCUyQnRZUjh4dmdGVFFmTG0zYjRaMkRqZWhMUXdpQXlXMyUyQmx4ZnhUT1haOXlMYkxPdkJ5JTJGNFJrcEhMc0JHSThaOXlhSHlRRmd2RE9RemdPTWo0STd0MlBZc1FCZEZIc2N4aWs0aXA5N2FjNzBmUk81ZkdmSFphWXRmbHZjZldoeWpLd1B1bnJhNEclMkJEJTJGWW5FMCUyQnpYa2VqdThNUHZZNkozRzRTYyUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0VhM/nOAAAMbUlEQVR4Xu2ceTzVWR/HPy2mZaJNPcXTQuuYpFE9TwvTtExUypQGLWYmTetUk9LqSTRCiSihbG1C0UbElD0mRRKRJSVpkbVmEsm8zjH3PjQ07j1dY3TOf67zPb/z+/jc9znn+z0vrW4H6VaDNyYFnNJXMMV/yMErhzp/yK//Xt6d+49NxlYEgp+obWQb5QOOTovZjbaqJz5gBVhevRqvExeA+098Dbn/xNeORO47EQ0OQTYNwU3IIiCHIIt6JJb7j01BDkE2/Wg0NyGLiByCLOpx/7Gqx3eC7ApyCDJqyCHIKCBfhBkF5DtBRgH5SswqIIcgq4L8JMKmIIcgm378OMysH4cgq4QcgmwKcgiy6cchyKwfhyCrhByCbApyCLLpxyHIrB+HIKuEHIJsCnIIsunHIcisH4cgq4QcgmwKcgiy6cchyKwfhyCrhByCbAq+FwjuP+iLjh3aY/E32sLZ3Mm8D9fDZ5B19wEmqI3E6mV6aNu2jfD3TwuK8N1yM/gd242OHdvTz4tLyuDi7o+4+FtQGqoA4zUGkO3ehf7ur8YjfU6duQS/c5fhe9iKxty99xC79h7B/dxHGPMfZTqH7t06098l3kyHk+sp5D18Cu0ZEzD3q8noIdtVLDWbyoSFz55i7DA5TJqqBZejZ4VzdXGwQnZmOnbYOENFQQY/x6Wjn8JAsd6FBJHnbPrREPvdTqJDh45ij9O4QHYI/p3+e/26CsvXWtZ51dkzJ2KGhto7/Rca9guOeAXiVUUFNKeMg+6cLyEj/XHjJHurV0vyX3CAH0IC/FH1pgpas/UxYfI0tG/fQSxdGhvEBEECkpBLcdhqfgCbjL6FtflqIcyGj9XHJ0MUsGyRDiz3eEBt7Ag47DbGb7+V43RAGI56X8DPYVdRkheBzjKdUF1dDZ2FG3HzVgbMTZYhODQWKWnZSIz2QtnzF2hoPMGL5tzPh6LyLAwe2Bd3Ek/Tj4eozsGI4UMwV3syjvkEoai4FJHBriAAlhusCWLWeXM14Hn8PJ4VliA+4mhjdavTr6lM6HXYGXsstuLXF8/xS+ojdOveg87D2d4SWRlpsHE8goT4KximMlIseL18+RtCL5zB2VPHcCXyEhIyCiEtU7NoSK6JD8Hm4D+y0I4YNw97dq4VSjRKVQmqKkMb9F9ySiZU1RdgzXJ9+r0wszoEvTlfwnTzErFkbin+i7gUhKULZ8FwuRGUlD+Dw24zzPhKD+u2/CSWLo0NYoKg46GTiI69gYjoBCxaOFMIQQKcreaOeJAWROdxPigK2vrr8OvjGJSUPofRFju666sNQWKmAcO1cS81AP369EZhUSlk+09GdIgbCOAaGo/sIslq/MX0pZDr3YNClEDwxs071GilDyPpCiuAZNbNsyAmNDaxR3byOTo/8rPKuHnITDqDgYp9GqudsF9TmXD21NH4esFi7LfZgbWbzKFnUPOlEUDQyt4N3+lqwM75OHr1/jcuBvpjr9U2lJWWYLq2LjaaWqNdu/ZIvnEN1uYbkJOVAfWJU7F1hy26dO2Op4/zYWm6HqWlxf8ICDYH/8XFJ8Pc2hVRF13r+OZd/iPfh/Co6zjva0djrGw94eMfipux3iJ7jwS0FP8R71VWVmC71X6qg5enExxtLRCXki+WLo0NYoKg4CG6326GYn95IQTJypaZlQsvdwvaJeV2NpTH6NWBzK3ULLq7E+wEL0fEY/Z8Y5TlRwnnLiP3OfbZbMC93EfvHM9itzvS7uRAR3sStpg5UggSOH+uuQTlBbFo1+4jeiwfNGI2gvz3QWXYIBQVl2GY0gD6LPej52C02RaF98MgJdW2sdo1KQSzM9MwTV2Z7gDdneyQcO0KfM7XaCWAoIXtQXocDo1NQ0VFBbS+UMG2nfbopzgIO/9nhJVGJhg/YQrGKcvDYPEqaM7UgaujDV68KMOJsxHC98lIS4HWxBHNfifYHPxHYLZjlytduFu3bo0V38+FzqxJuHo9pUH/aUweg+pqoOBZMZJTM2GwxBTLDOdgh8lykb3XVBBsCv+R00wnaWm6gJO2YdW3qHj1Cg6uPmLp0tggiUDwm6Wm6Ny5E/bb1PxnGrLr69Z3EpKunICK8mD62dsQJEdSa7vDwqMs6TNSfSEMDWZRQzU03svyV9DWX4/b104hMiZBCMGqqjf0yGugP53m+xycveHjFwpvT0vo60ylcyB9nN39sNp4N/Zar8PalfMbq1udfk2xEpOjQVpKEs0FJiVche6M8Qi/lgX5Pv3rhaC/92EKSgHcYqMuI/9hLl48L4OH815EJuagVatWyMm+A43xnyI2OQ+yPXvR9/qnQ7Ap/eftFwLP4wGwtVyLh/kF2GnjTkFouX3VX/rvkOdpLPuxJp9Y25eimrCl+Y941Gq7MU6d8IBPQDRUR48VVRKR+ksEgiuMrOhx9uQRazqZ/EcFkB8yDcUPwtGls3S9ECTHgaWrLersBElOz85qHQIvRtc7XlFuGEZ9boAZmmqYrTURUbGJcHL1g4+nJc21kOTzmg02NEE9/2tNBARHISL4EM3XEDDP1DVCZvYDuB/YBi1NdZGEq91Z0iasqqqCmkoflJe/pHnAyooKPH6Uh02mu7B45fp6IWhvbYpusj1haulQ5712bP0Rxz0O/OldAyNuYvDQT1sEBJvKf8TPH0lJUc0ExT2SHycniyfZobgQEtOg/wR/AJIj37nHg+bNSbpIMI4oZmxJ/rt9KwmL501HLzl52Dodg+LAoaJIIVZfiUCQ/EH9z4UhIfo4nVRMXBItehBjCNrbO0HSR13jexCwde0iQwsoH/dSA8nh+fqH1jtefsZFeqQWNFLcIEUPpaGKuOBnjwd5T6A+7jNadHn8pJCuzCRHSNqUmSug0F8eh/aZ0MIMS5O0Ca/GRsJgzmR4+ASjbdua43rAaW/cuP4LgqKS64Vg4Blf3L6VCKfDNUWiW0nX8Tg/D6m3biA6PATHz4TRz19XViIzPRXKn42ClNRHLQKCTeU/4uczAeE0rTJoQF+q3UGP03ByO4XI4EP0tFOf/8wsD0JerifWr15IY1LT7mLYf3WRk3Ie/fvKiWzFluK/e3ez6Annh3UmWLTMCG3a/P82iciiiBAgEQgKCg0hZx2hNEQRhj+Yo0f3rsIcIf1SvpUTrKx8je79JsFo1QJ6NYYY5bhvMAjoUtOyaeHiXeNRMARH0YIHyQkKjuAkBzhhvCotxjzMf4rAU/bwOhmMFWutaKW49srbv29vmj8UtUnahCbrlqKsrIReWRE0ArPZX45GYHgSLoecp9Xh2jlBcqQw0JkC9xMXoDhoCBbpadI8YM9/ycFQfxq8zoZDecQouB2wpQnomKRctPkDsP/043BT+o/47efwq4gPP0Jz1/MNTWj6ZfliHZoCqs9/pHBI/E1y5mTB3vaTM+ITUhF32VNU69H+LcV/2zevwt2sdOy0PSjUoXXrNkzXvRoj6HuBoN53W2hhxMpslfCZJL9HihSkkWsrMaHude7hCYolguot6UeSzJO0apLD0p06UgORYy1pfzXe2xAkP/+0yw02DjXXXnr3kkVYoAtdgddstMF+F98/6UOqc8OHDWqMbnX6SNKE5NoKKXbsc/OFppaO8LlkdztBVQFfLzCElJTUn+4J9umniK1GS3Da9wiNIXcLSYKZVIetzTbAw2Uv/by7bE/sdfHCGLWJwrEz0lNpUSUxswidpGVE1kO0APGvyAie83f6j9wznbPAGNcSb9PpjFZVwjkfO+q3hvxHFmiNr1YJY8aPUYHFtpX4Qn2kaNL90bul+E9jvBJysjPqaPBxJ2ncyCoWS5fGBr0XCDb0sNKyF7QCJsq1k4qKSprDIzG1L1eTZ4gzXnl5BfLyn4g0h8aKJ+gnSROKOpe3+5cUF4KspjKday6dC1pRYQGeFTxFP4UBFIx/X2OHYHPwH8l7k0ITgV/t1pD/3rx5g9y8xzSnSK52sTTuPxb1+D9VZVOvCVbi9zLBZj2I5CDYrF/7PU6uOUPwPb6mxIaS6E5QYrNuZgNzE7L8QTgEWdQjsdx/bApyCLLpR6O5CVlE5BBkUY/7j1U9fhxmV5BDkFFDDkFGAfkizCgg3wkyCshXYlYBOQRZFeQnETYFOQTZ9OPHYWb9OARZJeQQZFOQQ5BNPw5BZv04BFkl5BBkU5BDkE0/DkFm/TgEWSXkEGRTkEOQTT8OQWb9OARZJeQQZFNQCEG2YXi0U/oKLoKYCqwc6ixmJA8TKMD9x+aF3wGLGd3vdPqULgAAAABJRU5ErkJggg=="},1624:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUEAAAAfCAYAAAB5/X8CAAAM+nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBMzUlM0E0Ny4zMDlaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJsZV9hWU5weHdJRG03ajQ0ZTFyLSUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjIzJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMnZETHdETjlxQkZkTHVKRlhfNzB2JTIyJTIwbmFtZSUzRCUyMlBhZ2UtMyUyMiUzRTNaVmJUOEl3R0laJTJGelM1TmVzQzVYU0o0VEV3MFN5UmUxdllycTNZcmxvNkJ2OTRDSFdPQ01ScFA4V3J0JTJCeDI2NyUyQm1iTktLRFluNW0yU1MlMkZNZ0owUkpDWVIzUVlFWUl4aXYxbnFTeldTcG9lcllXeFZTSWt0VUttbmlHSUtLaVZFakR0SkRwanRGT1Ryc2hOV1FKM0hZMVphJTJCcHVtalM2ZSUyQnFFaldGSHlEalR1JTJCcElDWmMzYzhWcEd6Z0hOYzdEMFFrSjh4V3NTUTZUVEhNbVRMMGwwWk9JRHF3eGJyMHE1Z1BRUzNnTkZ6NFRmWFZIMDRkS1A1ME5ieDl2YmxKNnNHNTIlMkJwR1N6UWdXU3ZmcDFyMVptYkclMkJ1cjAlMkJ5QzR2Sk1aeVZEVWxhTVowRlhoRlBkVFhpa000ZE9vV0RVbHJxbExBc2h1SzZIR2RLd2ZaaFBGbHRQYmU4VnJ1Q3UxMzJDJTJCbDBucGd0TEdyV2lvWUpKSjdmZXFzZVlTdFNNd1R1SmMlMkJFdjRFcklQNXE2dDdaMjY4dVF6dllqQUZPTHZ3ZFUyWE9Bd1pERXhRMk5ldEhaSWc1VnRHb0VGandZRGpUZWNXc2w4RXpoOWdqbmVZWTRRUjZxWGtTNUZMS1FuZmkxekU5JTJGRmglMkZJM0lrejlHbkx6cDhxOUYlMkZvc3VwJTJCU1BNYWY3WFg2WTB2JTJGaWN0TDdNZVIlMkIyNzR6cTlqV2EwMVBYZ0ElM0QlM0MlMkZkaWFncmFtJTNFJTNDJTJGbXhmaWxlJTNFuJ3r+wAADZVJREFUeF7tnHk81Vkfxz8V00oLbTwttCiTlKl5WmifUimVQotpYkp7aS+TaEFJWoQS2oRopcRkCaNdEpElLWiRNdNC6nmdY+59KJq591yNcs5/fvd3zu/8Pvdz3+d7vt9Tde6e1/8A3pgUcEqax9S/Nnee3825Nr++RN6d+49NxjoEgt01V7GNUot7J0Ztg5TGsVqsAMurf8C7mOng/hNfQ+4/8bUjPXcfiwSHIJuG4CZkEZBDkEU90pf7j01BDkE2/WhvbkIWETkEWdTj/mNVj0eC7ApyCDJqyCHIKCBfhBkF5JEgo4B8JWYVkEOQVUG+E2FTkEOQTT++HWbWj0OQVUIOQTYFOQTZ9OMQZNaPQ5BVQg5BNgU5BNn04xBk1o9DkFVCDkE2BTkE2fTjEGTWj0OQVUIOQTYFOQTZ9KtWCJa+e4fMjIf0GQqK7SElLS2B2da0ITgEWb+R6oJg7fCfhI7I7Nnng0YNG8DkZ13h93kv5SFcD55C6v3HGKz5AxaZGkBKqp7w8+fZufhlriX8jmxDo0YN6PW8/EK4uJ3A5Wt3oNpNCSsWG0Ferhn97O/GI/f4nroIvzMh8DloQ/vcf5CJrQ6H8PDRE/T7UY3OQa5FU/pZzO0kOLn6IiPzOXTHDsbkCcPRUr65WH6UtAmzMh9hy/plyMp4iA4dO6Poz5eICLmAqTNNsWSVJVrItawwz5wXz9G/hwKGjdSBy+HTws9cdtkgLSUJdo6HYDh+EPSnm2CSwUyx3pF0Is9ZvcQYew4cR8OGjcQep2JHdgj+m/57964Uc5daV3ilieOGYuwozc/6Lzj0Cg55BuBtcTG0RwyA/qSfICvTWCxNa4P/Av39EOR/AqXvS6Ez0RCDh49GgwYNxdLr405MkSABSdDFy1hntRerzWbC1mqREGY9+xuiu4oSTGfpwXq7OzT798KubSvw6tUbnPQPxWGvc/g99CryM8LRVLYJPnz4AL0Zq3D7TjKszE0RGByN+MQ0xER6ovBlEaoaT/BC6Q+zoKw2Hl07t8e9mJP0sorGJPTqqYLJusNxxPs8cvMKcCnQFQTACl21Qcw6dfIoeBw9ixc5+bgWflgsUSVpwtTkRCyYpYcNNnvQt78WkhLi0EGpM169KqIg9PPygOfpMEhLfyecq+dBZ2zfvA5/Fr3ElYQnQkg677QGGc/e6Qju3olFy1at0bJ1W5Hf8fXrVwg+dwqnfY/gj0sXcTM5BzKyZYsJexMfgjXBf2Sh7TVgKrZvWSqUoo+GKjTUu1Xpv7j4FGhoTcfiuYb0d2Fpsx8Gk36CxZrZYsn5rfsv/OJ5zJkxHsZzzaCq1hu7tlli7AQDLFu7SSy9JApBx/3HERl9C+GRNzFrxjghBAlw1lk54nHiefq8s+cjoGu4DH8+jUJ+wUuYrd1Bo77yECRm6tRTFw8S/NGhXVvk5BZAvuNwRAYdAAFcVeORKJKsxkPGzIFC25YUogSCt27fo0YryLxEV1gBJFNvnwYx4QrznUiLO0PnR/5WHzAVKbGn0Fm5ncjCStKE+mMHwmzNJmj8OABGk4ZDqZMK8nJfUBge9L0AB1sLzDI1g0bf/sJ5ThzZF1Omm2CP3UYsXW0FA6OyH1N5CFqtXURXzyEjxuBCwAk42KxHYUE+xujqY5WFLerXb4C4W9dha7US6anJ0Bo6Eus22qNZczk8f5oFa4vlKCjIq1EQrAn+u3wtDla2roi44FrBN5/zH/k9hEXcwFmfHbSPjb0HvE8E43a0l8jeIx2+df8R75WUFNPAgDRPDyc42m/G5fgssfSSKAQFg+nPXAPljopCCJKVLSX1ETzdNtNb4u+mQa2fQQXI3ElIpdGdIBIMCb+GidNWoDArQjhHWYVB2G23Eg8ePfnseJu3uSHxXjr0dIdhraUjhSCB8yDt2XiTHY369b+j2/IuvSbi/IndUO/RBbl5heih2ok+y+3wGZitsUfOw1BIS0uJLKykTEggM25Ib0TceoDQ4AB4uDjgyMkQGoVt/s2MXieGIIDU1tGj80xLScRoLTUaAbo57cDN63/A+2yZhuUhSLbDU6YZQ61XX+gMUcf6LTvRQbkLtvxmhvlm5hg4eAQGqCnCyGQhtMfpwdXRDkVFhTh2OlyoR3JiPHSG9qoxkWBN8B+B2catrnThrlu3Lub9Ohl644fh6o34Kv03ang/fPgAZL/IQ1xCCoxmW8DUeBI2ms8V2XuShGBN9R/ZzTSRkUGbtv+h+qxcOBPFb99il6u3WHp9EQj+PMcCTZs2wR67sv+ZhkR9LdoPQ+wfx6Cu1pVe+xiCZEtqu+OgcCtL7vlBawaMjcZTQ1U13us3b6FruBx3r/viUtRNIQRLS9/TLa+R4Ria79vl7AVvv2B4eVjDUG8knQO5x9nND4tWbIOD7TIsnT9NLFElBcGEO7ewzWoVDvn9Tr/onr37UiiR8J9EbQRc44Zp4LBfMJq3kKdzJZ8lxsfSXGDszasgkWTY9VQotutYKQQfpKVQUArgFh0RApKDLHpZCHdnB1yKSUedOnWQnnYPowZ+j+i4DMi3akOf9bVA8Ev6z8svCB5H/WFvvRSZWdnYYudGQWi9YeHf+m+/x0mYLinLJ5b3pagmrC3+Ix612bACvsfc4e0fWWE3JKpm5e9nyglWtRLPM7Oh29njh2zpLVlPsqGoMhp5j8PQrKlMpRAk24E5izZXiARJTm+HzTIEXIisdLzcR6HoM8gIY7U1MVFnKCKiY+Dk6gdvD2uaayHJ58Ur7WiCetoUbfgHRiA8cD/N1xAwj9M3Q0raY7jtXQ8dbS2xdZSUCbOfPYHh+MEIuZqMjeuWoFGjxjAyWQBtrR6Yb7YOUlLSiAoPhptXWZqhtLQUmurt8ObNa5oHLCkuxtMnGVhtsRUm85dXCsHI0CC0kG8FC+tdFd6XPO+o+95PNAgIv42u3b7/qiD4pfxH/PzdXxV7QXGP5MfJzuJZWjDOBUVV6T+B0CRHvmW7O82bk3SRYBxRzFgb/Edy2iZTx6CNgiLNcSt37iaKRJ+9t1ogSL7QE2dCcTPyKH141OVYWvQgxhC0jyNBco/WqF9BwNa8mSwtoDRuowmSw/M5EVzpeFnJF+iWWtBIcYMUPVS7KeOc3048zngGrQG9adHl6bMcujKTHCFpI8bNg1JHRezfbU4LMyxNUiYkcyCRnpWtI5rLycFy9UI6LQI0Ui0mBZJNds5o3VaRXr8afYnmDd29AyElVbaN9z/phVs3ruB8RFylEHySmYG7d2LgdLCseHQn9gaeZmWARKGRYUE4eiqUXn9XUoKUpASo9e4jLMJ8LZHgl/If8fMp/zCaVunSqT3VbZ/7STgd8MWlwP10t1OZ/yyt90FRoRWWL5pB+yQk3keP/+ojPf4sOrZXENmK37r/HtxPpTucBcvMaT68Xr3/nzIRWaxKOlQLBAWFhqDTjlBVUYbxAiu0lGsuzBHSH99HOcGSkneQ6zAMZgun06MxxChHfQJBQJeQmEYLF58bjwIgMIIWPEhOULAFJznAwQM1aDEmM+s5Anx3wvN4IOYttaGV4vIrb8f2bWn+UNQmSRNevxKJNUtM6LGW8sUPcmbLx/MAjfgE+UDzZXNQWJhPj6wIGoHZxJ/6IiAsFiFBZ4XVYUFOUKW7Goz0RsDt2Dkod1HBLANtuuVu1VoBxoajaeVZrVcfHNhrTxPQUbGPUO8vwH4tEPyS/iN++z3sKq6FHaK562nG5jT9MtdEj6aAKvMfKRwSf5OcOVmw129yxrWbCbgc4iGq9ej937r/NqxZiPupSdhiv0+oT9269WhQIIkmEQga/LKWFkZsLMsiF9JIfo8UKUgjx1aigt0qnMMTFEsE1VtyH0kyD9MpSw7LNGlEDUS2tf9kvI8hSP7etPUA7HaVHXtp20YeoQEudAVevMoOe1x8PtGPVOd69ugisq6SNCF5OKkErzUzoRFY1+5qKMjPRVpyEq3Ymi5eTUFIjq2oK8li9wEfIRRJXxL1DtZQwpTpxpCWlv7knOCEKUZYZzYbJ30O0fckZwtJgplUh20tV8LdxYFel5NvBQcXT/TTHCrUIzkpgRZVYlJy0URGVmSdKu8g/hEZwXj/pv/IOdNJ01fgesxdOp2+Gqo4472D+q0q/5EFetSEhcI+A/upY/P6+Rii9YNYmn7r/hs1UBXpackVtGncRAa3UvPE0uvjThKBYFUzKSgsohUwUY6dFBeX0Bwe6VP+cDV5hjjjvXlTjIysZyLNQVRlJW1CwfPJub/HD9PRQk4erdqIvk363Hvk5+WArKayTcsOowtabk42XmQ/RwelThSM1d/YIVgT/Efy3qSgROBXvlXlv/fv3+NRxlOaUyRHu1ga9x+LehL6FyNsU/j6e1eXCb9+Zf7JG1QfBP/J07+Fe7j/2L7Fao0E2ab29fTmJmT5rjgEWdQjfbn/2BTkEGTTj/bmJmQRkUOQRT3uP1b1+HaYXUEOQUYNOQQZBeSLMKOAPBJkFJCvxKwCcgiyKsh3ImwKcgiy6ce3w8z6cQiySsghyKYghyCbfhyCzPpxCLJKyCHIpiCHIJt+HILM+nEIskrIIcimIIcgm34cgsz6cQiySsghyKagEIJsw/DeTknzuAhiKjC/m7OYPXk3gQLcf2xe+B/AQvf+6fgbTAAAAABJRU5ErkJggg=="},8321:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/memory_index-8b745de23265c24b29a6b68889747e0f.png"},401:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/read_path-9a620d8ec68c3034fe7524efe7409647.png"},4662:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoEAAAAfCAYAAACYoBeiAAAKW3RFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBMjklM0ExMC4xNjlaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJFMzJvY2hNWnNQcTB0U09JbEtHQiUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjIyJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQyUyRm14ZmlsZSUzRYZV1hcAABGnSURBVHhe7Z15XE/Z/8dflphh7CSMbTAyxjJG32/INs0kk31LjDGpoVFJpcVS9kGpJJJSljTZZS2FTNbB2BJpmSyRJaSy/JTxfZzTfD409HvknsvnVu/zePTP53PPufc8z73vz/OerXI23rEvQUkygYm6KyTnpYzAkoiahIEIaIxAJV0zjZ27NJyY4p9YK1L8E+NHuYUJvCzHJHDSqO7CJZXVAvLPjEIbA+eyWn3hek+YEghvb2/hcspqAQ4ODsRPoPFdA0+B4p90gBT/pLN7+RKwcqL4J5Xgy5cv4ejoSPFPKkAA7PeDJFAAIMtKQVAMIJNAHx8fsULKcG57e3viJ9D+LitPkgQK8KP4Jx2eSgIp/klj+Pfff3MJJH7S+LFc7PeDJFA6P56TgqAYQJJAMX4kgWL8SALF+FH8k86PJFA6O5aTJFCMH0mgOD+SQBkYkgSKQSQJFONHEijGjyRQOj+SQOnsSALF2KlyU0+gDBwpCIpBJAkU40cSKMaPJFCMH8U/6fxIAqWzIwkUY0cSKA8/6gmUgSNJoBhEkkAxfiSBYvxIAqXzIwmUzo4kUIwdSaA8/EgCZeBIEigGkSRQjB9JoBg/kkDp/EgCpbMjCRRjRxIoDz+SQBk4kgSKQSQJFONHEijGjyRQOj+SQOnsSALF2JEEysOPJFAGjiSBYhBJAsX4kQSK8SMJlM6PJFA6O5JAMXYfRAJf5OfjZvo1fq6GjZqgopaWPFetsFLeVxDMz3+BazcyeG2bfKoDLa2KCqu5PJdDEijGkSRQjN/7kkCKf2LtUhbiH0mg2D1CW8SI8WO538vq4Fs3r2O+mwNupV9D02Ytkfs4B3EHomA2dgLsnGehdp16ha78fuZddPmyIb4x6oeAdRHq7wJ8FyA1ORGey9Zi5IAeGDHaAkNMx0qq9bG4A9i59Tfk5T2Hcb+h+O77QZLKeVsmuSXwevptTHbxwrXrGWjZojFych4jMuYYrCyGYs50K9SrW6vQZdy99wD1Wxihf98e2Lnx1X/e+HVxCC5fuYrQoDkwMLKA5dhB+Gl0f8n1Zuf5yWoWtoR6oEqVjySX8++MmpZAtuu8h4cHBgwYgDZt2qgv7/Tp04iJiUFeXh569eqFHj168O9ycnKwY8cOJCQkoFmzZhg5ciRq1KghG493LUipElgUv3et3/s+Xm4JpPgn1mJKjH+bt+/Hlh0H8OLFC5gNM8b3Rt3w8ceVxSoKQNMSmJSUhO3bt+PevXswMDDgca5mzYJ/41kS4p8SJLA0/H7Iull0StJlWJsPxcwFftDr0h2JCRfQtHlLPHmSy0VwS/hqhEXEQkurkvoBCluzAovnTcPj3BycSMhQS+KKJb+CleflH4pL8edQT7s+6tVv8M4PXvy50xhqrI8fxlmj49f/xUwXayz0DUYfkyHvXNb7lsBLiX9h8KgpWO7lih7dvsL5i8lo1aIxcnOfIjLmKEJCd+L3yEBUqvSqV9U/aDNcZ/ohJ/cJ7v4Vo5bE+Z4hYOWFBc/D2fNXoFO/Dhro1H3nOj958gzbdh3EuvA9iDn4B7LSD6FG9U/euZyiMmhSAo8fP45jx45xqWMiqK+vzy8zMTER48ePx5AhQ9C2bVt4eXlh6tSpXATd3NyQkpKCcePG4cSJE0hLS0NwcDDKly8vG5N3KUiJElgUv549e75L1T7IsXJKIMU/sSZTYvzbs+8I+g2fDAeb0ejUURfu8wIwclgfzHefKFZZDUvg/fv3MXjwYB7TDA0NERkZiaysLAQGBpaY+KdpCSwtvx+ySuAIk26wd52LTv/pijFDDNG8RWs8fJDJZXDN5ij4LHSH+QR7dNLron6ABhvpYfhoC/h5zsFkl9kwHfMz/+51CZw91RY9Dfui17ffI2r3VvgscEP2oyx8P3AEnN0XonLlj3Dh7CksnO2EtJQkdO9thGlzvFCzVh1Ms/8Z5StUwLzFAbzchbOccPniOazdEiP8ELMC5OwJ7GJojnluv6Cbfkf0NpmA1q2aIvN+Fs5fTELMDn/MmOsPB5sf0PW/7dXX/nX3H3gv36wFgZg7wwrjzQvk9nUJtHZcxN9eTfoYYEvEAUyfsxxZj3JhOvQ7eMyxw0cfVcLJPxMwZfoSXEm+hj6G+vBZ6Ig6tWvgVsY92E/1xsOs7FIngZ6ensjNzUVsbGwhCVy0aBGXOicnJ85y+fLlSE5OhrOzM+/527RpE3R0dJCdnY1+/fph2bJlaN/+VZvIcmMVsxAlSmBR/JYsWVLMWn24w+SUQIp/Yu2mxPhn7+qN53l5WO7lUhALAjdhzqJVuJMaLVZZDUtgXFwc/P39sWHDBl6P1NRUmJubIzw8HOvXry8R8U/TElhafj9kk8BHjx6if6+vEHf2Kg5G78bqAB+EbjuA6D3bMW+GPf/8V3dHLohsSJbfeMmX0bd7O94DGOzvjT9PHcWGnXFvSCAbDh4+ahzaddRDv14d4DZ/CZp+1grzZ9hjov10dOv5Lbq2a4QxFjYw7j8UQcvYj3s2fos4xIeSh5qO5aLJUvjalVjqORvHL94SfojllEAmWe27jMSNy3uxKzIO3svCELtnJbbtPAg7l8X8cxaQuul3wLBBhvzaL19Jwxd6w3kP4OKloTh64jyORAe/IYFsONjix4HQ69QW7fRNsdTTifcw2jkvhpuLJb7rrQ+dlkawtTLFsIGG8FiyDtk5jxEXFaRmFJ+Qwq+vNPUEqipnbGyMWbNmqXsCra2t0bdvXy54LLGewpCQELi7u2P69OmIiopSc2F57ezs+PGaSEqUwKL4MY5KS3JJIMU/sZZVavxjvZPVq32CTxtp8wqO+dkd//f8OTatXShWYQ1LYGZmJp/a0rx5c16PPXv2wM/PD7t371bHM6XHP01LYGn5/ZBNAhPiz8JjtjPvYXOyGYv2X+lxKfP1mMV77Zi49f+mE9ZtiUat2gXDkuw71ivH5gKe+/MPsDfp2FMpaNS4WaGeQJUEXk1N5qLI5I4lNtePzcHJzclGyAof/H4mDeXKlUNa6hX06dYWxy6k83O6L1iKvv2H8TyH9u/F+B8GIOl2vvBDLKcEnjmfCKcZvjiwawUPNP/p3Ba2E0zhPj8AWY9ysNTDCR26mvHv69YpmLfBvjt3IYnPBTxxKh7sTTrt4k40a9KwUE+gSgKTUq5zUVTJ3f7Yk2BzcLJzcuHltx7XL+3h/FhvoO7XQ5GRvI8PI7NUliRw4MCBmDx5Mnr37s3rzrr9XVxc4OrqirCwMP6nSpaWljAxMeFDK5pISpTAovix3gelJbkkkOKfWMsqPf6xl2KHqd4IXrcDR2NCCo3GSK25pucEsutmIhUREQHWS29ra4vhw4ejpMQ/pUpgSeHH2l/WhSH37mRg5ICeOPBHEuZMs0OVKlUxxsIaxt2/xET7aahYUQtHDkUjOHwvf2bYJFuDDo3x7NlTPg8w7/lz3M5Ih4v7IlhMdHyrBB4+uA+162rD/VffQs8dO9/6kOVvPIu7D53HL2MHw2KiA0aNteLfR+7agkC/RdgefUrqs1son1zDwRm3M/kCjtQLO2Dr5IGqVT7mEtim8zDMcLbkq4P37T+OqO1+//D7Gw0/N8bTp8/4PEA2ZJF+8y4859lhyqQxb5XAqP3HoV2vFvw8nQvVgZ1v2cpNb/CIP7ERX37RosxJIBvyZX+DBhUsIGLDxUz8zMzMwIYAXu8JHD16NGxsbNCly6spDrLcWMUsRIkSWBS/VatWFbNWH+4wuSSQ4p9Ymyk5/rE51cZDbPFpQ20+x1r382Zilf0nt6YlkPUEshfb9PR0/pLbtWtXfmUlJf4pVQJLCj/ZJZAVyHrdZi9chlp16mCWiw2/oZjQsdXCbIHIXM8VqN+gEf/8j2O/83mDIRsiUbFiwfYnu7aF4+zpE9gbd+GtEphxMx2X4s/Af822AjE5dxq3b6WDvYUfjt2H9dsP8s/z8/KQnJiAdl91hqWZCb7s0BlObgv4d2zV8dW/UvjiEDmSXBLIroX19Pl7u/KevokOBcMNTOgmuyxGqxZNsNJ3Gho1LBiWOHT4Tz5vcF/EMlSsUIF/9tvmKBw/GY+Ek5veKoE30u+AvXFHhHvx40+duYT0mwWfMcE8tDeQf56Xn4+Ll1Kh1+kL9SKUstQTyHoBdXV1YWVV8OIQGhrKAyXr8WPCx4ZOqlWrhmfPnsHIyIjPo2nUqOC+/tBJiRJYFD+2uEZpSS4JZPWi+CfWukqMf8mpN9DF8Cc+bYbNx65QQb4FYJqUwMePH/NeoAYNGvC5zlWrVlU3XkmJf0qVwJLCjzW4rD2BXCpOHIarnQXf1uX1xR9sz6yNYat4j59qPuB0h/HIzs6C36pXPVBM5gZ/p4fdsedwYN9O9epg1XBw6zbtMGbotwj+bQ8+a9Ua5qbGfMhZu35DjBvZl688btexM1Yt90LYan8cOXcdG0IDsXj+dEQejsftWzcxydIUtlPc1HMExcKWvAtD4o6egfkvsxEaNLfQcAPbMytozXbe46eaD2hpM5cPE7MtW1SJyRxbKHLh+Abs3BunXh2sGg5u17YlvjGxQuQ2P/42azTQms8DbNigHvoMsuErj9m8QU/fdVgetBk3rzBBLxDMsiSBbNuElStXcvm7e/cunwvIJk2z+X9snsyIESP42/Lq1asRHR3Nt1mg1cGvnqSi+KnmGIk+c3Lml1MCKf6JtYwS4x97GU9MuoogvxnqyjERbPlZY7HKanhOINv+iu16wOYBVq78arsbJoVsXmBJiH9KlcCS9vsh25xA1RPBVgJPtbfg28B83qYdHmU9QGpSIl+xO2GSCxfBp0+foEPz6li6aqNaCll+tudOz07NMXz0OGhpab2xT+Cg4WP4at9tG9fy07G9BX2DNvDVwWzVb0iAD/+8Tl1t+ASEQd+gN+8VnPSzKfZH7eTfsbmB3gFhqPBP75nokyxnTyC7lvPxSRg3cQ7vgWPS9uDhI77fH1uxO9XRnIsg27alqo4BNq9bpJZCFb8mX5jA4sdBqKRV8Y19An80M4GF9VysCdvFq832FmQTnNnqYMdpPnwxCkva9WojPGQ+vumpp8bDegbZopJHN39H9Wqv3hpF+WlyixjVtf97YUh+fj4XvyNHjvBD2NzAmTNnctE7e/YsnzjNUpUqVfiqYk2tDGbXoMSewP+Pn+j9Ind+OSWQXRvFP7EWUlr8a91pCNhc6tdTtU+qIPuW+PxWTfYE+vr6YuvWrW80Fnuxbdq0aYmIf0qVwJL2+yG7BKruKrbv341raahdpy60dRqKRYZ/5c56eB/ly1dA9RoFCyRU6cH9e8i8dxdNm7fgYvh6upNxk4tfXW0dWa9FbglUXRzb9++vtHQufaynTs50/8EjPqxRs0a1QsXey3yIO3cf8LdcJoYfIilBAouqJ9tEld0ztWvXLnQI20A6IyODDwHL9TIhlbUSJVBVl6L4Sa3r+8gntwRS/JOnlcpC/NOkBBanlZQe/5QigSX99+O9SWBxbrLScMz7ksDSwKY4dVCyBBbn+jV9jJIlUNNsinP+9yWBxTl3aTiG4p/0VlS6BEqv2YfJqXQJ/DAUxM4i+5xAscspmbkpCIq1G0mgGD+SQDF+JIFi/Cj+SedHEiidHctJEijGj+UmCRRnKOt/DJHhckpcESSBYk1GEijGjyRQjB9JoHR+JIHS2ZEEirFT5SYJlIEjBUExiCSBYvxIAsX4kQSK8aP4J50fSaB0diSBYuxIAuXhx0uhICgGkyRQjB9JoBg/kkAxfhT/pPMjCZTOjiRQjB1JoDz8SAJl4EgSKAaRJFCMH0mgGD+SQOn8SAKlsyMJFGNHEigPP5JAGTiSBIpBJAkU40cSKMaPJFA6P5JA6exIAsXYkQTKw48kUAaOJIFiEEkCxfiRBIrxIwmUzo8kUDo7kkAxdiSB8vAjCZSBI0mgGESSQDF+JIFi/EgCpfMjCZTOjiRQjN0bEihPcWWzlIm6K8pmxWWq9ZKIwv/1RaZiqRgiUCwClXTNinUcHfR2AhT/xO4Min9i/Ci3OIH/AQbituCsIrsLAAAAAElFTkSuQmCC"},1613:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/type_index-7d73c323ed94d760c7913a71bb3752be.png"},9525:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/write_path-4491f189ec9042b252c1b632b86d4336.png"},7635:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/write_transaction-6f6c3844fe612478890f193c06d1af99.png"},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6907],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>p});var n=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function d(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var o=n.createContext({}),r=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):d(d({},t),e)),a},h=function(e){var t=r(e.components);return n.createElement(o.Provider,{value:t},e.children)},c="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},T=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,o=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=r(a),T=l,p=c["".concat(o,".").concat(T)]||c[T]||k[T]||i;return a?n.createElement(p,d(d({ref:t},h),{},{components:a})):n.createElement(p,d({ref:t},h))}));function p(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,d=new Array(i);d[0]=T;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[c]="string"==typeof e?e:l,d[1]=s;for(var r=2;r{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>k,frontMatter:()=>i,metadata:()=>s,toc:()=>r});var n=a(7462),l=(a(7294),a(3905));a(8209);const i={id:"database",title:"Archethic's database"},d=void 0,s={unversionedId:"build/core/database",id:"build/core/database",title:"Archethic's database",description:"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support",source:"@site/docs/build/core/database.md",sourceDirName:"build/core",slug:"/build/core/database",permalink:"/build/core/database",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"database",title:"Archethic's database"},sidebar:"docs",previous:{title:"Yubikey implementation",permalink:"/build/core/cryptography/yubikey"},next:{title:"Election",permalink:"/build/core/election"}},o={},r=[{value:"Rationale",id:"rationale",level:2},{value:"Log Structured Merge",id:"log-structured-merge",level:3},{value:"Log Structured Hash Tables",id:"log-structured-hash-tables",level:3},{value:"Our approach",id:"our-approach",level:3},{value:"Design",id:"design",level:2},{value:"Chains storage",id:"chains-storage",level:3},{value:"Chain indexing",id:"chain-indexing",level:3},{value:"File indexes",id:"file-indexes",level:4},{value:"Summary",id:"summary",level:5},{value:"Addresses",id:"addresses",level:5},{value:"Keys",id:"keys",level:5},{value:"Types",id:"types",level:5},{value:"Memory indexes",id:"memory-indexes",level:4},{value:"Transaction index",id:"transaction-index",level:5},{value:"Chain stats",id:"chain-stats",level:5},{value:"Last index",id:"last-index",level:5},{value:"Type index",id:"type-index",level:5},{value:"Chain reader",id:"chain-reader",level:3},{value:"Write path",id:"write-path",level:3},{value:"Read path",id:"read-path",level:3},{value:"Additional of-chain storage",id:"additional-of-chain-storage",level:2}],h={toc:r},c="wrapper";function k(e){let{components:t,...i}=e;return(0,l.kt)(c,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Archethic is shipped with a custom database engine built from scratch to support an efficient data storage to support\nconcurrent writes and reads while avoiding much as I/O as possible."),(0,l.kt)("h2",{id:"rationale"},"Rationale"),(0,l.kt)("p",null,"Several solutions have been analyzed and uses from benchmarks, to implementation until the need to implement a solution which will fit the needs and requirements. (ie. LevelDB, RocksDB, Cassandra, ScyllaDB, Aerospike, Redis, etc.)"),(0,l.kt)("p",null,"There are multiple database engines which provides different needs, but we wanted to focus on NoSQL and efficient disk amangement and writes."),(0,l.kt)("p",null,"Our choice ended with log structued family storages (instead of B-tree which are more read efficient, but suffer for random writes)"),(0,l.kt)("h3",{id:"log-structured-merge"},"Log Structured Merge"),(0,l.kt)("p",null,"LSM (Log Structured Merge) comes with the immutable datastructures and append only writes."),(0,l.kt)("p",null,"Append only writes are really efficient in term of disk I/O as a single seek in the file is needed to be placed at the end of the file, and write the new data."),(0,l.kt)("p",null,"There are also shipped with inmemory structure which is flush over time while keeping this append-only log on disk for backup and safety measure. So those dumps are immutable and provided the database view at certain time."),(0,l.kt)("p",null,"But because most of the KeyValue database using LSM, involving updates of keys, they must manage the redundancy of the data and provide cleanup (deleted or updates entries).\nTo support this clean, they are using ",(0,l.kt)("inlineCode",{parentName:"p"},"compaction")," which is a merge operation which take only the last data information from multiple immutable dumps."),(0,l.kt)("h3",{id:"log-structured-hash-tables"},"Log Structured Hash Tables"),(0,l.kt)("p",null,"Log Structured Hash Tables as Bitcask are really interesting as the writing and the reading are efficient because it's using immutable data and key indexing in memory for a predictable and fast reading."),(0,l.kt)("p",null,"Its main requirement is to hold all the key of the value into the memory otherwise"),(0,l.kt)("p",null,"This approach also invovles a ",(0,l.kt)("inlineCode",{parentName:"p"},"compaction")," as data blocks are appended with immutability but needs to be merged after some time to avoid filesystem exhaustion."),(0,l.kt)("h3",{id:"our-approach"},"Our approach"),(0,l.kt)("p",null,"All those database Key-value, Wide column storage, etc.. which are using LSM are considered as global database to support different kind of use cases. However in our case, we have a specific need and requirements: ",(0,l.kt)("strong",{parentName:"p"},"we are only dealing with immutable data at all"),". The data stored in the transaction will never changed, and the mutation and views are managed from an application perspective but not from the disk itself."),(0,l.kt)("p",null,"Then we can reduce a lot of effort and I/O which are heavy in term of computations as compaction/merges, dump of memory structures"),(0,l.kt)("p",null,"In additional to it, we can keep some indexing in memory while providing file backup to avoid memory exhaustion and be able to scale more.\nEvenif we might the indexing on file not efficient, because we are using append only strategy for everything, the indexing is better as the last index bring the last update."),(0,l.kt)("h2",{id:"design"},"Design"),(0,l.kt)("p",null,"So in order to fullfill all those requirements and optimize performances for our needs, we create a new data layer from scratch.\nNevertheless, we took concepts interesting from log structured and wide column storages to support efficient writes/reads with the support of nested column filtering."),(0,l.kt)("h3",{id:"chains-storage"},"Chains storage"),(0,l.kt)("p",null,"The main concept is simple: ",(0,l.kt)("strong",{parentName:"p"},"each chain has its own file"),"."),(0,l.kt)("p",null,"Each chain is uniquely identified by its ",(0,l.kt)("inlineCode",{parentName:"p"},"genesis address"),": which is the address of the first's previous public key, aka the 0th address."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(7635).Z,width:"513",height:"231"})),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"The append-only strategy is straighforward, each time a new transaction in a chain is persisted, the transaction is added at the end of the file of a chain. So in term of disk access and I/O, it requires a simple seek at the end of the file and dumps of the transaction serialized."),(0,l.kt)("p",{parentName:"admonition"},"This concept led to the streaming capability of the writes to avoid exhaustion of the system (as a backpressure mechanism)")),(0,l.kt)("p",null,"So in order to be able to read specific columns from the transaction, the transaction is serialized in a specific format before to be written to disk.\nThis encoding wraps each key value of the transaction into self-descriptive and schema less write.\nEach key/value pair is encoded in that way:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Column name size (1 byte)"),(0,l.kt)("th",{parentName:"tr",align:null},"Value size (32 byte)"),(0,l.kt)("th",{parentName:"tr",align:null},"Column name (binary)"),(0,l.kt)("th",{parentName:"tr",align:null},"Value (binary)"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"7"),(0,l.kt)("td",{parentName:"tr",align:null},"33"),(0,l.kt)("td",{parentName:"tr",align:null},"Address"),(0,l.kt)("td",{parentName:"tr",align:null},"00743B809ADDE7E1E3E9B5AFB704813D06155958FBBB78CD052CC45A1B19F976BE")))),(0,l.kt)("p",null,"However, because we are using a schemaless approach letting the code defining the encoding and decoding, each transaction is prepended by its size length (4 bytes) and its version."),(0,l.kt)("p",null,"So by this way, we know the boundaries of the transaction within a file and the way to decode it."),(0,l.kt)("h3",{id:"chain-indexing"},"Chain indexing"),(0,l.kt)("p",null,"Because each chain has its own file, we need also a mechanism to identify a transaction without a chain, or identify a transaction amongs the chains."),(0,l.kt)("p",null,"Different kind of indexing are performed some completly both in memory and disks for backup and long term storage."),(0,l.kt)("h4",{id:"file-indexes"},"File indexes"),(0,l.kt)("h5",{id:"summary"},"Summary"),(0,l.kt)("p",null,"To provide a way to find a transaction without knowing its genesis address, we implemented a summary index (as there are in other solutions) to help the identify the location of the data.\nThen, as the ",(0,l.kt)("a",{parentName:"p",href:"/learn/sharding/beacon-chain"},"BeaconChain")," used this concept, we also applied the address's subset identification here.\nSo each address contains a subset which is the first byte of the digest (exluding the metadata to identify curve and hash algorithm)."),(0,l.kt)("p",null,"So each subset has its own index, with a list of transaction, genesis addresses, the transaction size and its offset (location in the chain's genesis file)"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(4662).Z,width:"641",height:"31"})),(0,l.kt)("h5",{id:"addresses"},"Addresses"),(0,l.kt)("p",null,"One principle of the transaction chain is to able to target any address of a chain as recipient.\nSo during the transaction validation, nodes are able to resolve recipient last address and then target the right shard of the chain. They are doing this resolution by asking the recipient shard about the last transaction address."),(0,l.kt)("p",null,"But in order to make this possible, previous nodes of a given chain need to keep a track of the last transaction of the chain."),(0,l.kt)("p",null,"Then a specific index file is provided (",(0,l.kt)("inlineCode",{parentName:"p"},'"Genesis-address"-addresses'),") for this purpose which contains a given chain (genesis file), a list of timestamps and addresses for this chain."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(1624).Z,width:"321",height:"31"})),(0,l.kt)("p",null,"The timestamp is useful during replication and validation to be sure to get the last chain address at the time of the validation, so we can reproduce the validation later without problem."),(0,l.kt)("p",null,"However during the transaction validation we keep the latest one."),(0,l.kt)("h5",{id:"keys"},"Keys"),(0,l.kt)("p",null,"Sometimes we also want to identify the genesis address or first public key of a chain.\nBut we need to track it as well."),(0,l.kt)("p",null,"For instance, in smart contract code, we want to do some actions depending if a transaction's coming from a specific person, but how to identify it, as its transaction chain evolves and we don't keep a track of all the transactions."),(0,l.kt)("p",null,"Then being able to identify the first transaction of a chain is important."),(0,l.kt)("p",null,"So we are adding a new chain index file (",(0,l.kt)("inlineCode",{parentName:"p"},'"Genesis address"-key'),") to support this feature."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(8825).Z,width:"321",height:"31"})),(0,l.kt)("h5",{id:"types"},"Types"),(0,l.kt)("p",null,"We also want to be able to list of the transactions of a given type, this is useful when the starts and fill memory tables but also to list transactions in UI or API for network transactions."),(0,l.kt)("p",null,"Then a index is given by type for this purpose where the addresses are appended"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(1613).Z,width:"411",height:"137"})),(0,l.kt)("h4",{id:"memory-indexes"},"Memory indexes"),(0,l.kt)("p",null,"Among the files indexes for backup or long term storage, we are proving some in memory indexes (a bit like Log structured Hash tables) to read data with predictable latency.\nThis make reads fast."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(8321).Z,width:"482",height:"95"})),(0,l.kt)("h5",{id:"transaction-index"},"Transaction index"),(0,l.kt)("p",null,"This index works a bit like a chache and is identified by a transaction address with the following information:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"genesis address"),(0,l.kt)("li",{parentName:"ul"},"offset"),(0,l.kt)("li",{parentName:"ul"},"size")),(0,l.kt)("p",null,"So once the a transaction is present in this cache, we can easily read transaction give information about the position of the file, and read it really quickly."),(0,l.kt)("p",null,"But if the transaction is not present, we can easily use the index summary as fallback, to identify the file and the offset."),(0,l.kt)("h5",{id:"chain-stats"},"Chain stats"),(0,l.kt)("p",null,"This index is built from the genesis chain files and contains information about the number of transactions within and the last offset.\nSo during the write, the transaction index/summary is notified about the last offset of the chain, and help to move forward in the location of new transaction."),(0,l.kt)("h5",{id:"last-index"},"Last index"),(0,l.kt)("p",null,"As we mentioned in the last addresses chain index file, we need to quickly know what is the last address of a chain, so here we a cache, we says for a given genesis address what is the latest."),(0,l.kt)("p",null,"So this table is filled every time a node receives a last address notification."),(0,l.kt)("h5",{id:"type-index"},"Type index"),(0,l.kt)("p",null,"Because we have type index file, we can also leverages a memory index to know how many transactions for a given type exists.\nThis is useful for key derivation for network transactions.\nSo we can easily and quickly get the size of a chain."),(0,l.kt)("h3",{id:"chain-reader"},"Chain reader"),(0,l.kt)("p",null,"Wide column storages provides the capability to extract sub columns information to avoid the load of an entire row in the memory to let the application filter the data.\nThe filtering can be done on the disk, while make it efficients."),(0,l.kt)("p",null,"The behaviour like is a two dimensional key-value pair, where the 1st dimension targets the partition key and the 2nd targets the columns of the row."),(0,l.kt)("p",null,"So we achieve a similar approach here, by eing the 1st dimension as the chain file and the 2nd as the list of columns names encoded during the transaction write."),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"After being able to get the lookup informations from the chain indexes to identify the file and offset in the file of a given transaction, we ",(0,l.kt)("inlineCode",{parentName:"li"},"seek")," (put the cursor) at the offset position."),(0,l.kt)("li",{parentName:"ol"},"Then we can sequentially read columns and values and pick the ones we want"),(0,l.kt)("li",{parentName:"ol"},"When we reached the end of the transaction (thanks to the size information from the indexes) or the enf of file, we convert those values into a transaction where the values retrieved will be filled in to the structure.")),(0,l.kt)("h3",{id:"write-path"},"Write path"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(9525).Z,width:"811",height:"481"})),(0,l.kt)("p",null,"So in order to be written, a transaction follows a write path to make reads efficient."),(0,l.kt)("p",null,"After a transaction is written to disk in the genesis chain file, several disks and memory writes are performed to help the indexing of this transaction."),(0,l.kt)("p",null,"Transaction's address is written to:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"the summary index from the subset of the transaction (file)"),(0,l.kt)("li",{parentName:"ul"},"the last addresses index of the chain (in memory and file)"),(0,l.kt)("li",{parentName:"ul"},"the transaction's type index (in memory)"),(0,l.kt)("li",{parentName:"ul"},"the bloom filters (in memory)"),(0,l.kt)("li",{parentName:"ul"},"transaction index (in memory)")),(0,l.kt)("p",null,"Its public key is also written to the chain's public key index. (file)"),(0,l.kt)("p",null,"Then transaction's type in memory index number incremented, as well as the chain stats in memory index."),(0,l.kt)("h3",{id:"read-path"},"Read path"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(401).Z,width:"505",height:"441"})),(0,l.kt)("p",null,"To make read efficients, when a transaction wants to be retrieved, it goes to the read path:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Check if the transaction index is present, if yes we have information about the file and position"),(0,l.kt)("li",{parentName:"ul"},"Otherwise we check the bloom filter, if yes, we read the subset summary to identify the position of the transaction, otherwise you inform the transaction does not exists"),(0,l.kt)("li",{parentName:"ul"},"Then a reader is able to perform reads according to the fields requested and the position retrieved.")),(0,l.kt)("h2",{id:"additional-of-chain-storage"},"Additional of-chain storage"),(0,l.kt)("p",null,"For now, we have covered the scope of chain storage and retrieval, however we also need to persist some data which are not really inserted into a chain and are important for well-being of the node execution."),(0,l.kt)("p",null,"So we have to leverage others kind of storages and indexes as simple key-value in memory loaded from disk."),(0,l.kt)("p",null,"The scope of those storages are:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Bootstrapping information (last P2P bootstrapping seeds, storage nonce, last sync date)"),(0,l.kt)("li",{parentName:"ul"},"Network statistics (aggregated TPS and nb of transactions)"),(0,l.kt)("li",{parentName:"ul"},"P2P view (aggregated node availability from the beacon chain)")))}k.isMDXComponent=!0},8825:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUEAAAAfCAYAAAB5/X8CAAAPe3RFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBNDElM0E1OS43ODBaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJYZGR3Z1V6WG9rZngyd3l3NXNRaCUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjI0JTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMnZETHdETjlxQkZkTHVKRlhfNzB2JTIyJTIwbmFtZSUzRCUyMlBhZ2UtMyUyMiUzRTNaVmJUOEl3R0laJTJGelM1TmVzQzVYU0o0VEV3MFN5UmUxdllycTNZcmxvNkJ2OTRDSFdPQ01ScFA4V3J0JTJCeDI2NyUyQm1iTktLRFluNW0yU1MlMkZNZ0owUkpDWVIzUVlFWUl4aXYxbnFTeldTcG9lcllXeFZTSWt0VUttbmlHSUtLaVZFakR0SkRwanRGT1Ryc2hOV1FKM0hZMVphJTJCcHVtalM2ZSUyQnFFaldGSHlEalR1JTJCcElDWmMzYzhWcEd6Z0hOYzdEMFFrSjh4V3NTUTZUVEhNbVRMMGwwWk9JRHF3eGJyMHE1Z1BRUzNnTkZ6NFRmWFZIMDRkS1A1ME5ieDl2YmxKNnNHNTIlMkJwR1N6UWdXU3ZmcDFyMVptYkclMkJ1cjAlMkJ5QzR2Sk1aeVZEVWxhTVowRlhoRlBkVFhpa000ZE9vV0RVbHJxbExBc2h1SzZIR2RLd2ZaaFBGbHRQYmU4VnJ1Q3UxMzJDJTJCbDBucGd0TEdyV2lvWUpKSjdmZXFzZVlTdFNNd1R1SmMlMkJFdjRFcklQNXE2dDdaMjY4dVF6dllqQUZPTHZ3ZFUyWE9Bd1pERXhRMk5ldEhaSWc1VnRHb0VGandZRGpUZWNXc2w4RXpoOWdqbmVZWTRRUjZxWGtTNUZMS1FuZmkxekU5JTJGRmglMkZJM0lrejlHbkx6cDhxOUYlMkZvc3VwJTJCU1BNYWY3WFg2WTB2JTJGaWN0TDdNZVIlMkIyNzR6cTlqV2EwMVBYZ0ElM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyVExmNkd1azZJZjQ2bExsQ2dRbW8lMjIlMjBuYW1lJTNEJTIyUGFnZS00JTIyJTNFM1pWQlQ0TXdGTWMlMkZEVWNUYUFmQ2NVNTBCNDJISFRUZU92cUF4a0pKS1lQdDAxdEdHZUNXbUNWVEYwJTJCMCUyRiUyRmY2SHUlMkZYZjFJTEw3TG1VWklpZlJZVXVJVnMybGo0M2tMSWNXeFBmMXBsMnlsQmNOc0ppV1RVSkEzQ2l1M0FpTFpSSzBhaG5DUXFJYmhpeFZTTVJKNURwQ1lha1ZMVTA3Ulk4R25YZ2lSd0pLd2l3byUyRlZWMFpWMnMlMkZsQlVOZ0NTeEpUV3NmbWZreTBpZWJTY3FVVUZHUEpCeGFlQ0dGVU4wcWF4YkFXM2c5bCUyRnBwOTE2R2ViVlpydWN2YndLRjBwM2ZkTVVlempseUdFRkNyaTViR25XbE40UlhodGVjc3doTXgxSnRlNHhTVkRtRnRwUnQ0YnM2WlFwV0JZbmFhSzJObzdWVVpWenZITDJNR2VjTHdZWGNuOFdVZ0I5SFdpJTJCVkZCOHdpbmlSRCUyQnRZUjh4dmdGVFFmTG0zYjRaMkRqZWhMUXdpQXlXMyUyQmx4ZnhUT1haOXlMYkxPdkJ5JTJGNFJrcEhMc0JHSThaOXlhSHlRRmd2RE9RemdPTWo0STd0MlBZc1FCZEZIc2N4aWs0aXA5N2FjNzBmUk81ZkdmSFphWXRmbHZjZldoeWpLd1B1bnJhNEclMkJEJTJGWW5FMCUyQnpYa2VqdThNUHZZNkozRzRTYyUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0VhM/nOAAAMbUlEQVR4Xu2ceTzVWR/HPy2mZaJNPcXTQuuYpFE9TwvTtExUypQGLWYmTetUk9LqSTRCiSihbG1C0UbElD0mRRKRJSVpkbVmEsm8zjH3PjQ07j1dY3TOf67zPb/z+/jc9znn+z0vrW4H6VaDNyYFnNJXMMV/yMErhzp/yK//Xt6d+49NxlYEgp+obWQb5QOOTovZjbaqJz5gBVhevRqvExeA+098Dbn/xNeORO47EQ0OQTYNwU3IIiCHIIt6JJb7j01BDkE2/Wg0NyGLiByCLOpx/7Gqx3eC7ApyCDJqyCHIKCBfhBkF5DtBRgH5SswqIIcgq4L8JMKmIIcgm378OMysH4cgq4QcgmwKcgiy6cchyKwfhyCrhByCbApyCLLpxyHIrB+HIKuEHIJsCnIIsunHIcisH4cgq4QcgmwKcgiy6cchyKwfhyCrhByCbAq+FwjuP+iLjh3aY/E32sLZ3Mm8D9fDZ5B19wEmqI3E6mV6aNu2jfD3TwuK8N1yM/gd242OHdvTz4tLyuDi7o+4+FtQGqoA4zUGkO3ehf7ur8YjfU6duQS/c5fhe9iKxty99xC79h7B/dxHGPMfZTqH7t06098l3kyHk+sp5D18Cu0ZEzD3q8noIdtVLDWbyoSFz55i7DA5TJqqBZejZ4VzdXGwQnZmOnbYOENFQQY/x6Wjn8JAsd6FBJHnbPrREPvdTqJDh45ij9O4QHYI/p3+e/26CsvXWtZ51dkzJ2KGhto7/Rca9guOeAXiVUUFNKeMg+6cLyEj/XHjJHurV0vyX3CAH0IC/FH1pgpas/UxYfI0tG/fQSxdGhvEBEECkpBLcdhqfgCbjL6FtflqIcyGj9XHJ0MUsGyRDiz3eEBt7Ag47DbGb7+V43RAGI56X8DPYVdRkheBzjKdUF1dDZ2FG3HzVgbMTZYhODQWKWnZSIz2QtnzF2hoPMGL5tzPh6LyLAwe2Bd3Ek/Tj4eozsGI4UMwV3syjvkEoai4FJHBriAAlhusCWLWeXM14Hn8PJ4VliA+4mhjdavTr6lM6HXYGXsstuLXF8/xS+ojdOveg87D2d4SWRlpsHE8goT4KximMlIseL18+RtCL5zB2VPHcCXyEhIyCiEtU7NoSK6JD8Hm4D+y0I4YNw97dq4VSjRKVQmqKkMb9F9ySiZU1RdgzXJ9+r0wszoEvTlfwnTzErFkbin+i7gUhKULZ8FwuRGUlD+Dw24zzPhKD+u2/CSWLo0NYoKg46GTiI69gYjoBCxaOFMIQQKcreaOeJAWROdxPigK2vrr8OvjGJSUPofRFju666sNQWKmAcO1cS81AP369EZhUSlk+09GdIgbCOAaGo/sIslq/MX0pZDr3YNClEDwxs071GilDyPpCiuAZNbNsyAmNDaxR3byOTo/8rPKuHnITDqDgYp9GqudsF9TmXD21NH4esFi7LfZgbWbzKFnUPOlEUDQyt4N3+lqwM75OHr1/jcuBvpjr9U2lJWWYLq2LjaaWqNdu/ZIvnEN1uYbkJOVAfWJU7F1hy26dO2Op4/zYWm6HqWlxf8ICDYH/8XFJ8Pc2hVRF13r+OZd/iPfh/Co6zjva0djrGw94eMfipux3iJ7jwS0FP8R71VWVmC71X6qg5enExxtLRCXki+WLo0NYoKg4CG6326GYn95IQTJypaZlQsvdwvaJeV2NpTH6NWBzK3ULLq7E+wEL0fEY/Z8Y5TlRwnnLiP3OfbZbMC93EfvHM9itzvS7uRAR3sStpg5UggSOH+uuQTlBbFo1+4jeiwfNGI2gvz3QWXYIBQVl2GY0gD6LPej52C02RaF98MgJdW2sdo1KQSzM9MwTV2Z7gDdneyQcO0KfM7XaCWAoIXtQXocDo1NQ0VFBbS+UMG2nfbopzgIO/9nhJVGJhg/YQrGKcvDYPEqaM7UgaujDV68KMOJsxHC98lIS4HWxBHNfifYHPxHYLZjlytduFu3bo0V38+FzqxJuHo9pUH/aUweg+pqoOBZMZJTM2GwxBTLDOdgh8lykb3XVBBsCv+R00wnaWm6gJO2YdW3qHj1Cg6uPmLp0tggiUDwm6Wm6Ny5E/bb1PxnGrLr69Z3EpKunICK8mD62dsQJEdSa7vDwqMs6TNSfSEMDWZRQzU03svyV9DWX4/b104hMiZBCMGqqjf0yGugP53m+xycveHjFwpvT0vo60ylcyB9nN39sNp4N/Zar8PalfMbq1udfk2xEpOjQVpKEs0FJiVche6M8Qi/lgX5Pv3rhaC/92EKSgHcYqMuI/9hLl48L4OH815EJuagVatWyMm+A43xnyI2OQ+yPXvR9/qnQ7Ap/eftFwLP4wGwtVyLh/kF2GnjTkFouX3VX/rvkOdpLPuxJp9Y25eimrCl+Y941Gq7MU6d8IBPQDRUR48VVRKR+ksEgiuMrOhx9uQRazqZ/EcFkB8yDcUPwtGls3S9ECTHgaWrLersBElOz85qHQIvRtc7XlFuGEZ9boAZmmqYrTURUbGJcHL1g4+nJc21kOTzmg02NEE9/2tNBARHISL4EM3XEDDP1DVCZvYDuB/YBi1NdZGEq91Z0iasqqqCmkoflJe/pHnAyooKPH6Uh02mu7B45fp6IWhvbYpusj1haulQ5712bP0Rxz0O/OldAyNuYvDQT1sEBJvKf8TPH0lJUc0ExT2SHycniyfZobgQEtOg/wR/AJIj37nHg+bNSbpIMI4oZmxJ/rt9KwmL501HLzl52Dodg+LAoaJIIVZfiUCQ/EH9z4UhIfo4nVRMXBItehBjCNrbO0HSR13jexCwde0iQwsoH/dSA8nh+fqH1jtefsZFeqQWNFLcIEUPpaGKuOBnjwd5T6A+7jNadHn8pJCuzCRHSNqUmSug0F8eh/aZ0MIMS5O0Ca/GRsJgzmR4+ASjbdua43rAaW/cuP4LgqKS64Vg4Blf3L6VCKfDNUWiW0nX8Tg/D6m3biA6PATHz4TRz19XViIzPRXKn42ClNRHLQKCTeU/4uczAeE0rTJoQF+q3UGP03ByO4XI4EP0tFOf/8wsD0JerifWr15IY1LT7mLYf3WRk3Ie/fvKiWzFluK/e3ez6Annh3UmWLTMCG3a/P82iciiiBAgEQgKCg0hZx2hNEQRhj+Yo0f3rsIcIf1SvpUTrKx8je79JsFo1QJ6NYYY5bhvMAjoUtOyaeHiXeNRMARH0YIHyQkKjuAkBzhhvCotxjzMf4rAU/bwOhmMFWutaKW49srbv29vmj8UtUnahCbrlqKsrIReWRE0ArPZX45GYHgSLoecp9Xh2jlBcqQw0JkC9xMXoDhoCBbpadI8YM9/ycFQfxq8zoZDecQouB2wpQnomKRctPkDsP/043BT+o/47efwq4gPP0Jz1/MNTWj6ZfliHZoCqs9/pHBI/E1y5mTB3vaTM+ITUhF32VNU69H+LcV/2zevwt2sdOy0PSjUoXXrNkzXvRoj6HuBoN53W2hhxMpslfCZJL9HihSkkWsrMaHude7hCYolguot6UeSzJO0apLD0p06UgORYy1pfzXe2xAkP/+0yw02DjXXXnr3kkVYoAtdgddstMF+F98/6UOqc8OHDWqMbnX6SNKE5NoKKXbsc/OFppaO8LlkdztBVQFfLzCElJTUn+4J9umniK1GS3Da9wiNIXcLSYKZVIetzTbAw2Uv/by7bE/sdfHCGLWJwrEz0lNpUSUxswidpGVE1kO0APGvyAie83f6j9wznbPAGNcSb9PpjFZVwjkfO+q3hvxHFmiNr1YJY8aPUYHFtpX4Qn2kaNL90bul+E9jvBJysjPqaPBxJ2ncyCoWS5fGBr0XCDb0sNKyF7QCJsq1k4qKSprDIzG1L1eTZ4gzXnl5BfLyn4g0h8aKJ+gnSROKOpe3+5cUF4KspjKday6dC1pRYQGeFTxFP4UBFIx/X2OHYHPwH8l7k0ITgV/t1pD/3rx5g9y8xzSnSK52sTTuPxb1+D9VZVOvCVbi9zLBZj2I5CDYrF/7PU6uOUPwPb6mxIaS6E5QYrNuZgNzE7L8QTgEWdQjsdx/bApyCLLpR6O5CVlE5BBkUY/7j1U9fhxmV5BDkFFDDkFGAfkizCgg3wkyCshXYlYBOQRZFeQnETYFOQTZ9OPHYWb9OARZJeQQZFOQQ5BNPw5BZv04BFkl5BBkU5BDkE0/DkFm/TgEWSXkEGRTkEOQTT8OQWb9OARZJeQQZFNQCEG2YXi0U/oKLoKYCqwc6ixmJA8TKMD9x+aF3wGLGd3vdPqULgAAAABJRU5ErkJggg=="},1624:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUEAAAAfCAYAAAB5/X8CAAAM+nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBMzUlM0E0Ny4zMDlaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJsZV9hWU5weHdJRG03ajQ0ZTFyLSUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjIzJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMnZETHdETjlxQkZkTHVKRlhfNzB2JTIyJTIwbmFtZSUzRCUyMlBhZ2UtMyUyMiUzRTNaVmJUOEl3R0laJTJGelM1TmVzQzVYU0o0VEV3MFN5UmUxdllycTNZcmxvNkJ2OTRDSFdPQ01ScFA4V3J0JTJCeDI2NyUyQm1iTktLRFluNW0yU1MlMkZNZ0owUkpDWVIzUVlFWUl4aXYxbnFTeldTcG9lcllXeFZTSWt0VUttbmlHSUtLaVZFakR0SkRwanRGT1Ryc2hOV1FKM0hZMVphJTJCcHVtalM2ZSUyQnFFaldGSHlEalR1JTJCcElDWmMzYzhWcEd6Z0hOYzdEMFFrSjh4V3NTUTZUVEhNbVRMMGwwWk9JRHF3eGJyMHE1Z1BRUzNnTkZ6NFRmWFZIMDRkS1A1ME5ieDl2YmxKNnNHNTIlMkJwR1N6UWdXU3ZmcDFyMVptYkclMkJ1cjAlMkJ5QzR2Sk1aeVZEVWxhTVowRlhoRlBkVFhpa000ZE9vV0RVbHJxbExBc2h1SzZIR2RLd2ZaaFBGbHRQYmU4VnJ1Q3UxMzJDJTJCbDBucGd0TEdyV2lvWUpKSjdmZXFzZVlTdFNNd1R1SmMlMkJFdjRFcklQNXE2dDdaMjY4dVF6dllqQUZPTHZ3ZFUyWE9Bd1pERXhRMk5ldEhaSWc1VnRHb0VGandZRGpUZWNXc2w4RXpoOWdqbmVZWTRRUjZxWGtTNUZMS1FuZmkxekU5JTJGRmglMkZJM0lrejlHbkx6cDhxOUYlMkZvc3VwJTJCU1BNYWY3WFg2WTB2JTJGaWN0TDdNZVIlMkIyNzR6cTlqV2EwMVBYZ0ElM0QlM0MlMkZkaWFncmFtJTNFJTNDJTJGbXhmaWxlJTNFuJ3r+wAADZVJREFUeF7tnHk81Vkfxz8V00oLbTwttCiTlKl5WmifUimVQotpYkp7aS+TaEFJWoQS2oRopcRkCaNdEpElLWiRNdNC6nmdY+59KJq591yNcs5/fvd3zu/8Pvdz3+d7vt9Tde6e1/8A3pgUcEqax9S/Nnee3825Nr++RN6d+49NxjoEgt01V7GNUot7J0Ztg5TGsVqsAMurf8C7mOng/hNfQ+4/8bUjPXcfiwSHIJuG4CZkEZBDkEU90pf7j01BDkE2/WhvbkIWETkEWdTj/mNVj0eC7ApyCDJqyCHIKCBfhBkF5JEgo4B8JWYVkEOQVUG+E2FTkEOQTT++HWbWj0OQVUIOQTYFOQTZ9OMQZNaPQ5BVQg5BNgU5BNn04xBk1o9DkFVCDkE2BTkE2fTjEGTWj0OQVUIOQTYFOQTZ9KtWCJa+e4fMjIf0GQqK7SElLS2B2da0ITgEWb+R6oJg7fCfhI7I7Nnng0YNG8DkZ13h93kv5SFcD55C6v3HGKz5AxaZGkBKqp7w8+fZufhlriX8jmxDo0YN6PW8/EK4uJ3A5Wt3oNpNCSsWG0Ferhn97O/GI/f4nroIvzMh8DloQ/vcf5CJrQ6H8PDRE/T7UY3OQa5FU/pZzO0kOLn6IiPzOXTHDsbkCcPRUr65WH6UtAmzMh9hy/plyMp4iA4dO6Poz5eICLmAqTNNsWSVJVrItawwz5wXz9G/hwKGjdSBy+HTws9cdtkgLSUJdo6HYDh+EPSnm2CSwUyx3pF0Is9ZvcQYew4cR8OGjcQep2JHdgj+m/57964Uc5daV3ilieOGYuwozc/6Lzj0Cg55BuBtcTG0RwyA/qSfICvTWCxNa4P/Av39EOR/AqXvS6Ez0RCDh49GgwYNxdLr405MkSABSdDFy1hntRerzWbC1mqREGY9+xuiu4oSTGfpwXq7OzT798KubSvw6tUbnPQPxWGvc/g99CryM8LRVLYJPnz4AL0Zq3D7TjKszE0RGByN+MQ0xER6ovBlEaoaT/BC6Q+zoKw2Hl07t8e9mJP0sorGJPTqqYLJusNxxPs8cvMKcCnQFQTACl21Qcw6dfIoeBw9ixc5+bgWflgsUSVpwtTkRCyYpYcNNnvQt78WkhLi0EGpM169KqIg9PPygOfpMEhLfyecq+dBZ2zfvA5/Fr3ElYQnQkg677QGGc/e6Qju3olFy1at0bJ1W5Hf8fXrVwg+dwqnfY/gj0sXcTM5BzKyZYsJexMfgjXBf2Sh7TVgKrZvWSqUoo+GKjTUu1Xpv7j4FGhoTcfiuYb0d2Fpsx8Gk36CxZrZYsn5rfsv/OJ5zJkxHsZzzaCq1hu7tlli7AQDLFu7SSy9JApBx/3HERl9C+GRNzFrxjghBAlw1lk54nHiefq8s+cjoGu4DH8+jUJ+wUuYrd1Bo77yECRm6tRTFw8S/NGhXVvk5BZAvuNwRAYdAAFcVeORKJKsxkPGzIFC25YUogSCt27fo0YryLxEV1gBJFNvnwYx4QrznUiLO0PnR/5WHzAVKbGn0Fm5ncjCStKE+mMHwmzNJmj8OABGk4ZDqZMK8nJfUBge9L0AB1sLzDI1g0bf/sJ5ThzZF1Omm2CP3UYsXW0FA6OyH1N5CFqtXURXzyEjxuBCwAk42KxHYUE+xujqY5WFLerXb4C4W9dha7US6anJ0Bo6Eus22qNZczk8f5oFa4vlKCjIq1EQrAn+u3wtDla2roi44FrBN5/zH/k9hEXcwFmfHbSPjb0HvE8E43a0l8jeIx2+df8R75WUFNPAgDRPDyc42m/G5fgssfSSKAQFg+nPXAPljopCCJKVLSX1ETzdNtNb4u+mQa2fQQXI3ElIpdGdIBIMCb+GidNWoDArQjhHWYVB2G23Eg8ePfnseJu3uSHxXjr0dIdhraUjhSCB8yDt2XiTHY369b+j2/IuvSbi/IndUO/RBbl5heih2ok+y+3wGZitsUfOw1BIS0uJLKykTEggM25Ib0TceoDQ4AB4uDjgyMkQGoVt/s2MXieGIIDU1tGj80xLScRoLTUaAbo57cDN63/A+2yZhuUhSLbDU6YZQ61XX+gMUcf6LTvRQbkLtvxmhvlm5hg4eAQGqCnCyGQhtMfpwdXRDkVFhTh2OlyoR3JiPHSG9qoxkWBN8B+B2catrnThrlu3Lub9Ohl644fh6o34Kv03ang/fPgAZL/IQ1xCCoxmW8DUeBI2ms8V2XuShGBN9R/ZzTSRkUGbtv+h+qxcOBPFb99il6u3WHp9EQj+PMcCTZs2wR67sv+ZhkR9LdoPQ+wfx6Cu1pVe+xiCZEtqu+OgcCtL7vlBawaMjcZTQ1U13us3b6FruBx3r/viUtRNIQRLS9/TLa+R4Ria79vl7AVvv2B4eVjDUG8knQO5x9nND4tWbIOD7TIsnT9NLFElBcGEO7ewzWoVDvn9Tr/onr37UiiR8J9EbQRc44Zp4LBfMJq3kKdzJZ8lxsfSXGDszasgkWTY9VQotutYKQQfpKVQUArgFh0RApKDLHpZCHdnB1yKSUedOnWQnnYPowZ+j+i4DMi3akOf9bVA8Ev6z8svCB5H/WFvvRSZWdnYYudGQWi9YeHf+m+/x0mYLinLJ5b3pagmrC3+Ix612bACvsfc4e0fWWE3JKpm5e9nyglWtRLPM7Oh29njh2zpLVlPsqGoMhp5j8PQrKlMpRAk24E5izZXiARJTm+HzTIEXIisdLzcR6HoM8gIY7U1MVFnKCKiY+Dk6gdvD2uaayHJ58Ur7WiCetoUbfgHRiA8cD/N1xAwj9M3Q0raY7jtXQ8dbS2xdZSUCbOfPYHh+MEIuZqMjeuWoFGjxjAyWQBtrR6Yb7YOUlLSiAoPhptXWZqhtLQUmurt8ObNa5oHLCkuxtMnGVhtsRUm85dXCsHI0CC0kG8FC+tdFd6XPO+o+95PNAgIv42u3b7/qiD4pfxH/PzdXxV7QXGP5MfJzuJZWjDOBUVV6T+B0CRHvmW7O82bk3SRYBxRzFgb/Edy2iZTx6CNgiLNcSt37iaKRJ+9t1ogSL7QE2dCcTPyKH141OVYWvQgxhC0jyNBco/WqF9BwNa8mSwtoDRuowmSw/M5EVzpeFnJF+iWWtBIcYMUPVS7KeOc3048zngGrQG9adHl6bMcujKTHCFpI8bNg1JHRezfbU4LMyxNUiYkcyCRnpWtI5rLycFy9UI6LQI0Ui0mBZJNds5o3VaRXr8afYnmDd29AyElVbaN9z/phVs3ruB8RFylEHySmYG7d2LgdLCseHQn9gaeZmWARKGRYUE4eiqUXn9XUoKUpASo9e4jLMJ8LZHgl/If8fMp/zCaVunSqT3VbZ/7STgd8MWlwP10t1OZ/yyt90FRoRWWL5pB+yQk3keP/+ojPf4sOrZXENmK37r/HtxPpTucBcvMaT68Xr3/nzIRWaxKOlQLBAWFhqDTjlBVUYbxAiu0lGsuzBHSH99HOcGSkneQ6zAMZgun06MxxChHfQJBQJeQmEYLF58bjwIgMIIWPEhOULAFJznAwQM1aDEmM+s5Anx3wvN4IOYttaGV4vIrb8f2bWn+UNQmSRNevxKJNUtM6LGW8sUPcmbLx/MAjfgE+UDzZXNQWJhPj6wIGoHZxJ/6IiAsFiFBZ4XVYUFOUKW7Goz0RsDt2Dkod1HBLANtuuVu1VoBxoajaeVZrVcfHNhrTxPQUbGPUO8vwH4tEPyS/iN++z3sKq6FHaK562nG5jT9MtdEj6aAKvMfKRwSf5OcOVmw129yxrWbCbgc4iGq9ej937r/NqxZiPupSdhiv0+oT9269WhQIIkmEQga/LKWFkZsLMsiF9JIfo8UKUgjx1aigt0qnMMTFEsE1VtyH0kyD9MpSw7LNGlEDUS2tf9kvI8hSP7etPUA7HaVHXtp20YeoQEudAVevMoOe1x8PtGPVOd69ugisq6SNCF5OKkErzUzoRFY1+5qKMjPRVpyEq3Ymi5eTUFIjq2oK8li9wEfIRRJXxL1DtZQwpTpxpCWlv7knOCEKUZYZzYbJ30O0fckZwtJgplUh20tV8LdxYFel5NvBQcXT/TTHCrUIzkpgRZVYlJy0URGVmSdKu8g/hEZwXj/pv/IOdNJ01fgesxdOp2+Gqo4472D+q0q/5EFetSEhcI+A/upY/P6+Rii9YNYmn7r/hs1UBXpackVtGncRAa3UvPE0uvjThKBYFUzKSgsohUwUY6dFBeX0Bwe6VP+cDV5hjjjvXlTjIysZyLNQVRlJW1CwfPJub/HD9PRQk4erdqIvk363Hvk5+WArKayTcsOowtabk42XmQ/RwelThSM1d/YIVgT/Efy3qSgROBXvlXlv/fv3+NRxlOaUyRHu1ga9x+LehL6FyNsU/j6e1eXCb9+Zf7JG1QfBP/J07+Fe7j/2L7Fao0E2ab29fTmJmT5rjgEWdQjfbn/2BTkEGTTj/bmJmQRkUOQRT3uP1b1+HaYXUEOQUYNOQQZBeSLMKOAPBJkFJCvxKwCcgiyKsh3ImwKcgiy6ce3w8z6cQiySsghyKYghyCbfhyCzPpxCLJKyCHIpiCHIJt+HILM+nEIskrIIcimIIcgm34cgsz6cQiySsghyKagEIJsw/DeTknzuAhiKjC/m7OYPXk3gQLcf2xe+B/AQvf+6fgbTAAAAABJRU5ErkJggg=="},8321:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/memory_index-8b745de23265c24b29a6b68889747e0f.png"},401:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/read_path-9a620d8ec68c3034fe7524efe7409647.png"},4662:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoEAAAAfCAYAAACYoBeiAAAKW3RFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMkVsZWN0cm9uJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDIyLTA0LTA3VDE1JTNBMjklM0ExMC4xNjlaJTIyJTIwYWdlbnQlM0QlMjI1LjAlMjAoTWFjaW50b3NoJTNCJTIwSW50ZWwlMjBNYWMlMjBPUyUyMFglMjAxMl8yXzEpJTIwQXBwbGVXZWJLaXQlMkY1MzcuMzYlMjAoS0hUTUwlMkMlMjBsaWtlJTIwR2Vja28pJTIwZHJhdy5pbyUyRjE0LjQuMiUyMENocm9tZSUyRjg3LjAuNDI4MC4xNDElMjBFbGVjdHJvbiUyRjExLjMuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjJFMzJvY2hNWnNQcTB0U09JbEtHQiUyMiUyMHZlcnNpb24lM0QlMjIxNC40LjIlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTIwcGFnZXMlM0QlMjIyJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyS3ZUeTZfRm4xUEd2SXVrR0dCOG8lMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFNVZuWmNwc3dGUDBhVDUlMkZxQWNsZ2VNelNKVE5kTXBPMFNSOWxKSU5xR1htRUhKdDhmU1VRWmhGSm5NU3VNODZUMFJYYXpybjM2SEk5Z0dmejlSZUJGc2wzamdrYkFBZXZCJTJGQjhBSURyT3I3NjBaYTh0SVRodURURWdtTHpVbTI0b3ZmRUdCMWpYVkpNc3RhTGtuTW02YUp0akhpYWtraTJiRWdJdm1xJTJGTnVXc3Zlb0N4Y1F5WEVXSTJkWWJpbVZTbmNzUDY0NnZoTWFKV1RvQTVueHpWTDFzVHBJbENQTlZ3d1ElMkZEZUNaNEZ5V1QlMkZQMUdXRWF2QXFYY3R6bkIzbzNHeE1rbGRzTVdGNndrNyUyQjM5NU5mRnhlJTJGNVk4JTJGbDluNk92Z1ltTDNKdkRxdzRNc1VFejNHR2NCVExtVENZNTRpOW8zemhUSzZ5dmlYU0prYnF0QlNjbVZLNUp5WlhyVWRrZCUyQmE4VVhqajI0TXZhcDV2bTUybnVmTjFpVVJkRTRrRWNaWWJvOWdpNlQ2MUpWWElCRVQlMkJjaFJ4eHZNbGJNU3JsWVJ1Um9uQ0VPUzNyWG5SOFpyNHMxN202R1huS3FWZ1dNOEhIamUwUFZkRURwUVBRZk9HSll6R0hkM2ZhYzlZOGFYSWlKbWtwb3Q5ZERZVlcwcU9Id0duOGI1N2hCYm1oTlpCQ3MlMkZYT2pIbEV2MWM3cEtxQ1JYQ3hScDIwb0ZjWnZOQ1lwbWNlRVRQNWVTMFpRWU8wWmk5bE9Ob3JMZ2IlMkJob2VxZVVzVFBPdUNoV2d0Z2pBUjRwZXlZRm41RkdUd0FtMFBjMyUyRk40UkljbjZjWVp0NXN3QVdFRnNJQWNqMDE3VjhWcTlralFpTlhRZTVycEZ5M001Q0olMkZtZ0tUNFJJdFRRWVBHVk9HWkpVWFV1VzM4dGYwU1NSVVJhV0VCRHR3QVdna1NzS0dmVHFjZ2l2cWd4JTJGN0U5JTJGeG5oSllOZkFOWXJ3Zll5dmJLeUhLZERxJTJGdWRxRmtUZVElMkZOVkVwSFh1THlXcTVoa09jTUJxUkQ1bSUyQnR4SkVVOHMlMkZWRFRJdGglMkIwZVRSTzB5VGRtQkNqc2ZhVVNKR29WZlJVeHhaVjk5bUo2WmhUak5sRGdkOFclMkYxMEVwOWZHSHZZRTU0Ym9waE9CZlVXbk83TFl1QkVLQ1gyRkNKUm1LSktVSHpFamJqaFdWM0hyam5JT3pvbG5jWEpPczlueGtoQjJGQWtlbkFIZll1QTdtWE16ODN2Z3dBME96UUdBZHA2Z2J1Y3IwelFvdmpvJTJGMyUyRmJlVnhzcEx0akh2TWFrbTAlMkZtM21VSzlJcmslMkIzWE9iV2ZGMTQ5SWZaVWdMd1NQU0phOVBFZnVwc09JQk5QZW5NeVBBaktaN2tqZmc0NWY5MmtMOUd5JTJGaG52VGxzQ0MlMkY4Z3doJTJCT09udmRveWFoSFNycUo2TzRnMyUyQkliNU1nZ0R3OE1lWVh3TnBCSHVZSVBFd0czQUwyVSUyQjIlMkJUcDFqSVNyMTN2ZDNnTzRJZEdRRTJ2bjFmMWQ3ZThMWHo5aXBEY1RTWWE1ckd4NXVzak1DYnkxYmVZYWxwMUxsYkQxNXFBdmJWYXBVV0hJU3hVQUpQc2lNT2owNE5zTGZNMEhjZDdDMDhLdm5jYVdWOVRXVlJXQjk2SVRSdFhWdDNodzZzMm5WeFhUZnlSdVBscGZVdHZ3TjJYMXYzTzdYMXRnU09POXh0V3c4Y2RWT0g3cDIxNTNvZ2ROJTJCZmN2cndqU2tudE5NMVd6bG5KRDlpMGZUZCUyRnllYXFsbiUyRjAxa0dVdjElMkZNZnowRHclM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIycks0NDJQRWN6SENtODBLaHBXWl8lMjIlMjBuYW1lJTNEJTIyUGFnZS0yJTIyJTNFNVZkTmI2TXdFUDAxSEN1QlRSeHkzSkp1VjZ1MnFwUkR0MGNYRDhHcVlTTEhLV1IlMkYlMkZacGdBcFJXVmFWMGhWSTRZTCUyRjVNUFBteVpZOUd1ZlZ0ZWFiN0JZRktJJTJGNG92TG8waU1rQ0h4bVB6V3liNURGWXQ0QWF5MkZjJTJCcUFsZndMRHZRZHVwTUN0Z05IZzZpTTNBekJCSXNDRWpQQXVOWllEdDFTVk1OVk4zd05JMkNWY0RWR0g2UXdXVnNYVzNTR1h5RFhtVnM2SXE2JTJCbkxmT3JwSnR4Z1dXUFloZWVUVFdpS1laNVZVTXFpYXY1ZVVtZTBhMXFuN2ZjWHdReFRKJTJCTkglMkZ1TDVwa1B6OFRjaXhCUTJGT201bzBxViUyQjQyam0lMkJ2TkQlMkZvV1FDYmRGbTN6S3BjVmNJcUxQNUhyMHNNMmxndGVGSmJTMnRkaXlXbVZ6WldXQ0hxVlFxUm9YNkVFc0ZoeWhOTEw0MUdwJTJCaFoyRkpCRSUyQnB0YmclMkZBVzJnZXRXNkQlMkJvT2pzMndLZ2JNd2VpOWpXdXpNRmVLRXpEeDNienM1QkE1S09zSmdUcU1Pd0d1ajVrN2t1M0E4ZndKenVtN25BY241VHhOVTVLOHlibGdUMnpHdnBCekVrNk04M0RFZWVDZlZ1SHBySDdmVlBqaHFTT3dNRDI4ZWI2d0M1Uk1yQXV6VVJmT3ZnZWhQN0Vlc1BQZjhjTm9ZcHpQMyUyQldjbk11T1A1dmFLUnVOT0NmbnYlMkJPenFaMjdpJTJCOTQ3czclMkYzN2xycDkwRjVHRHJYZVBvMVQ4JTNEJTNDJTJGZGlhZ3JhbSUzRSUzQyUyRm14ZmlsZSUzRYZV1hcAABGnSURBVHhe7Z15XE/Z/8dflphh7CSMbTAyxjJG32/INs0kk31LjDGpoVFJpcVS9kGpJJJSljTZZS2FTNbB2BJpmSyRJaSy/JTxfZzTfD409HvknsvnVu/zePTP53PPufc8z73vz/OerXI23rEvQUkygYm6KyTnpYzAkoiahIEIaIxAJV0zjZ27NJyY4p9YK1L8E+NHuYUJvCzHJHDSqO7CJZXVAvLPjEIbA+eyWn3hek+YEghvb2/hcspqAQ4ODsRPoPFdA0+B4p90gBT/pLN7+RKwcqL4J5Xgy5cv4ejoSPFPKkAA7PeDJFAAIMtKQVAMIJNAHx8fsULKcG57e3viJ9D+LitPkgQK8KP4Jx2eSgIp/klj+Pfff3MJJH7S+LFc7PeDJFA6P56TgqAYQJJAMX4kgWL8SALF+FH8k86PJFA6O5aTJFCMH0mgOD+SQBkYkgSKQSQJFONHEijGjyRQOj+SQOnsSALF2KlyU0+gDBwpCIpBJAkU40cSKMaPJFCMH8U/6fxIAqWzIwkUY0cSKA8/6gmUgSNJoBhEkkAxfiSBYvxIAqXzIwmUzo4kUIwdSaA8/EgCZeBIEigGkSRQjB9JoBg/kkDp/EgCpbMjCRRjRxIoDz+SQBk4kgSKQSQJFONHEijGjyRQOj+SQOnsSALF2JEEysOPJFAGjiSBYhBJAsX4kQSK8SMJlM6PJFA6O5JAMXYfRAJf5OfjZvo1fq6GjZqgopaWPFetsFLeVxDMz3+BazcyeG2bfKoDLa2KCqu5PJdDEijGkSRQjN/7kkCKf2LtUhbiH0mg2D1CW8SI8WO538vq4Fs3r2O+mwNupV9D02Ytkfs4B3EHomA2dgLsnGehdp16ha78fuZddPmyIb4x6oeAdRHq7wJ8FyA1ORGey9Zi5IAeGDHaAkNMx0qq9bG4A9i59Tfk5T2Hcb+h+O77QZLKeVsmuSXwevptTHbxwrXrGWjZojFych4jMuYYrCyGYs50K9SrW6vQZdy99wD1Wxihf98e2Lnx1X/e+HVxCC5fuYrQoDkwMLKA5dhB+Gl0f8n1Zuf5yWoWtoR6oEqVjySX8++MmpZAtuu8h4cHBgwYgDZt2qgv7/Tp04iJiUFeXh569eqFHj168O9ycnKwY8cOJCQkoFmzZhg5ciRq1KghG493LUipElgUv3et3/s+Xm4JpPgn1mJKjH+bt+/Hlh0H8OLFC5gNM8b3Rt3w8ceVxSoKQNMSmJSUhO3bt+PevXswMDDgca5mzYJ/41kS4p8SJLA0/H7Iull0StJlWJsPxcwFftDr0h2JCRfQtHlLPHmSy0VwS/hqhEXEQkurkvoBCluzAovnTcPj3BycSMhQS+KKJb+CleflH4pL8edQT7s+6tVv8M4PXvy50xhqrI8fxlmj49f/xUwXayz0DUYfkyHvXNb7lsBLiX9h8KgpWO7lih7dvsL5i8lo1aIxcnOfIjLmKEJCd+L3yEBUqvSqV9U/aDNcZ/ohJ/cJ7v4Vo5bE+Z4hYOWFBc/D2fNXoFO/Dhro1H3nOj958gzbdh3EuvA9iDn4B7LSD6FG9U/euZyiMmhSAo8fP45jx45xqWMiqK+vzy8zMTER48ePx5AhQ9C2bVt4eXlh6tSpXATd3NyQkpKCcePG4cSJE0hLS0NwcDDKly8vG5N3KUiJElgUv549e75L1T7IsXJKIMU/sSZTYvzbs+8I+g2fDAeb0ejUURfu8wIwclgfzHefKFZZDUvg/fv3MXjwYB7TDA0NERkZiaysLAQGBpaY+KdpCSwtvx+ySuAIk26wd52LTv/pijFDDNG8RWs8fJDJZXDN5ij4LHSH+QR7dNLron6ABhvpYfhoC/h5zsFkl9kwHfMz/+51CZw91RY9Dfui17ffI2r3VvgscEP2oyx8P3AEnN0XonLlj3Dh7CksnO2EtJQkdO9thGlzvFCzVh1Ms/8Z5StUwLzFAbzchbOccPniOazdEiP8ELMC5OwJ7GJojnluv6Cbfkf0NpmA1q2aIvN+Fs5fTELMDn/MmOsPB5sf0PW/7dXX/nX3H3gv36wFgZg7wwrjzQvk9nUJtHZcxN9eTfoYYEvEAUyfsxxZj3JhOvQ7eMyxw0cfVcLJPxMwZfoSXEm+hj6G+vBZ6Ig6tWvgVsY92E/1xsOs7FIngZ6ensjNzUVsbGwhCVy0aBGXOicnJ85y+fLlSE5OhrOzM+/527RpE3R0dJCdnY1+/fph2bJlaN/+VZvIcmMVsxAlSmBR/JYsWVLMWn24w+SUQIp/Yu2mxPhn7+qN53l5WO7lUhALAjdhzqJVuJMaLVZZDUtgXFwc/P39sWHDBl6P1NRUmJubIzw8HOvXry8R8U/TElhafj9kk8BHjx6if6+vEHf2Kg5G78bqAB+EbjuA6D3bMW+GPf/8V3dHLohsSJbfeMmX0bd7O94DGOzvjT9PHcWGnXFvSCAbDh4+ahzaddRDv14d4DZ/CZp+1grzZ9hjov10dOv5Lbq2a4QxFjYw7j8UQcvYj3s2fos4xIeSh5qO5aLJUvjalVjqORvHL94SfojllEAmWe27jMSNy3uxKzIO3svCELtnJbbtPAg7l8X8cxaQuul3wLBBhvzaL19Jwxd6w3kP4OKloTh64jyORAe/IYFsONjix4HQ69QW7fRNsdTTifcw2jkvhpuLJb7rrQ+dlkawtTLFsIGG8FiyDtk5jxEXFaRmFJ+Qwq+vNPUEqipnbGyMWbNmqXsCra2t0bdvXy54LLGewpCQELi7u2P69OmIiopSc2F57ezs+PGaSEqUwKL4MY5KS3JJIMU/sZZVavxjvZPVq32CTxtp8wqO+dkd//f8OTatXShWYQ1LYGZmJp/a0rx5c16PPXv2wM/PD7t371bHM6XHP01LYGn5/ZBNAhPiz8JjtjPvYXOyGYv2X+lxKfP1mMV77Zi49f+mE9ZtiUat2gXDkuw71ivH5gKe+/MPsDfp2FMpaNS4WaGeQJUEXk1N5qLI5I4lNtePzcHJzclGyAof/H4mDeXKlUNa6hX06dYWxy6k83O6L1iKvv2H8TyH9u/F+B8GIOl2vvBDLKcEnjmfCKcZvjiwawUPNP/p3Ba2E0zhPj8AWY9ysNTDCR26mvHv69YpmLfBvjt3IYnPBTxxKh7sTTrt4k40a9KwUE+gSgKTUq5zUVTJ3f7Yk2BzcLJzcuHltx7XL+3h/FhvoO7XQ5GRvI8PI7NUliRw4MCBmDx5Mnr37s3rzrr9XVxc4OrqirCwMP6nSpaWljAxMeFDK5pISpTAovix3gelJbkkkOKfWMsqPf6xl2KHqd4IXrcDR2NCCo3GSK25pucEsutmIhUREQHWS29ra4vhw4ejpMQ/pUpgSeHH2l/WhSH37mRg5ICeOPBHEuZMs0OVKlUxxsIaxt2/xET7aahYUQtHDkUjOHwvf2bYJFuDDo3x7NlTPg8w7/lz3M5Ih4v7IlhMdHyrBB4+uA+162rD/VffQs8dO9/6kOVvPIu7D53HL2MHw2KiA0aNteLfR+7agkC/RdgefUrqs1son1zDwRm3M/kCjtQLO2Dr5IGqVT7mEtim8zDMcLbkq4P37T+OqO1+//D7Gw0/N8bTp8/4PEA2ZJF+8y4859lhyqQxb5XAqP3HoV2vFvw8nQvVgZ1v2cpNb/CIP7ERX37RosxJIBvyZX+DBhUsIGLDxUz8zMzMwIYAXu8JHD16NGxsbNCly6spDrLcWMUsRIkSWBS/VatWFbNWH+4wuSSQ4p9Ymyk5/rE51cZDbPFpQ20+x1r382Zilf0nt6YlkPUEshfb9PR0/pLbtWtXfmUlJf4pVQJLCj/ZJZAVyHrdZi9chlp16mCWiw2/oZjQsdXCbIHIXM8VqN+gEf/8j2O/83mDIRsiUbFiwfYnu7aF4+zpE9gbd+GtEphxMx2X4s/Af822AjE5dxq3b6WDvYUfjt2H9dsP8s/z8/KQnJiAdl91hqWZCb7s0BlObgv4d2zV8dW/UvjiEDmSXBLIroX19Pl7u/KevokOBcMNTOgmuyxGqxZNsNJ3Gho1LBiWOHT4Tz5vcF/EMlSsUIF/9tvmKBw/GY+Ek5veKoE30u+AvXFHhHvx40+duYT0mwWfMcE8tDeQf56Xn4+Ll1Kh1+kL9SKUstQTyHoBdXV1YWVV8OIQGhrKAyXr8WPCx4ZOqlWrhmfPnsHIyIjPo2nUqOC+/tBJiRJYFD+2uEZpSS4JZPWi+CfWukqMf8mpN9DF8Cc+bYbNx65QQb4FYJqUwMePH/NeoAYNGvC5zlWrVlU3XkmJf0qVwJLCjzW4rD2BXCpOHIarnQXf1uX1xR9sz6yNYat4j59qPuB0h/HIzs6C36pXPVBM5gZ/p4fdsedwYN9O9epg1XBw6zbtMGbotwj+bQ8+a9Ua5qbGfMhZu35DjBvZl688btexM1Yt90LYan8cOXcdG0IDsXj+dEQejsftWzcxydIUtlPc1HMExcKWvAtD4o6egfkvsxEaNLfQcAPbMytozXbe46eaD2hpM5cPE7MtW1SJyRxbKHLh+Abs3BunXh2sGg5u17YlvjGxQuQ2P/42azTQms8DbNigHvoMsuErj9m8QU/fdVgetBk3rzBBLxDMsiSBbNuElStXcvm7e/cunwvIJk2z+X9snsyIESP42/Lq1asRHR3Nt1mg1cGvnqSi+KnmGIk+c3Lml1MCKf6JtYwS4x97GU9MuoogvxnqyjERbPlZY7HKanhOINv+iu16wOYBVq78arsbJoVsXmBJiH9KlcCS9vsh25xA1RPBVgJPtbfg28B83qYdHmU9QGpSIl+xO2GSCxfBp0+foEPz6li6aqNaCll+tudOz07NMXz0OGhpab2xT+Cg4WP4at9tG9fy07G9BX2DNvDVwWzVb0iAD/+8Tl1t+ASEQd+gN+8VnPSzKfZH7eTfsbmB3gFhqPBP75nokyxnTyC7lvPxSRg3cQ7vgWPS9uDhI77fH1uxO9XRnIsg27alqo4BNq9bpJZCFb8mX5jA4sdBqKRV8Y19An80M4GF9VysCdvFq832FmQTnNnqYMdpPnwxCkva9WojPGQ+vumpp8bDegbZopJHN39H9Wqv3hpF+WlyixjVtf97YUh+fj4XvyNHjvBD2NzAmTNnctE7e/YsnzjNUpUqVfiqYk2tDGbXoMSewP+Pn+j9Ind+OSWQXRvFP7EWUlr8a91pCNhc6tdTtU+qIPuW+PxWTfYE+vr6YuvWrW80Fnuxbdq0aYmIf0qVwJL2+yG7BKruKrbv341raahdpy60dRqKRYZ/5c56eB/ly1dA9RoFCyRU6cH9e8i8dxdNm7fgYvh6upNxk4tfXW0dWa9FbglUXRzb9++vtHQufaynTs50/8EjPqxRs0a1QsXey3yIO3cf8LdcJoYfIilBAouqJ9tEld0ztWvXLnQI20A6IyODDwHL9TIhlbUSJVBVl6L4Sa3r+8gntwRS/JOnlcpC/NOkBBanlZQe/5QigSX99+O9SWBxbrLScMz7ksDSwKY4dVCyBBbn+jV9jJIlUNNsinP+9yWBxTl3aTiG4p/0VlS6BEqv2YfJqXQJ/DAUxM4i+5xAscspmbkpCIq1G0mgGD+SQDF+JIFi/Cj+SedHEiidHctJEijGj+UmCRRnKOt/DJHhckpcESSBYk1GEijGjyRQjB9JoHR+JIHS2ZEEirFT5SYJlIEjBUExiCSBYvxIAsX4kQSK8aP4J50fSaB0diSBYuxIAuXhx0uhICgGkyRQjB9JoBg/kkAxfhT/pPMjCZTOjiRQjB1JoDz8SAJl4EgSKAaRJFCMH0mgGD+SQOn8SAKlsyMJFGNHEigPP5JAGTiSBIpBJAkU40cSKMaPJFA6P5JA6exIAsXYkQTKw48kUAaOJIFiEEkCxfiRBIrxIwmUzo8kUDo7kkAxdiSB8vAjCZSBI0mgGESSQDF+JIFi/EgCpfMjCZTOjiRQjN0bEihPcWWzlIm6K8pmxWWq9ZKIwv/1RaZiqRgiUCwClXTNinUcHfR2AhT/xO4Min9i/Ci3OIH/AQbituCsIrsLAAAAAElFTkSuQmCC"},1613:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/type_index-7d73c323ed94d760c7913a71bb3752be.png"},9525:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/write_path-4491f189ec9042b252c1b632b86d4336.png"},7635:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/write_transaction-6f6c3844fe612478890f193c06d1af99.png"},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/d54033d7.77929368.js b/assets/js/d54033d7.2fda2925.js similarity index 97% rename from assets/js/d54033d7.77929368.js rename to assets/js/d54033d7.2fda2925.js index edd5dd038..b5010fabf 100644 --- a/assets/js/d54033d7.77929368.js +++ b/assets/js/d54033d7.2fda2925.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9855],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),s=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(n),f=a,m=d["".concat(i,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,l(l({ref:t},p),{},{components:n})):r.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[d]="string"==typeof e?e:a,l[1]=c;for(var s=2;s{n.r(t),n.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"content",title:"Content",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/scalars/content",id:"build/api/schema/scalars/content",title:"Content",description:"The [Content] scalar type represents transaction content. Depending if the content can displayed",source:"@site/docs/build/api/schema/scalars/content.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/content",permalink:"/build/api/schema/scalars/content",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"content",title:"Content",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Boolean",permalink:"/build/api/schema/scalars/boolean"},next:{title:"Float",permalink:"/build/api/schema/scalars/float"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ","[Content]"," scalar type represents transaction content. Depending if the content can displayed\nit will be rendered as plain text otherwise in hexadecimal"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Content\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,o.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9855],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),s=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(n),f=a,m=d["".concat(i,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,l(l({ref:t},p),{},{components:n})):r.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[d]="string"==typeof e?e:a,l[1]=c;for(var s=2;s{n.r(t),n.d(t,{Badge:()=>f,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>s,contentTitle:()=>c,default:()=>y,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"content",title:"Content",hide_table_of_contents:!1},c=void 0,i={unversionedId:"build/api/schema/scalars/content",id:"build/api/schema/scalars/content",title:"Content",description:"The [Content] scalar type represents transaction content. Depending if the content can displayed",source:"@site/docs/build/api/schema/scalars/content.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/content",permalink:"/build/api/schema/scalars/content",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"content",title:"Content",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Boolean",permalink:"/build/api/schema/scalars/boolean"},next:{title:"Float",permalink:"/build/api/schema/scalars/float"}},s={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:p,Bullet:d,SpecifiedBy:u,Badge:f},b="wrapper";function y(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The ","[Content]"," scalar type represents transaction content. Depending if the content can displayed\nit will be rendered as plain text otherwise in hexadecimal"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar Content\n")),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,o.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/d5f21d1f.77c1bd5e.js b/assets/js/d5f21d1f.829b6cfa.js similarity index 96% rename from assets/js/d5f21d1f.77c1bd5e.js rename to assets/js/d5f21d1f.829b6cfa.js index 45a2ba9ca..a2c53505c 100644 --- a/assets/js/d5f21d1f.77c1bd5e.js +++ b/assets/js/d5f21d1f.829b6cfa.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8544],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(r),f=a,b=u["".concat(l,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(b,i(i({ref:t},p),{},{components:r})):n.createElement(b,i({ref:t},p))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"js",title:"Javascript SDK"},i=void 0,c={unversionedId:"build/sdk/js",id:"build/sdk/js",title:"Javascript SDK",description:"Archethic Blockchain Official Javascript SDK is available on Github",source:"@site/docs/build/sdk/js.md",sourceDirName:"build/sdk",slug:"/build/sdk/js",permalink:"/build/sdk/js",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"js",title:"Javascript SDK"},sidebar:"docs",previous:{title:"Go SDK",permalink:"/build/sdk/go"},next:{title:"Smart Contracts",permalink:"/build/smart-contracts/"}},l={},s=[],p={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain Official Javascript SDK is available on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libjs"},"Github")),(0,a.kt)("hr",null),(0,a.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"AEWeb")," product is using this SDK to build transaction to deploy web hosting assets in the Archethic Blockchain. Please have a look")))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8544],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(r),f=a,b=u["".concat(l,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(b,i(i({ref:t},p),{},{components:r})):n.createElement(b,i({ref:t},p))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(8209);const o={id:"js",title:"Javascript SDK"},i=void 0,c={unversionedId:"build/sdk/js",id:"build/sdk/js",title:"Javascript SDK",description:"Archethic Blockchain Official Javascript SDK is available on Github",source:"@site/docs/build/sdk/js.md",sourceDirName:"build/sdk",slug:"/build/sdk/js",permalink:"/build/sdk/js",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"js",title:"Javascript SDK"},sidebar:"docs",previous:{title:"Go SDK",permalink:"/build/sdk/go"},next:{title:"Smart Contracts",permalink:"/build/smart-contracts/"}},l={},s=[],p={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Archethic Blockchain Official Javascript SDK is available on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/libjs"},"Github")),(0,a.kt)("hr",null),(0,a.kt)("p",null,"This SDK will help you to generate transaction on top of Archethic Blockchain."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeweb-cli"},"AEWeb")," product is using this SDK to build transaction to deploy web hosting assets in the Archethic Blockchain. Please have a look")))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/d781e8a6.c401cb17.js b/assets/js/d781e8a6.1f2a63b5.js similarity index 97% rename from assets/js/d781e8a6.c401cb17.js rename to assets/js/d781e8a6.1f2a63b5.js index b490f02bb..0592fc670 100644 --- a/assets/js/d781e8a6.c401cb17.js +++ b/assets/js/d781e8a6.1f2a63b5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4552],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(n),f=a,m=u["".concat(i,".").concat(f)]||u[f]||p[f]||o;return n?r.createElement(m,c(c({ref:t},d),{},{components:n})):r.createElement(m,c({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,c=new Array(o);c[0]=f;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[u]="string"==typeof e?e:a,c[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"examples",title:"Smart Contract examples",sidebar_label:"Examples"},c=void 0,s={unversionedId:"build/smart-contracts/language/legacy/examples",id:"build/smart-contracts/language/legacy/examples",title:"Smart Contract examples",description:"Recurrent transfer",source:"@site/docs/build/smart-contracts/language/legacy/examples.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/examples",permalink:"/build/smart-contracts/language/legacy/examples",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"examples",title:"Smart Contract examples",sidebar_label:"Examples"},sidebar:"docs",previous:{title:"Legacy",permalink:"/build/smart-contracts/language/legacy/"},next:{title:"Language",permalink:"/build/smart-contracts/language/legacy/language"}},i={},l=[{value:"Recurrent transfer",id:"recurrent-transfer",level:2},{value:"ICO / Crowdfunding",id:"ico--crowdfunding",level:2}],d={toc:l},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"recurrent-transfer"},"Recurrent transfer"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'# Send 1.0 each to the given address each month\n\ncondition inherit: [\n type: transfer,\n uco_transfers: %{\n "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA" => 100000000\n }\n]\n\nactions triggered_by: interval, at: "0 0 1 * *" do\n set_type transfer\n add_uco_transfer to: "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA", amount: 100000000\nend\n')),(0,a.kt)("h2",{id:"ico--crowdfunding"},"ICO / Crowdfunding"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"\n# Ensure the next transaction will be a transfer\ncondition inherit: [\n type: transfer,\n token_transfers: size() == 1\n # TODO: to provide more security, we should check the destination address is within the previous transaction inputs\n]\n\n# Define conditions to accept incoming transactions\ncondition transaction: [\n type: transfer,\n uco_transfers: size() > 0\n]\n\nactions triggered_by: transaction do\n # Get the amount of uco send to this contract\n amount_send = transaction.uco_transfers[contract.address]\n\n if amount_send > 0 do\n # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token\n token_to_credit = amount_send * 10000\n\n # Send the new transaction\n set_type transfer\n add_token_transfer to: transaction.address, token_address: contract.address, amount: token_to_credit\n end\nend\n")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4552],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(n),f=a,m=u["".concat(i,".").concat(f)]||u[f]||p[f]||o;return n?r.createElement(m,c(c({ref:t},d),{},{components:n})):r.createElement(m,c({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,c=new Array(o);c[0]=f;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[u]="string"==typeof e?e:a,c[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var r=n(7462),a=(n(7294),n(3905));n(8209);const o={id:"examples",title:"Smart Contract examples",sidebar_label:"Examples"},c=void 0,s={unversionedId:"build/smart-contracts/language/legacy/examples",id:"build/smart-contracts/language/legacy/examples",title:"Smart Contract examples",description:"Recurrent transfer",source:"@site/docs/build/smart-contracts/language/legacy/examples.md",sourceDirName:"build/smart-contracts/language/legacy",slug:"/build/smart-contracts/language/legacy/examples",permalink:"/build/smart-contracts/language/legacy/examples",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"examples",title:"Smart Contract examples",sidebar_label:"Examples"},sidebar:"docs",previous:{title:"Legacy",permalink:"/build/smart-contracts/language/legacy/"},next:{title:"Language",permalink:"/build/smart-contracts/language/legacy/language"}},i={},l=[{value:"Recurrent transfer",id:"recurrent-transfer",level:2},{value:"ICO / Crowdfunding",id:"ico--crowdfunding",level:2}],d={toc:l},u="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"recurrent-transfer"},"Recurrent transfer"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'# Send 1.0 each to the given address each month\n\ncondition inherit: [\n type: transfer,\n uco_transfers: %{\n "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA" => 100000000\n }\n]\n\nactions triggered_by: interval, at: "0 0 1 * *" do\n set_type transfer\n add_uco_transfer to: "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA", amount: 100000000\nend\n')),(0,a.kt)("h2",{id:"ico--crowdfunding"},"ICO / Crowdfunding"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"\n# Ensure the next transaction will be a transfer\ncondition inherit: [\n type: transfer,\n token_transfers: size() == 1\n # TODO: to provide more security, we should check the destination address is within the previous transaction inputs\n]\n\n# Define conditions to accept incoming transactions\ncondition transaction: [\n type: transfer,\n uco_transfers: size() > 0\n]\n\nactions triggered_by: transaction do\n # Get the amount of uco send to this contract\n amount_send = transaction.uco_transfers[contract.address]\n\n if amount_send > 0 do\n # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token\n token_to_credit = amount_send * 10000\n\n # Send the new transaction\n set_type transfer\n add_token_transfer to: transaction.address, token_address: contract.address, amount: token_to_credit\n end\nend\n")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/dae7efd3.15c43f47.js b/assets/js/dae7efd3.f16d5eb9.js similarity index 99% rename from assets/js/dae7efd3.15c43f47.js rename to assets/js/dae7efd3.f16d5eb9.js index 120784aa2..f54471d7d 100644 --- a/assets/js/dae7efd3.15c43f47.js +++ b/assets/js/dae7efd3.f16d5eb9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8682],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=c(n),g=a,m=p["".concat(l,".").concat(g)]||p[g]||u[g]||r;return n?i.createElement(m,s(s({ref:t},d),{},{components:n})):i.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,s=new Array(r);s[0]=g;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:a,s[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));n(8209);const r={id:"bridge-front",title:"Bridge - Application Front End",sidebar_label:"Bridge Front End",sidebar_position:4},s="Bridge Front end - Tutorial",o={unversionedId:"participate/bridge/usage/bridge-front",id:"participate/bridge/usage/bridge-front",title:"Bridge - Application Front End",description:"Currently, the two-way bridge is available exclusively on the testnet.",source:"@site/docs/participate/bridge/usage/bridge-front.md",sourceDirName:"participate/bridge/usage",slug:"/participate/bridge/usage/bridge-front",permalink:"/participate/bridge/usage/bridge-front",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:4,frontMatter:{id:"bridge-front",title:"Bridge - Application Front End",sidebar_label:"Bridge Front End",sidebar_position:4},sidebar:"docs",previous:{title:"Usage",permalink:"/category/usage-1"},next:{title:"Archethic's CLI",permalink:"/participate/cli/"}},l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Welcome Screen",id:"welcome-screen",level:2},{value:"Application Menu",id:"application-menu",level:3},{value:"Feature Access",id:"feature-access",level:3},{value:"Bridging Your Assets",id:"bridging-your-assets",level:2},{value:"Step 1: Initiating Transfer",id:"step-1-initiating-transfer",level:3},{value:"Step 2: Confirming Details",id:"step-2-confirming-details",level:3},{value:"Step 3: Executing Transfer",id:"step-3-executing-transfer",level:3},{value:"Local History and Management",id:"local-history-and-management",level:2},{value:"Options Include:",id:"options-include",level:3},{value:"Transfer Status Actions:",id:"transfer-status-actions",level:3},{value:"Refund Process",id:"refund-process",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,i.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"bridge-front-end---tutorial"},"Bridge Front end - Tutorial"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Currently, the two-way bridge is available exclusively on the testnet.")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The Archethic Bridge application is exclusively available as a web application accessible through internet browsers.")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The application is compatible only with the desktop versions of the Archethic wallet, which include macOS, Linux, and Windows platforms.")),(0,a.kt)("p",null,"Ensure that you have the appropriate desktop version of the Archethic wallet installed on your system to interact with the application effectively. The Archethic wallet can be downloaded from ",(0,a.kt)("a",{parentName:"p",href:"https://www.archethic.net/wallet/"},"here"),"."),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"For optimal performance, it is recommended to use the latest version of your internet browser and keep your desktop wallet updated.")),(0,a.kt)("p",null,"Access: ",(0,a.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net"},"https://bridge.testnet.archethic.net"),(0,a.kt)("br",null),"\nSource code: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/bridge"},"https://github.com/archethic-foundation/bridge")),(0,a.kt)("p",null,"This Flutter-built web application enables seamless asset deposits and withdrawals."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Before proceeding, familiarize yourself with ",(0,a.kt)("a",{parentName:"p",href:"/participate/bridge/"},"Archethic's Bridge Key Concepts"),".")),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("p",null,"To bridge, you must first configure your EVM wallet for the testnet networks with which you wish to interact, as well as obtain funds.\nWe recommend consulting the testnet-related information in the ",(0,a.kt)("a",{parentName:"p",href:"/FAQ/bridge-2-ways#testnet"},"dedicated FAQ section"),"."),(0,a.kt)("h2",{id:"welcome-screen"},"Welcome Screen"),(0,a.kt)("p",null,"Upon accessing the Archethic Bridge application, you are greeted with a welcome screen. To begin, click on the 'Bridge' button."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Welcome Screen",src:n(1126).Z,width:"1626",height:"1014"}),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("img",{alt:"Bridge Button",src:n(7785).Z,width:"1624",height:"1010"})),(0,a.kt)("h3",{id:"application-menu"},"Application Menu"),(0,a.kt)("p",null,"A right-hand header menu provides links to essential information and application documentation. It includes an option to send logs to Archethic for troubleshooting purposes."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Menu",src:n(5273).Z,width:"374",height:"343"})),(0,a.kt)("h3",{id:"feature-access"},"Feature Access"),(0,a.kt)("p",null,"The left-side menu grants access to various bridge functionalities:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Bridging between Archethic and EVM blockchains"),(0,a.kt)("li",{parentName:"ul"},"Viewing local history, resume or refund options, and transaction logs"),(0,a.kt)("li",{parentName:"ul"},"Refunding")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Menu Features",src:n(4136).Z,width:"338",height:"300"})),(0,a.kt)("h2",{id:"bridging-your-assets"},"Bridging Your Assets"),(0,a.kt)("p",null,"The bridge process involves multiple steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Inputting information to initiate the transfer"),(0,a.kt)("li",{parentName:"ol"},"Confirming the entered details"),(0,a.kt)("li",{parentName:"ol"},"Executing the transfer, with progress tracking and transaction signing in both EVM and Archethic wallets")),(0,a.kt)("h3",{id:"step-1-initiating-transfer"},"Step 1: Initiating Transfer"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Transfer steps remain consistent across all blockchain types and directions.")),(0,a.kt)("p",null,"Firstly, select the originating and target blockchains."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Blockchain Selection",src:n(1353).Z,width:"712",height:"451"})),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"Ensure both Archethic and your chosen EVM wallets are connected before blockchain selection. Refer to the ",(0,a.kt)("a",{parentName:"p",href:"/category/faq"},"FAQ")," for connectivity issues.")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Choose a testnet blockchain for testing purposes.")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Select an EVM blockchain as the source automatically sets Archethic as the target.")),(0,a.kt)("p",null,"Post-selection, a field appears for token selection from available options."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Token Selection",src:n(8962).Z,width:"652",height:"285"})),(0,a.kt)("h3",{id:"step-2-confirming-details"},"Step 2: Confirming Details"),(0,a.kt)("p",null,"On the confirmation screen, review:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Entered information summary"),(0,a.kt)("li",{parentName:"ul"},"Fee details"),(0,a.kt)("li",{parentName:"ul"},"Post-fee token quantity")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Confirmation Screen",src:n(7337).Z,width:"679",height:"629"})),(0,a.kt)("h3",{id:"step-3-executing-transfer"},"Step 3: Executing Transfer"),(0,a.kt)("p",null,"A transfer tracking popup guides you through the process, prompting for transaction confirmations in your wallets."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Transfer Tracking",src:n(3513).Z,width:"641",height:"448"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Transaction signing methods vary per EVM wallet.")),(0,a.kt)("p",null,"In the Archethic wallet, confirmation prompts automatically appear when necessary."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Archethic Wallet Confirmation",src:n(7310).Z,width:"381",height:"807"})),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The transfer process halts if a transaction is declined or due to insufficient funds. However, it can be resumed later.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Transfer Resumption",src:n(9686).Z,width:"650",height:"453"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"HTLC contract addresses are provided for ongoing process tracking.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"HTLC Information",src:n(6064).Z,width:"589",height:"109"})),(0,a.kt)("h2",{id:"local-history-and-management"},"Local History and Management"),(0,a.kt)("p",null,"View transfer history, successful or otherwise, through the application's local history feature."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"This history is local to your device. Access is not available on other devices.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History List",src:n(1411).Z,width:"1360",height:"581"})),(0,a.kt)("h3",{id:"options-include"},"Options Include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Deleting local history"),(0,a.kt)("li",{parentName:"ul"},"Filtering history entries")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History Filters",src:n(9751).Z,width:"1391",height:"178"})),(0,a.kt)("h3",{id:"transfer-status-actions"},"Transfer Status Actions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Remove transfers from local history"),(0,a.kt)("li",{parentName:"ul"},"Resume interrupted transfers"),(0,a.kt)("li",{parentName:"ul"},"Refund for interrupted transfers"),(0,a.kt)("li",{parentName:"ul"},"Access transfer technical details for Archethic team analysis")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History Options",src:n(1914).Z,width:"137",height:"50"})),(0,a.kt)("h2",{id:"refund-process"},"Refund Process"),(0,a.kt)("p",null,"Retrieve your funds through the refund feature."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Manual refunding is unavailable for Archethic-blocked funds, as it is automatic.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Refund Form",src:n(8545).Z,width:"678",height:"621"})),(0,a.kt)("p",null,"Upon wallet connection and address confirmation, refund eligibility and amount are displayed. Validate the refund to receive your funds, minus transaction fees."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Refund Process",src:n(2779).Z,width:"673",height:"206"})),(0,a.kt)("hr",null))}u.isMDXComponent=!0},7310:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-AEWallet-confirm-d858839f2ee6615e3afdb6ad71db00ad.png"},1353:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-BC-Selection-d7d9ff6f3b9f87fd39c406ad28c5ce97.png"},7785:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Bridge-3c59e46488ee3fbc820c4377cb94b03d.png"},7337:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Confirmation-e8df6d18d609d2d5ceea7c58edfb47b1.png"},9751:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Filters-2f3b307bf3d8271e9e5e84b7a7fe95ae.png"},6064:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-HTLC-infos-59f9d07b6fd6d7fefb2eb74d772575ba.png"},1914:(e,t,n)=>{n.d(t,{Z:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAYAAABoKfh/AAAAAXNSR0IArs4c6QAAAGJlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAABJKGAAcAAAASAAAAUKABAAMAAAABAAEAAKACAAQAAAABAAAAiaADAAQAAAABAAAAMgAAAABBU0NJSQAAAFNjcmVlbnNob3TsLabyAAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMzc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K0pIUWgAAFFtJREFUeAHtXHm0VsWRrwc89k12RAQEBVQWl0FxQyAbqCQ6LiFRYxxl4jEJSZjEzMQYj8YsGuNxjIOOJgoRNYaYo3HUIy5kNBGVCagsAQVEZFEE2Xd4U7+6/etb9777vfe9h//M+PXh3a6u+lV136q6fbv7flo1etD0GpEqsVKjZCyBZ5XyvcjwgWFyvVizJsKqwKcOacOGDrwMLLaDmCyqeLHxgk3yrb+g62/D881mUCjFd91/osmNu16W1dt+L62b9ZVmMUEQJXjOnIhL8CYqRgpus+C4ZACPUVFZVVAz9bwesCwqMzXFRxgI6isZ+aCJh76ngwxslkwC0J43BiD4sEMadaVED3RqOVJaNu0pq7b+VpqYlxCt6C0jIjiJlHoTTjZHJ7Q1rZ1CExsmSbEwR5OeDua8CeYaLVLN2tog1nBseHDOfuxXMfmEzNimjUqd8UDr6r7Sr8NVmiQZTzpMiHXKyTHscc1HStE5WKpfB+XN5PTzwfTQkhZ9sqhCTVCiLc40TJySdioCad60iyYJPGZ/9Ehos2l1cK85n7TWfPQRBP1LJAYK2gHrWsYJbATPI2DGSmDGYIIZ+kBt/AIMWLTnaVMNxpkwtG39VS51ekBnEpYqF2TwgldNHGguOBgJyBgNrb2GiXI4ysmGOeNpDR75noYdK8DgLzShR12wLM+VYcE3QQA6Y0wu5nZARF22K3XWAy5JgtO9gy0MZDA8WQNBK2XmYVCnCU/mcamFJNCuDZJw5mlGTGGGWX7Dku8gbZTf2/89ZCZJso+h91qgPQv3mkuAePsBV2pKz/BdAkV9mA58L/Z07JtMNzbOFGZD5RCRV6sP6ntBhc54QLfAvqg7zdnqOXjYaL3AkUYHrHdskfdp0uuQh9rxoW7BJA817StNtmOlzGCTstBMhg5d/YNtyjlUa8MwBVSs1IUeCFtglTEaBoOHHd7Txq7Hu0GcVVMm+FR1NIPneoykg6W6UeoI2nUskLCNcXAseVi+nVOvNNUDYQvs3Ui/KM88WMqNgV9KHMwwODE5wHc6Nouwy5zMsyPNbrUGac3Ai5gSRMQSHwZXawwl9D+p7GbJXJ+/fSZIDHEKMAcrnyK06XSgwMef8iLbCD2lpQ5wodjrQOWUWU1d6FHHbOSSIvBoy2rFRxWV067JPJ4yBVeSJOPBWo0wkzi+ORIedDwjlWfeBAB0UiVEwFIHMhTW4CMYxkwvMTh5Ge2k0GywwQ82a4/TKeVIJAz/IGL/mUTK6VSaeN1knF0QHUaWNbxWC6ZC8jyuwMMIDCBFsCKe766sYNII64IxeBYTxfMqdNYDYXcTImyVXuBgBh34jMMd1vhog/BKVEg/BMIMICbRiwXc9wEx5MoDu1RCkJ8JrrcDG9YJOkyLsQr4QABPu6lGhaIHQpI47/nTKpxhm8jCluhYQMB3kfEeNnaQAWb67K52nRGrmrOadJ1T8fIIViMcAux5murQ8zLyK3X9HkhnkhhNc2VOM/B8hDydQ/fs3VZuuONMOaxve2naDLoi+/YekIXz18t3L382h9ZmgXmAGFivwNEhERLLaVJc8e3j5MRTekr3Q9tIqzbVprZj+15Z9942eeXF1TL9V294Ux87fcFlg+WMzxwufQd0lN2798vvfrNIfn/foo+1n3H/OEDGntVXDj+ig7TWe2zRsmnqCPakvtm9a7/g3t9dvlme/dMKefqPyyhtcF2V/OiIetHtSYQQhsgKWYF2IKkVMWCo7NvXnyTjLzhSZj22XHbt3Gew9oe0kDHj+8q9v5wnD96zIGtDbfLpp02+Ati99cF+HR7yUeP6yKQpx0uPXm1l7aqtslIds/HDXTaLde7aSvr072CyVSu2yNSfz5U5f17NbjJ1fgwZYYnG8BHd5fMTB8qQE7pJ526ttN+dsvj1Dy2I7Tu2kC+MfKSEZsPZU244WT53bn/ZumWPrFi6yfravm2v1BygYxKbVU2qpE3baunUpZUccVRHadu+uSXJrdfNaXinqqEzCTwOXVzwB7fjL9uxMpLi2YBZIZEIMYNs2bRbHnt4iTRv3lRnkyayXW/s5FG9pP+gTmaaZjiBWVLAFgVKmsy1bahoO96lXx8qX/ynY2Sb2v/3G1+Vxx5aAiuxMPATrzxGLrzsaLn2F6fLA3e9KQ//emFMTI4hKpVBfEX7Pf1TOmsc2dFmyWVLPpKZ0xfLw/cuNO3LJw+XS64aIoOGdJa/v7mhDIt1Q86+8Ej53Hn95Y3XPpAffn22zRJ1ayRSzDY/vvNMS66F89Y3akZJXjeWEyHQMd6BQEDIi6NSRuAd1red/OCW06SDzhQtWzXT6a+ZtGqdmJ36yPioQWL0+D5y0qgv2nS4a8c+2bJ5t1z3jdmyft2OTPCJj7VLDPLG6LSLBMEMceOUF+W9d7YkooIxP3TPQpk3Z518/2enysVfGyIrl22Wv77wXkk8+yiqb753rJx46qGybvU2eUZny5nTFstyTRJf+HQ3b6Gvg4+hYBbetnlPgxIE3eKVc+3Vs2XGM1+QT53Tr7FJEjwaEyFEwx5tRiYKY3L4+96j77+1q7bJ9q17ZIcGfpvWeLIP6DR4YL/+aV1d3dSSp7m+Q5Hd7XQKbNOuWmeLKmlWrTtxdhUMo21DCG03gtj1ld85zvr50eQ/y1pdd2QwsKcMP0ss0Sf6Z9//i/z07jFy1TUnpEkSLdZPYLpHgjz+8FJ5+tG3ZeCQLoJXDv586dWnnTWHj+ghAwZ3ko3rd8rsp1d6SIPo3v3ay3J9xSDoDS3QgS7WMY0pzZKpO0QIXmaw/O4lMilP8Xh6J1/yTOibyrkmo0ex74cmtc7DYMWCXKD3te+dIN17tpHb9RWDBKUygn/qmN6ySxP3v59ZKdPCYpUJh6l/5v2L5QpNsK9cPVSm/0eymM0nKfouKoOGdlEf1cjAYzvLOfoKaNKUoy5Ci3z1m8OiYPKGXfLHGUtin1FQBoEHa8N6nW1DOfb4brLgbx+wWW+NtRLG3JiSrEliEugNxwAyMjBb5AiVR0iNOR3vzPNPn1l7HMDlTMx86Xx9EpfZQpYKBbDYh3UV+xM5/uQesvrdrboGWWrqyGnsLM67ZLCt6Js3b6JJMEzO+PTh8pCuE557YkW8txn/uUAmTDxKRpzRywJWboKgo2a6vsLCsN+RHXTNtVTXCO/LXt25FZVqHcPePYkMO64JFx1l65RNG3fZTFSkU4qH19aO7ckmAJhbfj3WXnd3/mSuzP3r2lJqkY8Fru2EIqd8Qr/dKNh+0+cikAuomcvzcjrI9EM6tUyCSqzZLh4MsC3D2oVPuSVdHTq0BHyPXm3kdQ2QzTQQ6PCHn9TDIFO+Oks26e7m8m8Nl/HnD5BrfnKKDD2xm9x2/SsxWbEm6T/okPQ1V0a/MN6leyvr40Fd40y/s2Fb6ueffEfuefQsW0TiddWgouPjOgd6WHxfdPnR8i8/HinXTHpOVr69uU5zpot7bERJF65UtlzRS8YgmJ4BOdr4MwXZqgtQPGGcBk8d21uOGHgIrVr9xtz3Zf6r78tQ3S4Ci3ULzZp1vfCptsRxw0h7SjA4B/nw/Z1mFzqQV+tOCucxSBCU39w+33YbN00dLePOG6CLzBWyYN4Hht2gawRsW1HYlzXquXTt3toQTJAb7hhV6z4BwFrsET0jeeKRt6LFTfq6WaWv50N7J+uVKGgEMePuBTqTbJfvapJcetVQW7g3wkxZKpokSZATdPA2WMZW18P7RYXRhEwxW3TljdLzsLb2rsRT3E+3h77Mf2WdJsksO7MAf8tHu5N+XB8grXvrP2gHJmEQYcHLklLkhFqBmGYX/G29DPuH7sksoDxvOqdRb3Ozbu19wa4M5xD5giTBYhXl818aKN+6bkQGgi05dlwHU2p8DA7GUD26YU0ClHNdCIrpgu3bYOajohguqjp21leOlimXzRKsyH15c27yFHfEa0kLnuZ6C/tyYwC5Y9se6aKHVxw2hgmnNcEPMoMO+vnmD0fIKaMPsy3q7KdWxu5w0MSdQkN8/dQfliUzYLB0x02vRZulCCYIXgn79h0QnEiPHtf3oJLky5OOlQv1dbP5o10yfWry2sOZjJ+9sS3/OM5okteN3R2jEDyMlaB5L7QZDXoiw67SxeJWk7TrkDxVmFqxQIsFUQwFJ5EoON+oq3CyMFW9WDvYWbdmux1kQZ+mcW6BVw52OC1aNLOFLLbZr7y4Rn75ozmJfugQp7CYrms9AHUNSGWzHl9uW/rfvXCe3K87p6f+8HY9Gon4g7Xb5bKzH7fGXTPH2zjLUiQI96+vaJaL9aAO94uFK9cj/3bzaZkHE/69dNxjpmK6dBSNlFnrFjinmdn6worKc5BabWUsX7JR9usUa1Ov3kvXHm3kvj+dIzgXQcHUe9HoR41u277asMuX6gEU7tvbz7U5PJ8gMDLv5XWCbyUTvnSUPK47HODwnj5Ft78X6Mkqpvu3Fm+UGdcvkJeefdf65WXilcfa951yA0w91tf+4jQjkYyTdCuNgkPBe2+bLy/OyvZlQr100+36tCcn2G4Hr2TszBpS9ui3oNZt0mf6X//5eVvfeRs4A8IJMMs7b20iacf0+J7TmJL2Wp82osSIlcDu3bNf2uiCEkFfv3aHPPrA36Vtu2RmWb9On9pQsBPCTVtRLHIEuZEvsbsC4dSb/0fO+Ozh8uVJQ+S1l9bIGpyVqKGrL3rKXi840MPrzWwHfdjDlIzkwvnOtAbuTjg+rEO69mgtazTQWLCjDB7aVc69eGBhktxy7cu2wPSHWQ09WMOrEa9IFmwA8mWRfjPCX1Hxr9cieV28sAUOEHMmIwL3umJNyHJ8QIIKAs8jeeCwu4hwmlU4ju8tSZwpkHy9wCSLU6s169yjHwu/d9NIuf72UXLjd9JjeR63UxfJAdtIEBzL43sSkoyljPwn1OpX9fWFgoeAx/H3PzHBPkmYIHd5cubbgj+U26Z/xmaxB/WspiEFrw6sN/CAcS1Vrj50+umHPo61XD3isMxLnE+PWlRD9CIPIPDgbeKVgHddZHfqkXxc6Wd0s6o4krevw8FWqBSU4pJGuGq3NqugTiA2jOf/6x07KOutHxRvve/TekA20HBxWBie4vE38Ypj5Kd3jbEZYMbdb8rL/G4TunC3ETilq7Fn99XX5YHodJyqLlm4od71CZK0/8CO9tOF0taLJThjwXoPW24EvdwC7I2/OtM+gzyn/mpMSY7l4UW40h65PO3MGo5thIsM1DX2mX7wsK5y7a2n21dgEwPmCm508LAusmh+Mi1a8FVulnJYqpHNGnzSOHZ/Vw/GrtSfCkzWnQxeJWhv1IUzQNgB9RmQ/FTgvZVb5W79XP6X51ZZhz4xOA72WVeNWRDfanDqiXL8yT3teL6pHtFjuj9LD/CauEUmMFisH6enxHio8DuThhactwzS70SfPfcIeUA/1mFWwFE7TmH9IRvsYpGK9Uvnrq2Tnwqoz3G63dg1WNXogeF/YmNxhusZeIYh3A7ZoZlWFNTI0Rr8b/xghP3YqK4fw2A9gK3jIv0Rku/FLOmFAbMgBkAG5zFhIJDje8yJI/VHR3oa26p18rTt1Hf5Wt0FYN1y/x2vp9nFYVPfd5DeXCGF367gazY+WqLgdyQoWKO8oB/xLtRE9TsRyPARFD8AmqbfiubMLv49C3D1FfxkAF+EcbyAWcK+MufuBU5FIuO1hNcUZiF/qFdfH3m5/ujot8E9qHK9WbSUZ2yVB2QWRh1nJt9LaEf1nIrZi8I0SaDmn3YzU4Cjucy4Sg1HwcAzEc3mQV4wnWOc+CT//7GEJKHncYvR5WlSeLZB9UKY/4YTeSVcRbmKGSTHSm06uVlSEHDQMbxTqmVHZRke2mYkuVCVGCeqkCU8oAtX70Kg0A48ehRtwshjOwpcD8SQhXaeRxnrnDwzg7juY7dBj7g838TBJrv3XURaCdrgUCp11gPZ/+4GnuZfreCroDAS3qB6POor37yf8PDkRnUlINJ/SYmENp1+BgOdAM/PApEP9TpwmTGoUsZ+sF2pansg/XZjnlYPI0hWvOvJq6fOR8+1aT6aZj/shqa1bWpBDnEeYlDIg4CmaIJtJIHZ0hpQtFnA923yK3VtDyQnrnQevetxkEU+CII9KLApjvgcpsym79KbsqAGhlVeWIdt+9Lghs3cZV2HakWkHkjWJOYt53FzKNvacA5OM0aZtmiFHwEgLtBg5wos0mpGVCCAlXJLXdg4W4SOmRiRX24nn2Cc/hZP7948pgQ9Zw6l67XBNuWmo8yoqzaIsTrYVDmaFEWLxKgsMRJwgU8dMw+EEvhjgE0tXGxIQR75rg2d2J0SKoq3ydsxPQgqpdADOpME70RPmhtTcHQyABEU5Pk22AEXquj7AI3tYIEmI19xkQYmNIoSJJqg7YCt9SFbgQFiKpY4OZ0MgIYrtXkg+XZjDqPXlF8UJcC9p009MIE3HQ9I6Yw56kVm2q9/sr2YCQI5/2iGtWHUlNeDzNuEMB1VSmcwNFipowfcwhXu9S4EBlHBP8iKSsAzioAYVC8myttL5EXWaAIBI+17zAfS2wCNnvAXcZGR8rxd9lMwQt9thVYP5H5P4l2fc1+uGbKgthMNh4u3lcAo8hIiPc8CSMumpA3W5LNWvhf5RADE27WGAzNRaKpSF3sgnLjCczlvAx8dGuTGIF1sMOVG5ZRVispEMgGBVcBOLdQpTGGeKlQpZHqtCp3MJDGeSoCG44zn2qV8FbEB4J1uNoK9tEqAJtMXmeG1QT2nk5kVKA/dUAZ2YiMItKIs5dSmgMnr1UZVOPBA+M88lYK3ce4RtwYhKqEKWQOdbHFBNYFvm03lkkdN8E2mAicjyS4ZRAS0vqAyMajDrlCbXRp3AuqkD4UTVsjogWR3Y00NjUUHlxCmUCVo13CQiKWNBJxenVrKrIcKOqWCW6jNfgqSgSLoIYlqJVKBTmEfn1Dm/wIpd1VxcqbcqAAAAABJRU5ErkJggg=="},1411:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-History-list-b30840e2cdc37f910c5cbbc5f063051f.png"},4136:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Menu-features-950301f0a668b45e178757af22380df3.png"},5273:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Menu-cb08d9811c1b3f02a454d3409b8dd393.png"},8545:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Refund-Form-8345e3dff73524df2bcde310366efb27.png"},2779:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Refund-Wait-1d068a9b278567c3a4ad26859e969a55.png"},9686:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Resume-ff1b77fe887026e5bdf119c7493e8fbb.png"},1126:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Welcome-682effc97c60adb2d91b2594efec9179.png"},3513:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-status-confirm-wallet-b443dd740dd1002f8e73edc1e60d901b.png"},8962:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-token-Selection-9ffa553da5cca58043c8a14fa7d83b32.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8682],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=c(n),g=a,m=p["".concat(l,".").concat(g)]||p[g]||u[g]||r;return n?i.createElement(m,s(s({ref:t},d),{},{components:n})):i.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,s=new Array(r);s[0]=g;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[p]="string"==typeof e?e:a,s[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));n(8209);const r={id:"bridge-front",title:"Bridge - Application Front End",sidebar_label:"Bridge Front End",sidebar_position:4},s="Bridge Front end - Tutorial",o={unversionedId:"participate/bridge/usage/bridge-front",id:"participate/bridge/usage/bridge-front",title:"Bridge - Application Front End",description:"Currently, the two-way bridge is available exclusively on the testnet.",source:"@site/docs/participate/bridge/usage/bridge-front.md",sourceDirName:"participate/bridge/usage",slug:"/participate/bridge/usage/bridge-front",permalink:"/participate/bridge/usage/bridge-front",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:4,frontMatter:{id:"bridge-front",title:"Bridge - Application Front End",sidebar_label:"Bridge Front End",sidebar_position:4},sidebar:"docs",previous:{title:"Usage",permalink:"/category/usage-1"},next:{title:"Archethic's CLI",permalink:"/participate/cli/"}},l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Welcome Screen",id:"welcome-screen",level:2},{value:"Application Menu",id:"application-menu",level:3},{value:"Feature Access",id:"feature-access",level:3},{value:"Bridging Your Assets",id:"bridging-your-assets",level:2},{value:"Step 1: Initiating Transfer",id:"step-1-initiating-transfer",level:3},{value:"Step 2: Confirming Details",id:"step-2-confirming-details",level:3},{value:"Step 3: Executing Transfer",id:"step-3-executing-transfer",level:3},{value:"Local History and Management",id:"local-history-and-management",level:2},{value:"Options Include:",id:"options-include",level:3},{value:"Transfer Status Actions:",id:"transfer-status-actions",level:3},{value:"Refund Process",id:"refund-process",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,i.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"bridge-front-end---tutorial"},"Bridge Front end - Tutorial"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Currently, the two-way bridge is available exclusively on the testnet.")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The Archethic Bridge application is exclusively available as a web application accessible through internet browsers.")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The application is compatible only with the desktop versions of the Archethic wallet, which include macOS, Linux, and Windows platforms.")),(0,a.kt)("p",null,"Ensure that you have the appropriate desktop version of the Archethic wallet installed on your system to interact with the application effectively. The Archethic wallet can be downloaded from ",(0,a.kt)("a",{parentName:"p",href:"https://www.archethic.net/wallet/"},"here"),"."),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"For optimal performance, it is recommended to use the latest version of your internet browser and keep your desktop wallet updated.")),(0,a.kt)("p",null,"Access: ",(0,a.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net"},"https://bridge.testnet.archethic.net"),(0,a.kt)("br",null),"\nSource code: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/bridge"},"https://github.com/archethic-foundation/bridge")),(0,a.kt)("p",null,"This Flutter-built web application enables seamless asset deposits and withdrawals."),(0,a.kt)("admonition",{type:"success"},(0,a.kt)("p",{parentName:"admonition"},"Before proceeding, familiarize yourself with ",(0,a.kt)("a",{parentName:"p",href:"/participate/bridge/"},"Archethic's Bridge Key Concepts"),".")),(0,a.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.kt)("p",null,"To bridge, you must first configure your EVM wallet for the testnet networks with which you wish to interact, as well as obtain funds.\nWe recommend consulting the testnet-related information in the ",(0,a.kt)("a",{parentName:"p",href:"/FAQ/bridge-2-ways#testnet"},"dedicated FAQ section"),"."),(0,a.kt)("h2",{id:"welcome-screen"},"Welcome Screen"),(0,a.kt)("p",null,"Upon accessing the Archethic Bridge application, you are greeted with a welcome screen. To begin, click on the 'Bridge' button."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Welcome Screen",src:n(1126).Z,width:"1626",height:"1014"}),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("img",{alt:"Bridge Button",src:n(7785).Z,width:"1624",height:"1010"})),(0,a.kt)("h3",{id:"application-menu"},"Application Menu"),(0,a.kt)("p",null,"A right-hand header menu provides links to essential information and application documentation. It includes an option to send logs to Archethic for troubleshooting purposes."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Menu",src:n(5273).Z,width:"374",height:"343"})),(0,a.kt)("h3",{id:"feature-access"},"Feature Access"),(0,a.kt)("p",null,"The left-side menu grants access to various bridge functionalities:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Bridging between Archethic and EVM blockchains"),(0,a.kt)("li",{parentName:"ul"},"Viewing local history, resume or refund options, and transaction logs"),(0,a.kt)("li",{parentName:"ul"},"Refunding")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Menu Features",src:n(4136).Z,width:"338",height:"300"})),(0,a.kt)("h2",{id:"bridging-your-assets"},"Bridging Your Assets"),(0,a.kt)("p",null,"The bridge process involves multiple steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Inputting information to initiate the transfer"),(0,a.kt)("li",{parentName:"ol"},"Confirming the entered details"),(0,a.kt)("li",{parentName:"ol"},"Executing the transfer, with progress tracking and transaction signing in both EVM and Archethic wallets")),(0,a.kt)("h3",{id:"step-1-initiating-transfer"},"Step 1: Initiating Transfer"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Transfer steps remain consistent across all blockchain types and directions.")),(0,a.kt)("p",null,"Firstly, select the originating and target blockchains."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Blockchain Selection",src:n(1353).Z,width:"712",height:"451"})),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"Ensure both Archethic and your chosen EVM wallets are connected before blockchain selection. Refer to the ",(0,a.kt)("a",{parentName:"p",href:"/category/faq"},"FAQ")," for connectivity issues.")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Choose a testnet blockchain for testing purposes.")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Select an EVM blockchain as the source automatically sets Archethic as the target.")),(0,a.kt)("p",null,"Post-selection, a field appears for token selection from available options."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Token Selection",src:n(8962).Z,width:"652",height:"285"})),(0,a.kt)("h3",{id:"step-2-confirming-details"},"Step 2: Confirming Details"),(0,a.kt)("p",null,"On the confirmation screen, review:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Entered information summary"),(0,a.kt)("li",{parentName:"ul"},"Fee details"),(0,a.kt)("li",{parentName:"ul"},"Post-fee token quantity")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Confirmation Screen",src:n(7337).Z,width:"679",height:"629"})),(0,a.kt)("h3",{id:"step-3-executing-transfer"},"Step 3: Executing Transfer"),(0,a.kt)("p",null,"A transfer tracking popup guides you through the process, prompting for transaction confirmations in your wallets."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Transfer Tracking",src:n(3513).Z,width:"641",height:"448"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Transaction signing methods vary per EVM wallet.")),(0,a.kt)("p",null,"In the Archethic wallet, confirmation prompts automatically appear when necessary."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Archethic Wallet Confirmation",src:n(7310).Z,width:"381",height:"807"})),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"The transfer process halts if a transaction is declined or due to insufficient funds. However, it can be resumed later.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Transfer Resumption",src:n(9686).Z,width:"650",height:"453"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"HTLC contract addresses are provided for ongoing process tracking.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"HTLC Information",src:n(6064).Z,width:"589",height:"109"})),(0,a.kt)("h2",{id:"local-history-and-management"},"Local History and Management"),(0,a.kt)("p",null,"View transfer history, successful or otherwise, through the application's local history feature."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"This history is local to your device. Access is not available on other devices.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History List",src:n(1411).Z,width:"1360",height:"581"})),(0,a.kt)("h3",{id:"options-include"},"Options Include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Deleting local history"),(0,a.kt)("li",{parentName:"ul"},"Filtering history entries")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History Filters",src:n(9751).Z,width:"1391",height:"178"})),(0,a.kt)("h3",{id:"transfer-status-actions"},"Transfer Status Actions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Remove transfers from local history"),(0,a.kt)("li",{parentName:"ul"},"Resume interrupted transfers"),(0,a.kt)("li",{parentName:"ul"},"Refund for interrupted transfers"),(0,a.kt)("li",{parentName:"ul"},"Access transfer technical details for Archethic team analysis")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"History Options",src:n(1914).Z,width:"137",height:"50"})),(0,a.kt)("h2",{id:"refund-process"},"Refund Process"),(0,a.kt)("p",null,"Retrieve your funds through the refund feature."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Manual refunding is unavailable for Archethic-blocked funds, as it is automatic.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Refund Form",src:n(8545).Z,width:"678",height:"621"})),(0,a.kt)("p",null,"Upon wallet connection and address confirmation, refund eligibility and amount are displayed. Validate the refund to receive your funds, minus transaction fees."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Refund Process",src:n(2779).Z,width:"673",height:"206"})),(0,a.kt)("hr",null))}u.isMDXComponent=!0},7310:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-AEWallet-confirm-d858839f2ee6615e3afdb6ad71db00ad.png"},1353:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-BC-Selection-d7d9ff6f3b9f87fd39c406ad28c5ce97.png"},7785:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Bridge-3c59e46488ee3fbc820c4377cb94b03d.png"},7337:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Confirmation-e8df6d18d609d2d5ceea7c58edfb47b1.png"},9751:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Filters-2f3b307bf3d8271e9e5e84b7a7fe95ae.png"},6064:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-HTLC-infos-59f9d07b6fd6d7fefb2eb74d772575ba.png"},1914:(e,t,n)=>{n.d(t,{Z:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAYAAABoKfh/AAAAAXNSR0IArs4c6QAAAGJlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAABJKGAAcAAAASAAAAUKABAAMAAAABAAEAAKACAAQAAAABAAAAiaADAAQAAAABAAAAMgAAAABBU0NJSQAAAFNjcmVlbnNob3TsLabyAAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMzc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K0pIUWgAAFFtJREFUeAHtXHm0VsWRrwc89k12RAQEBVQWl0FxQyAbqCQ6LiFRYxxl4jEJSZjEzMQYj8YsGuNxjIOOJgoRNYaYo3HUIy5kNBGVCagsAQVEZFEE2Xd4U7+6/etb9777vfe9h//M+PXh3a6u+lV136q6fbv7flo1etD0GpEqsVKjZCyBZ5XyvcjwgWFyvVizJsKqwKcOacOGDrwMLLaDmCyqeLHxgk3yrb+g62/D881mUCjFd91/osmNu16W1dt+L62b9ZVmMUEQJXjOnIhL8CYqRgpus+C4ZACPUVFZVVAz9bwesCwqMzXFRxgI6isZ+aCJh76ngwxslkwC0J43BiD4sEMadaVED3RqOVJaNu0pq7b+VpqYlxCt6C0jIjiJlHoTTjZHJ7Q1rZ1CExsmSbEwR5OeDua8CeYaLVLN2tog1nBseHDOfuxXMfmEzNimjUqd8UDr6r7Sr8NVmiQZTzpMiHXKyTHscc1HStE5WKpfB+XN5PTzwfTQkhZ9sqhCTVCiLc40TJySdioCad60iyYJPGZ/9Ehos2l1cK85n7TWfPQRBP1LJAYK2gHrWsYJbATPI2DGSmDGYIIZ+kBt/AIMWLTnaVMNxpkwtG39VS51ekBnEpYqF2TwgldNHGguOBgJyBgNrb2GiXI4ysmGOeNpDR75noYdK8DgLzShR12wLM+VYcE3QQA6Y0wu5nZARF22K3XWAy5JgtO9gy0MZDA8WQNBK2XmYVCnCU/mcamFJNCuDZJw5mlGTGGGWX7Dku8gbZTf2/89ZCZJso+h91qgPQv3mkuAePsBV2pKz/BdAkV9mA58L/Z07JtMNzbOFGZD5RCRV6sP6ntBhc54QLfAvqg7zdnqOXjYaL3AkUYHrHdskfdp0uuQh9rxoW7BJA817StNtmOlzGCTstBMhg5d/YNtyjlUa8MwBVSs1IUeCFtglTEaBoOHHd7Txq7Hu0GcVVMm+FR1NIPneoykg6W6UeoI2nUskLCNcXAseVi+nVOvNNUDYQvs3Ui/KM88WMqNgV9KHMwwODE5wHc6Nouwy5zMsyPNbrUGac3Ai5gSRMQSHwZXawwl9D+p7GbJXJ+/fSZIDHEKMAcrnyK06XSgwMef8iLbCD2lpQ5wodjrQOWUWU1d6FHHbOSSIvBoy2rFRxWV067JPJ4yBVeSJOPBWo0wkzi+ORIedDwjlWfeBAB0UiVEwFIHMhTW4CMYxkwvMTh5Ge2k0GywwQ82a4/TKeVIJAz/IGL/mUTK6VSaeN1knF0QHUaWNbxWC6ZC8jyuwMMIDCBFsCKe766sYNII64IxeBYTxfMqdNYDYXcTImyVXuBgBh34jMMd1vhog/BKVEg/BMIMICbRiwXc9wEx5MoDu1RCkJ8JrrcDG9YJOkyLsQr4QABPu6lGhaIHQpI47/nTKpxhm8jCluhYQMB3kfEeNnaQAWb67K52nRGrmrOadJ1T8fIIViMcAux5murQ8zLyK3X9HkhnkhhNc2VOM/B8hDydQ/fs3VZuuONMOaxve2naDLoi+/YekIXz18t3L382h9ZmgXmAGFivwNEhERLLaVJc8e3j5MRTekr3Q9tIqzbVprZj+15Z9942eeXF1TL9V294Ux87fcFlg+WMzxwufQd0lN2798vvfrNIfn/foo+1n3H/OEDGntVXDj+ig7TWe2zRsmnqCPakvtm9a7/g3t9dvlme/dMKefqPyyhtcF2V/OiIetHtSYQQhsgKWYF2IKkVMWCo7NvXnyTjLzhSZj22XHbt3Gew9oe0kDHj+8q9v5wnD96zIGtDbfLpp02+Ati99cF+HR7yUeP6yKQpx0uPXm1l7aqtslIds/HDXTaLde7aSvr072CyVSu2yNSfz5U5f17NbjJ1fgwZYYnG8BHd5fMTB8qQE7pJ526ttN+dsvj1Dy2I7Tu2kC+MfKSEZsPZU244WT53bn/ZumWPrFi6yfravm2v1BygYxKbVU2qpE3baunUpZUccVRHadu+uSXJrdfNaXinqqEzCTwOXVzwB7fjL9uxMpLi2YBZIZEIMYNs2bRbHnt4iTRv3lRnkyayXW/s5FG9pP+gTmaaZjiBWVLAFgVKmsy1bahoO96lXx8qX/ynY2Sb2v/3G1+Vxx5aAiuxMPATrzxGLrzsaLn2F6fLA3e9KQ//emFMTI4hKpVBfEX7Pf1TOmsc2dFmyWVLPpKZ0xfLw/cuNO3LJw+XS64aIoOGdJa/v7mhDIt1Q86+8Ej53Hn95Y3XPpAffn22zRJ1ayRSzDY/vvNMS66F89Y3akZJXjeWEyHQMd6BQEDIi6NSRuAd1red/OCW06SDzhQtWzXT6a+ZtGqdmJ36yPioQWL0+D5y0qgv2nS4a8c+2bJ5t1z3jdmyft2OTPCJj7VLDPLG6LSLBMEMceOUF+W9d7YkooIxP3TPQpk3Z518/2enysVfGyIrl22Wv77wXkk8+yiqb753rJx46qGybvU2eUZny5nTFstyTRJf+HQ3b6Gvg4+hYBbetnlPgxIE3eKVc+3Vs2XGM1+QT53Tr7FJEjwaEyFEwx5tRiYKY3L4+96j77+1q7bJ9q17ZIcGfpvWeLIP6DR4YL/+aV1d3dSSp7m+Q5Hd7XQKbNOuWmeLKmlWrTtxdhUMo21DCG03gtj1ld85zvr50eQ/y1pdd2QwsKcMP0ss0Sf6Z9//i/z07jFy1TUnpEkSLdZPYLpHgjz+8FJ5+tG3ZeCQLoJXDv586dWnnTWHj+ghAwZ3ko3rd8rsp1d6SIPo3v3ay3J9xSDoDS3QgS7WMY0pzZKpO0QIXmaw/O4lMilP8Xh6J1/yTOibyrkmo0ex74cmtc7DYMWCXKD3te+dIN17tpHb9RWDBKUygn/qmN6ySxP3v59ZKdPCYpUJh6l/5v2L5QpNsK9cPVSm/0eymM0nKfouKoOGdlEf1cjAYzvLOfoKaNKUoy5Ci3z1m8OiYPKGXfLHGUtin1FQBoEHa8N6nW1DOfb4brLgbx+wWW+NtRLG3JiSrEliEugNxwAyMjBb5AiVR0iNOR3vzPNPn1l7HMDlTMx86Xx9EpfZQpYKBbDYh3UV+xM5/uQesvrdrboGWWrqyGnsLM67ZLCt6Js3b6JJMEzO+PTh8pCuE557YkW8txn/uUAmTDxKRpzRywJWboKgo2a6vsLCsN+RHXTNtVTXCO/LXt25FZVqHcPePYkMO64JFx1l65RNG3fZTFSkU4qH19aO7ckmAJhbfj3WXnd3/mSuzP3r2lJqkY8Fru2EIqd8Qr/dKNh+0+cikAuomcvzcjrI9EM6tUyCSqzZLh4MsC3D2oVPuSVdHTq0BHyPXm3kdQ2QzTQQ6PCHn9TDIFO+Oks26e7m8m8Nl/HnD5BrfnKKDD2xm9x2/SsxWbEm6T/okPQ1V0a/MN6leyvr40Fd40y/s2Fb6ueffEfuefQsW0TiddWgouPjOgd6WHxfdPnR8i8/HinXTHpOVr69uU5zpot7bERJF65UtlzRS8YgmJ4BOdr4MwXZqgtQPGGcBk8d21uOGHgIrVr9xtz3Zf6r78tQ3S4Ci3ULzZp1vfCptsRxw0h7SjA4B/nw/Z1mFzqQV+tOCucxSBCU39w+33YbN00dLePOG6CLzBWyYN4Hht2gawRsW1HYlzXquXTt3toQTJAb7hhV6z4BwFrsET0jeeKRt6LFTfq6WaWv50N7J+uVKGgEMePuBTqTbJfvapJcetVQW7g3wkxZKpokSZATdPA2WMZW18P7RYXRhEwxW3TljdLzsLb2rsRT3E+3h77Mf2WdJsksO7MAf8tHu5N+XB8grXvrP2gHJmEQYcHLklLkhFqBmGYX/G29DPuH7sksoDxvOqdRb3Ozbu19wa4M5xD5giTBYhXl818aKN+6bkQGgi05dlwHU2p8DA7GUD26YU0ClHNdCIrpgu3bYOajohguqjp21leOlimXzRKsyH15c27yFHfEa0kLnuZ6C/tyYwC5Y9se6aKHVxw2hgmnNcEPMoMO+vnmD0fIKaMPsy3q7KdWxu5w0MSdQkN8/dQfliUzYLB0x02vRZulCCYIXgn79h0QnEiPHtf3oJLky5OOlQv1dbP5o10yfWry2sOZjJ+9sS3/OM5okteN3R2jEDyMlaB5L7QZDXoiw67SxeJWk7TrkDxVmFqxQIsFUQwFJ5EoON+oq3CyMFW9WDvYWbdmux1kQZ+mcW6BVw52OC1aNLOFLLbZr7y4Rn75ozmJfugQp7CYrms9AHUNSGWzHl9uW/rfvXCe3K87p6f+8HY9Gon4g7Xb5bKzH7fGXTPH2zjLUiQI96+vaJaL9aAO94uFK9cj/3bzaZkHE/69dNxjpmK6dBSNlFnrFjinmdn6worKc5BabWUsX7JR9usUa1Ov3kvXHm3kvj+dIzgXQcHUe9HoR41u277asMuX6gEU7tvbz7U5PJ8gMDLv5XWCbyUTvnSUPK47HODwnj5Ft78X6Mkqpvu3Fm+UGdcvkJeefdf65WXilcfa951yA0w91tf+4jQjkYyTdCuNgkPBe2+bLy/OyvZlQr100+36tCcn2G4Hr2TszBpS9ui3oNZt0mf6X//5eVvfeRs4A8IJMMs7b20iacf0+J7TmJL2Wp82osSIlcDu3bNf2uiCEkFfv3aHPPrA36Vtu2RmWb9On9pQsBPCTVtRLHIEuZEvsbsC4dSb/0fO+Ozh8uVJQ+S1l9bIGpyVqKGrL3rKXi840MPrzWwHfdjDlIzkwvnOtAbuTjg+rEO69mgtazTQWLCjDB7aVc69eGBhktxy7cu2wPSHWQ09WMOrEa9IFmwA8mWRfjPCX1Hxr9cieV28sAUOEHMmIwL3umJNyHJ8QIIKAs8jeeCwu4hwmlU4ju8tSZwpkHy9wCSLU6s169yjHwu/d9NIuf72UXLjd9JjeR63UxfJAdtIEBzL43sSkoyljPwn1OpX9fWFgoeAx/H3PzHBPkmYIHd5cubbgj+U26Z/xmaxB/WspiEFrw6sN/CAcS1Vrj50+umHPo61XD3isMxLnE+PWlRD9CIPIPDgbeKVgHddZHfqkXxc6Wd0s6o4krevw8FWqBSU4pJGuGq3NqugTiA2jOf/6x07KOutHxRvve/TekA20HBxWBie4vE38Ypj5Kd3jbEZYMbdb8rL/G4TunC3ETilq7Fn99XX5YHodJyqLlm4od71CZK0/8CO9tOF0taLJThjwXoPW24EvdwC7I2/OtM+gzyn/mpMSY7l4UW40h65PO3MGo5thIsM1DX2mX7wsK5y7a2n21dgEwPmCm508LAusmh+Mi1a8FVulnJYqpHNGnzSOHZ/Vw/GrtSfCkzWnQxeJWhv1IUzQNgB9RmQ/FTgvZVb5W79XP6X51ZZhz4xOA72WVeNWRDfanDqiXL8yT3teL6pHtFjuj9LD/CauEUmMFisH6enxHio8DuThhactwzS70SfPfcIeUA/1mFWwFE7TmH9IRvsYpGK9Uvnrq2Tnwqoz3G63dg1WNXogeF/YmNxhusZeIYh3A7ZoZlWFNTI0Rr8b/xghP3YqK4fw2A9gK3jIv0Rku/FLOmFAbMgBkAG5zFhIJDje8yJI/VHR3oa26p18rTt1Hf5Wt0FYN1y/x2vp9nFYVPfd5DeXCGF367gazY+WqLgdyQoWKO8oB/xLtRE9TsRyPARFD8AmqbfiubMLv49C3D1FfxkAF+EcbyAWcK+MufuBU5FIuO1hNcUZiF/qFdfH3m5/ujot8E9qHK9WbSUZ2yVB2QWRh1nJt9LaEf1nIrZi8I0SaDmn3YzU4Cjucy4Sg1HwcAzEc3mQV4wnWOc+CT//7GEJKHncYvR5WlSeLZB9UKY/4YTeSVcRbmKGSTHSm06uVlSEHDQMbxTqmVHZRke2mYkuVCVGCeqkCU8oAtX70Kg0A48ehRtwshjOwpcD8SQhXaeRxnrnDwzg7juY7dBj7g838TBJrv3XURaCdrgUCp11gPZ/+4GnuZfreCroDAS3qB6POor37yf8PDkRnUlINJ/SYmENp1+BgOdAM/PApEP9TpwmTGoUsZ+sF2pansg/XZjnlYPI0hWvOvJq6fOR8+1aT6aZj/shqa1bWpBDnEeYlDIg4CmaIJtJIHZ0hpQtFnA923yK3VtDyQnrnQevetxkEU+CII9KLApjvgcpsym79KbsqAGhlVeWIdt+9Lghs3cZV2HakWkHkjWJOYt53FzKNvacA5OM0aZtmiFHwEgLtBg5wos0mpGVCCAlXJLXdg4W4SOmRiRX24nn2Cc/hZP7948pgQ9Zw6l67XBNuWmo8yoqzaIsTrYVDmaFEWLxKgsMRJwgU8dMw+EEvhjgE0tXGxIQR75rg2d2J0SKoq3ydsxPQgqpdADOpME70RPmhtTcHQyABEU5Pk22AEXquj7AI3tYIEmI19xkQYmNIoSJJqg7YCt9SFbgQFiKpY4OZ0MgIYrtXkg+XZjDqPXlF8UJcC9p009MIE3HQ9I6Yw56kVm2q9/sr2YCQI5/2iGtWHUlNeDzNuEMB1VSmcwNFipowfcwhXu9S4EBlHBP8iKSsAzioAYVC8myttL5EXWaAIBI+17zAfS2wCNnvAXcZGR8rxd9lMwQt9thVYP5H5P4l2fc1+uGbKgthMNh4u3lcAo8hIiPc8CSMumpA3W5LNWvhf5RADE27WGAzNRaKpSF3sgnLjCczlvAx8dGuTGIF1sMOVG5ZRVispEMgGBVcBOLdQpTGGeKlQpZHqtCp3MJDGeSoCG44zn2qV8FbEB4J1uNoK9tEqAJtMXmeG1QT2nk5kVKA/dUAZ2YiMItKIs5dSmgMnr1UZVOPBA+M88lYK3ce4RtwYhKqEKWQOdbHFBNYFvm03lkkdN8E2mAicjyS4ZRAS0vqAyMajDrlCbXRp3AuqkD4UTVsjogWR3Y00NjUUHlxCmUCVo13CQiKWNBJxenVrKrIcKOqWCW6jNfgqSgSLoIYlqJVKBTmEfn1Dm/wIpd1VxcqbcqAAAAABJRU5ErkJggg=="},1411:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-History-list-b30840e2cdc37f910c5cbbc5f063051f.png"},4136:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Menu-features-950301f0a668b45e178757af22380df3.png"},5273:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Menu-cb08d9811c1b3f02a454d3409b8dd393.png"},8545:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Refund-Form-8345e3dff73524df2bcde310366efb27.png"},2779:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Refund-Wait-1d068a9b278567c3a4ad26859e969a55.png"},9686:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Resume-ff1b77fe887026e5bdf119c7493e8fbb.png"},1126:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-Welcome-682effc97c60adb2d91b2594efec9179.png"},3513:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-status-confirm-wallet-b443dd740dd1002f8e73edc1e60d901b.png"},8962:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Bridge-2-token-Selection-9ffa553da5cca58043c8a14fa7d83b32.png"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/daff3ff4.e65d413d.js b/assets/js/daff3ff4.d73c314e.js similarity index 98% rename from assets/js/daff3ff4.e65d413d.js rename to assets/js/daff3ff4.d73c314e.js index 7b793f41e..ae78ac53a 100644 --- a/assets/js/daff3ff4.e65d413d.js +++ b/assets/js/daff3ff4.d73c314e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1718],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>m});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=r.createContext({}),l=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(s.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(t),f=o,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||i;return t?r.createElement(m,a(a({ref:n},u),{},{components:t})):r.createElement(m,a({ref:n},u))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c[d]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var r=t(7462),o=(t(7294),t(3905));t(8209);const i={id:"uco",title:"UCO token",sidebar_position:2},a=void 0,c={unversionedId:"learn/uco",id:"learn/uco",title:"UCO token",description:"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.",source:"@site/docs/learn/uco.md",sourceDirName:"learn",slug:"/learn/uco",permalink:"/learn/uco",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:2,frontMatter:{id:"uco",title:"UCO token",sidebar_position:2},sidebar:"docs",previous:{title:"Learn",permalink:"/learn/"},next:{title:"Ecosystem",permalink:"/learn/ecosystem"}},s={},l=[{value:"Fibonacci Golden Token Economics",id:"fibonacci-golden-token-economics",level:2}],u={toc:l},d="wrapper";function p(e){let{components:n,...t}=e;return(0,o.kt)(d,(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people."),(0,o.kt)("p",null,"UCO is based on the principle of controlled supply and creating demand."),(0,o.kt)("h2",{id:"fibonacci-golden-token-economics"},"Fibonacci Golden Token Economics"),(0,o.kt)("p",null,"To achieve the objective of a self-sustaining crypto economy, the token distribution has been redefined. The transactions growth, users growth ans developers growth based on the set of commissioned applications has been analysed. The cost of running the nodes has been calculated and the adoption and incentivization has been designed to ensure the sustenance of nodes."),(0,o.kt)("br",null),(0,o.kt)("mermaid",{value:'pie\n "Network Funding": 38.2\n "Adoption Rewards": 23.6\n "Team & Advisors": 14.5\n "Staking Rewards": 9\n "Exchange Liquidity": 5.57\n "Dynamic Mminers Rewards": 3.34\n "Gamification & Geo incentives": 3.44\n "Foundation": 2.13'}))}p.isMDXComponent=!0},8209:(e,n,t)=>{t(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1718],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>m});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=r.createContext({}),l=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(s.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(t),f=o,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||i;return t?r.createElement(m,a(a({ref:n},u),{},{components:t})):r.createElement(m,a({ref:n},u))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c[d]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var r=t(7462),o=(t(7294),t(3905));t(8209);const i={id:"uco",title:"UCO token",sidebar_position:2},a=void 0,c={unversionedId:"learn/uco",id:"learn/uco",title:"UCO token",description:"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.",source:"@site/docs/learn/uco.md",sourceDirName:"learn",slug:"/learn/uco",permalink:"/learn/uco",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:2,frontMatter:{id:"uco",title:"UCO token",sidebar_position:2},sidebar:"docs",previous:{title:"Learn",permalink:"/learn/"},next:{title:"Ecosystem",permalink:"/learn/ecosystem"}},s={},l=[{value:"Fibonacci Golden Token Economics",id:"fibonacci-golden-token-economics",level:2}],u={toc:l},d="wrapper";function p(e){let{components:n,...t}=e;return(0,o.kt)(d,(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes\u2019 performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people."),(0,o.kt)("p",null,"UCO is based on the principle of controlled supply and creating demand."),(0,o.kt)("h2",{id:"fibonacci-golden-token-economics"},"Fibonacci Golden Token Economics"),(0,o.kt)("p",null,"To achieve the objective of a self-sustaining crypto economy, the token distribution has been redefined. The transactions growth, users growth ans developers growth based on the set of commissioned applications has been analysed. The cost of running the nodes has been calculated and the adoption and incentivization has been designed to ensure the sustenance of nodes."),(0,o.kt)("br",null),(0,o.kt)("mermaid",{value:'pie\n "Network Funding": 38.2\n "Adoption Rewards": 23.6\n "Team & Advisors": 14.5\n "Staking Rewards": 9\n "Exchange Liquidity": 5.57\n "Dynamic Mminers Rewards": 3.34\n "Gamification & Geo incentives": 3.44\n "Foundation": 2.13'}))}p.isMDXComponent=!0},8209:(e,n,t)=>{t(7294)}}]); \ No newline at end of file diff --git a/assets/js/db2ee795.c18cbdef.js b/assets/js/db2ee795.4015dd2f.js similarity index 98% rename from assets/js/db2ee795.c18cbdef.js rename to assets/js/db2ee795.4015dd2f.js index fbe7debb8..603f17713 100644 --- a/assets/js/db2ee795.c18cbdef.js +++ b/assets/js/db2ee795.4015dd2f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1950],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,r(r({ref:t},p),{},{components:n})):a.createElement(h,r({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:i,r[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"ecosystem",title:"Ecosystem",sidebar_position:3},r=void 0,l={unversionedId:"learn/ecosystem",id:"learn/ecosystem",title:"Ecosystem",description:"The technical and functional parameters that make Archethic unique and ready for global adoption:",source:"@site/docs/learn/ecosystem.md",sourceDirName:"learn",slug:"/learn/ecosystem",permalink:"/learn/ecosystem",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:3,frontMatter:{id:"ecosystem",title:"Ecosystem",sidebar_position:3},sidebar:"docs",previous:{title:"UCO token",permalink:"/learn/uco"},next:{title:"Patents",permalink:"/learn/patents"}},s={},c=[{value:"Limitless network",id:"limitless-network",level:2},{value:"Unlimited applications",id:"unlimited-applications",level:2},{value:"Decentralized Identity",id:"decentralized-identity",level:2},{value:"Governance",id:"governance",level:2},{value:"Open enhancements",id:"open-enhancements",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The technical and functional parameters that make Archethic unique and ready for global adoption:"),(0,i.kt)("h2",{id:"limitless-network"},"Limitless network"),(0,i.kt)("p",null,"Archethic is outperforming the market standards with some key indicators:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"a scalability >1 Million TPS"),(0,i.kt)("li",{parentName:"ul"},"a validation time < 5 sec"),(0,i.kt)("li",{parentName:"ul"},"capability to handle up to 90% maliciousness"),(0,i.kt)("li",{parentName:"ul"},"3.6 billion times less energy consumption than Bitcoin and 0.1% transaction fee")),(0,i.kt)("admonition",{title:"Super Fast & Limitless",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Without impacting the global validation, the heuristic polymorphic replication provides a linear increase of the capacity (in storage and number of validations) allowing us to reach 1 MILLION TPS transactions per second.")),(0,i.kt)("admonition",{title:"Safest",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Beyond just PoW (51%) or dBFT (66%), Archethic implements a consensus that can handle 90% of malicious miners and decentralized security based on the standards of aviation safety (fraud risk less than 10-9).")),(0,i.kt)("admonition",{title:"Earth Friendly",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"3.6 Billion times less energy consumption than Bitcoin by using the ARCH consensus based on heuristic miners' election and a polymorphic worldwide replication. Each transaction only needs 0.42w of energy.")),(0,i.kt)("h2",{id:"unlimited-applications"},"Unlimited applications"),(0,i.kt)("p",null,"Our blockchain platform aims to replace and to improve all current applications with a comprehensive and open ecosystem, allowing people to move from the trust imposed by centralized to a decentralized system."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AEWeb"),": One app for website maintenance, security, handling and costing on the blockchain at a fraction of the current hosting costs!"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AEMail"),": Email Redefined! An all-in-one email, messaging, wallet and payments app that provides the full suite for a user. Coming soon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AENFT"),": Archethic embeds in its transaction structure NFTs and are therefore native to the network. However a decentralized marketplace reimagined in collaboration with artists will come soon !"),(0,i.kt)("li",{parentName:"ul"},"And so more...")),(0,i.kt)("h2",{id:"decentralized-identity"},"Decentralized Identity"),(0,i.kt)("p",null,"Your identity is your right. The security and threat issues that centralized systems pose helped us realize that self-sovereign identity is needed now more than ever."),(0,i.kt)("p",null,"With Archethic, you can access your identity but no one owns it.\nHave you ever wondered how many times your identity is exploited without your knowledge by centralized monopolies or even your favorite merchant site?"),(0,i.kt)("p",null,"The world wants you to believe that ownership doesn\u2019t matter. We are here to change that narrative."),(0,i.kt)("p",null,"Identity is not just about ownership but control and freedom."),(0,i.kt)("p",null,"Archethic provides interoperable ",(0,i.kt)("a",{parentName:"p",href:"/learn/decentralized-id"},"decentralized identity management")," using both the traditional key management as well as our crypto-biometrics key management solution."),(0,i.kt)("p",null,"Enter the era of innovation and decentralized identity that is yours to own and control."),(0,i.kt)("h2",{id:"governance"},"Governance"),(0,i.kt)("p",null,"Archethic Foundation is a non-profit organization whose vision is the promotion of the Archethic Public Blockchain Protocol."),(0,i.kt)("p",null,"It considers Archethic as a project \u2013 where a solid technical foundation is a key to winning the marathon race to global adoption. Its role is to sustainably deploy resources that are under control to support the long-term success of Archethic. This long-term success will only be possible with a vibrant decentralized ecosystem."),(0,i.kt)("p",null,"To provide an inclusive, generously incentivized, and on-chain Governance, Archethic is based on those four pillars:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Decentralized Identity & Proof of Identity"),": An essential prerequisite for a human-inclusive governance in blockchain is the ability of the ecosystem to uniquely identify a person and to integrate that person into a relevant group.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Modifiable"),": Each algorithm can be updated through transactions allowing the network to version (git...) all updates, and also to force each update according to a specific governance (voting quorum, veto right...).")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"On-Chain Governance"),": The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will immediately apply the decided updates along with the ability to test the impact of a new feature in real-time.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Generous Incentives"),": Financing the work associated with updates, new features, and contributions is an essential element. The network has a reserve of one-third of the tokens for this purpose."))),(0,i.kt)("h3",{id:"open-enhancements"},"Open enhancements"),(0,i.kt)("p",null,"We are an open-source and decentralized protocol which decision involves community votes and suggestions."),(0,i.kt)("p",null,"In that sense, we have created ",(0,i.kt)("strong",{parentName:"p"},"Archethic Improvement Proposals (AEIPs)")," to offer opportunity to contribute in the project by proposing technical, informational and process-based enhancements."),(0,i.kt)("p",null,"If you are interested, please take on the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip"},"AEIP repository")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1950],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||o;return n?a.createElement(h,r(r({ref:t},p),{},{components:n})):a.createElement(h,r({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:i,r[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"ecosystem",title:"Ecosystem",sidebar_position:3},r=void 0,l={unversionedId:"learn/ecosystem",id:"learn/ecosystem",title:"Ecosystem",description:"The technical and functional parameters that make Archethic unique and ready for global adoption:",source:"@site/docs/learn/ecosystem.md",sourceDirName:"learn",slug:"/learn/ecosystem",permalink:"/learn/ecosystem",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:3,frontMatter:{id:"ecosystem",title:"Ecosystem",sidebar_position:3},sidebar:"docs",previous:{title:"UCO token",permalink:"/learn/uco"},next:{title:"Patents",permalink:"/learn/patents"}},s={},c=[{value:"Limitless network",id:"limitless-network",level:2},{value:"Unlimited applications",id:"unlimited-applications",level:2},{value:"Decentralized Identity",id:"decentralized-identity",level:2},{value:"Governance",id:"governance",level:2},{value:"Open enhancements",id:"open-enhancements",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The technical and functional parameters that make Archethic unique and ready for global adoption:"),(0,i.kt)("h2",{id:"limitless-network"},"Limitless network"),(0,i.kt)("p",null,"Archethic is outperforming the market standards with some key indicators:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"a scalability >1 Million TPS"),(0,i.kt)("li",{parentName:"ul"},"a validation time < 5 sec"),(0,i.kt)("li",{parentName:"ul"},"capability to handle up to 90% maliciousness"),(0,i.kt)("li",{parentName:"ul"},"3.6 billion times less energy consumption than Bitcoin and 0.1% transaction fee")),(0,i.kt)("admonition",{title:"Super Fast & Limitless",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Without impacting the global validation, the heuristic polymorphic replication provides a linear increase of the capacity (in storage and number of validations) allowing us to reach 1 MILLION TPS transactions per second.")),(0,i.kt)("admonition",{title:"Safest",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"Beyond just PoW (51%) or dBFT (66%), Archethic implements a consensus that can handle 90% of malicious miners and decentralized security based on the standards of aviation safety (fraud risk less than 10-9).")),(0,i.kt)("admonition",{title:"Earth Friendly",type:"success"},(0,i.kt)("p",{parentName:"admonition"},"3.6 Billion times less energy consumption than Bitcoin by using the ARCH consensus based on heuristic miners' election and a polymorphic worldwide replication. Each transaction only needs 0.42w of energy.")),(0,i.kt)("h2",{id:"unlimited-applications"},"Unlimited applications"),(0,i.kt)("p",null,"Our blockchain platform aims to replace and to improve all current applications with a comprehensive and open ecosystem, allowing people to move from the trust imposed by centralized to a decentralized system."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AEWeb"),": One app for website maintenance, security, handling and costing on the blockchain at a fraction of the current hosting costs!"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AEMail"),": Email Redefined! An all-in-one email, messaging, wallet and payments app that provides the full suite for a user. Coming soon"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AENFT"),": Archethic embeds in its transaction structure NFTs and are therefore native to the network. However a decentralized marketplace reimagined in collaboration with artists will come soon !"),(0,i.kt)("li",{parentName:"ul"},"And so more...")),(0,i.kt)("h2",{id:"decentralized-identity"},"Decentralized Identity"),(0,i.kt)("p",null,"Your identity is your right. The security and threat issues that centralized systems pose helped us realize that self-sovereign identity is needed now more than ever."),(0,i.kt)("p",null,"With Archethic, you can access your identity but no one owns it.\nHave you ever wondered how many times your identity is exploited without your knowledge by centralized monopolies or even your favorite merchant site?"),(0,i.kt)("p",null,"The world wants you to believe that ownership doesn\u2019t matter. We are here to change that narrative."),(0,i.kt)("p",null,"Identity is not just about ownership but control and freedom."),(0,i.kt)("p",null,"Archethic provides interoperable ",(0,i.kt)("a",{parentName:"p",href:"/learn/decentralized-id"},"decentralized identity management")," using both the traditional key management as well as our crypto-biometrics key management solution."),(0,i.kt)("p",null,"Enter the era of innovation and decentralized identity that is yours to own and control."),(0,i.kt)("h2",{id:"governance"},"Governance"),(0,i.kt)("p",null,"Archethic Foundation is a non-profit organization whose vision is the promotion of the Archethic Public Blockchain Protocol."),(0,i.kt)("p",null,"It considers Archethic as a project \u2013 where a solid technical foundation is a key to winning the marathon race to global adoption. Its role is to sustainably deploy resources that are under control to support the long-term success of Archethic. This long-term success will only be possible with a vibrant decentralized ecosystem."),(0,i.kt)("p",null,"To provide an inclusive, generously incentivized, and on-chain Governance, Archethic is based on those four pillars:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Decentralized Identity & Proof of Identity"),": An essential prerequisite for a human-inclusive governance in blockchain is the ability of the ecosystem to uniquely identify a person and to integrate that person into a relevant group.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Modifiable"),": Each algorithm can be updated through transactions allowing the network to version (git...) all updates, and also to force each update according to a specific governance (voting quorum, veto right...).")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"On-Chain Governance"),": The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will immediately apply the decided updates along with the ability to test the impact of a new feature in real-time.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Generous Incentives"),": Financing the work associated with updates, new features, and contributions is an essential element. The network has a reserve of one-third of the tokens for this purpose."))),(0,i.kt)("h3",{id:"open-enhancements"},"Open enhancements"),(0,i.kt)("p",null,"We are an open-source and decentralized protocol which decision involves community votes and suggestions."),(0,i.kt)("p",null,"In that sense, we have created ",(0,i.kt)("strong",{parentName:"p"},"Archethic Improvement Proposals (AEIPs)")," to offer opportunity to contribute in the project by proposing technical, informational and process-based enhancements."),(0,i.kt)("p",null,"If you are interested, please take on the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/archethic-foundation/aeip"},"AEIP repository")))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/dd15e14a.d46dbca8.js b/assets/js/dd15e14a.dbdbd7c6.js similarity index 98% rename from assets/js/dd15e14a.d46dbca8.js rename to assets/js/dd15e14a.dbdbd7c6.js index d505c5eb1..3c6fc03e3 100644 --- a/assets/js/dd15e14a.d46dbca8.js +++ b/assets/js/dd15e14a.dbdbd7c6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[681],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),u=i,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||o;return n?a.createElement(h,r(r({ref:t},d),{},{components:n})):a.createElement(h,r({ref:t},d))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:i,r[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"arch-consensus",title:"ARCH consensus"},r=void 0,l={unversionedId:"learn/arch-consensus/arch-consensus",id:"learn/arch-consensus/arch-consensus",title:"ARCH consensus",description:"Archethic Blockchain is using a new consensus called ARCH (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput.",source:"@site/docs/learn/arch-consensus/README.md",sourceDirName:"learn/arch-consensus",slug:"/learn/arch-consensus/",permalink:"/learn/arch-consensus/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"arch-consensus",title:"ARCH consensus"},sidebar:"docs",previous:{title:"Transaction types",permalink:"/learn/transaction-types"},next:{title:"Proof of Work",permalink:"/learn/arch-consensus/proof-of-work"}},s={},c=[{value:"Atomic Commitment",id:"atomic-commitment",level:2},{value:"Rotating Election",id:"rotating-election",level:2},{value:"Workflow",id:"workflow",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is using a new consensus called ",(0,i.kt)("inlineCode",{parentName:"p"},"ARCH")," (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput."),(0,i.kt)("p",null,"Archethic Blockchain is based on three properties:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Security: Each transaction is validated atomically"),(0,i.kt)("li",{parentName:"ul"},"Data consistency: Algorithms ensure to access the latest write and maximum availability"),(0,i.kt)("li",{parentName:"ul"},"Fault tolerance: Allow nodes to operate independently even in case of disaster")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"ARCH")," consensus is defined by three concepts:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Atomic Commitment"),": The most absolute form a consensus which implies 100% of concordant responses for the acceptance or refusal of the transaction validation"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Heuristic"),": Set of algorithms which manages the entire network, allowing to elect in a decentralized and coordinated way the nodes in charge to validate or store the transaction chains"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Rotating"),": Node election is constantly changing. No nodes can predict which nodes will validate the transaction before its arrives.")),(0,i.kt)("h2",{id:"atomic-commitment"},"Atomic Commitment"),(0,i.kt)("p",null,"Archethic Blockchain is based on ",(0,i.kt)("inlineCode",{parentName:"p"},"Hypergeometric distribution")," laws which from an unpredictable election and formal consensus make it possible to obtain with certainty (99.99999999%) the same answer by querying 197 nodes as would be obtained by querying 100 000 nodes."),(0,i.kt)("p",null,"Therefore, it makes possible the consensus establishment with a small part of nodes and can resist to attacks of 90% of malicious nodes. "),(0,i.kt)("p",null,"The risk of related availability is ensured by a strict management of the disruptive nodes, which are banished after investigation of the origin of the disagreement."),(0,i.kt)("p",null,"By supporting more 90% of malicious nodes into its network, ",(0,i.kt)("inlineCode",{parentName:"p"},"ARCH")," consensus is above aeronautical or nuclear standard, thanks to the ",(0,i.kt)("inlineCode",{parentName:"p"},"Atomic Commitment")," which request the total agreement of the validation nodes and from a ",(0,i.kt)("inlineCode",{parentName:"p"},"Malicious Detection")," algorithm to detect the malicious nodes."),(0,i.kt)("h2",{id:"rotating-election"},"Rotating Election"),(0,i.kt)("p",null,"Each rotating election is unpredictable, but still verifiable and reproducible.\nThe rotating algorithm sort a list of nodes based on:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Hash of transaction"),": Unpredictable until the transaction arrives"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Daily nonce"),": Secret shared between the authorized nodes and renewed daily"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Node public key"),": Last node public key")),(0,i.kt)("p",null,"The rotating election produces a proof, named: ",(0,i.kt)("inlineCode",{parentName:"p"},"Proof of Election")," which can be verified by any other nodes to ensure the right election of nodes."),(0,i.kt)("p",null,"From this algorithm, we get a list of nodes which can be filtered according to the constraints of the validation of the transaction."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"P2P availability"),(0,i.kt)("li",{parentName:"ul"},"Geographical distribution")),(0,i.kt)("h2",{id:"workflow"},"Workflow"),(0,i.kt)("p",null,"When a transaction is willing to be validated, its follows the given workflow:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"The transaction is received by any node (aka ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome node"),")"),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," determines the validation nodes from the ",(0,i.kt)("inlineCode",{parentName:"li"},"Rotating Election")," algorithm and forward the transaction"),(0,i.kt)("li",{parentName:"ol"},"The validation nodes after receiving the transaction start some preliminary job to gather the context of the transaction:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Previous transaction"),(0,i.kt)("li",{parentName:"ul"},"List of unspent outputs"))),(0,i.kt)("li",{parentName:"ol"},"After the context building, the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes")," communicate to the ",(0,i.kt)("inlineCode",{parentName:"li"},"Coordinator Node")," the list of storage nodes involved to gather this information."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Coordinator Node")," can build the ",(0,i.kt)("inlineCode",{parentName:"li"},"Validation Stamp")," and compute the replication tree. Then it transmits them to the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes"),"."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes")," verify the content of the ",(0,i.kt)("inlineCode",{parentName:"li"},"Validation Stamp"),", sign with or without inconsistencies, and send the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," to all the validation nodes involved."),(0,i.kt)("li",{parentName:"ol"},"Once all the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamps")," are received and if the ",(0,i.kt)("inlineCode",{parentName:"li"},"Atomic Commitment")," is reached, the replication phase starts."),(0,i.kt)("li",{parentName:"ol"},"Validation nodes send the transaction to the respective storage nodes:")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the new transaction chain"),(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the outputs of the transactions (transaction's movements addresses, recipients)"),(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the ",(0,i.kt)("a",{parentName:"li",href:"/learn/sharding/beacon-chain"},"Beacon Chain"))),(0,i.kt)("ol",{start:9},(0,i.kt)("li",{parentName:"ol"},"The storage for the new transaction chain will notify the validation nodes and the ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," about the replication, and the ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," will notify the client about it.")))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[681],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),u=i,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||o;return n?a.createElement(h,r(r({ref:t},d),{},{components:n})):a.createElement(h,r({ref:t},d))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:i,r[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const o={id:"arch-consensus",title:"ARCH consensus"},r=void 0,l={unversionedId:"learn/arch-consensus/arch-consensus",id:"learn/arch-consensus/arch-consensus",title:"ARCH consensus",description:"Archethic Blockchain is using a new consensus called ARCH (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput.",source:"@site/docs/learn/arch-consensus/README.md",sourceDirName:"learn/arch-consensus",slug:"/learn/arch-consensus/",permalink:"/learn/arch-consensus/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"arch-consensus",title:"ARCH consensus"},sidebar:"docs",previous:{title:"Transaction types",permalink:"/learn/transaction-types"},next:{title:"Proof of Work",permalink:"/learn/arch-consensus/proof-of-work"}},s={},c=[{value:"Atomic Commitment",id:"atomic-commitment",level:2},{value:"Rotating Election",id:"rotating-election",level:2},{value:"Workflow",id:"workflow",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is using a new consensus called ",(0,i.kt)("inlineCode",{parentName:"p"},"ARCH")," (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput."),(0,i.kt)("p",null,"Archethic Blockchain is based on three properties:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Security: Each transaction is validated atomically"),(0,i.kt)("li",{parentName:"ul"},"Data consistency: Algorithms ensure to access the latest write and maximum availability"),(0,i.kt)("li",{parentName:"ul"},"Fault tolerance: Allow nodes to operate independently even in case of disaster")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"ARCH")," consensus is defined by three concepts:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Atomic Commitment"),": The most absolute form a consensus which implies 100% of concordant responses for the acceptance or refusal of the transaction validation"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Heuristic"),": Set of algorithms which manages the entire network, allowing to elect in a decentralized and coordinated way the nodes in charge to validate or store the transaction chains"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Rotating"),": Node election is constantly changing. No nodes can predict which nodes will validate the transaction before its arrives.")),(0,i.kt)("h2",{id:"atomic-commitment"},"Atomic Commitment"),(0,i.kt)("p",null,"Archethic Blockchain is based on ",(0,i.kt)("inlineCode",{parentName:"p"},"Hypergeometric distribution")," laws which from an unpredictable election and formal consensus make it possible to obtain with certainty (99.99999999%) the same answer by querying 197 nodes as would be obtained by querying 100 000 nodes."),(0,i.kt)("p",null,"Therefore, it makes possible the consensus establishment with a small part of nodes and can resist to attacks of 90% of malicious nodes. "),(0,i.kt)("p",null,"The risk of related availability is ensured by a strict management of the disruptive nodes, which are banished after investigation of the origin of the disagreement."),(0,i.kt)("p",null,"By supporting more 90% of malicious nodes into its network, ",(0,i.kt)("inlineCode",{parentName:"p"},"ARCH")," consensus is above aeronautical or nuclear standard, thanks to the ",(0,i.kt)("inlineCode",{parentName:"p"},"Atomic Commitment")," which request the total agreement of the validation nodes and from a ",(0,i.kt)("inlineCode",{parentName:"p"},"Malicious Detection")," algorithm to detect the malicious nodes."),(0,i.kt)("h2",{id:"rotating-election"},"Rotating Election"),(0,i.kt)("p",null,"Each rotating election is unpredictable, but still verifiable and reproducible.\nThe rotating algorithm sort a list of nodes based on:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Hash of transaction"),": Unpredictable until the transaction arrives"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Daily nonce"),": Secret shared between the authorized nodes and renewed daily"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Node public key"),": Last node public key")),(0,i.kt)("p",null,"The rotating election produces a proof, named: ",(0,i.kt)("inlineCode",{parentName:"p"},"Proof of Election")," which can be verified by any other nodes to ensure the right election of nodes."),(0,i.kt)("p",null,"From this algorithm, we get a list of nodes which can be filtered according to the constraints of the validation of the transaction."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"P2P availability"),(0,i.kt)("li",{parentName:"ul"},"Geographical distribution")),(0,i.kt)("h2",{id:"workflow"},"Workflow"),(0,i.kt)("p",null,"When a transaction is willing to be validated, its follows the given workflow:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"The transaction is received by any node (aka ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome node"),")"),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," determines the validation nodes from the ",(0,i.kt)("inlineCode",{parentName:"li"},"Rotating Election")," algorithm and forward the transaction"),(0,i.kt)("li",{parentName:"ol"},"The validation nodes after receiving the transaction start some preliminary job to gather the context of the transaction:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Previous transaction"),(0,i.kt)("li",{parentName:"ul"},"List of unspent outputs"))),(0,i.kt)("li",{parentName:"ol"},"After the context building, the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes")," communicate to the ",(0,i.kt)("inlineCode",{parentName:"li"},"Coordinator Node")," the list of storage nodes involved to gather this information."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Coordinator Node")," can build the ",(0,i.kt)("inlineCode",{parentName:"li"},"Validation Stamp")," and compute the replication tree. Then it transmits them to the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes"),"."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Nodes")," verify the content of the ",(0,i.kt)("inlineCode",{parentName:"li"},"Validation Stamp"),", sign with or without inconsistencies, and send the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamp")," to all the validation nodes involved."),(0,i.kt)("li",{parentName:"ol"},"Once all the ",(0,i.kt)("inlineCode",{parentName:"li"},"Cross Validation Stamps")," are received and if the ",(0,i.kt)("inlineCode",{parentName:"li"},"Atomic Commitment")," is reached, the replication phase starts."),(0,i.kt)("li",{parentName:"ol"},"Validation nodes send the transaction to the respective storage nodes:")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the new transaction chain"),(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the outputs of the transactions (transaction's movements addresses, recipients)"),(0,i.kt)("li",{parentName:"ul"},"Storage nodes responsible for the ",(0,i.kt)("a",{parentName:"li",href:"/learn/sharding/beacon-chain"},"Beacon Chain"))),(0,i.kt)("ol",{start:9},(0,i.kt)("li",{parentName:"ol"},"The storage for the new transaction chain will notify the validation nodes and the ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," about the replication, and the ",(0,i.kt)("inlineCode",{parentName:"li"},"Welcome Node")," will notify the client about it.")))}m.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/e0b1087e.d6818a21.js b/assets/js/e0b1087e.c78ebb77.js similarity index 98% rename from assets/js/e0b1087e.d6818a21.js rename to assets/js/e0b1087e.c78ebb77.js index 1f2f773c4..a9c29eb3d 100644 --- a/assets/js/e0b1087e.d6818a21.js +++ b/assets/js/e0b1087e.c78ebb77.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4898],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},i=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,d=e.parentName,i=s(e,["components","mdxType","originalType","parentName"]),f=c(n),k=a,m=f["".concat(d,".").concat(k)]||f[k]||p[k]||o;return n?r.createElement(m,l(l({ref:t},i),{},{components:n})):r.createElement(m,l({ref:t},i))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=k;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[f]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>k,Bullet:()=>f,SpecifiedBy:()=>p,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>d,toc:()=>i});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"token-transfer",title:"TokenTransfer",hide_table_of_contents:!1},s=void 0,d={unversionedId:"build/api/schema/objects/token-transfer",id:"build/api/schema/objects/token-transfer",title:"TokenTransfer",description:"[TokenTransfer] represents the an asset transfer",source:"@site/docs/build/api/schema/objects/token-transfer.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-transfer",permalink:"/build/api/schema/objects/token-transfer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"token-transfer",title:"TokenTransfer",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenLedger",permalink:"/build/api/schema/objects/token-ledger"},next:{title:"Token",permalink:"/build/api/schema/objects/token"}},c={},i=[{value:"Fields",id:"fields",level:3},{value:'TokenTransfer.amountInt ',id:"code-style-fontweight-normal-tokentransferbamountbcodeint-",level:4},{value:'TokenTransfer.toAddress ',id:"code-style-fontweight-normal-tokentransferbtobcodeaddress-",level:4},{value:'TokenTransfer.tokenAddressAddress ',id:"code-style-fontweight-normal-tokentransferbtokenaddressbcodeaddress-",level:4},{value:'TokenTransfer.tokenIdInt ',id:"code-style-fontweight-normal-tokentransferbtokenidbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],f=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),k=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:i,Bullet:f,SpecifiedBy:p,Badge:k},u="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TokenTransfer]"," represents the an asset transfer"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenTransfer {\n amount: Int\n to: Address\n tokenAddress: Address\n tokenId: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtobcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"to"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtokenaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"tokenAddress"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenLedger"))," ",(0,o.kt)(k,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4898],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},i=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,d=e.parentName,i=s(e,["components","mdxType","originalType","parentName"]),f=c(n),k=a,m=f["".concat(d,".").concat(k)]||f[k]||p[k]||o;return n?r.createElement(m,l(l({ref:t},i),{},{components:n})):r.createElement(m,l({ref:t},i))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=k;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[f]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{n.r(t),n.d(t,{Badge:()=>k,Bullet:()=>f,SpecifiedBy:()=>p,assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>d,toc:()=>i});var r=n(7462),a=n(7294),o=n(3905);n(8209);const l={id:"token-transfer",title:"TokenTransfer",hide_table_of_contents:!1},s=void 0,d={unversionedId:"build/api/schema/objects/token-transfer",id:"build/api/schema/objects/token-transfer",title:"TokenTransfer",description:"[TokenTransfer] represents the an asset transfer",source:"@site/docs/build/api/schema/objects/token-transfer.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/token-transfer",permalink:"/build/api/schema/objects/token-transfer",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"token-transfer",title:"TokenTransfer",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TokenLedger",permalink:"/build/api/schema/objects/token-ledger"},next:{title:"Token",permalink:"/build/api/schema/objects/token"}},c={},i=[{value:"Fields",id:"fields",level:3},{value:'TokenTransfer.amountInt ',id:"code-style-fontweight-normal-tokentransferbamountbcodeint-",level:4},{value:'TokenTransfer.toAddress ',id:"code-style-fontweight-normal-tokentransferbtobcodeaddress-",level:4},{value:'TokenTransfer.tokenAddressAddress ',id:"code-style-fontweight-normal-tokentransferbtokenaddressbcodeaddress-",level:4},{value:'TokenTransfer.tokenIdInt ',id:"code-style-fontweight-normal-tokentransferbtokenidbcodeint-",level:4},{value:"Member of",id:"member-of",level:3}],f=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),k=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:i,Bullet:f,SpecifiedBy:p,Badge:k},u="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[TokenTransfer]"," represents the an asset transfer"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type TokenTransfer {\n amount: Int\n to: Address\n tokenAddress: Address\n tokenId: Int\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbamountbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"amount"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtobcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"to"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtokenaddressbcodeaddress-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"tokenAddress"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,o.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h4",{id:"code-style-fontweight-normal-tokentransferbtokenidbcodeint-"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"TokenTransfer.",(0,o.kt)("b",null,"tokenId"))),(0,o.kt)(f,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,o.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,o.kt)(k,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token-ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"TokenLedger"))," ",(0,o.kt)(k,{class:"secondary",text:"object",mdxType:"Badge"})))}b.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/e2b19375.76028549.js b/assets/js/e2b19375.fad8c941.js similarity index 97% rename from assets/js/e2b19375.76028549.js rename to assets/js/e2b19375.fad8c941.js index e96dd1dcb..250372d13 100644 --- a/assets/js/e2b19375.76028549.js +++ b/assets/js/e2b19375.fad8c941.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4338],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),l=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return o.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(n),d=r,h=u["".concat(s,".").concat(d)]||u[d]||f[d]||i;return n?o.createElement(h,a(a({ref:t},p),{},{components:n})):o.createElement(h,a({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:r,a[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var o=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"proof-of-work",title:"Proof of Work"},a=void 0,c={unversionedId:"learn/arch-consensus/proof-of-work",id:"learn/arch-consensus/proof-of-work",title:"Proof of Work",description:"Others blockchains are using the concept of Proof of Work to ensure an unpredictable and pseudo random election of block validation (mining).",source:"@site/docs/learn/arch-consensus/proof-of-work.md",sourceDirName:"learn/arch-consensus",slug:"/learn/arch-consensus/proof-of-work",permalink:"/learn/arch-consensus/proof-of-work",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"proof-of-work",title:"Proof of Work"},sidebar:"docs",previous:{title:"ARCH consensus",permalink:"/learn/arch-consensus/"},next:{title:"Cryptography",permalink:"/learn/cryptography/"}},s={},l=[],p={toc:l},u="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Others blockchains are using the concept of ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof of Work")," to ensure an unpredictable and pseudo random election of block validation (mining).\nBut this technique requires a lot of energy consumption and can still be subject to exploit by HashRate control."),(0,r.kt)("p",null,"Archethic Blockchain is using a new kind of ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof of Work")," to ensure the authenticity of the transaction origination devices.\nThis allows the additional security requirements on transaction validation like:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"prohibit any transaction even in case of key theft"),(0,r.kt)("li",{parentName:"ul"},"allow user to consult their balance on any smartphone, but generate a transaction only on a trusted device"),(0,r.kt)("li",{parentName:"ul"},"enable the organizers of an election to ensure biometric identity of a voter")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof Of Work")," consists of finding the right public key associated to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Origin Signature")," of the transaction\nfrom a list of public keys known by the network."),(0,r.kt)("p",null,"This verification is performed during the ",(0,r.kt)("inlineCode",{parentName:"p"},"Validation Stamp")," creation by the ",(0,r.kt)("inlineCode",{parentName:"p"},"Coordinator Node")," and ensure the device is authorized to generate the transaction"),(0,r.kt)("p",null,"Just like any other actor into the system, devices will have their own transaction chain allowing them to update their keys. "),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Each origin device public keys are grouped by family which helps nodes to determine which set of keys, must be played to produce the Proof of Work. (i.e: software, usb, biometric).")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Each origin device public key is encrypted and renewed by the network ensuring confidentiality and authenticity of devices.")))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4338],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),l=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return o.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(n),d=r,h=u["".concat(s,".").concat(d)]||u[d]||f[d]||i;return n?o.createElement(h,a(a({ref:t},p),{},{components:n})):o.createElement(h,a({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:r,a[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var o=n(7462),r=(n(7294),n(3905));n(8209);const i={id:"proof-of-work",title:"Proof of Work"},a=void 0,c={unversionedId:"learn/arch-consensus/proof-of-work",id:"learn/arch-consensus/proof-of-work",title:"Proof of Work",description:"Others blockchains are using the concept of Proof of Work to ensure an unpredictable and pseudo random election of block validation (mining).",source:"@site/docs/learn/arch-consensus/proof-of-work.md",sourceDirName:"learn/arch-consensus",slug:"/learn/arch-consensus/proof-of-work",permalink:"/learn/arch-consensus/proof-of-work",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"proof-of-work",title:"Proof of Work"},sidebar:"docs",previous:{title:"ARCH consensus",permalink:"/learn/arch-consensus/"},next:{title:"Cryptography",permalink:"/learn/cryptography/"}},s={},l=[],p={toc:l},u="wrapper";function f(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Others blockchains are using the concept of ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof of Work")," to ensure an unpredictable and pseudo random election of block validation (mining).\nBut this technique requires a lot of energy consumption and can still be subject to exploit by HashRate control."),(0,r.kt)("p",null,"Archethic Blockchain is using a new kind of ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof of Work")," to ensure the authenticity of the transaction origination devices.\nThis allows the additional security requirements on transaction validation like:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"prohibit any transaction even in case of key theft"),(0,r.kt)("li",{parentName:"ul"},"allow user to consult their balance on any smartphone, but generate a transaction only on a trusted device"),(0,r.kt)("li",{parentName:"ul"},"enable the organizers of an election to ensure biometric identity of a voter")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"Proof Of Work")," consists of finding the right public key associated to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Origin Signature")," of the transaction\nfrom a list of public keys known by the network."),(0,r.kt)("p",null,"This verification is performed during the ",(0,r.kt)("inlineCode",{parentName:"p"},"Validation Stamp")," creation by the ",(0,r.kt)("inlineCode",{parentName:"p"},"Coordinator Node")," and ensure the device is authorized to generate the transaction"),(0,r.kt)("p",null,"Just like any other actor into the system, devices will have their own transaction chain allowing them to update their keys. "),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Each origin device public keys are grouped by family which helps nodes to determine which set of keys, must be played to produce the Proof of Work. (i.e: software, usb, biometric).")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Each origin device public key is encrypted and renewed by the network ensuring confidentiality and authenticity of devices.")))}f.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/e2f82150.3f492b27.js b/assets/js/e2f82150.f14336b9.js similarity index 98% rename from assets/js/e2f82150.3f492b27.js rename to assets/js/e2f82150.f14336b9.js index 612de9184..84915814a 100644 --- a/assets/js/e2f82150.3f492b27.js +++ b/assets/js/e2f82150.f14336b9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5510],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function d(e){for(var t=1;t=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var l=a.createContext({}),o=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):d(d({},t),e)),r},c=function(e){var t=o(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=o(r),m=s,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||n;return r?a.createElement(f,d(d({ref:t},c),{},{components:r})):a.createElement(f,d({ref:t},c))}));function f(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=r.length,d=new Array(n);d[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,d[1]=i;for(var o=2;o{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>o,contentTitle:()=>i,default:()=>y,frontMatter:()=>d,metadata:()=>l,toc:()=>c});var a=r(7462),s=r(7294),n=r(3905);r(8209);const d={id:"genesis-address",title:"genesisAddress",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/queries/genesis-address",id:"build/api/schema/queries/genesis-address",title:"genesisAddress",description:"Query the network to find the genesis address of a transaction",source:"@site/docs/build/api/schema/queries/genesis-address.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/genesis-address",permalink:"/build/api/schema/queries/genesis-address",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"genesis-address",title:"genesisAddress",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"beaconChainSummary",permalink:"/build/api/schema/queries/beacon-chain-summary"},next:{title:"lastTransaction",permalink:"/build/api/schema/queries/last-transaction"}},o={},c=[{value:"Arguments",id:"arguments",level:3},{value:'genesisAddress.addressAddress! ',id:"code-style-fontweight-normal-genesisaddressbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Address ',id:"address-",level:4}],p=()=>(0,n.kt)(s.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,n.kt)(s.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,n.kt)(s.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:p,SpecifiedBy:u,Badge:m},g="wrapper";function y(e){let{components:t,...r}=e;return(0,n.kt)(g,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Query the network to find the genesis address of a transaction"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"genesisAddress(\n address: Address!\n): Address\n")),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-genesisaddressbaddressbcodeaddress--"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"genesisAddress.",(0,n.kt)("b",null,"address"))),(0,n.kt)(p,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,n.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,n.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"type"},"Type"),(0,n.kt)("h4",{id:"address-"},(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,n.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},"The ","[Address]"," scalar type represents a transaction's address.\nThe Address appears in a JSON response as Base16 formatted string. The parsed address will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5510],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function d(e){for(var t=1;t=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var l=a.createContext({}),o=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):d(d({},t),e)),r},c=function(e){var t=o(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,s=e.mdxType,n=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=o(r),m=s,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||n;return r?a.createElement(f,d(d({ref:t},c),{},{components:r})):a.createElement(f,d({ref:t},c))}));function f(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var n=r.length,d=new Array(n);d[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,d[1]=i;for(var o=2;o{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>o,contentTitle:()=>i,default:()=>y,frontMatter:()=>d,metadata:()=>l,toc:()=>c});var a=r(7462),s=r(7294),n=r(3905);r(8209);const d={id:"genesis-address",title:"genesisAddress",hide_table_of_contents:!1},i=void 0,l={unversionedId:"build/api/schema/queries/genesis-address",id:"build/api/schema/queries/genesis-address",title:"genesisAddress",description:"Query the network to find the genesis address of a transaction",source:"@site/docs/build/api/schema/queries/genesis-address.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/genesis-address",permalink:"/build/api/schema/queries/genesis-address",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"genesis-address",title:"genesisAddress",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"beaconChainSummary",permalink:"/build/api/schema/queries/beacon-chain-summary"},next:{title:"lastTransaction",permalink:"/build/api/schema/queries/last-transaction"}},o={},c=[{value:"Arguments",id:"arguments",level:3},{value:'genesisAddress.addressAddress! ',id:"code-style-fontweight-normal-genesisaddressbaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Address ',id:"address-",level:4}],p=()=>(0,n.kt)(s.Fragment,null,(0,n.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,n.kt)(s.Fragment,null,"Specification",(0,n.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,n.kt)(s.Fragment,null,(0,n.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:c,Bullet:p,SpecifiedBy:u,Badge:m},g="wrapper";function y(e){let{components:t,...r}=e;return(0,n.kt)(g,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Query the network to find the genesis address of a transaction"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-graphql"},"genesisAddress(\n address: Address!\n): Address\n")),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("h4",{id:"code-style-fontweight-normal-genesisaddressbaddressbcodeaddress--"},(0,n.kt)("a",{parentName:"h4",href:"#"},(0,n.kt)("code",{style:{fontWeight:"normal"}},"genesisAddress.",(0,n.kt)("b",null,"address"))),(0,n.kt)(p,{mdxType:"Bullet"}),(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,n.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,n.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null),(0,n.kt)("h3",{id:"type"},"Type"),(0,n.kt)("h4",{id:"address-"},(0,n.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,n.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,n.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},"The ","[Address]"," scalar type represents a transaction's address.\nThe Address appears in a JSON response as Base16 formatted string. The parsed address will\nbe converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected")))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/e49ee1a9.70137541.js b/assets/js/e49ee1a9.e41e533c.js similarity index 97% rename from assets/js/e49ee1a9.70137541.js rename to assets/js/e49ee1a9.e41e533c.js index 623eaa90f..3e14ef3f0 100644 --- a/assets/js/e49ee1a9.70137541.js +++ b/assets/js/e49ee1a9.e41e533c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6509],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),i=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=i(a),m=r,b=u["".concat(s,".").concat(m)]||u[m]||p[m]||l;return a?n.createElement(b,c(c({ref:t},d),{},{components:a})):n.createElement(b,c({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,c=new Array(l);c[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:r,c[1]=o;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>o,default:()=>y,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=a(7462),r=a(7294),l=a(3905);a(8209);const c={id:"balance",title:"balance",hide_table_of_contents:!1},o=void 0,s={unversionedId:"build/api/schema/queries/balance",id:"build/api/schema/queries/balance",title:"balance",description:"Query the network to find a balance from an address coming from the latest transaction on the chain",source:"@site/docs/build/api/schema/queries/balance.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/balance",permalink:"/build/api/schema/queries/balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"balance",title:"balance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Version",permalink:"/build/api/schema/objects/version"},next:{title:"beaconChainSummary",permalink:"/build/api/schema/queries/beacon-chain-summary"}},i={},d=[{value:"Arguments",id:"arguments",level:3},{value:'balance.addressAddress! ',id:"code-style-fontweight-normal-balancebaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Balance ',id:"balance-",level:4}],u=()=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,l.kt)(r.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Query the network to find a balance from an address coming from the latest transaction on the chain"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"balance(\n address: Address!\n): Balance\n")),(0,l.kt)("h3",{id:"arguments"},"Arguments"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebaddressbcodeaddress--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"balance.",(0,l.kt)("b",null,"address"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,l.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,l.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"type"},"Type"),(0,l.kt)("h4",{id:"balance-"},(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/balance"},(0,l.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"[Balance]"," represents a ledger balance.\nIt includes:"),(0,l.kt)("ul",{parentName:"blockquote"},(0,l.kt)("li",{parentName:"ul"},"UCO: uco balance"),(0,l.kt)("li",{parentName:"ul"},"token: token balances"))))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6509],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),i=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=i(a),m=r,b=u["".concat(s,".").concat(m)]||u[m]||p[m]||l;return a?n.createElement(b,c(c({ref:t},d),{},{components:a})):n.createElement(b,c({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,c=new Array(l);c[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:r,c[1]=o;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>i,contentTitle:()=>o,default:()=>y,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=a(7462),r=a(7294),l=a(3905);a(8209);const c={id:"balance",title:"balance",hide_table_of_contents:!1},o=void 0,s={unversionedId:"build/api/schema/queries/balance",id:"build/api/schema/queries/balance",title:"balance",description:"Query the network to find a balance from an address coming from the latest transaction on the chain",source:"@site/docs/build/api/schema/queries/balance.mdx",sourceDirName:"build/api/schema/queries",slug:"/build/api/schema/queries/balance",permalink:"/build/api/schema/queries/balance",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"balance",title:"balance",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"Version",permalink:"/build/api/schema/objects/version"},next:{title:"beaconChainSummary",permalink:"/build/api/schema/queries/beacon-chain-summary"}},i={},d=[{value:"Arguments",id:"arguments",level:3},{value:'balance.addressAddress! ',id:"code-style-fontweight-normal-balancebaddressbcodeaddress--",level:4},{value:"Type",id:"type",level:3},{value:'Balance ',id:"balance-",level:4}],u=()=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,l.kt)(r.Fragment,null,"Specification",(0,l.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,l.kt)(r.Fragment,null,(0,l.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},f="wrapper";function y(e){let{components:t,...a}=e;return(0,l.kt)(f,(0,n.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Query the network to find a balance from an address coming from the latest transaction on the chain"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-graphql"},"balance(\n address: Address!\n): Balance\n")),(0,l.kt)("h3",{id:"arguments"},"Arguments"),(0,l.kt)("h4",{id:"code-style-fontweight-normal-balancebaddressbcodeaddress--"},(0,l.kt)("a",{parentName:"h4",href:"#"},(0,l.kt)("code",{style:{fontWeight:"normal"}},"balance.",(0,l.kt)("b",null,"address"))),(0,l.kt)(u,{mdxType:"Bullet"}),(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,l.kt)("inlineCode",{parentName:"a"},"Address!"))," ",(0,l.kt)(m,{class:"secondary",text:"non-null",mdxType:"Badge"})," ",(0,l.kt)(m,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,l.kt)("blockquote",null),(0,l.kt)("h3",{id:"type"},"Type"),(0,l.kt)("h4",{id:"balance-"},(0,l.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/balance"},(0,l.kt)("inlineCode",{parentName:"a"},"Balance"))," ",(0,l.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"[Balance]"," represents a ledger balance.\nIt includes:"),(0,l.kt)("ul",{parentName:"blockquote"},(0,l.kt)("li",{parentName:"ul"},"UCO: uco balance"),(0,l.kt)("li",{parentName:"ul"},"token: token balances"))))}y.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/e98eede6.56a87fb8.js b/assets/js/e98eede6.9e863936.js similarity index 99% rename from assets/js/e98eede6.56a87fb8.js rename to assets/js/e98eede6.9e863936.js index e5193d523..1b4ffab39 100644 --- a/assets/js/e98eede6.56a87fb8.js +++ b/assets/js/e98eede6.9e863936.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9185],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(n),h=i,m=d["".concat(c,".").concat(h)]||d[h]||u[h]||r;return n?a.createElement(m,s(s({ref:t},p),{},{components:n})):a.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,s=new Array(r);s[0]=h;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"dapps-communication",title:"Communication with DApps",sidebar_label:"Communication with DApps",sidebar_position:1},s=void 0,o={unversionedId:"participate/wallet/dapps-communication",id:"participate/wallet/dapps-communication",title:"Communication with DApps",description:"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.",source:"@site/docs/participate/wallet/dapps-communication.md",sourceDirName:"participate/wallet",slug:"/participate/wallet/dapps-communication",permalink:"/participate/wallet/dapps-communication",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",sidebarPosition:1,frontMatter:{id:"dapps-communication",title:"Communication with DApps",sidebar_label:"Communication with DApps",sidebar_position:1},sidebar:"docs",previous:{title:"Archethic Wallet",permalink:"/participate/wallet/"},next:{title:"Build",permalink:"/category/build"}},c={},l=[{value:"get_endpoint",id:"get_endpoint",level:2},{value:"Request",id:"request",level:3},{value:"Success Response",id:"success-response",level:3},{value:"get_accounts",id:"get_accounts",level:2},{value:"Request",id:"request-1",level:3},{value:"Success Response",id:"success-response-1",level:3},{value:"send_transaction",id:"send_transaction",level:2},{value:"Request",id:"request-2",level:3},{value:"Success Response",id:"success-response-2",level:3},{value:"add_service",id:"add_service",level:2},{value:"Request",id:"request-3",level:3},{value:"Success Response",id:"success-response-3",level:3},{value:"get_services_from_keychain",id:"get_services_from_keychain",level:2},{value:"Request",id:"request-4",level:3},{value:"Success Response",id:"success-response-4",level:3},{value:"keychain_derive_keypair",id:"keychain_derive_keypair",level:2},{value:"Request",id:"request-5",level:3},{value:"Success Response",id:"success-response-5",level:3},{value:"keychain_derive_address",id:"keychain_derive_address",level:2},{value:"Request",id:"request-6",level:3},{value:"Success Response",id:"success-response-6",level:3},{value:"get_current_account",id:"get_current_account",level:2},{value:"Request",id:"request-7",level:3},{value:"Success Response",id:"success-response-7",level:3},{value:"sign_transactions",id:"sign_transactions",level:2},{value:"Request",id:"request-8",level:3},{value:"Success Response",id:"success-response-8",level:3}],p={toc:l},d="wrapper";function u(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps."),(0,i.kt)("h1",{id:"point-of-view-on-usage"},"Point of view on usage"),(0,i.kt)("p",null,"When a dApp wants to perform a transaction that requires the use of private keys, it must call on the user\u2019s wallet to protect this information and avoid unauthorized exposure. There are several ways to do this:"),(0,i.kt)("p",null,"The dApp can solicit the wallet in a \u201ccovert\u201d manner without requiring the user\u2019s intervention. For example, it can retrieve information about the current account or services available in the decentralized wallet."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"1",src:n(3148).Z,width:"815",height:"158"})),(0,i.kt)("p",null,"The dApp can also listen to the wallet and adapt itself according to the actions performed in it. For example, a change in the current account in the wallet may result in a change in the current account in the dApp."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"2",src:n(3886).Z,width:"1004",height:"295"})),(0,i.kt)("p",null,"Finally, the dApp can solicit the wallet and ask the user to confirm an action. For example, this could be the signing of a transaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"3",src:n(1079).Z,width:"1262",height:"420"})),(0,i.kt)("h1",{id:"technical-point-of-view"},"Technical point of view"),(0,i.kt)("p",null,"In order not to limit the platforms, Archethic has implemented two protocols to allow an easy integration of its wallet with dApps:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For Desktop and Web Client platforms, Archethic uses the Local RPC server protocol. A WebSocket server is provided by Archethic Wallet, using the JSON-RPC 2.0 protocol. DApp developers can use the Dart or JS coded communication libraries provided by Archethic to easily integrate this functionality into their dApp."),(0,i.kt)("li",{parentName:"ul"},"For Mobile platforms, Archethic uses DeepLinks via an HTTPS URL to enable communication between the dApp and the Archethic wallet.")),(0,i.kt)("p",null,"For the Dart and Flutter part, these protocols have been implemented within the \u201cArchethic Wallet Client\u201d (AWC) communication library, which therefore allows Dapps to communicate with the Archethic wallet through a unified interface."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"4",src:n(8268).Z,width:"1321",height:"685"})),(0,i.kt)("p",null,"AWC supports several API methods, including signing and sending transactions to the Archethic blockchain, retrieving the wallet\u2019s endpoint URL, retrieving accounts available on the wallet, adding services to the keychain, and more."),(0,i.kt)("p",null,"Using AWC allows Dapps developers to focus on developing their application rather than managing communication with the wallet and blockchain. The solution is also cross-platform (macOS, iOS, Android, Web, Windows, Linux), which facilitates the interaction between users and the blockchain and avoids forcing developers to develop their Dapps on a specific platform."),(0,i.kt)("p",null,"It is worth noting that for the JS part, developers can find the interfaces directly in the \u201clibjs\u201d library of Archethic. This greatly facilitates the integration of the wallet with dApps written in JavaScript."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"5",src:n(4389).Z,width:"1321",height:"684"})),(0,i.kt)("h1",{id:"available-commands"},"Available commands"),(0,i.kt)("p",null,"The wallet context related commands that do not require user confirmation in the wallet are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Endpoint retrieval,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of user accounts,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of the current account,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of the services contained in the decentralized wallet,"),(0,i.kt)("li",{parentName:"ul"},"Derivation of a key pair for a given service and index and recovery of the public key,"),(0,i.kt)("li",{parentName:"ul"},"Deriving an address for a given service and index.")),(0,i.kt)("p",null,"The information that can be listened to is:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The change of balance or last address of the current account,"),(0,i.kt)("li",{parentName:"ul"},"The change of the current account.")),(0,i.kt)("p",null,"The commands related to the wallet context requiring the user\u2019s confirmation in the wallet are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Signing and sending a transaction to the blockchain,"),(0,i.kt)("li",{parentName:"ul"},"Signature of a list of transactions,"),(0,i.kt)("li",{parentName:"ul"},"Adding a service in the decentralized wallet.")),(0,i.kt)("h1",{id:"rpc-methods"},"RPC Methods"),(0,i.kt)("p",null,"There are two kinds of methods :"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"one time call"),(0,i.kt)("li",{parentName:"ul"},"subscriptions.")),(0,i.kt)("p",null,"Subscriptions won't be available on Deeplink channel because of technical limitations."),(0,i.kt)("h2",{id:"get_endpoint"},"get_endpoint"),(0,i.kt)("p",null,"Gets the endpoint URL used on AEWallet."),(0,i.kt)("h3",{id:"request"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// no payload in request\n")),(0,i.kt)("h3",{id:"success-response"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "endpointUrl": String // Endpoint URL\n}\n')),(0,i.kt)("h2",{id:"get_accounts"},"get_accounts"),(0,i.kt)("p",null,"Gets the accounts avalaible on AEWallet."),(0,i.kt)("h3",{id:"request-1"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-1"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "accounts": [\n {\n "name": String, // Account name\n "genesisAddress": String, // Genesis address\n }\n ]\n}\n')),(0,i.kt)("h2",{id:"send_transaction"},"send_transaction"),(0,i.kt)("p",null,"Signs and sends a transaction."),(0,i.kt)("h3",{id:"request-2"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "type": String, // Type of transaction\n "version": Number, // Version of the transaction (used for backward compatiblity)\n "data": Object, // Transaction data zone (identity, keychain, smart contract, etc.)\n}\n')),(0,i.kt)("h3",{id:"success-response-2"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "transactionAddress": String, // Sent transaction address.\n "nbConfirmations": Number, // Number of received confirmations.\n "maxConfirmations": Number, // Max number of confirmations.\n}\n')),(0,i.kt)("h2",{id:"add_service"},"add_service"),(0,i.kt)("p",null,"Add a service in the keychain"),(0,i.kt)("h3",{id:"request-3"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "name": String, // Name of the service\n}\n')),(0,i.kt)("h3",{id:"success-response-3"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "transactionAddress": String, // Transaction address.\n "nbConfirmations": Number, // Number of received confirmations.\n "maxConfirmations": Number, // Max number of confirmations.\n}\n')),(0,i.kt)("h2",{id:"get_services_from_keychain"},"get_services_from_keychain"),(0,i.kt)("p",null,"Gets keychain's services from the keychain connected to AEWallet."),(0,i.kt)("h3",{id:"request-4"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-4"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "services": [\n {\n "derivationPath": String, // Derivation path\n "curve": String, // Curve\n "hashAlgo": String // Hash Algo\n }\n ]\n}\n')),(0,i.kt)("h2",{id:"keychain_derive_keypair"},"keychain_derive_keypair"),(0,i.kt)("p",null,"Derive a keypair for the given service at the index given and get the public key"),(0,i.kt)("h3",{id:"request-5"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to identify the derivation path to use\n "index": Number, // Chain index to derive (optional - default to 0)\n "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)\n}\n')),(0,i.kt)("h3",{id:"success-response-5"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "publicKey": String // Public key of the service at the index given\n}\n')),(0,i.kt)("h2",{id:"keychain_derive_address"},"keychain_derive_address"),(0,i.kt)("p",null,"Derive an address for the given service at the index given"),(0,i.kt)("h3",{id:"request-6"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to identify the derivation path to use\n "index": Number, // Chain index to derive (optional - default to 0)\n "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)\n}\n')),(0,i.kt)("h3",{id:"success-response-6"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "address": String // Address derived\n}\n')),(0,i.kt)("h2",{id:"get_current_account"},"get_current_account"),(0,i.kt)("p",null,"Gets the current account selected on AEWallet."),(0,i.kt)("h3",{id:"request-7"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-7"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "name": String, // Account name\n "genesisAddress": String, // Genesis address\n}\n')),(0,i.kt)("h2",{id:"sign_transactions"},"sign_transactions"),(0,i.kt)("p",null,"Signs many transactions."),(0,i.kt)("h3",{id:"request-8"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to use to sign the tx\n "pathSuffix": String, // Additional information to add to a service derivation path (optional)\n "transactions": [\n {\n "type": String, // Type of transaction\n "version": Number, // Version of the transaction (used for backward compatiblity)\n "data": Object // Transaction data zone (identity, keychain, smart contract, etc.)\n }\n ]\n}\n')),(0,i.kt)("h3",{id:"success-response-8"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "signedTxs": [\n {\n "address": String, // Address: hash of the new generated public key for the given transaction\n "previousPublicKey": String, // Previous generated public key matching the previous signature\n "previousSignature": String, // Signature from the previous public key\n "originSignature": String // Signature from the device which originated the transaction (used in the Proof of work)\n }\n ]\n}\n')),(0,i.kt)("h1",{id:"in-conclusion"},"In conclusion"),(0,i.kt)("p",null,"The communication protocol developed by Archethic allows an easy and secure interaction between dApps and the blockchain by delegating the communication to the user\u2019s wallet. The integration methods proposed are simple and efficient, especially thanks to the \u201cArchethic Wallet Client\u201d (AWC) communication library which facilitates the use of the API. Developers can focus on developing their application without having to manage communication with the wallet and the blockchain. This cross-platform solution is therefore a wise choice for developers who want to write dApps that are compatible with different platforms. Finally, the availability of interfaces in the \u201clibjs\u201d library also facilitates integration for developers of applications written in JavaScript."),(0,i.kt)("p",null,"Find more information at the following links."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"AEIP 4 / Specifications: ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-4.md"},"https://github.com/archethic-foundation/aeip/blob/main/AEIP-4.md")),(0,i.kt)("li",{parentName:"ul"},"AWC Dart lib: ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-wallet-client-dart"},"https://github.com/archethic-foundation/archethic-wallet-client-dart")),(0,i.kt)("li",{parentName:"ul"},"AWC JS lib (into archethic JS lib): ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/libjs"},"https://github.com/archethic-foundation/libjs"))))}u.isMDXComponent=!0},3148:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/webp;base64,UklGRhwXAABXRUJQVlA4WAoAAAAIAAAALgMAnQAAVlA4IDwWAABQdwCdASovA54APm0ylUkkIqGhIZC7SIANiWlu57MuFrbcRNq5pZHm/+zeE/+F/wv5DedP4j8v/ZfyC/JT8Wrh/zf9L/wPQv+Y/Yn79/Yv3M+Nn3XeCvwB/ivtm+QL8e/k39j/LT+68VvrvmEeo/zj/Nf3r95/818q3xv+79EPq9/nfcA/kn9H/yP5mfv/76fhF/af9F7AH8v/qn+g/xH5JfHj/2f5j8p/db+hf4z/nf5/4Cv5N/U/9r/f/8r+0nzmewb93PZe/cMdOs2kPrMLhxROXvHDkDVVmgzr7WcOKJy1cTHpq54JBmEF2pDdBru9hTI473fMiYA38fmMZIP5z0sbjh2dx7uEHgiivIrqUffhAZtbVfwgM2tqv4QHIdE2Es48Q473d8I7/UGW/j8ysoyRx3u+ZEvvrhkIQe/j71zNxVaC9NxoJlO09uO60sx9eI7yGLReT3WoyRx3u7i+xMjjvd8yJgDfx+ZWT8GU5l/upXT9c2C+5Ley5xBTkpXzI2nsyhzkNcvkKZ8jequCexdsYiYA38eqjp4Q6PdGkY+0+XPq1HNGtFdf1ii5pveYbxEJZF5Xk3pEw910fMKqxyF2yEH1PDgPCG1mrj1k2RkHrE3zgnnFugzynJ84Fp1FTipAJe9WiZYRQBDmiNiciLjRQl8fTJOVBdr9KcbK4Z6ACn826g8bGipGiHtQj8oBzQK78jAZtaTk5uBEILX0BTiejhtprytxwPlFMt34bHZ4vby0x2ZvWi8B7Qy9BS6csfZtS6NRx4nw3/x+ZWUI3uRXL5kS+4wG1RuYdAOTi2FNnIooOimEX4hzKr8xbIbDtodrliwrTN2wGhG6bObBYne/iNVVA1WyMNbB54LxErWZgjv/8ewcWHenap9kgHpyUYHp7dUlxIY6HksPDJoJyC5+YhazJi/G58ikB+eOBsuLyWdlJ96wPDoJ3qQCH2O8RPpFNf7Creu4Oy9gF8X+ZwmU3CpG4Ua0YecFjnWFIw69SMuQiS004AnAOgqTBH4G/4l2GkF0yt9+24caJYj02BaBbbwq7erTTeaJPqIV1eglHnkLniKZExk/8N231HN7sL2FMjjmiD0/WiasDfx+ZWWcUcd7vmJkaRKdQKZHHd8iZVkwbVGiVB3Z3bOBRBIELJo7SFksKawSPzKyjJHHe75kTAG/hylZqWoyRx3u7pLVdp7Qtsh4i3FLr8R1MeKX8PEy1wFEwBv4/MrKMkcd7vmQysVykuKGdN5Q4U2gzYyC21F0XvXkXIu800U1ukHgWAAA/vhdg/m8/mLYO03jNpSueHiiOQIggnsvHGXPLsogeY9WhcsaGqrgXOAKeyBdnhynUN/ijUQlXXgwASOX049LJqTtsJHNtkvBVzMark35Su3J/0ZrGHtQVrFenXxbOp4DA73mEG9dhUBO5xwCcKFT2GV6le4LYlgxD0zuJ98/ZKCoO1n8FO9OVUXbpdYRtvJH4AGtrTf743ZyfgLj6+kg58PV8Zk7WoKUasC2RTxB+swR16PCDZOtKlKRxSXC5y7jXsFwjXtMWoU5guiGyCvAekbNpM0+WvcJLzCGu1Ak7FCBGS/wn0JmSsg6TWPLzDHCJEk7hfnQZ3hN8x1vnQTBQ3uT0+NnolBhx9A4/9M7JCnj1yr8hUtPMCdcSaGPZnctugHhDFO4J5EYCXWQ3YGfr/i5MYyoiunPfIDhAP1Om30NrB2p9vWBerJI4Z9gskve9WggNCfg9+eJZ1hhivfrgKaOolQe/HmOBHUkGFYGLfxaIOx+mHegohR2dRVcFnGYvtSq0Hn34PfcmUkwILSUNY02bCW6Ujr/QbHpep+yoseo7evzPKUbDMaqfpYXW5mn03QX/KdJ3h7dunHSNuqgJn+xXCmI6D2+97zd5AoW8s2XyAHTslfOy3lP+33PJisTNBFsyClhAoDaYTbI3T2CtCMYvQ2+qqTunIKfkJUsrZBq6ozoal/OuWF1O5ZapeLBxSUrlV9uwF0efcvTd9LTGSR35Lmnv/1oLeEPZorP4+FqI1Xz4SD5uPmkEux+VxzmPIWce7X8oFTygCmf9AlElEUzF1GxPK9GdfJV+eAPXNQ/v0Nlg8iP5jKhT/T/pSntRTXnwYUYqeCabj6SEQQLad6xa1dvIE11m1fspGrM2cd3QpYy6M9jRrnveGAa7U/7LNs1f6AQqPyHLRKh6m/c1/uxtPp/Ltv7ZzW4bR5kTz/AtUZetGYj1Muq/JM9KKJd+VY/v7Hz3On3kEXx7f8521HSdYZOc7/aSP+42TZ+bX4gZXYmxcb+W7yMPugDYlzIZoFgHsZEw2R1tZ0WkzSaN8eP7PaR+EyStWYIBsDeSdNCbJANGsr4Sls3FQEg52pSJfb5Kf/RsBAULqZRQQAFjgblpaEgpS3KUVGoOmysoih9af3+AOplCNpS5Dw5zxtgGd3aCIlNJ4dWOAVuVNGS7JouDcsMP33BkKARdcXejTw8C+etJMmbFEL2q1CpKRdt8jHrqSDBMLDtfzMj6lIw3IIKhEqXVrrLol9fGhudb3co8zj3PcRTSm4YlpeMcg7Ttyb/0NLWyMC3qkV3LRi36Zj6LVW1hObnZai/3KMcbfmFhp+J9SIB657dKOivZjJoYWEDclHLvSAT5ZrKcJ1PzwjifELiojZoJLJ+iVej+uaDBsWD3hqkeLWL8p46tLQfwU17ZXlPVpvmzC1tS8zV+vYo5pwDps/oqA7KszY9OMwmkWjsSh+kY+4zU4yCFIwLRq8OI6O5WrxxL59hWUa09nglJtu9aCGda13iSBCSPLT+tjP/0t227UOQ+y9hz3v0KyzQGDwJ6q2RIIsnmd+rvx6nVXgjg4ovfCH/MGCnItWJpDRr4hIGtyP0aWBNrTPauvJsNvpYWmFTnABFrhNHt/ep0VguNdp/+wOKfVqNQEo97z4P2BJrygrn8cKzepNbGbbFaPRtCS65zjMIWiFjZBjsG4w0HspZ/j/y68t8b3QbUO3OqP6m/Xju93r54l/58LWp+D6ssn3Gx5mkcH7YXBRvPwm643dT+0E5fazTRFS3K4CW052HBWl5Y3nEZqdEOv3z4wPRvERoYhZu0coWlsfzS3fxvBj+hKQGG9OxtawE9tV4ZUKfK/DVmFigoPojOXv37/lst/ZokufD8ZcgG/yqhtPNmyEFH6OTnCTjC3ryCry1VWiz9AYKuu72qaEuKbZHcMvMjCvLDqlaLxP71uEgq/rbOCk5MV4PWH9/PAyxit+H++H9V1dvwc3U9N1flz7TQ4v/cyOa0GF0KoQvneQzGKhzysgn/jzUq/mUZhMoPkFy3qaNOXUNdyVvmkd2i0Ayb0KPHT38edNhw63FzePlUndQ1cKgAsyrO3leSdyF8Mskc9U2sx6P//5Qtd7cKS3F8mCuvspq2ozBgtSsWgvAXND4/Ed/oZHM92SS2f3gL95HuTx8mnOXx125vETwbFWJ7YhvYOdoQRiCiiBUyeCrRYX1Mkog/UXyhM6IPPv13C9nYwdVwmBH4KkYmZBKfe6OEdvUmkOGYJXPobXTbSf27n4ijMmCK42qUBK262gyaEtcdFeafEkIwqLMqh+2zu7tuCZSSKtdDe6f3O5dDDcuub2XhvZmPfDIlXBMMBBZ1AfHHsXL9/kdHPHCrRpE/ppb74oNOzDUqz05Cum9ZHGRD/ZIdM8RUus8jJ5x2nil08pjdF5yHB9IRGSf3eDTtOtEZgOpHbHGs+mtjiGjVK2K0+lZsb9EdD/0DY/fdnBk9EbyL4ynCoAIXkDQGitB91DxsPfsMIHBPM3M93+hR0sW3vYkyQhAskSkA+f7J26WpA1um7pOmk3S+l1E/zNDdaomjvFb5gIEugVpWvd1hVjch/O1yAZb1Lbu6j4CLvAk8FoNY4zgdNReX7BUZz5x7rv1N2VT4h6udRjtlR0UIWiyuefdDG0tKERk1Oc6UDaXqy2RXvrM+1a+QW3X3lGTNhJPmBbjppcOcYFrYg76TUqcmswRnkJO/3dEWmTHmZ+mj8QkD6Ynk12bFGYDmm4zo4RvC3PdnvOB+2AulTWPeKTpin1zBhgcQLmtcnHjdXtNjvc1nsi8MARwEd0SKhffEP9aVhaS063uZ29cwJuWJwAwic+mbp+8goNmQBTm9qscxTUzIxp3dhNoYe2CBnQ4rxo357oBdqdhyky8Bl/0HjJgi7AoEy7/EodlOsBDUZaa3k2Bk4eopn078qGKMx/fgv4a/PgHSaJmqtM3iwt3AaN/B2XMnltopoa8zeMeIu63k4jBAPh6+/hQ2yuaXc4f75dJkB7Gkts9Y1s5LNzf7dc18xD6aefse9YlRGt8Wt4ezhsgCRTpMXr6phncT3RAepd6wEHxeYo7KmKvyfv9VX2g53KqoFfs9gPZEI2xkHgIMXYr4Y2AByV8V/XQbKsMZQk7ukYTawpwGxeQato8hN39bQ2h3w/sIc1NSHKqyKZ5LGHRKcKCXY+kaL90SOEPyRM6WI4A9ni65k/8ZFf87WPyKgrNiIOc/wMFfYsnMbupIgcyizLqm1i/60xKkP7AZ6MlIzQ8jDrRZc0zh5GsgawqycGjkOZmjCB60Ycqy/CsK9R6LxoRZX0e46V/P2c1lyYQeKLMnrz7mFzkgk48z4Awn5odqrHGB/aEYuGhm3exfP1rPVbtdrnntnqHFxIMCZP0sMawpdWUi5o8gByndt1v2nqGaeKAFlrTAcZABjcLlN9pKL+WL/BcnTQAQA/CkmlSwH5nmp1IK1ZYVK/H8uhW/DjMuMFqQ6VwZm2uBy6eBR/OFq6pjdAuiwWdDePSYIDNdbb0dsJRWsVUsRJf7e2tDnhhGmLYfqpRYQT1LSao3YWwdYhxIetaGOnpZeX/95F50s0Ki3yCmwBdlXwAMx1rF2T37vZ0k7C8rz5SOefqPG9qjyEfA3Ss3X40pueeKnv5n0vM8Yz/aLnFX9HDLRL0xmxS8Hh3TmUyDLedlL/BU4b+y07bkQuc6MZotRauyrh0mojzSeGQjSHHvi7TRCeAKLhIoiw6xnEusX7B7yVVjWcxnDtNPG/yo7ERnHEIKE9NxrkPylIwIy3Ftni9ji/xRPTt1ozBvPg5CYW/M10nWj8y2K8PE9Su0tX4pA6t2TI+9p3bNjeQcofie39WIt3rU62AE5tHhi1NStrlqyYumd/eIcFwCuEqqHCj7tC4dPVRIUSYg5lthCskwPJgmsoVGGXSvev4pMNE/NeJ5M4Wq7m85JijTa3EeSMzNILg/v15d3fDPtYYAZmHEWfdJ8Rq561HfS1e28HnFSNpV5wsq8FqqnsxIlHlG1mNj+j/mKeQsaMBSGcivn3SRO6UeJarQQ0Letgfg6wJioaZVYfajwU6uL5iasBJanexrlNwyHZQx497ZcSJN7DTbvDkf9ovvRWqyyvwlZvfj0B2hR+IM0kA/OvJF/IcL0CMone/0eIf6a29hhln/3gptOSKlhiVQWUJ+q99vaTrGQvv07XWvJcY7je27Cddv1//3+db8Tgc337wuLRPsw25Ql5uQmor4tZ3i8dRdLNpmSSN2VUhymBz/ALLAPKJuz5mT1DAlWxPTi2WPJjKEOpbUHVZ6+cb0pXTd8HBaNFc7YPiD1QxmMX7qQqbXwL099DxcNxXD9GwViIshy1vzKOUuonZgCJ2sAWZiaRZUAyOwb3WjsLH/ETVN0MofjDJym5qBdUzuLgJjRM846zFcrPfq3/O/8z3rZbdp+T+XOzirMHnMr1PHkNUmQhfpDBiwH89cdrd+sCbhzvpOokH3QB+5iNoAXSqNFKb9TPcGTn85eZngzToZB1gxk5xJ3/ip6yby/hg/1CBwm8pzclhqHdegjAOzJNBMHabspBNr9kUh9alRTTjihh0xUzihpMh1cd8FJIqsDbWrzuRIg7zL02NyAQRFrwmj4nIY8bd3NC6iNNV6lfGaf7y1ic4caVTjQu1E6O2TDVUL7/DQq1pyilULk5o2tr2BQY5NFvf55viOinfh15FHEOkyQ2Ydu3ofpmRfzMBf7nKl5T+Y2No/uHNz7YokGTuf8NXi5NomVUogR4DItY4luy13jNtksNGDaSFXGdG+eS6Qb62xtv7iq0rjo+FEvT+2U0ing/u7796OGbzMHpGrXJyTm3leyUucpA00nmlJquTx4/RsmC5Bb2gwWfr+f4hPDq/JqceNUcpu0/3V6GGZC1vtpDFvMjNoNuEBASzrZYDUhMOd4OXEqMYRZo7FTpxOdAEU442spUvcCtifiijDGq/lKXdWjf1my6VnMlXywVMTKsvQeh9Ymb7Vsk8od3Wi/1spmRIxUyFeqq53zDinuKzP7rgQ/GF7gdwxAyXVWMoH/masCujUqH6cFYL9Rg4IeMgwBwmIxUpjboAdQcnPmSmoEGjcS488U5PyJrNgraIPmqFblPmtVBbp0VeLPLy6YOLTMg2bVXW7Guzs8eoJvTuZDUAR7up1j6O90/YdCs01Jqd1vtKoebkz4PN8n7TrF4JZB3R6x+ZWSQz6n8NECCXiyf+fHNbLwmn2uc4Omy5Qfo5DEfUqvjL4EQiGhHvkfsfGv20xRQ3WaTAchJK50hf4FXUviVyYg+79dQgbx22TVnv7kLktSULFfXYzavUtizpGQaNM2h7PX70WnFhGOFt5HQMVI0dERWcbvU9FgmZv08uKAAjTT63ySTZ4NeJBYQC+jXvkyE+F7Y+E3hSs085PGYA+/LQXqAtPUgNh10VBRXHIb1YsCNyzxEWJ87NH1juWH/6Bh0e91AEjfyP1aSnugjMpEDFvAZ+oUVTK//1VCth0i8UZBtCoEUzMqLBYAtHF3vr2PIf8/+Cest6Zp3JFIJMiZ+UNMt3AJrcUWqeA9mV14mvTK7vAjpQs7Nu2yrgCvvGDXCtYvAk2tNzRDdCmrlJL4N3RUAaYsw2MYrDXLpKdOjssWopI7yc7Uoi+TGstJmLkAgTh11VNhyR+hkF8mP2hJPEblEWcXyiQVPU6z34oz7inOQhSzcPaAhlex3gJZWrlorlRfXrUQK6aI5k+lcAAUEdtRxefYCDhvC/gUYFp04k1LToAQoZuE/VJSVz6gLIxLq/VN5PfMbA+KyMLq4get6B9o//zGkn/AU4F10I9nkiGo4fmmM61ZT0WL3S6GA2ZLKK688wdfKvc/iuBau4WHQq2WzaBApOx5eCYwuRUwwW1O+N5rIKDymflv8QOPojX6QPR8Iepof7hTcirYmenQ5UC+4Y0z/XBCf6goOkxHNRTN7OeViTtRN2fgrQUTx2fHn8Oq+oe37O66zhDQYVW6oWJwxpvFEOA+vGWxnB3IqZRIYuSL4+n8D3DS7A9c+qii0HkDtZ18G0LmTPzS/yD4AZJNhY7W69WTdC7g8sf8JG05ZCQAIdDfctu4E/9TsXvA0cvi20qT1KyjtuuiGAHO2697jni/PkY/c6XMTYaNdIM3V7JOLbCY61Gvx9uKteHFqJZuvBqv+lo2RyUYLRujwnYABoU62w9+uXHJSejenONHe1nHK7v1/ycY4xIQKrcUg6xzUzMV4DgtaSoazm5sVxEC4HdZmdZXoPLraKsGatvWPd580t/jS2flQwJgAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAALwMAAAOgBAABAAAAngAAAAAAAAA="},3886:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2-5d6085ceb76c0bd0ffdb9a438a83d08d.webp"},1079:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/3-3258cf4b259426fbb84541316eca5d55.webp"},8268:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/4-2fb8682543e15e738aacb6684b57b221.webp"},4389:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/5-997d8657ade91f1c2a419d5187b3de61.webp"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9185],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=a.createContext({}),l=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(n),h=i,m=d["".concat(c,".").concat(h)]||d[h]||u[h]||r;return n?a.createElement(m,s(s({ref:t},p),{},{components:n})):a.createElement(m,s({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,s=new Array(r);s[0]=h;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"dapps-communication",title:"Communication with DApps",sidebar_label:"Communication with DApps",sidebar_position:1},s=void 0,o={unversionedId:"participate/wallet/dapps-communication",id:"participate/wallet/dapps-communication",title:"Communication with DApps",description:"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.",source:"@site/docs/participate/wallet/dapps-communication.md",sourceDirName:"participate/wallet",slug:"/participate/wallet/dapps-communication",permalink:"/participate/wallet/dapps-communication",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",sidebarPosition:1,frontMatter:{id:"dapps-communication",title:"Communication with DApps",sidebar_label:"Communication with DApps",sidebar_position:1},sidebar:"docs",previous:{title:"Archethic Wallet",permalink:"/participate/wallet/"},next:{title:"Build",permalink:"/category/build"}},c={},l=[{value:"get_endpoint",id:"get_endpoint",level:2},{value:"Request",id:"request",level:3},{value:"Success Response",id:"success-response",level:3},{value:"get_accounts",id:"get_accounts",level:2},{value:"Request",id:"request-1",level:3},{value:"Success Response",id:"success-response-1",level:3},{value:"send_transaction",id:"send_transaction",level:2},{value:"Request",id:"request-2",level:3},{value:"Success Response",id:"success-response-2",level:3},{value:"add_service",id:"add_service",level:2},{value:"Request",id:"request-3",level:3},{value:"Success Response",id:"success-response-3",level:3},{value:"get_services_from_keychain",id:"get_services_from_keychain",level:2},{value:"Request",id:"request-4",level:3},{value:"Success Response",id:"success-response-4",level:3},{value:"keychain_derive_keypair",id:"keychain_derive_keypair",level:2},{value:"Request",id:"request-5",level:3},{value:"Success Response",id:"success-response-5",level:3},{value:"keychain_derive_address",id:"keychain_derive_address",level:2},{value:"Request",id:"request-6",level:3},{value:"Success Response",id:"success-response-6",level:3},{value:"get_current_account",id:"get_current_account",level:2},{value:"Request",id:"request-7",level:3},{value:"Success Response",id:"success-response-7",level:3},{value:"sign_transactions",id:"sign_transactions",level:2},{value:"Request",id:"request-8",level:3},{value:"Success Response",id:"success-response-8",level:3}],p={toc:l},d="wrapper";function u(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps."),(0,i.kt)("h1",{id:"point-of-view-on-usage"},"Point of view on usage"),(0,i.kt)("p",null,"When a dApp wants to perform a transaction that requires the use of private keys, it must call on the user\u2019s wallet to protect this information and avoid unauthorized exposure. There are several ways to do this:"),(0,i.kt)("p",null,"The dApp can solicit the wallet in a \u201ccovert\u201d manner without requiring the user\u2019s intervention. For example, it can retrieve information about the current account or services available in the decentralized wallet."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"1",src:n(3148).Z,width:"815",height:"158"})),(0,i.kt)("p",null,"The dApp can also listen to the wallet and adapt itself according to the actions performed in it. For example, a change in the current account in the wallet may result in a change in the current account in the dApp."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"2",src:n(3886).Z,width:"1004",height:"295"})),(0,i.kt)("p",null,"Finally, the dApp can solicit the wallet and ask the user to confirm an action. For example, this could be the signing of a transaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"3",src:n(1079).Z,width:"1262",height:"420"})),(0,i.kt)("h1",{id:"technical-point-of-view"},"Technical point of view"),(0,i.kt)("p",null,"In order not to limit the platforms, Archethic has implemented two protocols to allow an easy integration of its wallet with dApps:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For Desktop and Web Client platforms, Archethic uses the Local RPC server protocol. A WebSocket server is provided by Archethic Wallet, using the JSON-RPC 2.0 protocol. DApp developers can use the Dart or JS coded communication libraries provided by Archethic to easily integrate this functionality into their dApp."),(0,i.kt)("li",{parentName:"ul"},"For Mobile platforms, Archethic uses DeepLinks via an HTTPS URL to enable communication between the dApp and the Archethic wallet.")),(0,i.kt)("p",null,"For the Dart and Flutter part, these protocols have been implemented within the \u201cArchethic Wallet Client\u201d (AWC) communication library, which therefore allows Dapps to communicate with the Archethic wallet through a unified interface."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"4",src:n(8268).Z,width:"1321",height:"685"})),(0,i.kt)("p",null,"AWC supports several API methods, including signing and sending transactions to the Archethic blockchain, retrieving the wallet\u2019s endpoint URL, retrieving accounts available on the wallet, adding services to the keychain, and more."),(0,i.kt)("p",null,"Using AWC allows Dapps developers to focus on developing their application rather than managing communication with the wallet and blockchain. The solution is also cross-platform (macOS, iOS, Android, Web, Windows, Linux), which facilitates the interaction between users and the blockchain and avoids forcing developers to develop their Dapps on a specific platform."),(0,i.kt)("p",null,"It is worth noting that for the JS part, developers can find the interfaces directly in the \u201clibjs\u201d library of Archethic. This greatly facilitates the integration of the wallet with dApps written in JavaScript."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"5",src:n(4389).Z,width:"1321",height:"684"})),(0,i.kt)("h1",{id:"available-commands"},"Available commands"),(0,i.kt)("p",null,"The wallet context related commands that do not require user confirmation in the wallet are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Endpoint retrieval,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of user accounts,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of the current account,"),(0,i.kt)("li",{parentName:"ul"},"Recovery of the services contained in the decentralized wallet,"),(0,i.kt)("li",{parentName:"ul"},"Derivation of a key pair for a given service and index and recovery of the public key,"),(0,i.kt)("li",{parentName:"ul"},"Deriving an address for a given service and index.")),(0,i.kt)("p",null,"The information that can be listened to is:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The change of balance or last address of the current account,"),(0,i.kt)("li",{parentName:"ul"},"The change of the current account.")),(0,i.kt)("p",null,"The commands related to the wallet context requiring the user\u2019s confirmation in the wallet are:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Signing and sending a transaction to the blockchain,"),(0,i.kt)("li",{parentName:"ul"},"Signature of a list of transactions,"),(0,i.kt)("li",{parentName:"ul"},"Adding a service in the decentralized wallet.")),(0,i.kt)("h1",{id:"rpc-methods"},"RPC Methods"),(0,i.kt)("p",null,"There are two kinds of methods :"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"one time call"),(0,i.kt)("li",{parentName:"ul"},"subscriptions.")),(0,i.kt)("p",null,"Subscriptions won't be available on Deeplink channel because of technical limitations."),(0,i.kt)("h2",{id:"get_endpoint"},"get_endpoint"),(0,i.kt)("p",null,"Gets the endpoint URL used on AEWallet."),(0,i.kt)("h3",{id:"request"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// no payload in request\n")),(0,i.kt)("h3",{id:"success-response"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "endpointUrl": String // Endpoint URL\n}\n')),(0,i.kt)("h2",{id:"get_accounts"},"get_accounts"),(0,i.kt)("p",null,"Gets the accounts avalaible on AEWallet."),(0,i.kt)("h3",{id:"request-1"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-1"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "accounts": [\n {\n "name": String, // Account name\n "genesisAddress": String, // Genesis address\n }\n ]\n}\n')),(0,i.kt)("h2",{id:"send_transaction"},"send_transaction"),(0,i.kt)("p",null,"Signs and sends a transaction."),(0,i.kt)("h3",{id:"request-2"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "type": String, // Type of transaction\n "version": Number, // Version of the transaction (used for backward compatiblity)\n "data": Object, // Transaction data zone (identity, keychain, smart contract, etc.)\n}\n')),(0,i.kt)("h3",{id:"success-response-2"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "transactionAddress": String, // Sent transaction address.\n "nbConfirmations": Number, // Number of received confirmations.\n "maxConfirmations": Number, // Max number of confirmations.\n}\n')),(0,i.kt)("h2",{id:"add_service"},"add_service"),(0,i.kt)("p",null,"Add a service in the keychain"),(0,i.kt)("h3",{id:"request-3"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "name": String, // Name of the service\n}\n')),(0,i.kt)("h3",{id:"success-response-3"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "transactionAddress": String, // Transaction address.\n "nbConfirmations": Number, // Number of received confirmations.\n "maxConfirmations": Number, // Max number of confirmations.\n}\n')),(0,i.kt)("h2",{id:"get_services_from_keychain"},"get_services_from_keychain"),(0,i.kt)("p",null,"Gets keychain's services from the keychain connected to AEWallet."),(0,i.kt)("h3",{id:"request-4"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-4"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "services": [\n {\n "derivationPath": String, // Derivation path\n "curve": String, // Curve\n "hashAlgo": String // Hash Algo\n }\n ]\n}\n')),(0,i.kt)("h2",{id:"keychain_derive_keypair"},"keychain_derive_keypair"),(0,i.kt)("p",null,"Derive a keypair for the given service at the index given and get the public key"),(0,i.kt)("h3",{id:"request-5"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to identify the derivation path to use\n "index": Number, // Chain index to derive (optional - default to 0)\n "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)\n}\n')),(0,i.kt)("h3",{id:"success-response-5"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "publicKey": String // Public key of the service at the index given\n}\n')),(0,i.kt)("h2",{id:"keychain_derive_address"},"keychain_derive_address"),(0,i.kt)("p",null,"Derive an address for the given service at the index given"),(0,i.kt)("h3",{id:"request-6"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to identify the derivation path to use\n "index": Number, // Chain index to derive (optional - default to 0)\n "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)\n}\n')),(0,i.kt)("h3",{id:"success-response-6"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "address": String // Address derived\n}\n')),(0,i.kt)("h2",{id:"get_current_account"},"get_current_account"),(0,i.kt)("p",null,"Gets the current account selected on AEWallet."),(0,i.kt)("h3",{id:"request-7"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"// No payload\n")),(0,i.kt)("h3",{id:"success-response-7"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "name": String, // Account name\n "genesisAddress": String, // Genesis address\n}\n')),(0,i.kt)("h2",{id:"sign_transactions"},"sign_transactions"),(0,i.kt)("p",null,"Signs many transactions."),(0,i.kt)("h3",{id:"request-8"},"Request"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "serviceName": String, // Service name to use to sign the tx\n "pathSuffix": String, // Additional information to add to a service derivation path (optional)\n "transactions": [\n {\n "type": String, // Type of transaction\n "version": Number, // Version of the transaction (used for backward compatiblity)\n "data": Object // Transaction data zone (identity, keychain, smart contract, etc.)\n }\n ]\n}\n')),(0,i.kt)("h3",{id:"success-response-8"},"Success Response"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},'{\n "signedTxs": [\n {\n "address": String, // Address: hash of the new generated public key for the given transaction\n "previousPublicKey": String, // Previous generated public key matching the previous signature\n "previousSignature": String, // Signature from the previous public key\n "originSignature": String // Signature from the device which originated the transaction (used in the Proof of work)\n }\n ]\n}\n')),(0,i.kt)("h1",{id:"in-conclusion"},"In conclusion"),(0,i.kt)("p",null,"The communication protocol developed by Archethic allows an easy and secure interaction between dApps and the blockchain by delegating the communication to the user\u2019s wallet. The integration methods proposed are simple and efficient, especially thanks to the \u201cArchethic Wallet Client\u201d (AWC) communication library which facilitates the use of the API. Developers can focus on developing their application without having to manage communication with the wallet and the blockchain. This cross-platform solution is therefore a wise choice for developers who want to write dApps that are compatible with different platforms. Finally, the availability of interfaces in the \u201clibjs\u201d library also facilitates integration for developers of applications written in JavaScript."),(0,i.kt)("p",null,"Find more information at the following links."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"AEIP 4 / Specifications: ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/aeip/blob/main/AEIP-4.md"},"https://github.com/archethic-foundation/aeip/blob/main/AEIP-4.md")),(0,i.kt)("li",{parentName:"ul"},"AWC Dart lib: ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/archethic-wallet-client-dart"},"https://github.com/archethic-foundation/archethic-wallet-client-dart")),(0,i.kt)("li",{parentName:"ul"},"AWC JS lib (into archethic JS lib): ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/archethic-foundation/libjs"},"https://github.com/archethic-foundation/libjs"))))}u.isMDXComponent=!0},3148:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/webp;base64,UklGRhwXAABXRUJQVlA4WAoAAAAIAAAALgMAnQAAVlA4IDwWAABQdwCdASovA54APm0ylUkkIqGhIZC7SIANiWlu57MuFrbcRNq5pZHm/+zeE/+F/wv5DedP4j8v/ZfyC/JT8Wrh/zf9L/wPQv+Y/Yn79/Yv3M+Nn3XeCvwB/ivtm+QL8e/k39j/LT+68VvrvmEeo/zj/Nf3r95/818q3xv+79EPq9/nfcA/kn9H/yP5mfv/76fhF/af9F7AH8v/qn+g/xH5JfHj/2f5j8p/db+hf4z/nf5/4Cv5N/U/9r/f/8r+0nzmewb93PZe/cMdOs2kPrMLhxROXvHDkDVVmgzr7WcOKJy1cTHpq54JBmEF2pDdBru9hTI473fMiYA38fmMZIP5z0sbjh2dx7uEHgiivIrqUffhAZtbVfwgM2tqv4QHIdE2Es48Q473d8I7/UGW/j8ysoyRx3u+ZEvvrhkIQe/j71zNxVaC9NxoJlO09uO60sx9eI7yGLReT3WoyRx3u7i+xMjjvd8yJgDfx+ZWT8GU5l/upXT9c2C+5Ley5xBTkpXzI2nsyhzkNcvkKZ8jequCexdsYiYA38eqjp4Q6PdGkY+0+XPq1HNGtFdf1ii5pveYbxEJZF5Xk3pEw910fMKqxyF2yEH1PDgPCG1mrj1k2RkHrE3zgnnFugzynJ84Fp1FTipAJe9WiZYRQBDmiNiciLjRQl8fTJOVBdr9KcbK4Z6ACn826g8bGipGiHtQj8oBzQK78jAZtaTk5uBEILX0BTiejhtprytxwPlFMt34bHZ4vby0x2ZvWi8B7Qy9BS6csfZtS6NRx4nw3/x+ZWUI3uRXL5kS+4wG1RuYdAOTi2FNnIooOimEX4hzKr8xbIbDtodrliwrTN2wGhG6bObBYne/iNVVA1WyMNbB54LxErWZgjv/8ewcWHenap9kgHpyUYHp7dUlxIY6HksPDJoJyC5+YhazJi/G58ikB+eOBsuLyWdlJ96wPDoJ3qQCH2O8RPpFNf7Creu4Oy9gF8X+ZwmU3CpG4Ua0YecFjnWFIw69SMuQiS004AnAOgqTBH4G/4l2GkF0yt9+24caJYj02BaBbbwq7erTTeaJPqIV1eglHnkLniKZExk/8N231HN7sL2FMjjmiD0/WiasDfx+ZWWcUcd7vmJkaRKdQKZHHd8iZVkwbVGiVB3Z3bOBRBIELJo7SFksKawSPzKyjJHHe75kTAG/hylZqWoyRx3u7pLVdp7Qtsh4i3FLr8R1MeKX8PEy1wFEwBv4/MrKMkcd7vmQysVykuKGdN5Q4U2gzYyC21F0XvXkXIu800U1ukHgWAAA/vhdg/m8/mLYO03jNpSueHiiOQIggnsvHGXPLsogeY9WhcsaGqrgXOAKeyBdnhynUN/ijUQlXXgwASOX049LJqTtsJHNtkvBVzMark35Su3J/0ZrGHtQVrFenXxbOp4DA73mEG9dhUBO5xwCcKFT2GV6le4LYlgxD0zuJ98/ZKCoO1n8FO9OVUXbpdYRtvJH4AGtrTf743ZyfgLj6+kg58PV8Zk7WoKUasC2RTxB+swR16PCDZOtKlKRxSXC5y7jXsFwjXtMWoU5guiGyCvAekbNpM0+WvcJLzCGu1Ak7FCBGS/wn0JmSsg6TWPLzDHCJEk7hfnQZ3hN8x1vnQTBQ3uT0+NnolBhx9A4/9M7JCnj1yr8hUtPMCdcSaGPZnctugHhDFO4J5EYCXWQ3YGfr/i5MYyoiunPfIDhAP1Om30NrB2p9vWBerJI4Z9gskve9WggNCfg9+eJZ1hhivfrgKaOolQe/HmOBHUkGFYGLfxaIOx+mHegohR2dRVcFnGYvtSq0Hn34PfcmUkwILSUNY02bCW6Ujr/QbHpep+yoseo7evzPKUbDMaqfpYXW5mn03QX/KdJ3h7dunHSNuqgJn+xXCmI6D2+97zd5AoW8s2XyAHTslfOy3lP+33PJisTNBFsyClhAoDaYTbI3T2CtCMYvQ2+qqTunIKfkJUsrZBq6ozoal/OuWF1O5ZapeLBxSUrlV9uwF0efcvTd9LTGSR35Lmnv/1oLeEPZorP4+FqI1Xz4SD5uPmkEux+VxzmPIWce7X8oFTygCmf9AlElEUzF1GxPK9GdfJV+eAPXNQ/v0Nlg8iP5jKhT/T/pSntRTXnwYUYqeCabj6SEQQLad6xa1dvIE11m1fspGrM2cd3QpYy6M9jRrnveGAa7U/7LNs1f6AQqPyHLRKh6m/c1/uxtPp/Ltv7ZzW4bR5kTz/AtUZetGYj1Muq/JM9KKJd+VY/v7Hz3On3kEXx7f8521HSdYZOc7/aSP+42TZ+bX4gZXYmxcb+W7yMPugDYlzIZoFgHsZEw2R1tZ0WkzSaN8eP7PaR+EyStWYIBsDeSdNCbJANGsr4Sls3FQEg52pSJfb5Kf/RsBAULqZRQQAFjgblpaEgpS3KUVGoOmysoih9af3+AOplCNpS5Dw5zxtgGd3aCIlNJ4dWOAVuVNGS7JouDcsMP33BkKARdcXejTw8C+etJMmbFEL2q1CpKRdt8jHrqSDBMLDtfzMj6lIw3IIKhEqXVrrLol9fGhudb3co8zj3PcRTSm4YlpeMcg7Ttyb/0NLWyMC3qkV3LRi36Zj6LVW1hObnZai/3KMcbfmFhp+J9SIB657dKOivZjJoYWEDclHLvSAT5ZrKcJ1PzwjifELiojZoJLJ+iVej+uaDBsWD3hqkeLWL8p46tLQfwU17ZXlPVpvmzC1tS8zV+vYo5pwDps/oqA7KszY9OMwmkWjsSh+kY+4zU4yCFIwLRq8OI6O5WrxxL59hWUa09nglJtu9aCGda13iSBCSPLT+tjP/0t227UOQ+y9hz3v0KyzQGDwJ6q2RIIsnmd+rvx6nVXgjg4ovfCH/MGCnItWJpDRr4hIGtyP0aWBNrTPauvJsNvpYWmFTnABFrhNHt/ep0VguNdp/+wOKfVqNQEo97z4P2BJrygrn8cKzepNbGbbFaPRtCS65zjMIWiFjZBjsG4w0HspZ/j/y68t8b3QbUO3OqP6m/Xju93r54l/58LWp+D6ssn3Gx5mkcH7YXBRvPwm643dT+0E5fazTRFS3K4CW052HBWl5Y3nEZqdEOv3z4wPRvERoYhZu0coWlsfzS3fxvBj+hKQGG9OxtawE9tV4ZUKfK/DVmFigoPojOXv37/lst/ZokufD8ZcgG/yqhtPNmyEFH6OTnCTjC3ryCry1VWiz9AYKuu72qaEuKbZHcMvMjCvLDqlaLxP71uEgq/rbOCk5MV4PWH9/PAyxit+H++H9V1dvwc3U9N1flz7TQ4v/cyOa0GF0KoQvneQzGKhzysgn/jzUq/mUZhMoPkFy3qaNOXUNdyVvmkd2i0Ayb0KPHT38edNhw63FzePlUndQ1cKgAsyrO3leSdyF8Mskc9U2sx6P//5Qtd7cKS3F8mCuvspq2ozBgtSsWgvAXND4/Ed/oZHM92SS2f3gL95HuTx8mnOXx125vETwbFWJ7YhvYOdoQRiCiiBUyeCrRYX1Mkog/UXyhM6IPPv13C9nYwdVwmBH4KkYmZBKfe6OEdvUmkOGYJXPobXTbSf27n4ijMmCK42qUBK262gyaEtcdFeafEkIwqLMqh+2zu7tuCZSSKtdDe6f3O5dDDcuub2XhvZmPfDIlXBMMBBZ1AfHHsXL9/kdHPHCrRpE/ppb74oNOzDUqz05Cum9ZHGRD/ZIdM8RUus8jJ5x2nil08pjdF5yHB9IRGSf3eDTtOtEZgOpHbHGs+mtjiGjVK2K0+lZsb9EdD/0DY/fdnBk9EbyL4ynCoAIXkDQGitB91DxsPfsMIHBPM3M93+hR0sW3vYkyQhAskSkA+f7J26WpA1um7pOmk3S+l1E/zNDdaomjvFb5gIEugVpWvd1hVjch/O1yAZb1Lbu6j4CLvAk8FoNY4zgdNReX7BUZz5x7rv1N2VT4h6udRjtlR0UIWiyuefdDG0tKERk1Oc6UDaXqy2RXvrM+1a+QW3X3lGTNhJPmBbjppcOcYFrYg76TUqcmswRnkJO/3dEWmTHmZ+mj8QkD6Ynk12bFGYDmm4zo4RvC3PdnvOB+2AulTWPeKTpin1zBhgcQLmtcnHjdXtNjvc1nsi8MARwEd0SKhffEP9aVhaS063uZ29cwJuWJwAwic+mbp+8goNmQBTm9qscxTUzIxp3dhNoYe2CBnQ4rxo357oBdqdhyky8Bl/0HjJgi7AoEy7/EodlOsBDUZaa3k2Bk4eopn078qGKMx/fgv4a/PgHSaJmqtM3iwt3AaN/B2XMnltopoa8zeMeIu63k4jBAPh6+/hQ2yuaXc4f75dJkB7Gkts9Y1s5LNzf7dc18xD6aefse9YlRGt8Wt4ezhsgCRTpMXr6phncT3RAepd6wEHxeYo7KmKvyfv9VX2g53KqoFfs9gPZEI2xkHgIMXYr4Y2AByV8V/XQbKsMZQk7ukYTawpwGxeQato8hN39bQ2h3w/sIc1NSHKqyKZ5LGHRKcKCXY+kaL90SOEPyRM6WI4A9ni65k/8ZFf87WPyKgrNiIOc/wMFfYsnMbupIgcyizLqm1i/60xKkP7AZ6MlIzQ8jDrRZc0zh5GsgawqycGjkOZmjCB60Ycqy/CsK9R6LxoRZX0e46V/P2c1lyYQeKLMnrz7mFzkgk48z4Awn5odqrHGB/aEYuGhm3exfP1rPVbtdrnntnqHFxIMCZP0sMawpdWUi5o8gByndt1v2nqGaeKAFlrTAcZABjcLlN9pKL+WL/BcnTQAQA/CkmlSwH5nmp1IK1ZYVK/H8uhW/DjMuMFqQ6VwZm2uBy6eBR/OFq6pjdAuiwWdDePSYIDNdbb0dsJRWsVUsRJf7e2tDnhhGmLYfqpRYQT1LSao3YWwdYhxIetaGOnpZeX/95F50s0Ki3yCmwBdlXwAMx1rF2T37vZ0k7C8rz5SOefqPG9qjyEfA3Ss3X40pueeKnv5n0vM8Yz/aLnFX9HDLRL0xmxS8Hh3TmUyDLedlL/BU4b+y07bkQuc6MZotRauyrh0mojzSeGQjSHHvi7TRCeAKLhIoiw6xnEusX7B7yVVjWcxnDtNPG/yo7ERnHEIKE9NxrkPylIwIy3Ftni9ji/xRPTt1ozBvPg5CYW/M10nWj8y2K8PE9Su0tX4pA6t2TI+9p3bNjeQcofie39WIt3rU62AE5tHhi1NStrlqyYumd/eIcFwCuEqqHCj7tC4dPVRIUSYg5lthCskwPJgmsoVGGXSvev4pMNE/NeJ5M4Wq7m85JijTa3EeSMzNILg/v15d3fDPtYYAZmHEWfdJ8Rq561HfS1e28HnFSNpV5wsq8FqqnsxIlHlG1mNj+j/mKeQsaMBSGcivn3SRO6UeJarQQ0Letgfg6wJioaZVYfajwU6uL5iasBJanexrlNwyHZQx497ZcSJN7DTbvDkf9ovvRWqyyvwlZvfj0B2hR+IM0kA/OvJF/IcL0CMone/0eIf6a29hhln/3gptOSKlhiVQWUJ+q99vaTrGQvv07XWvJcY7je27Cddv1//3+db8Tgc337wuLRPsw25Ql5uQmor4tZ3i8dRdLNpmSSN2VUhymBz/ALLAPKJuz5mT1DAlWxPTi2WPJjKEOpbUHVZ6+cb0pXTd8HBaNFc7YPiD1QxmMX7qQqbXwL099DxcNxXD9GwViIshy1vzKOUuonZgCJ2sAWZiaRZUAyOwb3WjsLH/ETVN0MofjDJym5qBdUzuLgJjRM846zFcrPfq3/O/8z3rZbdp+T+XOzirMHnMr1PHkNUmQhfpDBiwH89cdrd+sCbhzvpOokH3QB+5iNoAXSqNFKb9TPcGTn85eZngzToZB1gxk5xJ3/ip6yby/hg/1CBwm8pzclhqHdegjAOzJNBMHabspBNr9kUh9alRTTjihh0xUzihpMh1cd8FJIqsDbWrzuRIg7zL02NyAQRFrwmj4nIY8bd3NC6iNNV6lfGaf7y1ic4caVTjQu1E6O2TDVUL7/DQq1pyilULk5o2tr2BQY5NFvf55viOinfh15FHEOkyQ2Ydu3ofpmRfzMBf7nKl5T+Y2No/uHNz7YokGTuf8NXi5NomVUogR4DItY4luy13jNtksNGDaSFXGdG+eS6Qb62xtv7iq0rjo+FEvT+2U0ing/u7796OGbzMHpGrXJyTm3leyUucpA00nmlJquTx4/RsmC5Bb2gwWfr+f4hPDq/JqceNUcpu0/3V6GGZC1vtpDFvMjNoNuEBASzrZYDUhMOd4OXEqMYRZo7FTpxOdAEU442spUvcCtifiijDGq/lKXdWjf1my6VnMlXywVMTKsvQeh9Ymb7Vsk8od3Wi/1spmRIxUyFeqq53zDinuKzP7rgQ/GF7gdwxAyXVWMoH/masCujUqH6cFYL9Rg4IeMgwBwmIxUpjboAdQcnPmSmoEGjcS488U5PyJrNgraIPmqFblPmtVBbp0VeLPLy6YOLTMg2bVXW7Guzs8eoJvTuZDUAR7up1j6O90/YdCs01Jqd1vtKoebkz4PN8n7TrF4JZB3R6x+ZWSQz6n8NECCXiyf+fHNbLwmn2uc4Omy5Qfo5DEfUqvjL4EQiGhHvkfsfGv20xRQ3WaTAchJK50hf4FXUviVyYg+79dQgbx22TVnv7kLktSULFfXYzavUtizpGQaNM2h7PX70WnFhGOFt5HQMVI0dERWcbvU9FgmZv08uKAAjTT63ySTZ4NeJBYQC+jXvkyE+F7Y+E3hSs085PGYA+/LQXqAtPUgNh10VBRXHIb1YsCNyzxEWJ87NH1juWH/6Bh0e91AEjfyP1aSnugjMpEDFvAZ+oUVTK//1VCth0i8UZBtCoEUzMqLBYAtHF3vr2PIf8/+Cest6Zp3JFIJMiZ+UNMt3AJrcUWqeA9mV14mvTK7vAjpQs7Nu2yrgCvvGDXCtYvAk2tNzRDdCmrlJL4N3RUAaYsw2MYrDXLpKdOjssWopI7yc7Uoi+TGstJmLkAgTh11VNhyR+hkF8mP2hJPEblEWcXyiQVPU6z34oz7inOQhSzcPaAhlex3gJZWrlorlRfXrUQK6aI5k+lcAAUEdtRxefYCDhvC/gUYFp04k1LToAQoZuE/VJSVz6gLIxLq/VN5PfMbA+KyMLq4get6B9o//zGkn/AU4F10I9nkiGo4fmmM61ZT0WL3S6GA2ZLKK688wdfKvc/iuBau4WHQq2WzaBApOx5eCYwuRUwwW1O+N5rIKDymflv8QOPojX6QPR8Iepof7hTcirYmenQ5UC+4Y0z/XBCf6goOkxHNRTN7OeViTtRN2fgrQUTx2fHn8Oq+oe37O66zhDQYVW6oWJwxpvFEOA+vGWxnB3IqZRIYuSL4+n8D3DS7A9c+qii0HkDtZ18G0LmTPzS/yD4AZJNhY7W69WTdC7g8sf8JG05ZCQAIdDfctu4E/9TsXvA0cvi20qT1KyjtuuiGAHO2697jni/PkY/c6XMTYaNdIM3V7JOLbCY61Gvx9uKteHFqJZuvBqv+lo2RyUYLRujwnYABoU62w9+uXHJSejenONHe1nHK7v1/ycY4xIQKrcUg6xzUzMV4DgtaSoazm5sVxEC4HdZmdZXoPLraKsGatvWPd580t/jS2flQwJgAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAALwMAAAOgBAABAAAAngAAAAAAAAA="},3886:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/2-5d6085ceb76c0bd0ffdb9a438a83d08d.webp"},1079:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/3-3258cf4b259426fbb84541316eca5d55.webp"},8268:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/4-2fb8682543e15e738aacb6684b57b221.webp"},4389:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/5-997d8657ade91f1c2a419d5187b3de61.webp"},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/ecdd1e85.0c26c068.js b/assets/js/ecdd1e85.0c26c068.js deleted file mode 100644 index 1e117dfcd..000000000 --- a/assets/js/ecdd1e85.0c26c068.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1696],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>f});var o=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=o.createContext({}),l=function(e){var t=o.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},h=function(e){var t=l(e.components);return o.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,c=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),u=l(r),d=a,f=u["".concat(c,".").concat(d)]||u[d]||p[d]||n;return r?o.createElement(f,i(i({ref:t},h),{},{components:r})):o.createElement(f,i({ref:t},h))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,i=new Array(n);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>s,toc:()=>l});var o=r(7462),a=(r(7294),r(3905));r(8209);const n={id:"hardware-root-of-trust",title:"Harware Root of Trust"},i=void 0,s={unversionedId:"learn/cryptography/hardware-root-of-trust",id:"learn/cryptography/hardware-root-of-trust",title:"Harware Root of Trust",description:"What is hardware root of trust?",source:"@site/docs/learn/cryptography/hardware-root-of-trust.md",sourceDirName:"learn/cryptography",slug:"/learn/cryptography/hardware-root-of-trust",permalink:"/learn/cryptography/hardware-root-of-trust",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"hardware-root-of-trust",title:"Harware Root of Trust"},sidebar:"docs",previous:{title:"Cryptography",permalink:"/learn/cryptography/"},next:{title:"Decentralized Identity",permalink:"/learn/decentralized-id/"}},c={},l=[{value:"What is hardware root of trust?",id:"what-is-hardware-root-of-trust",level:2},{value:"Why hardware root of trust for Archethic?",id:"why-hardware-root-of-trust-for-archethic",level:2},{value:"Implementation of Hardware Root of Trust (HRT)",id:"implementation-of-hardware-root-of-trust-hrt",level:2},{value:"Placement of HRT in Archethic Blockchain/Ecosystem",id:"placement-of-hrt-in-archethic-blockchainecosystem",level:2}],h={toc:l},u="wrapper";function p(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,o.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"what-is-hardware-root-of-trust"},"What is hardware root of trust?"),(0,a.kt)("p",null,"A hardware root of trust is the foundation on which all secure operations of a computing system depend. It contains the keys used for cryptographic functions and enables a secure boot process. It is inherently trusted, and therefore must be secure by design. The most secure implementation of a root of trust is in hardware making it immune from malware attacks. As such, it can be a stand-alone security module or implemented as security module within a processor or system on chip (SoC) (",(0,a.kt)("a",{parentName:"p",href:"https://www.rambus.com/blogs/hardware-root-of-trust/#:~:text=for%20my%20application%3F-,What%20is%20hardware%20root%20of%20trust%3F,must%20be%20secure%20by%20design."},"source"),")."),(0,a.kt)("h2",{id:"why-hardware-root-of-trust-for-archethic"},"Why hardware root of trust for Archethic?"),(0,a.kt)("p",null,"The ability to sustain the network even with more than 90% of malicious nodes effectively comes from 2 very important steps."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Identifying the malcious nodes effectively and preemptively."),(0,a.kt)("li",{parentName:"ul"},"Banish and effectively ban the malicious nodes.")),(0,a.kt)("p",null,"While the first part involves complex alogrithms implemented in the software layer, the second part involves uniquely tying node's identity to its hardware. This way, the malicious node, once identified and banished, cannot rejoin the network by changing its representive identity."),(0,a.kt)("p",null,"This second part can be effectively achieved using the concept of hardware root of trust. With hardware root of trust, a unique keypair is injected in the into the wafer at the time of fabrication, thus tying the identity with this keypair. Once, this keypair is certified, the node cannot effectively use another keypair, once banished, thus eliminating identity forgery. This is, in principle, possible due to fact once a key-pair is injected, it cannot be changed for that particular hardware."),(0,a.kt)("p",null,"Further, with this hardware root of trust, we can also ensure that no two nodes have the same public key tied to their identity. Thus, using hardware root of trust, contributes significantly to the increased miner security and makes the Archethic blockchain more resilient against bad actors."),(0,a.kt)("h2",{id:"implementation-of-hardware-root-of-trust-hrt"},"Implementation of Hardware Root of Trust (HRT)"),(0,a.kt)("p",null,"To implement hardware root of Trust, within Archethic ecosystem, two technologies have been used."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Trusted Platform Module (TPM 2.O)"),(0,a.kt)("li",{parentName:"ul"},"Yubico Yubikey (PIV)")),(0,a.kt)("p",null,"Both of these technologies are based on Secure Element (SE) which are certified under Common Criteria (CC)."),(0,a.kt)("h2",{id:"placement-of-hrt-in-archethic-blockchainecosystem"},"Placement of HRT in Archethic Blockchain/Ecosystem"),(0,a.kt)("p",null,"Along with the initial software crypto library, the HRT is now the de-facto crypto engine for all the cryptographic operations carried out by Archethic miners. This includes signature (ECC), verification (ECC), encryption (AES), decryption (AES), hashing (SHA2/SHA3), etc."),(0,a.kt)("p",null,"The Archethic node software delegates all the cryptography operations to the HRT libraries of TPM and Yubikey, which are specially developed for this purpose by Uniris."),(0,a.kt)("p",null,"Given the latency constraints, a new hybrid mechanism have been developed involving usage of software crypto library and the HRT libraries (TPM/Yubikey). In this approach, the root of trust - crypto operation are still HRT based while the stem and branches will be software crypto library based."),(0,a.kt)("p",null,"The advantages of this mechanism over pure HRT based mechanism is:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Possiblity of key aggregation"),(0,a.kt)("li",{parentName:"ul"},"Freedom of using newer elliptic curves that are not yet supported by TPM/Yubikey."),(0,a.kt)("li",{parentName:"ul"},"Scalability without impacting security and performance.")))}p.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/ecdd1e85.b1bda1ed.js b/assets/js/ecdd1e85.b1bda1ed.js new file mode 100644 index 000000000..646980cf9 --- /dev/null +++ b/assets/js/ecdd1e85.b1bda1ed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1696],{3905:(e,t,r)=>{r.d(t,{Zo:()=>h,kt:()=>f});var o=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=o.createContext({}),l=function(e){var t=o.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},h=function(e){var t=l(e.components);return o.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,c=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),u=l(r),d=a,f=u["".concat(c,".").concat(d)]||u[d]||p[d]||n;return r?o.createElement(f,i(i({ref:t},h),{},{components:r})):o.createElement(f,i({ref:t},h))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,i=new Array(n);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>s,toc:()=>l});var o=r(7462),a=(r(7294),r(3905));r(8209);const n={id:"hardware-root-of-trust",title:"Hardware Root of Trust"},i=void 0,s={unversionedId:"learn/cryptography/hardware-root-of-trust",id:"learn/cryptography/hardware-root-of-trust",title:"Hardware Root of Trust",description:"What is hardware root of trust?",source:"@site/docs/learn/cryptography/hardware-root-of-trust.md",sourceDirName:"learn/cryptography",slug:"/learn/cryptography/hardware-root-of-trust",permalink:"/learn/cryptography/hardware-root-of-trust",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"hardware-root-of-trust",title:"Hardware Root of Trust"},sidebar:"docs",previous:{title:"Cryptography",permalink:"/learn/cryptography/"},next:{title:"Decentralized Identity",permalink:"/learn/decentralized-id/"}},c={},l=[{value:"What is hardware root of trust?",id:"what-is-hardware-root-of-trust",level:2},{value:"Why hardware root of trust for Archethic?",id:"why-hardware-root-of-trust-for-archethic",level:2},{value:"Implementation of Hardware Root of Trust (HRT)",id:"implementation-of-hardware-root-of-trust-hrt",level:2},{value:"Placement of HRT in Archethic Blockchain/Ecosystem",id:"placement-of-hrt-in-archethic-blockchainecosystem",level:2}],h={toc:l},u="wrapper";function p(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,o.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"what-is-hardware-root-of-trust"},"What is hardware root of trust?"),(0,a.kt)("p",null,"A hardware root of trust is the foundation on which all secure operations of a computing system depend. It contains the keys used for cryptographic functions and enables a secure boot process. It is inherently trusted, and therefore must be secure by design. The most secure implementation of a root of trust is in hardware making it immune from malware attacks. As such, it can be a stand-alone security module or implemented as security module within a processor or system on chip (SoC) (",(0,a.kt)("a",{parentName:"p",href:"https://www.rambus.com/blogs/hardware-root-of-trust/#:~:text=for%20my%20application%3F-,What%20is%20hardware%20root%20of%20trust%3F,must%20be%20secure%20by%20design."},"source"),")."),(0,a.kt)("h2",{id:"why-hardware-root-of-trust-for-archethic"},"Why hardware root of trust for Archethic?"),(0,a.kt)("p",null,"The ability to sustain the network even with more than 90% of malicious nodes effectively comes from 2 very important steps."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Identifying the malcious nodes effectively and preemptively."),(0,a.kt)("li",{parentName:"ul"},"Banish and effectively ban the malicious nodes.")),(0,a.kt)("p",null,"While the first part involves complex alogrithms implemented in the software layer, the second part involves uniquely tying node's identity to its hardware. This way, the malicious node, once identified and banished, cannot rejoin the network by changing its representive identity."),(0,a.kt)("p",null,"This second part can be effectively achieved using the concept of hardware root of trust. With hardware root of trust, a unique keypair is injected in the into the wafer at the time of fabrication, thus tying the identity with this keypair. Once, this keypair is certified, the node cannot effectively use another keypair, once banished, thus eliminating identity forgery. This is, in principle, possible due to fact once a key-pair is injected, it cannot be changed for that particular hardware."),(0,a.kt)("p",null,"Further, with this hardware root of trust, we can also ensure that no two nodes have the same public key tied to their identity. Thus, using hardware root of trust, contributes significantly to the increased miner security and makes the Archethic blockchain more resilient against bad actors."),(0,a.kt)("h2",{id:"implementation-of-hardware-root-of-trust-hrt"},"Implementation of Hardware Root of Trust (HRT)"),(0,a.kt)("p",null,"To implement hardware root of Trust, within Archethic ecosystem, two technologies have been used."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Trusted Platform Module (TPM 2.O)"),(0,a.kt)("li",{parentName:"ul"},"Yubico Yubikey (PIV)")),(0,a.kt)("p",null,"Both of these technologies are based on Secure Element (SE) which are certified under Common Criteria (CC)."),(0,a.kt)("h2",{id:"placement-of-hrt-in-archethic-blockchainecosystem"},"Placement of HRT in Archethic Blockchain/Ecosystem"),(0,a.kt)("p",null,"Along with the initial software crypto library, the HRT is now the de-facto crypto engine for all the cryptographic operations carried out by Archethic miners. This includes signature (ECC), verification (ECC), encryption (AES), decryption (AES), hashing (SHA2/SHA3), etc."),(0,a.kt)("p",null,"The Archethic node software delegates all the cryptography operations to the HRT libraries of TPM and Yubikey, which are specially developed for this purpose by Uniris."),(0,a.kt)("p",null,"Given the latency constraints, a new hybrid mechanism have been developed involving usage of software crypto library and the HRT libraries (TPM/Yubikey). In this approach, the root of trust - crypto operation are still HRT based while the stem and branches will be software crypto library based."),(0,a.kt)("p",null,"The advantages of this mechanism over pure HRT based mechanism is:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Possiblity of key aggregation"),(0,a.kt)("li",{parentName:"ul"},"Freedom of using newer elliptic curves that are not yet supported by TPM/Yubikey."),(0,a.kt)("li",{parentName:"ul"},"Scalability without impacting security and performance.")))}p.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/ee388bf8.de7afe3d.js b/assets/js/ee388bf8.2bf3ae01.js similarity index 98% rename from assets/js/ee388bf8.de7afe3d.js rename to assets/js/ee388bf8.2bf3ae01.js index 63274705a..b3d75d8a0 100644 --- a/assets/js/ee388bf8.de7afe3d.js +++ b/assets/js/ee388bf8.2bf3ae01.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7701],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=s(r),m=o,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(f,l(l({ref:t},u),{},{components:r})):n.createElement(f,l({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"error-context",title:"ErrorContext",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/enums/error-context",id:"build/api/schema/enums/error-context",title:"ErrorContext",description:"Transaction error context",source:"@site/docs/build/api/schema/enums/error-context.mdx",sourceDirName:"build/api/schema/enums",slug:"/build/api/schema/enums/error-context",permalink:"/build/api/schema/enums/error-context",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"error-context",title:"ErrorContext",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"skip",permalink:"/build/api/schema/directives/skip"},next:{title:"SortOrder",permalink:"/build/api/schema/enums/sort-order"}},s={},u=[{value:"Values",id:"values",level:3},{value:"ErrorContext.INVALID_TRANSACTION",id:"code-style-fontweight-normal-errorcontextbinvalid_transactionbcode",level:4},{value:"ErrorContext.NETWORK_ISSUE",id:"code-style-fontweight-normal-errorcontextbnetwork_issuebcode",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:u,Bullet:p,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Transaction error context"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"enum ErrorContext {\n INVALID_TRANSACTION\n NETWORK_ISSUE\n}\n")),(0,a.kt)("h3",{id:"values"},"Values"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-errorcontextbinvalid_transactionbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"ErrorContext.",(0,a.kt)("b",null,"INVALID_TRANSACTION")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Transaction is invalid")),(0,a.kt)("h4",{id:"code-style-fontweight-normal-errorcontextbnetwork_issuebcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"ErrorContext.",(0,a.kt)("b",null,"NETWORK_ISSUE")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Network problem")),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,a.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7701],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=s(r),m=o,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||a;return r?n.createElement(f,l(l({ref:t},u),{},{components:r})):n.createElement(f,l({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>p,SpecifiedBy:()=>d,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"error-context",title:"ErrorContext",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/enums/error-context",id:"build/api/schema/enums/error-context",title:"ErrorContext",description:"Transaction error context",source:"@site/docs/build/api/schema/enums/error-context.mdx",sourceDirName:"build/api/schema/enums",slug:"/build/api/schema/enums/error-context",permalink:"/build/api/schema/enums/error-context",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"error-context",title:"ErrorContext",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"skip",permalink:"/build/api/schema/directives/skip"},next:{title:"SortOrder",permalink:"/build/api/schema/enums/sort-order"}},s={},u=[{value:"Values",id:"values",level:3},{value:"ErrorContext.INVALID_TRANSACTION",id:"code-style-fontweight-normal-errorcontextbinvalid_transactionbcode",level:4},{value:"ErrorContext.NETWORK_ISSUE",id:"code-style-fontweight-normal-errorcontextbnetwork_issuebcode",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),d=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:u,Bullet:p,SpecifiedBy:d,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Transaction error context"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"enum ErrorContext {\n INVALID_TRANSACTION\n NETWORK_ISSUE\n}\n")),(0,a.kt)("h3",{id:"values"},"Values"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-errorcontextbinvalid_transactionbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"ErrorContext.",(0,a.kt)("b",null,"INVALID_TRANSACTION")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Transaction is invalid")),(0,a.kt)("h4",{id:"code-style-fontweight-normal-errorcontextbnetwork_issuebcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"ErrorContext.",(0,a.kt)("b",null,"NETWORK_ISSUE")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Network problem")),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,a.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,a.kt)(m,{class:"secondary",text:"object",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/eeb513bd.a8fc2376.js b/assets/js/eeb513bd.9240e1bf.js similarity index 99% rename from assets/js/eeb513bd.a8fc2376.js rename to assets/js/eeb513bd.9240e1bf.js index 9880dc1fa..5a5d2db6c 100644 --- a/assets/js/eeb513bd.a8fc2376.js +++ b/assets/js/eeb513bd.9240e1bf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5371],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=i,m=p["".concat(l,".").concat(h)]||p[h]||u[h]||r;return n?a.createElement(m,o(o({ref:t},d),{},{components:n})):a.createElement(m,o({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:i,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"beacon-chain",title:"Beacon Chain"},o=void 0,s={unversionedId:"learn/sharding/beacon-chain/beacon-chain",id:"learn/sharding/beacon-chain/beacon-chain",title:"Beacon Chain",description:"Archethic Blockchain is using Sharding mechanism to ensure scalability in terms of storage and validation.",source:"@site/docs/learn/sharding/beacon-chain/README.md",sourceDirName:"learn/sharding/beacon-chain",slug:"/learn/sharding/beacon-chain/",permalink:"/learn/sharding/beacon-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"beacon-chain",title:"Beacon Chain"},sidebar:"docs",previous:{title:"Sharding",permalink:"/learn/sharding/"},next:{title:"Beacon Explorer",permalink:"/learn/sharding/beacon-chain/explorer"}},l={},c=[{value:"Concepts",id:"concepts",level:2},{value:"Transaction tracking and timestamping",id:"transaction-tracking-and-timestamping",level:2},{value:"Status and Network Coordinates of nodes",id:"status-and-network-coordinates-of-nodes",level:2},{value:"Slot",id:"slot",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is using ",(0,i.kt)("inlineCode",{parentName:"p"},"Sharding")," mechanism to ensure scalability in terms of storage and validation."),(0,i.kt)("p",null,"But since there is no way in a well sharded and distributed network to know all the transaction in the system,\na ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is used to keep a global synchronization and reference."),(0,i.kt)("h2",{id:"concepts"},"Concepts"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is used as tracer/marker of a global state but to face some scalability issue, Archethic Blockchain is using ",(0,i.kt)("inlineCode",{parentName:"p"},"Sharding")," also for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain"),"."),(0,i.kt)("p",null,"Which means that the ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is sharded and divided into ",(0,i.kt)("inlineCode",{parentName:"p"},"subset")," defined by the transaction's address and a given date."),(0,i.kt)("p",null,"For example: a transaction's address starting by ",(0,i.kt)("inlineCode",{parentName:"p"},"0F")," for a given day, will not be stored on the same subset as a transaction's address starting by ",(0,i.kt)("inlineCode",{parentName:"p"},"9F")," for the same day."),(0,i.kt)("h2",{id:"transaction-tracking-and-timestamping"},"Transaction tracking and timestamping"),(0,i.kt)("p",null,"Each time a transaction is validated, the validation nodes will send the transaction to the right Beacon Chain storage nodes, to transmit the address of the transaction and its timestamp."),(0,i.kt)("p",null,"For each Beacon Chain interval, a new slot is generated referencing all the transaction during this interval."),(0,i.kt)("p",null,"At the end of the day, a transaction chain is formed, and a last transaction is computed to generate a summary of the current day for a given subset."),(0,i.kt)("p",null,"Because each transaction has its own storage nodes, ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chains")," are balanced between the storage nodes to ensure a better scalability and distribution."),(0,i.kt)("h2",{id:"status-and-network-coordinates-of-nodes"},"Status and Network Coordinates of nodes"),(0,i.kt)("p",null,"Beacon Chains also contains network status of the nodes where the public key starts by the Beacon Chain subset."),(0,i.kt)("p",null,"The storage nodes in each subset is in charge of:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"checking the node availabilities"),(0,i.kt)("li",{parentName:"ul"},"gathering networking information such as latency, bandwidth")),(0,i.kt)("p",null,"At the end of the day, a transaction is formed as well and a last transaction is computed to generate a summary of node availability and network coordinates"),(0,i.kt)("h2",{id:"slot"},"Slot"),(0,i.kt)("p",null,"Each ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is divided during the day into multiple slots, defined by interval (for instance every 10 min)."),(0,i.kt)("p",null,"Those slot contains the following information:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Transaction summaries: timestamping of the validated transactions",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"address: Transaction's address"),(0,i.kt)("li",{parentName:"ul"},"timestamp: Transaction validation time"),(0,i.kt)("li",{parentName:"ul"},"movements addresses: List of outputs addresses of the transaction"))),(0,i.kt)("li",{parentName:"ul"},"End of node synchronization: timestamping when a node finished its synchronization",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"node public key: Node's first public key"),(0,i.kt)("li",{parentName:"ul"},"timestamp: Time when the node synchronization ended"))),(0,i.kt)("li",{parentName:"ul"},"P2P view:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"availabilities: binary form of the availability of the sampled nodes for the given subset"),(0,i.kt)("li",{parentName:"ul"},"network statistics: latency and bandwidth of the sampled nodes for the given subset")))))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5371],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),h=i,m=p["".concat(l,".").concat(h)]||p[h]||u[h]||r;return n?a.createElement(m,o(o({ref:t},d),{},{components:n})):a.createElement(m,o({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:i,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));n(8209);const r={id:"beacon-chain",title:"Beacon Chain"},o=void 0,s={unversionedId:"learn/sharding/beacon-chain/beacon-chain",id:"learn/sharding/beacon-chain/beacon-chain",title:"Beacon Chain",description:"Archethic Blockchain is using Sharding mechanism to ensure scalability in terms of storage and validation.",source:"@site/docs/learn/sharding/beacon-chain/README.md",sourceDirName:"learn/sharding/beacon-chain",slug:"/learn/sharding/beacon-chain/",permalink:"/learn/sharding/beacon-chain/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"beacon-chain",title:"Beacon Chain"},sidebar:"docs",previous:{title:"Sharding",permalink:"/learn/sharding/"},next:{title:"Beacon Explorer",permalink:"/learn/sharding/beacon-chain/explorer"}},l={},c=[{value:"Concepts",id:"concepts",level:2},{value:"Transaction tracking and timestamping",id:"transaction-tracking-and-timestamping",level:2},{value:"Status and Network Coordinates of nodes",id:"status-and-network-coordinates-of-nodes",level:2},{value:"Slot",id:"slot",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Archethic Blockchain is using ",(0,i.kt)("inlineCode",{parentName:"p"},"Sharding")," mechanism to ensure scalability in terms of storage and validation."),(0,i.kt)("p",null,"But since there is no way in a well sharded and distributed network to know all the transaction in the system,\na ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is used to keep a global synchronization and reference."),(0,i.kt)("h2",{id:"concepts"},"Concepts"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is used as tracer/marker of a global state but to face some scalability issue, Archethic Blockchain is using ",(0,i.kt)("inlineCode",{parentName:"p"},"Sharding")," also for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain"),"."),(0,i.kt)("p",null,"Which means that the ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is sharded and divided into ",(0,i.kt)("inlineCode",{parentName:"p"},"subset")," defined by the transaction's address and a given date."),(0,i.kt)("p",null,"For example: a transaction's address starting by ",(0,i.kt)("inlineCode",{parentName:"p"},"0F")," for a given day, will not be stored on the same subset as a transaction's address starting by ",(0,i.kt)("inlineCode",{parentName:"p"},"9F")," for the same day."),(0,i.kt)("h2",{id:"transaction-tracking-and-timestamping"},"Transaction tracking and timestamping"),(0,i.kt)("p",null,"Each time a transaction is validated, the validation nodes will send the transaction to the right Beacon Chain storage nodes, to transmit the address of the transaction and its timestamp."),(0,i.kt)("p",null,"For each Beacon Chain interval, a new slot is generated referencing all the transaction during this interval."),(0,i.kt)("p",null,"At the end of the day, a transaction chain is formed, and a last transaction is computed to generate a summary of the current day for a given subset."),(0,i.kt)("p",null,"Because each transaction has its own storage nodes, ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chains")," are balanced between the storage nodes to ensure a better scalability and distribution."),(0,i.kt)("h2",{id:"status-and-network-coordinates-of-nodes"},"Status and Network Coordinates of nodes"),(0,i.kt)("p",null,"Beacon Chains also contains network status of the nodes where the public key starts by the Beacon Chain subset."),(0,i.kt)("p",null,"The storage nodes in each subset is in charge of:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"checking the node availabilities"),(0,i.kt)("li",{parentName:"ul"},"gathering networking information such as latency, bandwidth")),(0,i.kt)("p",null,"At the end of the day, a transaction is formed as well and a last transaction is computed to generate a summary of node availability and network coordinates"),(0,i.kt)("h2",{id:"slot"},"Slot"),(0,i.kt)("p",null,"Each ",(0,i.kt)("inlineCode",{parentName:"p"},"Beacon Chain")," is divided during the day into multiple slots, defined by interval (for instance every 10 min)."),(0,i.kt)("p",null,"Those slot contains the following information:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Transaction summaries: timestamping of the validated transactions",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"address: Transaction's address"),(0,i.kt)("li",{parentName:"ul"},"timestamp: Transaction validation time"),(0,i.kt)("li",{parentName:"ul"},"movements addresses: List of outputs addresses of the transaction"))),(0,i.kt)("li",{parentName:"ul"},"End of node synchronization: timestamping when a node finished its synchronization",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"node public key: Node's first public key"),(0,i.kt)("li",{parentName:"ul"},"timestamp: Time when the node synchronization ended"))),(0,i.kt)("li",{parentName:"ul"},"P2P view:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"availabilities: binary form of the availability of the sampled nodes for the given subset"),(0,i.kt)("li",{parentName:"ul"},"network statistics: latency and bandwidth of the sampled nodes for the given subset")))))}u.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/f3ebdb21.7aa98a0b.js b/assets/js/f3ebdb21.20cd0ba2.js similarity index 99% rename from assets/js/f3ebdb21.7aa98a0b.js rename to assets/js/f3ebdb21.20cd0ba2.js index 0922097d3..029257333 100644 --- a/assets/js/f3ebdb21.7aa98a0b.js +++ b/assets/js/f3ebdb21.20cd0ba2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9333],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>u});var a=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function s(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var o=a.createContext({}),M=function(e){var t=a.useContext(o),i=t;return e&&(i="function"==typeof e?e(t):s(s({},t),e)),i},h=function(e){var t=M(e.components);return a.createElement(o.Provider,{value:t},e.children)},l="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},I=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,r=e.originalType,o=e.parentName,h=c(e,["components","mdxType","originalType","parentName"]),l=M(i),I=n,u=l["".concat(o,".").concat(I)]||l[I]||g[I]||r;return i?a.createElement(u,s(s({ref:t},h),{},{components:i})):a.createElement(u,s({ref:t},h))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=i.length,s=new Array(r);s[0]=I;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[l]="string"==typeof e?e:n,s[1]=c;for(var M=2;M{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>s,default:()=>g,frontMatter:()=>r,metadata:()=>c,toc:()=>M});var a=i(7462),n=(i(7294),i(3905));i(8209);const r={id:"bridge-2-ways",title:"Archethic Bridge 2-ways"},s=void 0,c={unversionedId:"FAQ/bridge-2-ways",id:"FAQ/bridge-2-ways",title:"Archethic Bridge 2-ways",description:"General",source:"@site/docs/FAQ/bridge-2-ways.md",sourceDirName:"FAQ",slug:"/FAQ/bridge-2-ways",permalink:"/FAQ/bridge-2-ways",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"bridge-2-ways",title:"Archethic Bridge 2-ways"},sidebar:"docs",previous:{title:"AEWeb",permalink:"/FAQ/aeweb"},next:{title:"Archethic Bridge $UCO one-way",permalink:"/FAQ/bridge"}},o={},M=[{value:"General",id:"general",level:2},{value:"What is Archethic Bridge two-ways?",id:"what-is-archethic-bridge-two-ways",level:3},{value:"How to access the Archethic Bridge ?",id:"how-to-access-the-archethic-bridge-",level:3},{value:"Which blockchain is better to bridge my UCOs?",id:"which-blockchain-is-better-to-bridge-my-ucos",level:3},{value:"What blockchains does the Archethic Bridge support?",id:"what-blockchains-does-the-archethic-bridge-support",level:3},{value:"Is the Archethic Bridge available on mobile devices?",id:"is-the-archethic-bridge-available-on-mobile-devices",level:3},{value:"What is an EVM wallet?",id:"what-is-an-evm-wallet",level:3},{value:"How is the price of $UCO estimated?",id:"how-is-the-price-of-uco-estimated",level:3},{value:"How long is the predetermined time?",id:"how-long-is-the-predetermined-time",level:3},{value:"Key Concepts",id:"key-concepts",level:2},{value:"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?",id:"what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge",level:3},{value:"How does Archethic's cross-chain verification work?",id:"how-does-archethics-cross-chain-verification-work",level:3},{value:"What is the Safety Module in Archethic's bridge?",id:"what-is-the-safety-module-in-archethics-bridge",level:3},{value:"Specifics of Bridging",id:"specifics-of-bridging",level:2},{value:"How does the process of bridging from EVM to Archethic work?",id:"how-does-the-process-of-bridging-from-evm-to-archethic-work",level:3},{value:"What is the process for bridging from Archethic to EVM?",id:"what-is-the-process-for-bridging-from-archethic-to-evm",level:3},{value:"Wallet",id:"wallet",level:2},{value:"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?",id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet",level:3},{value:"Why can't I connect to the Archethic wallet with my Brave browser?",id:"why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser",level:3},{value:"Testnet",id:"testnet",level:2},{value:"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?",id:"how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet",level:3},{value:"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?",id:"how-can-i-buy-uco-after-receiving-eth-matic-or-bnb",level:3},{value:"Issues management",id:"issues-management",level:2},{value:"What happens if a problem occurs, or I refuse a transaction during the transfer?",id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer",level:3},{value:"If I sent the tokens to a wrong Mainnet address, what to do?",id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do",level:3},{value:"Can I help the developers analyze the problems?",id:"can-i-help-the-developers-analyze-the-problems",level:3}],h={toc:M},l="wrapper";function g(e){let{components:t,...r}=e;return(0,n.kt)(l,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"general"},"General"),(0,n.kt)("h3",{id:"what-is-archethic-bridge-two-ways"},"What is Archethic Bridge two-ways?"),(0,n.kt)("p",null,"The Archethic Bridge two-ways is a decentralized, peer-to-peer bridge that enables the seamless exchange of UCO ERC20 tokens and other major cryptocurrencies like ETH, MATIC, and BNB between the Archethic blockchain and various other blockchains, including Ethereum, Polygon, and BSC. This functionality allows for the transfer of these assets into their equivalent forms on Archethic, such as aeETH, aeMATIC, and aeBNB, providing a secure and straightforward method for exchanging assets. The bridge utilizes atomic swap technology, specifically Hash Time Lock Contracts (HTLC), to facilitate secure and intermediary-free transactions. Moreover, it incorporates Archethic's unique cross-chain verification technique, enhancing the security and decentralization of these exchanges. This two-way bridge significantly expands the interoperability between Archethic and other blockchain networks, allowing for greater flexibility and integration within the broader blockchain ecosystem."),(0,n.kt)("h3",{id:"how-to-access-the-archethic-bridge-"},"How to access the Archethic Bridge ?"),(0,n.kt)("p",null,"You can access the bridge at : ",(0,n.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net"},"https://bridge.testnet.archethic.net")),(0,n.kt)("h3",{id:"which-blockchain-is-better-to-bridge-my-ucos"},"Which blockchain is better to bridge my UCOs?"),(0,n.kt)("p",null,"Using the 3 blockchains, the result will be the same, but fees are not the same between ETH/MATIC/BSC.\nMATIC has the lowest fees."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"bridge-blockchains",src:i(2909).Z,width:"111",height:"102"})),(0,n.kt)("h3",{id:"what-blockchains-does-the-archethic-bridge-support"},"What blockchains does the Archethic Bridge support?"),(0,n.kt)("p",null,"The Archethic Bridge currently supports bridging between the Archethic blockchain and various EVM (Ethereum Virtual Machine) compatible blockchains."),(0,n.kt)("h3",{id:"is-the-archethic-bridge-available-on-mobile-devices"},"Is the Archethic Bridge available on mobile devices?"),(0,n.kt)("p",null,"No, the Archethic Bridge application is designed exclusively for desktop use and is compatible with macOS, Linux, and Windows operating systems."),(0,n.kt)("h3",{id:"what-is-an-evm-wallet"},"What is an EVM wallet?"),(0,n.kt)("p",null,"An EVM (Ethereum Virtual Machine) wallet is a digital wallet designed to interact with blockchains that are compatible with the Ethereum Virtual Machine. EVM wallets can store, send, and receive Ether (ETH) and other EVM-compatible tokens, execute smart contracts, and interact with decentralized applications (dApps) on EVM-compatible networks."),(0,n.kt)("h3",{id:"how-is-the-price-of-uco-estimated"},"How is the price of $UCO estimated?"),(0,n.kt)("p",null,"The price of $UCO is determined using an Archethic Oracle that consolidates information from various sources, including Coingecko and CoinMarketCap."),(0,n.kt)("h3",{id:"how-long-is-the-predetermined-time"},"How long is the predetermined time?"),(0,n.kt)("p",null,"The timelock lasts 2 hours."),(0,n.kt)("h2",{id:"key-concepts"},"Key Concepts"),(0,n.kt)("h3",{id:"what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge"},"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?"),(0,n.kt)("p",null,"HTLC stands for Hash Time Lock Contract. In Archethic's bridge, it is a type of contract used in atomic swaps to securely exchange assets in a peer-to-peer manner without intermediaries. These contracts lock funds until a secret is revealed or a specified time period elapses, ensuring a secure and reversible asset exchange."),(0,n.kt)("h3",{id:"how-does-archethics-cross-chain-verification-work"},"How does Archethic's cross-chain verification work?"),(0,n.kt)("p",null,"Archethic's cross-chain verification enhances atomic swaps by allowing data retrieval outside of the blockchain. This makes the process fully decentralized and strengthens the security model. Archethic's nodes can verify transaction status on other chains, like EVM blockchains, establishing a strong consensus on the status of a swap."),(0,n.kt)("h3",{id:"what-is-the-safety-module-in-archethics-bridge"},"What is the Safety Module in Archethic's bridge?"),(0,n.kt)("p",null,"The Safety Module in Archethic's bridge is a reserve of tokens designed to mitigate risks associated with asset bridging. It addresses potential deficiencies and disruptions in bridge operations by providing a token reserve that matches the amount in each pool at launch. This module is funded by fees from transfers and is managed by a multisignature wallet governed by the bridge's governance."),(0,n.kt)("h2",{id:"specifics-of-bridging"},"Specifics of Bridging"),(0,n.kt)("h3",{id:"how-does-the-process-of-bridging-from-evm-to-archethic-work"},"How does the process of bridging from EVM to Archethic work?"),(0,n.kt)("p",null,"To bridge from EVM to Archethic, a user deploys an HTLC smart contract on both blockchains. The process involves locking funds using a secret and its hash, verifying the transaction across chains, minting new tokens on Archethic, and transferring funds to respective recipient wallets. The entire process is secured by atomic swaps and Archethic's cross-chain verification."),(0,n.kt)("h3",{id:"what-is-the-process-for-bridging-from-archethic-to-evm"},"What is the process for bridging from Archethic to EVM?"),(0,n.kt)("p",null,"Bridging from Archethic to EVM follows a similar pattern but in reverse. It introduces an additional step where EVM cannot directly request information from the blockchain. Instead, cryptography is used to assert actions through signatures, ensuring non-repudiation. This involves creating and funding HTLC contracts on both blockchains, revealing secrets, and transferring funds securely."),(0,n.kt)("h2",{id:"wallet"},"Wallet"),(0,n.kt)("h3",{id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet"},"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?"),(0,n.kt)("p",null,"The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don\u2019t forget the 24 words) and create/import a wallet on the Testnet network."),(0,n.kt)("h3",{id:"why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser"},"Why can't I connect to the Archethic wallet with my Brave browser?"),(0,n.kt)("p",null,"Brave includes a shield feature that might block certain local connections.\nTo successfully connect to the Archethic wallet, you'll need to modify the Brave browser\u2019s shield settings as per its documentation"),(0,n.kt)("h2",{id:"testnet"},"Testnet"),(0,n.kt)("h3",{id:"how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet"},"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?"),(0,n.kt)("p",null,"To configure these networks in your EVM Wallet, you'll need to go to the wallet's settings and manually add each network using the Chain ID and Explorer URL provided above."),(0,n.kt)("p",null,"Ethereum Sepolia Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/11155111"},"https://chainlist.org/chain/11155111"),(0,n.kt)("br",null),"\nChain ID: 11155111",(0,n.kt)("br",null),"\nSymbol: ETH",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://sepolia.etherscan.io/"},"https://sepolia.etherscan.io/"),(0,n.kt)("br",null)),(0,n.kt)("p",null,"Binance Smart Chain Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/97"},"https://chainlist.org/chain/97"),(0,n.kt)("br",null),"\nChain ID: 97",(0,n.kt)("br",null),"\nSymbol: tBNB",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://testnet.bscscan.com/"},"https://testnet.bscscan.com/"),(0,n.kt)("br",null)),(0,n.kt)("p",null,"Polygon Mumbai Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/80001"},"https://chainlist.org/chain/80001"),(0,n.kt)("br",null),"\nChain ID: 80001",(0,n.kt)("br",null),"\nSymbol: MATIC",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://mumbai.polygonscan.com/"},"https://mumbai.polygonscan.com/"),(0,n.kt)("br",null)),(0,n.kt)("h3",{id:"how-can-i-buy-uco-after-receiving-eth-matic-or-bnb"},"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?"),(0,n.kt)("p",null,"You will be able to buy some $UCO with $ETH / $MATIC or $BNB using the appropriate decentralized exchange (DEX) for your network.\nRemember to set the slippage according to the amount's impact on liquidity.\nHere's how you can do it for each network:"),(0,n.kt)("p",null,"ETH : ",(0,n.kt)("a",{parentName:"p",href:"https://app.uniswap.org/"},"https://app.uniswap.org/"),(0,n.kt)("br",null),"\n$UCO contract address: 0x8a3d77e9d6968b780564936d15B09805827C21fa",(0,n.kt)("br",null)),(0,n.kt)("p",null,"Polygon: ",(0,n.kt)("a",{parentName:"p",href:"https://app.uniswap.org/"},"https://app.uniswap.org/"),(0,n.kt)("br",null),"\n$UCO contract address: 0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc",(0,n.kt)("br",null)),(0,n.kt)("p",null,"BSC: ",(0,n.kt)("a",{parentName:"p",href:"https://pancakeswap.finance/liquidity?chain=bscTestnet"},"https://pancakeswap.finance/liquidity?chain=bscTestnet"),(0,n.kt)("br",null),"\n$UCO contract address: 0xb001f1e7c8bda414ac7cf7ecba5469fe8d24b6de",(0,n.kt)("br",null)),(0,n.kt)("p",null,"Ensure that you connect your wallet to the respective DEX platform and follow the instructions to make the swap."),(0,n.kt)("h2",{id:"issues-management"},"Issues management"),(0,n.kt)("h3",{id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer"},"What happens if a problem occurs, or I refuse a transaction during the transfer?"),(0,n.kt)("p",null,'During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "Refund" button available on your Archethic Bridge application.'),(0,n.kt)("h3",{id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do"},"If I sent the tokens to a wrong Mainnet address, what to do?"),(0,n.kt)("p",null,"You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1)."),(0,n.kt)("h3",{id:"can-i-help-the-developers-analyze-the-problems"},"Can I help the developers analyze the problems?"),(0,n.kt)("p",null,"You can help developers improve the application by submitting information that describes the state of the application.\nTo do this, you can copy/paste your transaction from your local history in the application."),(0,n.kt)("hr",null))}g.isMDXComponent=!0},2909:(e,t,i)=>{i.d(t,{Z:()=>a});const a="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTExcHgiIGhlaWdodD0iMTAycHgiIHZpZXdCb3g9IjAgMCAxMTEgMTAyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkJsb2NrY2hhbjwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cmVjdCBpZD0icGF0aC0xIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMjgiPjwvcmVjdD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJCcmlkZ2UiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJCbG9ja2NoYW4iPgogICAgICAgICAgICA8ZyBpZD0iQlNDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS4wMDAwMDAsIDAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSIjRjNCQTJGIiBjeD0iMjQiIGN5PSIyNCIgcj0iMjQiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikljb25zX3gyRl9pY29uLTI0X3gyRl9uZXR3b3Jrc194MkZfYmluYW5jZV94NUZfc21hcnRfeDVGX2NoYWluIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgOC4wMDAwMDApIiBmaWxsPSIjMTMxNDE1Ij4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjIxMDY2MywxOC41NTQ3OTY3IEwyNS44NDEzNTI0LDIyLjE2NTg1MzcgTDE2LDMyIEw2LjE2OTA1MDcyLDIyLjE2NTg1MzcgTDkuNzg5MzM2OCwxOC41NTQ3OTY3IEwxNiwyNC43Njc0Nzk3IEwyMi4yMjEwNjYzLDE4LjU1NDc5NjcgWiBNMTYsMTIuMzMxNzA3MyBMMTkuNjcyMzAxNywxNi4wMDUyMDMzIEwxOS42NzIzMDE3LDE2LjAwNTIwMzMgTDE5LjY3MjMwMTcsMTYuMDA1MjAzMyBMMTYsMTkuNjc4Njk5MiBMMTIuMzM4MTAxNCwxNi4wMTU2MDk4IEwxMi4zMzgxMDE0LDE2LjAwNTIwMzMgTDEyLjMzODEwMTQsMTYuMDA1MjAzMyBMMTIuOTgzMDk0OSwxNS4zNiBMMTMuMjk1MTg4NiwxNS4wNDc4MDQ5IEwxNiwxMi4zMzE3MDczIFogTTMuNjIwMjg2MDksMTIuMzgzNzM5OCBMNy4yNDA1NzIxNywxNi4wMDUyMDMzIEwzLjYyMDI4NjA5LDE5LjYxNjI2MDIgTDAsMTUuOTk0Nzk2NyBMMy42MjAyODYwOSwxMi4zODM3Mzk4IFogTTI4LjM3OTcxMzksMTIuMzgzNzM5OCBMMzIsMTYuMDA1MjAzMyBMMjguMzc5NzEzOSwxOS42MTYyNjAyIEwyNC43NTk0Mjc4LDE1Ljk5NDc5NjcgTDI4LjM3OTcxMzksMTIuMzgzNzM5OCBaIE0xNiwwIEwyNS44MzA5NDkzLDkuODM0MTQ2MzQgTDIyLjIxMDY2MzIsMTMuNDU1NjA5OCBMMTYsNy4yMzI1MjAzMyBMOS43ODkzMzY4LDEzLjQ0NTIwMzMgTDYuMTY5MDUwNzIsOS44MzQxNDYzNCBMMTYsMCBaIiBpZD0iQ29tYmluZWQtU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBpZD0iUG9seWdvbiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjMuMDAwMDAwLCA1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy45OTA1NTgsMCBMMjMuOTkwNTU4LDAgQzM3LjI1MTQ3NzIsMCA0OCwxMC43NDY0MDk2IDQ4LDI0LjAwNDcyMTYgTDQ4LDI0LjAwNDcyMTYgQzQ4LDM3LjI2MzAzMzYgMzcuMjUxNDc3Miw0OCAyNCw0OCBMMjQsNDggQzEwLjczOTA4MzksNDggMCwzNy4yNTM1OTA0IDAsMjQuMDA0NzIxNiBMMCwyNC4wMDQ3MjE2IEMtMC4wMDk0Mzg4NzkxLDEwLjc0NjQwOTYgMTAuNzM5MDgzOSwwIDIzLjk5MDU1OCwwIFoiIGlkPSJQYXRoIiBmaWxsPSIjODI0N0U1IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJDbGlwcGVkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgMTAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU1ZHSURfMV8iPjwvZz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTcwNTE5NCw4LjUyNzU3Nzk0IEMyMy41ODQ1MDkyLDguMTkxODQ2NTIgMjIuODM1MTg0Niw4LjE5MTg0NjUyIDIyLjE3MjMyMDYsOC41Mjc1Nzc5NCBMMTcuNTAzNDUyNCwxMS4yOTAxNjc5IEwxNC4zMzMyMzMzLDEzLjA0NTU2MzUgTDkuNzUwODI1NTgsMTUuNzk4NTYxMiBDOS4xNjQ4MTUzNywxNi4xMzQyOTI2IDguNDE1NDkwODQsMTYuMTM0MjkyNiA3Ljc1MjYyNjg0LDE1Ljc5ODU2MTIgTDQuMTY5MzE4NTIsMTMuNjIxMTAzMSBDMy41ODMzMDgzMiwxMy4yODUzNzE3IDMuMTcwMjE5MTUsMTIuNjEzOTA4OSAzLjE3MDIxOTE1LDExLjg2NTcwNzQgTDMuMTcwMjE5MTUsNy42ODM0NTMyNCBDMy4xNzAyMTkxNSw3LjAxMTk5MDQxIDMuNTA2NDU0NTIsNi4zNTAxMTk5IDQuMTY5MzE4NTIsNS45MjgwNTc1NSBMNy43NTI2MjY4NCwzLjgzNjkzMDQ2IEM4LjMzODYzNzA1LDMuNTAxMTk5MDQgOS4wODc5NjE1NywzLjUwMTE5OTA0IDkuNzUwODI1NTgsMy44MzY5MzA0NiBMMTMuMzM0MTMzOSw2LjAxNDM4ODQ5IEMxMy45MjAxNDQxLDYuMzUwMTE5OSAxNC4zMzMyMzMzLDcuMDIxNTgyNzMgMTQuMzMzMjMzMyw3Ljc2OTc4NDE3IEwxNC4zMzMyMzMzLDEwLjUzMjM3NDEgTDE3LjUwMzQ1MjQsOC42OTA2NDc0OCBMMTcuNTAzNDUyNCw1Ljg1MTMxODk0IEMxNy41MDM0NTI0LDUuMTc5ODU2MTIgMTcuMTY3MjE3MSw0LjUxNzk4NTYxIDE2LjUwNDM1Myw0LjA5NTkyMzI2IEw5LjgzNzI4NjEsMC4xNjMwNjk1NDQgQzkuMjUxMjc1ODksLTAuMTcyNjYxODcxIDguNTAxOTUxMzcsLTAuMTcyNjYxODcxIDcuODM5MDg3MzYsMC4xNjMwNjk1NDQgTDEuMDA4NzA2MDksNC4xODIyNTQyIEMwLjM0NTg0MjA4OSw0LjUxNzk4NTYxIDAuMDA5NjA2NzI0NzEsNS4xODk0NDg0NCAwLjAwOTYwNjcyNDcxLDUuODUxMzE4OTQgTDAuMDA5NjA2NzI0NzEsMTMuNzA3NDM0MSBDMC4wMDk2MDY3MjQ3MSwxNC4zNzg4OTY5IDAuMzQ1ODQyMDg5LDE1LjA0MDc2NzQgMS4wMDg3MDYwOSwxNS40NjI4Mjk3IEw3Ljc2MjIzMzU2LDE5LjM5NTY4MzUgQzguMzQ4MjQzNzcsMTkuNzMxNDE0OSA5LjA5NzU2ODMsMTkuNzMxNDE0OSA5Ljc2MDQzMjMsMTkuMzk1NjgzNSBMMTQuMzQyODQsMTYuNzE5NDI0NSBMMTcuNTEzMDU5MSwxNC44Nzc2OTc4IEwyMi4wOTU0NjY4LDEyLjIwMTQzODggQzIyLjY4MTQ3NywxMS44NjU3MDc0IDIzLjQzMDgwMTYsMTEuODY1NzA3NCAyNC4wOTM2NjU2LDEyLjIwMTQzODggTDI3LjY3Njk3MzksMTQuMjkyNTY1OSBDMjguMjYyOTg0MSwxNC42MjgyOTc0IDI4LjY3NjA3MzMsMTUuMjk5NzYwMiAyOC42NzYwNzMzLDE2LjA0Nzk2MTYgTDI4LjY3NjA3MzMsMjAuMjMwMjE1OCBDMjguNjc2MDczMywyMC45MDE2Nzg3IDI4LjMzOTgzNzksMjEuNTYzNTQ5MiAyNy42NzY5NzM5LDIxLjk4NTYxMTUgTDI0LjE4MDEyNjEsMjQuMDc2NzM4NiBDMjMuNTk0MTE1OSwyNC40MTI0NyAyMi44NDQ3OTE0LDI0LjQxMjQ3IDIyLjE4MTkyNzMsMjQuMDc2NzM4NiBMMTguNTg5MDEyMywyMS45ODU2MTE1IEMxOC4wMDMwMDIxLDIxLjY0OTg4MDEgMTcuNTg5OTEyOSwyMC45Nzg0MTczIDE3LjU4OTkxMjksMjAuMjMwMjE1OCBMMTcuNTg5OTEyOSwxNy41NTM5NTY4IEwxNC40MTk2OTM4LDE5LjM5NTY4MzUgTDE0LjQxOTY5MzgsMjIuMTU4MjczNCBDMTQuNDE5NjkzOCwyMi44Mjk3MzYyIDE0Ljc1NTkyOTIsMjMuNDkxNjA2NyAxNS40MTg3OTMyLDIzLjkxMzY2OTEgTDIyLjE3MjMyMDYsMjcuODQ2NTIyOCBDMjIuNzU4MzMwOCwyOC4xODIyNTQyIDIzLjUwNzY1NTQsMjguMTgyMjU0MiAyNC4xNzA1MTk0LDI3Ljg0NjUyMjggTDMwLjkyNDA0NjgsMjMuOTEzNjY5MSBDMzEuNTEwMDU3LDIzLjU3NzkzNzYgMzEuOTIzMTQ2MiwyMi45MDY0NzQ4IDMxLjkyMzE0NjIsMjIuMTU4MjczNCBMMzEuOTIzMTQ2MiwxNC4yMTU4MjczIEMzMS45MjMxNDYyLDEzLjU0NDM2NDUgMzEuNTg2OTEwOCwxMi44ODI0OTQgMzAuOTI0MDQ2OCwxMi40NjA0MzE3IEwyNC4xNzA1MTk0LDguNTI3NTc3OTQgWiIgaWQ9IlBhdGgiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkV0aGVyZXVtIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNTQuMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC00NSI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0iIzYyN0VFQSIgY3g9IjI0IiBjeT0iMjQiIHI9IjI0Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMjQuNzQ3OTQ5NyAxOS4zMDIzNTEgMzUuOTkzNDM5IDI0LjMyODA0ODEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF8xXyIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMTMuNTAyNDYwNCAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfMl8iIGZpbGwtb3BhY2l0eT0iMC42MDIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMi45NDkxNTI1IDI0Ljc0Nzk0OTcgNDEuOTkwMTU4NiAzNiAyNi40MjA5OTUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfM18iIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyA0MS45OTAxNTg2IDI0Ljc0Nzk0OTcgMzIuOTQ5MTUyNSAxMy41MDI0NjA0IDI2LjQyMDk5NTEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF80XyIgZmlsbC1vcGFjaXR5PSIwLjIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMC44NTYyMDU2IDM1Ljk5MzQzOSAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF81XyIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxNCAyNC4yMTk3NjE1IDI1IDMxIDI1IDE5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9333],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>u});var a=i(7294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function s(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var o=a.createContext({}),M=function(e){var t=a.useContext(o),i=t;return e&&(i="function"==typeof e?e(t):s(s({},t),e)),i},h=function(e){var t=M(e.components);return a.createElement(o.Provider,{value:t},e.children)},l="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},I=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,r=e.originalType,o=e.parentName,h=c(e,["components","mdxType","originalType","parentName"]),l=M(i),I=n,u=l["".concat(o,".").concat(I)]||l[I]||g[I]||r;return i?a.createElement(u,s(s({ref:t},h),{},{components:i})):a.createElement(u,s({ref:t},h))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=i.length,s=new Array(r);s[0]=I;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[l]="string"==typeof e?e:n,s[1]=c;for(var M=2;M{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>s,default:()=>g,frontMatter:()=>r,metadata:()=>c,toc:()=>M});var a=i(7462),n=(i(7294),i(3905));i(8209);const r={id:"bridge-2-ways",title:"Archethic Bridge 2-ways"},s=void 0,c={unversionedId:"FAQ/bridge-2-ways",id:"FAQ/bridge-2-ways",title:"Archethic Bridge 2-ways",description:"General",source:"@site/docs/FAQ/bridge-2-ways.md",sourceDirName:"FAQ",slug:"/FAQ/bridge-2-ways",permalink:"/FAQ/bridge-2-ways",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"bridge-2-ways",title:"Archethic Bridge 2-ways"},sidebar:"docs",previous:{title:"AEWeb",permalink:"/FAQ/aeweb"},next:{title:"Archethic Bridge $UCO one-way",permalink:"/FAQ/bridge"}},o={},M=[{value:"General",id:"general",level:2},{value:"What is Archethic Bridge two-ways?",id:"what-is-archethic-bridge-two-ways",level:3},{value:"How to access the Archethic Bridge ?",id:"how-to-access-the-archethic-bridge-",level:3},{value:"Which blockchain is better to bridge my UCOs?",id:"which-blockchain-is-better-to-bridge-my-ucos",level:3},{value:"What blockchains does the Archethic Bridge support?",id:"what-blockchains-does-the-archethic-bridge-support",level:3},{value:"Is the Archethic Bridge available on mobile devices?",id:"is-the-archethic-bridge-available-on-mobile-devices",level:3},{value:"What is an EVM wallet?",id:"what-is-an-evm-wallet",level:3},{value:"How is the price of $UCO estimated?",id:"how-is-the-price-of-uco-estimated",level:3},{value:"How long is the predetermined time?",id:"how-long-is-the-predetermined-time",level:3},{value:"Key Concepts",id:"key-concepts",level:2},{value:"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?",id:"what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge",level:3},{value:"How does Archethic's cross-chain verification work?",id:"how-does-archethics-cross-chain-verification-work",level:3},{value:"What is the Safety Module in Archethic's bridge?",id:"what-is-the-safety-module-in-archethics-bridge",level:3},{value:"Specifics of Bridging",id:"specifics-of-bridging",level:2},{value:"How does the process of bridging from EVM to Archethic work?",id:"how-does-the-process-of-bridging-from-evm-to-archethic-work",level:3},{value:"What is the process for bridging from Archethic to EVM?",id:"what-is-the-process-for-bridging-from-archethic-to-evm",level:3},{value:"Wallet",id:"wallet",level:2},{value:"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?",id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet",level:3},{value:"Why can't I connect to the Archethic wallet with my Brave browser?",id:"why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser",level:3},{value:"Testnet",id:"testnet",level:2},{value:"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?",id:"how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet",level:3},{value:"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?",id:"how-can-i-buy-uco-after-receiving-eth-matic-or-bnb",level:3},{value:"Issues management",id:"issues-management",level:2},{value:"What happens if a problem occurs, or I refuse a transaction during the transfer?",id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer",level:3},{value:"If I sent the tokens to a wrong Mainnet address, what to do?",id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do",level:3},{value:"Can I help the developers analyze the problems?",id:"can-i-help-the-developers-analyze-the-problems",level:3}],h={toc:M},l="wrapper";function g(e){let{components:t,...r}=e;return(0,n.kt)(l,(0,a.Z)({},h,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"general"},"General"),(0,n.kt)("h3",{id:"what-is-archethic-bridge-two-ways"},"What is Archethic Bridge two-ways?"),(0,n.kt)("p",null,"The Archethic Bridge two-ways is a decentralized, peer-to-peer bridge that enables the seamless exchange of UCO ERC20 tokens and other major cryptocurrencies like ETH, MATIC, and BNB between the Archethic blockchain and various other blockchains, including Ethereum, Polygon, and BSC. This functionality allows for the transfer of these assets into their equivalent forms on Archethic, such as aeETH, aeMATIC, and aeBNB, providing a secure and straightforward method for exchanging assets. The bridge utilizes atomic swap technology, specifically Hash Time Lock Contracts (HTLC), to facilitate secure and intermediary-free transactions. Moreover, it incorporates Archethic's unique cross-chain verification technique, enhancing the security and decentralization of these exchanges. This two-way bridge significantly expands the interoperability between Archethic and other blockchain networks, allowing for greater flexibility and integration within the broader blockchain ecosystem."),(0,n.kt)("h3",{id:"how-to-access-the-archethic-bridge-"},"How to access the Archethic Bridge ?"),(0,n.kt)("p",null,"You can access the bridge at : ",(0,n.kt)("a",{parentName:"p",href:"https://bridge.testnet.archethic.net"},"https://bridge.testnet.archethic.net")),(0,n.kt)("h3",{id:"which-blockchain-is-better-to-bridge-my-ucos"},"Which blockchain is better to bridge my UCOs?"),(0,n.kt)("p",null,"Using the 3 blockchains, the result will be the same, but fees are not the same between ETH/MATIC/BSC.\nMATIC has the lowest fees."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"bridge-blockchains",src:i(2909).Z,width:"111",height:"102"})),(0,n.kt)("h3",{id:"what-blockchains-does-the-archethic-bridge-support"},"What blockchains does the Archethic Bridge support?"),(0,n.kt)("p",null,"The Archethic Bridge currently supports bridging between the Archethic blockchain and various EVM (Ethereum Virtual Machine) compatible blockchains."),(0,n.kt)("h3",{id:"is-the-archethic-bridge-available-on-mobile-devices"},"Is the Archethic Bridge available on mobile devices?"),(0,n.kt)("p",null,"No, the Archethic Bridge application is designed exclusively for desktop use and is compatible with macOS, Linux, and Windows operating systems."),(0,n.kt)("h3",{id:"what-is-an-evm-wallet"},"What is an EVM wallet?"),(0,n.kt)("p",null,"An EVM (Ethereum Virtual Machine) wallet is a digital wallet designed to interact with blockchains that are compatible with the Ethereum Virtual Machine. EVM wallets can store, send, and receive Ether (ETH) and other EVM-compatible tokens, execute smart contracts, and interact with decentralized applications (dApps) on EVM-compatible networks."),(0,n.kt)("h3",{id:"how-is-the-price-of-uco-estimated"},"How is the price of $UCO estimated?"),(0,n.kt)("p",null,"The price of $UCO is determined using an Archethic Oracle that consolidates information from various sources, including Coingecko and CoinMarketCap."),(0,n.kt)("h3",{id:"how-long-is-the-predetermined-time"},"How long is the predetermined time?"),(0,n.kt)("p",null,"The timelock lasts 2 hours."),(0,n.kt)("h2",{id:"key-concepts"},"Key Concepts"),(0,n.kt)("h3",{id:"what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge"},"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?"),(0,n.kt)("p",null,"HTLC stands for Hash Time Lock Contract. In Archethic's bridge, it is a type of contract used in atomic swaps to securely exchange assets in a peer-to-peer manner without intermediaries. These contracts lock funds until a secret is revealed or a specified time period elapses, ensuring a secure and reversible asset exchange."),(0,n.kt)("h3",{id:"how-does-archethics-cross-chain-verification-work"},"How does Archethic's cross-chain verification work?"),(0,n.kt)("p",null,"Archethic's cross-chain verification enhances atomic swaps by allowing data retrieval outside of the blockchain. This makes the process fully decentralized and strengthens the security model. Archethic's nodes can verify transaction status on other chains, like EVM blockchains, establishing a strong consensus on the status of a swap."),(0,n.kt)("h3",{id:"what-is-the-safety-module-in-archethics-bridge"},"What is the Safety Module in Archethic's bridge?"),(0,n.kt)("p",null,"The Safety Module in Archethic's bridge is a reserve of tokens designed to mitigate risks associated with asset bridging. It addresses potential deficiencies and disruptions in bridge operations by providing a token reserve that matches the amount in each pool at launch. This module is funded by fees from transfers and is managed by a multisignature wallet governed by the bridge's governance."),(0,n.kt)("h2",{id:"specifics-of-bridging"},"Specifics of Bridging"),(0,n.kt)("h3",{id:"how-does-the-process-of-bridging-from-evm-to-archethic-work"},"How does the process of bridging from EVM to Archethic work?"),(0,n.kt)("p",null,"To bridge from EVM to Archethic, a user deploys an HTLC smart contract on both blockchains. The process involves locking funds using a secret and its hash, verifying the transaction across chains, minting new tokens on Archethic, and transferring funds to respective recipient wallets. The entire process is secured by atomic swaps and Archethic's cross-chain verification."),(0,n.kt)("h3",{id:"what-is-the-process-for-bridging-from-archethic-to-evm"},"What is the process for bridging from Archethic to EVM?"),(0,n.kt)("p",null,"Bridging from Archethic to EVM follows a similar pattern but in reverse. It introduces an additional step where EVM cannot directly request information from the blockchain. Instead, cryptography is used to assert actions through signatures, ensuring non-repudiation. This involves creating and funding HTLC contracts on both blockchains, revealing secrets, and transferring funds securely."),(0,n.kt)("h2",{id:"wallet"},"Wallet"),(0,n.kt)("h3",{id:"im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet"},"I\u2019m using the Mainnet network in the Wallet, how can I switch on the Testnet?"),(0,n.kt)("p",null,"The switch is not possible because the seed is not shared between Mainnet and Testnet. Later, the wallet will be multiseeds, but not for the moment. The only way for the moment is to remove the Wallet (don\u2019t forget the 24 words) and create/import a wallet on the Testnet network."),(0,n.kt)("h3",{id:"why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser"},"Why can't I connect to the Archethic wallet with my Brave browser?"),(0,n.kt)("p",null,"Brave includes a shield feature that might block certain local connections.\nTo successfully connect to the Archethic wallet, you'll need to modify the Brave browser\u2019s shield settings as per its documentation"),(0,n.kt)("h2",{id:"testnet"},"Testnet"),(0,n.kt)("h3",{id:"how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet"},"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?"),(0,n.kt)("p",null,"To configure these networks in your EVM Wallet, you'll need to go to the wallet's settings and manually add each network using the Chain ID and Explorer URL provided above."),(0,n.kt)("p",null,"Ethereum Sepolia Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/11155111"},"https://chainlist.org/chain/11155111"),(0,n.kt)("br",null),"\nChain ID: 11155111",(0,n.kt)("br",null),"\nSymbol: ETH",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://sepolia.etherscan.io/"},"https://sepolia.etherscan.io/"),(0,n.kt)("br",null)),(0,n.kt)("p",null,"Binance Smart Chain Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/97"},"https://chainlist.org/chain/97"),(0,n.kt)("br",null),"\nChain ID: 97",(0,n.kt)("br",null),"\nSymbol: tBNB",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://testnet.bscscan.com/"},"https://testnet.bscscan.com/"),(0,n.kt)("br",null)),(0,n.kt)("p",null,"Polygon Mumbai Testnet:",(0,n.kt)("br",null),"\nURL RPC: Choose a RPC server address: ",(0,n.kt)("a",{parentName:"p",href:"https://chainlist.org/chain/80001"},"https://chainlist.org/chain/80001"),(0,n.kt)("br",null),"\nChain ID: 80001",(0,n.kt)("br",null),"\nSymbol: MATIC",(0,n.kt)("br",null),"\nExplorer URL: ",(0,n.kt)("a",{parentName:"p",href:"https://mumbai.polygonscan.com/"},"https://mumbai.polygonscan.com/"),(0,n.kt)("br",null)),(0,n.kt)("h3",{id:"how-can-i-buy-uco-after-receiving-eth-matic-or-bnb"},"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?"),(0,n.kt)("p",null,"You will be able to buy some $UCO with $ETH / $MATIC or $BNB using the appropriate decentralized exchange (DEX) for your network.\nRemember to set the slippage according to the amount's impact on liquidity.\nHere's how you can do it for each network:"),(0,n.kt)("p",null,"ETH : ",(0,n.kt)("a",{parentName:"p",href:"https://app.uniswap.org/"},"https://app.uniswap.org/"),(0,n.kt)("br",null),"\n$UCO contract address: 0x8a3d77e9d6968b780564936d15B09805827C21fa",(0,n.kt)("br",null)),(0,n.kt)("p",null,"Polygon: ",(0,n.kt)("a",{parentName:"p",href:"https://app.uniswap.org/"},"https://app.uniswap.org/"),(0,n.kt)("br",null),"\n$UCO contract address: 0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc",(0,n.kt)("br",null)),(0,n.kt)("p",null,"BSC: ",(0,n.kt)("a",{parentName:"p",href:"https://pancakeswap.finance/liquidity?chain=bscTestnet"},"https://pancakeswap.finance/liquidity?chain=bscTestnet"),(0,n.kt)("br",null),"\n$UCO contract address: 0xb001f1e7c8bda414ac7cf7ecba5469fe8d24b6de",(0,n.kt)("br",null)),(0,n.kt)("p",null,"Ensure that you connect your wallet to the respective DEX platform and follow the instructions to make the swap."),(0,n.kt)("h2",{id:"issues-management"},"Issues management"),(0,n.kt)("h3",{id:"what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer"},"What happens if a problem occurs, or I refuse a transaction during the transfer?"),(0,n.kt)("p",null,'During the delay of the acknowledgment, you should wait for the end of the duration, and you can tell the refund of your ERC20 Wallet with the "Refund" button available on your Archethic Bridge application.'),(0,n.kt)("h3",{id:"if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do"},"If I sent the tokens to a wrong Mainnet address, what to do?"),(0,n.kt)("p",null,"You lose the tokens if the Mainnet address is not your address. Same thing if you do an error in the address (for example a 0 instead of 1)."),(0,n.kt)("h3",{id:"can-i-help-the-developers-analyze-the-problems"},"Can I help the developers analyze the problems?"),(0,n.kt)("p",null,"You can help developers improve the application by submitting information that describes the state of the application.\nTo do this, you can copy/paste your transaction from your local history in the application."),(0,n.kt)("hr",null))}g.isMDXComponent=!0},2909:(e,t,i)=>{i.d(t,{Z:()=>a});const a="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTExcHgiIGhlaWdodD0iMTAycHgiIHZpZXdCb3g9IjAgMCAxMTEgMTAyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkJsb2NrY2hhbjwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cmVjdCBpZD0icGF0aC0xIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMjgiPjwvcmVjdD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJCcmlkZ2UiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJCbG9ja2NoYW4iPgogICAgICAgICAgICA8ZyBpZD0iQlNDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS4wMDAwMDAsIDAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSIjRjNCQTJGIiBjeD0iMjQiIGN5PSIyNCIgcj0iMjQiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikljb25zX3gyRl9pY29uLTI0X3gyRl9uZXR3b3Jrc194MkZfYmluYW5jZV94NUZfc21hcnRfeDVGX2NoYWluIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgOC4wMDAwMDApIiBmaWxsPSIjMTMxNDE1Ij4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjIxMDY2MywxOC41NTQ3OTY3IEwyNS44NDEzNTI0LDIyLjE2NTg1MzcgTDE2LDMyIEw2LjE2OTA1MDcyLDIyLjE2NTg1MzcgTDkuNzg5MzM2OCwxOC41NTQ3OTY3IEwxNiwyNC43Njc0Nzk3IEwyMi4yMjEwNjYzLDE4LjU1NDc5NjcgWiBNMTYsMTIuMzMxNzA3MyBMMTkuNjcyMzAxNywxNi4wMDUyMDMzIEwxOS42NzIzMDE3LDE2LjAwNTIwMzMgTDE5LjY3MjMwMTcsMTYuMDA1MjAzMyBMMTYsMTkuNjc4Njk5MiBMMTIuMzM4MTAxNCwxNi4wMTU2MDk4IEwxMi4zMzgxMDE0LDE2LjAwNTIwMzMgTDEyLjMzODEwMTQsMTYuMDA1MjAzMyBMMTIuOTgzMDk0OSwxNS4zNiBMMTMuMjk1MTg4NiwxNS4wNDc4MDQ5IEwxNiwxMi4zMzE3MDczIFogTTMuNjIwMjg2MDksMTIuMzgzNzM5OCBMNy4yNDA1NzIxNywxNi4wMDUyMDMzIEwzLjYyMDI4NjA5LDE5LjYxNjI2MDIgTDAsMTUuOTk0Nzk2NyBMMy42MjAyODYwOSwxMi4zODM3Mzk4IFogTTI4LjM3OTcxMzksMTIuMzgzNzM5OCBMMzIsMTYuMDA1MjAzMyBMMjguMzc5NzEzOSwxOS42MTYyNjAyIEwyNC43NTk0Mjc4LDE1Ljk5NDc5NjcgTDI4LjM3OTcxMzksMTIuMzgzNzM5OCBaIE0xNiwwIEwyNS44MzA5NDkzLDkuODM0MTQ2MzQgTDIyLjIxMDY2MzIsMTMuNDU1NjA5OCBMMTYsNy4yMzI1MjAzMyBMOS43ODkzMzY4LDEzLjQ0NTIwMzMgTDYuMTY5MDUwNzIsOS44MzQxNDYzNCBMMTYsMCBaIiBpZD0iQ29tYmluZWQtU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBpZD0iUG9seWdvbiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjMuMDAwMDAwLCA1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy45OTA1NTgsMCBMMjMuOTkwNTU4LDAgQzM3LjI1MTQ3NzIsMCA0OCwxMC43NDY0MDk2IDQ4LDI0LjAwNDcyMTYgTDQ4LDI0LjAwNDcyMTYgQzQ4LDM3LjI2MzAzMzYgMzcuMjUxNDc3Miw0OCAyNCw0OCBMMjQsNDggQzEwLjczOTA4MzksNDggMCwzNy4yNTM1OTA0IDAsMjQuMDA0NzIxNiBMMCwyNC4wMDQ3MjE2IEMtMC4wMDk0Mzg4NzkxLDEwLjc0NjQwOTYgMTAuNzM5MDgzOSwwIDIzLjk5MDU1OCwwIFoiIGlkPSJQYXRoIiBmaWxsPSIjODI0N0U1IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJDbGlwcGVkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4LjAwMDAwMCwgMTAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU1ZHSURfMV8iPjwvZz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTcwNTE5NCw4LjUyNzU3Nzk0IEMyMy41ODQ1MDkyLDguMTkxODQ2NTIgMjIuODM1MTg0Niw4LjE5MTg0NjUyIDIyLjE3MjMyMDYsOC41Mjc1Nzc5NCBMMTcuNTAzNDUyNCwxMS4yOTAxNjc5IEwxNC4zMzMyMzMzLDEzLjA0NTU2MzUgTDkuNzUwODI1NTgsMTUuNzk4NTYxMiBDOS4xNjQ4MTUzNywxNi4xMzQyOTI2IDguNDE1NDkwODQsMTYuMTM0MjkyNiA3Ljc1MjYyNjg0LDE1Ljc5ODU2MTIgTDQuMTY5MzE4NTIsMTMuNjIxMTAzMSBDMy41ODMzMDgzMiwxMy4yODUzNzE3IDMuMTcwMjE5MTUsMTIuNjEzOTA4OSAzLjE3MDIxOTE1LDExLjg2NTcwNzQgTDMuMTcwMjE5MTUsNy42ODM0NTMyNCBDMy4xNzAyMTkxNSw3LjAxMTk5MDQxIDMuNTA2NDU0NTIsNi4zNTAxMTk5IDQuMTY5MzE4NTIsNS45MjgwNTc1NSBMNy43NTI2MjY4NCwzLjgzNjkzMDQ2IEM4LjMzODYzNzA1LDMuNTAxMTk5MDQgOS4wODc5NjE1NywzLjUwMTE5OTA0IDkuNzUwODI1NTgsMy44MzY5MzA0NiBMMTMuMzM0MTMzOSw2LjAxNDM4ODQ5IEMxMy45MjAxNDQxLDYuMzUwMTE5OSAxNC4zMzMyMzMzLDcuMDIxNTgyNzMgMTQuMzMzMjMzMyw3Ljc2OTc4NDE3IEwxNC4zMzMyMzMzLDEwLjUzMjM3NDEgTDE3LjUwMzQ1MjQsOC42OTA2NDc0OCBMMTcuNTAzNDUyNCw1Ljg1MTMxODk0IEMxNy41MDM0NTI0LDUuMTc5ODU2MTIgMTcuMTY3MjE3MSw0LjUxNzk4NTYxIDE2LjUwNDM1Myw0LjA5NTkyMzI2IEw5LjgzNzI4NjEsMC4xNjMwNjk1NDQgQzkuMjUxMjc1ODksLTAuMTcyNjYxODcxIDguNTAxOTUxMzcsLTAuMTcyNjYxODcxIDcuODM5MDg3MzYsMC4xNjMwNjk1NDQgTDEuMDA4NzA2MDksNC4xODIyNTQyIEMwLjM0NTg0MjA4OSw0LjUxNzk4NTYxIDAuMDA5NjA2NzI0NzEsNS4xODk0NDg0NCAwLjAwOTYwNjcyNDcxLDUuODUxMzE4OTQgTDAuMDA5NjA2NzI0NzEsMTMuNzA3NDM0MSBDMC4wMDk2MDY3MjQ3MSwxNC4zNzg4OTY5IDAuMzQ1ODQyMDg5LDE1LjA0MDc2NzQgMS4wMDg3MDYwOSwxNS40NjI4Mjk3IEw3Ljc2MjIzMzU2LDE5LjM5NTY4MzUgQzguMzQ4MjQzNzcsMTkuNzMxNDE0OSA5LjA5NzU2ODMsMTkuNzMxNDE0OSA5Ljc2MDQzMjMsMTkuMzk1NjgzNSBMMTQuMzQyODQsMTYuNzE5NDI0NSBMMTcuNTEzMDU5MSwxNC44Nzc2OTc4IEwyMi4wOTU0NjY4LDEyLjIwMTQzODggQzIyLjY4MTQ3NywxMS44NjU3MDc0IDIzLjQzMDgwMTYsMTEuODY1NzA3NCAyNC4wOTM2NjU2LDEyLjIwMTQzODggTDI3LjY3Njk3MzksMTQuMjkyNTY1OSBDMjguMjYyOTg0MSwxNC42MjgyOTc0IDI4LjY3NjA3MzMsMTUuMjk5NzYwMiAyOC42NzYwNzMzLDE2LjA0Nzk2MTYgTDI4LjY3NjA3MzMsMjAuMjMwMjE1OCBDMjguNjc2MDczMywyMC45MDE2Nzg3IDI4LjMzOTgzNzksMjEuNTYzNTQ5MiAyNy42NzY5NzM5LDIxLjk4NTYxMTUgTDI0LjE4MDEyNjEsMjQuMDc2NzM4NiBDMjMuNTk0MTE1OSwyNC40MTI0NyAyMi44NDQ3OTE0LDI0LjQxMjQ3IDIyLjE4MTkyNzMsMjQuMDc2NzM4NiBMMTguNTg5MDEyMywyMS45ODU2MTE1IEMxOC4wMDMwMDIxLDIxLjY0OTg4MDEgMTcuNTg5OTEyOSwyMC45Nzg0MTczIDE3LjU4OTkxMjksMjAuMjMwMjE1OCBMMTcuNTg5OTEyOSwxNy41NTM5NTY4IEwxNC40MTk2OTM4LDE5LjM5NTY4MzUgTDE0LjQxOTY5MzgsMjIuMTU4MjczNCBDMTQuNDE5NjkzOCwyMi44Mjk3MzYyIDE0Ljc1NTkyOTIsMjMuNDkxNjA2NyAxNS40MTg3OTMyLDIzLjkxMzY2OTEgTDIyLjE3MjMyMDYsMjcuODQ2NTIyOCBDMjIuNzU4MzMwOCwyOC4xODIyNTQyIDIzLjUwNzY1NTQsMjguMTgyMjU0MiAyNC4xNzA1MTk0LDI3Ljg0NjUyMjggTDMwLjkyNDA0NjgsMjMuOTEzNjY5MSBDMzEuNTEwMDU3LDIzLjU3NzkzNzYgMzEuOTIzMTQ2MiwyMi45MDY0NzQ4IDMxLjkyMzE0NjIsMjIuMTU4MjczNCBMMzEuOTIzMTQ2MiwxNC4yMTU4MjczIEMzMS45MjMxNDYyLDEzLjU0NDM2NDUgMzEuNTg2OTEwOCwxMi44ODI0OTQgMzAuOTI0MDQ2OCwxMi40NjA0MzE3IEwyNC4xNzA1MTk0LDguNTI3NTc3OTQgWiIgaWQ9IlBhdGgiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkV0aGVyZXVtIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNTQuMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC00NSI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0iIzYyN0VFQSIgY3g9IjI0IiBjeT0iMjQiIHI9IjI0Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMjQuNzQ3OTQ5NyAxOS4zMDIzNTEgMzUuOTkzNDM5IDI0LjMyODA0ODEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF8xXyIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIyNC43NDc5NDk3IDUuOTk2NzE5NTIgMTMuNTAyNDYwNCAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfMl8iIGZpbGwtb3BhY2l0eT0iMC42MDIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMi45NDkxNTI1IDI0Ljc0Nzk0OTcgNDEuOTkwMTU4NiAzNiAyNi40MjA5OTUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGhfM18iIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyA0MS45OTAxNTg2IDI0Ljc0Nzk0OTcgMzIuOTQ5MTUyNSAxMy41MDI0NjA0IDI2LjQyMDk5NTEiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF80XyIgZmlsbC1vcGFjaXR5PSIwLjIiIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iMjQuNzQ3OTQ5NyAzMC44NTYyMDU2IDM1Ljk5MzQzOSAyNC4zMjgwNDgxIDI0Ljc0Nzk0OTcgMTkuMzAyMzUxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aF81XyIgZmlsbC1vcGFjaXR5PSIwLjYwMiIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxNCAyNC4yMTk3NjE1IDI1IDMxIDI1IDE5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file diff --git a/assets/js/f5288705.cea4e03b.js b/assets/js/f5288705.57da98d0.js similarity index 98% rename from assets/js/f5288705.cea4e03b.js rename to assets/js/f5288705.57da98d0.js index 8a36639b7..7fb35b5d5 100644 --- a/assets/js/f5288705.cea4e03b.js +++ b/assets/js/f5288705.57da98d0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6087],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),i=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=i(a),p=r,y=d["".concat(c,".").concat(p)]||d[p]||u[p]||s;return a?n.createElement(y,o(o({ref:t},m),{},{components:a})):n.createElement(y,o({ref:t},m))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>p,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>m});var n=a(7462),r=a(7294),s=a(3905);a(8209);const o={id:"transaction-summary",title:"TransactionSummary",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/objects/transaction-summary",id:"build/api/schema/objects/transaction-summary",title:"TransactionSummary",description:"[Transaction Summary] Represents transaction header or extract to summarize it",source:"@site/docs/build/api/schema/objects/transaction-summary.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-summary",permalink:"/build/api/schema/objects/transaction-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"transaction-summary",title:"TransactionSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionMovement",permalink:"/build/api/schema/objects/transaction-movement"},next:{title:"Transaction",permalink:"/build/api/schema/objects/transaction"}},i={},m=[{value:"Fields",id:"fields",level:3},{value:'TransactionSummary.addressAddress ',id:"code-style-fontweight-normal-transactionsummarybaddressbcodeaddress-",level:4},{value:'TransactionSummary.feeInt ',id:"code-style-fontweight-normal-transactionsummarybfeebcodeint-",level:4},{value:'TransactionSummary.movementsAddresses[Address] ',id:"code-style-fontweight-normal-transactionsummarybmovementsaddressesbcodeaddress--",level:4},{value:'TransactionSummary.timestampTimestamp ',id:"code-style-fontweight-normal-transactionsummarybtimestampbcodetimestamp-",level:4},{value:'TransactionSummary.typeString ',id:"code-style-fontweight-normal-transactionsummarybtypebcodestring-",level:4},{value:'TransactionSummary.validationStampChecksumHash ',id:"code-style-fontweight-normal-transactionsummarybvalidationstampchecksumbcodehash-",level:4},{value:"Member of",id:"member-of",level:3}],d=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),p=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:d,SpecifiedBy:u,Badge:p},b="wrapper";function f(e){let{components:t,...a}=e;return(0,s.kt)(b,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"[Transaction Summary]"," Represents transaction header or extract to summarize it"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionSummary {\n address: Address\n fee: Int\n movementsAddresses: [Address]\n timestamp: Timestamp\n type: String\n validationStampChecksum: Hash\n}\n")),(0,s.kt)("h3",{id:"fields"},"Fields"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybaddressbcodeaddress-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"address"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybfeebcodeint-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"fee"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,s.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybmovementsaddressesbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"movementsAddresses"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"[Address]"))," ",(0,s.kt)(p,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybtimestampbcodetimestamp-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"timestamp"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,s.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybtypebcodestring-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"type"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,s.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybvalidationstampchecksumbcodehash-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"validationStampChecksum"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hash"},(0,s.kt)("inlineCode",{parentName:"a"},"Hash"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,s.kt)(p,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6087],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>y});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),i=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=i(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=i(a),p=r,y=d["".concat(c,".").concat(p)]||d[p]||u[p]||s;return a?n.createElement(y,o(o({ref:t},m),{},{components:a})):n.createElement(y,o({ref:t},m))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var i=2;i{a.r(t),a.d(t,{Badge:()=>p,Bullet:()=>d,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>m});var n=a(7462),r=a(7294),s=a(3905);a(8209);const o={id:"transaction-summary",title:"TransactionSummary",hide_table_of_contents:!1},l=void 0,c={unversionedId:"build/api/schema/objects/transaction-summary",id:"build/api/schema/objects/transaction-summary",title:"TransactionSummary",description:"[Transaction Summary] Represents transaction header or extract to summarize it",source:"@site/docs/build/api/schema/objects/transaction-summary.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/transaction-summary",permalink:"/build/api/schema/objects/transaction-summary",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"transaction-summary",title:"TransactionSummary",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"TransactionMovement",permalink:"/build/api/schema/objects/transaction-movement"},next:{title:"Transaction",permalink:"/build/api/schema/objects/transaction"}},i={},m=[{value:"Fields",id:"fields",level:3},{value:'TransactionSummary.addressAddress ',id:"code-style-fontweight-normal-transactionsummarybaddressbcodeaddress-",level:4},{value:'TransactionSummary.feeInt ',id:"code-style-fontweight-normal-transactionsummarybfeebcodeint-",level:4},{value:'TransactionSummary.movementsAddresses[Address] ',id:"code-style-fontweight-normal-transactionsummarybmovementsaddressesbcodeaddress--",level:4},{value:'TransactionSummary.timestampTimestamp ',id:"code-style-fontweight-normal-transactionsummarybtimestampbcodetimestamp-",level:4},{value:'TransactionSummary.typeString ',id:"code-style-fontweight-normal-transactionsummarybtypebcodestring-",level:4},{value:'TransactionSummary.validationStampChecksumHash ',id:"code-style-fontweight-normal-transactionsummarybvalidationstampchecksumbcodehash-",level:4},{value:"Member of",id:"member-of",level:3}],d=()=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,s.kt)(r.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),p=e=>(0,s.kt)(r.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),y={toc:m,Bullet:d,SpecifiedBy:u,Badge:p},b="wrapper";function f(e){let{components:t,...a}=e;return(0,s.kt)(b,(0,n.Z)({},y,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"[Transaction Summary]"," Represents transaction header or extract to summarize it"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"type TransactionSummary {\n address: Address\n fee: Int\n movementsAddresses: [Address]\n timestamp: Timestamp\n type: String\n validationStampChecksum: Hash\n}\n")),(0,s.kt)("h3",{id:"fields"},"Fields"),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybaddressbcodeaddress-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"address"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"Address"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybfeebcodeint-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"fee"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/int"},(0,s.kt)("inlineCode",{parentName:"a"},"Int"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybmovementsaddressesbcodeaddress--"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"movementsAddresses"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/address"},(0,s.kt)("inlineCode",{parentName:"a"},"[Address]"))," ",(0,s.kt)(p,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybtimestampbcodetimestamp-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"timestamp"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/timestamp"},(0,s.kt)("inlineCode",{parentName:"a"},"Timestamp"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybtypebcodestring-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"type"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/string"},(0,s.kt)("inlineCode",{parentName:"a"},"String"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h4",{id:"code-style-fontweight-normal-transactionsummarybvalidationstampchecksumbcodehash-"},(0,s.kt)("a",{parentName:"h4",href:"#"},(0,s.kt)("code",{style:{fontWeight:"normal"}},"TransactionSummary.",(0,s.kt)("b",null,"validationStampChecksum"))),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"h4",href:"/build/api/schema/scalars/hash"},(0,s.kt)("inlineCode",{parentName:"a"},"Hash"))," ",(0,s.kt)(p,{class:"secondary",text:"scalar",mdxType:"Badge"})),(0,s.kt)("blockquote",null),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/beacon-chain-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"BeaconChainSummary"))," ",(0,s.kt)(p,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/f57a1375.96144408.js b/assets/js/f57a1375.ee36a749.js similarity index 97% rename from assets/js/f57a1375.96144408.js rename to assets/js/f57a1375.ee36a749.js index 14bb87509..01e753f68 100644 --- a/assets/js/f57a1375.96144408.js +++ b/assets/js/f57a1375.ee36a749.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[330],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(r),m=o,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||a;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"code-proposals-ci",title:"CI"},i=void 0,c={unversionedId:"build/core/governance/code-proposals-ci",id:"build/core/governance/code-proposals-ci",title:"CI",description:"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI.",source:"@site/docs/build/core/governance/ci.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals-ci",permalink:"/build/core/governance/code-proposals-ci",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"code-proposals-ci",title:"CI"},sidebar:"docs",previous:{title:"CD",permalink:"/build/core/governance/code-proposals-cd"},next:{title:"Code Proposals",permalink:"/build/core/governance/code-proposals"}},l={},p=[],s={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI."),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic-ci")," target produces an image with build tools.\nIts goal is to compile the source code into ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic_node")," release.\nThe CI part is powered by ",(0,o.kt)("inlineCode",{parentName:"p"},"scripts/proposal_ci_job.sh"),".\nThe script runs in a container named ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic-prop-{address}"),", it produces: release upgrade of ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic_node")," and combined log of application of a code proposal to the source code, execution of unit tests, and log from linter. The log can be obtained with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker logs"),", the release upgrade and the validator with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker cp"),", after that the container can be disposed."),(0,o.kt)("p",null,"the logs are collected in ",(0,o.kt)("inlineCode",{parentName:"p"},"ci_logfile.txt")," and this file is copied at the end to tmp directory created in filesystem."),(0,o.kt)("p",null,"the script runs multiple commands:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Creates a branch prop_{proposal_address}"),(0,o.kt)("li",{parentName:"ul"},"Apply the changes to the branch"),(0,o.kt)("li",{parentName:"ul"},"Add the changes and commit"),(0,o.kt)("li",{parentName:"ul"},"Checking if the project is formatted correctly"),(0,o.kt)("li",{parentName:"ul"},"Check if the project compiles without warning"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/rrrene/credo"},"Credo")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/nccgroup/sobelow"},"Sobelow")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/sascha-wolf/knigge"},"Knigge")),(0,o.kt)("li",{parentName:"ul"},"Runs the test suite"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/jeremyjh/dialyxir"},"Dialyzer")),(0,o.kt)("li",{parentName:"ul"},"Checks if dependencies are outdated"),(0,o.kt)("li",{parentName:"ul"},"And Finally it creates an upgrade release with ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/bitwalker/distillery"},"Distillery"))))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[330],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(r),m=o,h=d["".concat(l,".").concat(m)]||d[m]||u[m]||a;return r?n.createElement(h,i(i({ref:t},s),{},{components:r})):n.createElement(h,i({ref:t},s))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));r(8209);const a={id:"code-proposals-ci",title:"CI"},i=void 0,c={unversionedId:"build/core/governance/code-proposals-ci",id:"build/core/governance/code-proposals-ci",title:"CI",description:"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI.",source:"@site/docs/build/core/governance/ci.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals-ci",permalink:"/build/core/governance/code-proposals-ci",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"code-proposals-ci",title:"CI"},sidebar:"docs",previous:{title:"CD",permalink:"/build/core/governance/code-proposals-cd"},next:{title:"Code Proposals",permalink:"/build/core/governance/code-proposals"}},l={},p=[],s={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI."),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic-ci")," target produces an image with build tools.\nIts goal is to compile the source code into ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic_node")," release.\nThe CI part is powered by ",(0,o.kt)("inlineCode",{parentName:"p"},"scripts/proposal_ci_job.sh"),".\nThe script runs in a container named ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic-prop-{address}"),", it produces: release upgrade of ",(0,o.kt)("inlineCode",{parentName:"p"},"archethic_node")," and combined log of application of a code proposal to the source code, execution of unit tests, and log from linter. The log can be obtained with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker logs"),", the release upgrade and the validator with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker cp"),", after that the container can be disposed."),(0,o.kt)("p",null,"the logs are collected in ",(0,o.kt)("inlineCode",{parentName:"p"},"ci_logfile.txt")," and this file is copied at the end to tmp directory created in filesystem."),(0,o.kt)("p",null,"the script runs multiple commands:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Creates a branch prop_{proposal_address}"),(0,o.kt)("li",{parentName:"ul"},"Apply the changes to the branch"),(0,o.kt)("li",{parentName:"ul"},"Add the changes and commit"),(0,o.kt)("li",{parentName:"ul"},"Checking if the project is formatted correctly"),(0,o.kt)("li",{parentName:"ul"},"Check if the project compiles without warning"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/rrrene/credo"},"Credo")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/nccgroup/sobelow"},"Sobelow")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/sascha-wolf/knigge"},"Knigge")),(0,o.kt)("li",{parentName:"ul"},"Runs the test suite"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/jeremyjh/dialyxir"},"Dialyzer")),(0,o.kt)("li",{parentName:"ul"},"Checks if dependencies are outdated"),(0,o.kt)("li",{parentName:"ul"},"And Finally it creates an upgrade release with ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/bitwalker/distillery"},"Distillery"))))}u.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/f63a5cf4.5621a4ad.js b/assets/js/f63a5cf4.b210a4da.js similarity index 98% rename from assets/js/f63a5cf4.5621a4ad.js rename to assets/js/f63a5cf4.b210a4da.js index eb91d1c0c..1842984c3 100644 --- a/assets/js/f63a5cf4.5621a4ad.js +++ b/assets/js/f63a5cf4.b210a4da.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3446],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=o.createContext({}),p=function(e){var t=o.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return o.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=n,m=u["".concat(i,".").concat(f)]||u[f]||d[f]||a;return r?o.createElement(m,l(l({ref:t},s),{},{components:r})):o.createElement(m,l({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,l=new Array(a);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:n,l[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var o=r(7462),n=(r(7294),r(3905));r(8209);const a={id:"code-proposals",title:"Code Proposals"},l=void 0,c={unversionedId:"build/core/governance/code-proposals",id:"build/core/governance/code-proposals",title:"Code Proposals",description:"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain",source:"@site/docs/build/core/governance/code-proposals.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals",permalink:"/build/core/governance/code-proposals",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"code-proposals",title:"Code Proposals"},sidebar:"docs",previous:{title:"CI",permalink:"/build/core/governance/code-proposals-ci"},next:{title:"Mining",permalink:"/build/core/mining/"}},i={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain\ncode in a automated and tested way."),(0,n.kt)("p",null,"A pending code proposal contains the following fields:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Address: Address of the code proposal"),(0,n.kt)("li",{parentName:"ul"},"Approvals: Approvals signed by the users"),(0,n.kt)("li",{parentName:"ul"},"Changes: Diff between current version and code proposal"),(0,n.kt)("li",{parentName:"ul"},"Description: Description of the code proposal"),(0,n.kt)("li",{parentName:"ul"},"Files: Files changed in code proposal"),(0,n.kt)("li",{parentName:"ul"},"Previous Public Key"),(0,n.kt)("li",{parentName:"ul"},"Timestamp"),(0,n.kt)("li",{parentName:"ul"},"Version: target version")),(0,n.kt)("p",null,"For a code proposal to be valid it needs to validate 3 conditions:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The version in code proposal needs to be a successor version of the current one"),(0,n.kt)("li",{parentName:"ul"},"The changes need to contain a valid ",(0,n.kt)("a",{parentName:"li",href:"https://www.erlang.org/doc/man/appup.html"},"appup file")),(0,n.kt)("li",{parentName:"ul"},"the code proposal is applicable on the current branch")),(0,n.kt)("p",null,"Code proposals can be visualised in the governance section of the UI."),(0,n.kt)("p",null,"when a code proposal get enough approvals from members of technical council (more than the threshhold), it automatically launchs the CI/CD process."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3446],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=o.createContext({}),p=function(e){var t=o.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=p(e.components);return o.createElement(i.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=n,m=u["".concat(i,".").concat(f)]||u[f]||d[f]||a;return r?o.createElement(m,l(l({ref:t},s),{},{components:r})):o.createElement(m,l({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,l=new Array(a);l[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:n,l[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var o=r(7462),n=(r(7294),r(3905));r(8209);const a={id:"code-proposals",title:"Code Proposals"},l=void 0,c={unversionedId:"build/core/governance/code-proposals",id:"build/core/governance/code-proposals",title:"Code Proposals",description:"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain",source:"@site/docs/build/core/governance/code-proposals.md",sourceDirName:"build/core/governance",slug:"/build/core/governance/code-proposals",permalink:"/build/core/governance/code-proposals",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"code-proposals",title:"Code Proposals"},sidebar:"docs",previous:{title:"CI",permalink:"/build/core/governance/code-proposals-ci"},next:{title:"Mining",permalink:"/build/core/mining/"}},i={},p=[],s={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Archethic Blockchain is using code proposals to have a way to upgrade current blockchain\ncode in a automated and tested way."),(0,n.kt)("p",null,"A pending code proposal contains the following fields:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Address: Address of the code proposal"),(0,n.kt)("li",{parentName:"ul"},"Approvals: Approvals signed by the users"),(0,n.kt)("li",{parentName:"ul"},"Changes: Diff between current version and code proposal"),(0,n.kt)("li",{parentName:"ul"},"Description: Description of the code proposal"),(0,n.kt)("li",{parentName:"ul"},"Files: Files changed in code proposal"),(0,n.kt)("li",{parentName:"ul"},"Previous Public Key"),(0,n.kt)("li",{parentName:"ul"},"Timestamp"),(0,n.kt)("li",{parentName:"ul"},"Version: target version")),(0,n.kt)("p",null,"For a code proposal to be valid it needs to validate 3 conditions:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The version in code proposal needs to be a successor version of the current one"),(0,n.kt)("li",{parentName:"ul"},"The changes need to contain a valid ",(0,n.kt)("a",{parentName:"li",href:"https://www.erlang.org/doc/man/appup.html"},"appup file")),(0,n.kt)("li",{parentName:"ul"},"the code proposal is applicable on the current branch")),(0,n.kt)("p",null,"Code proposals can be visualised in the governance section of the UI."),(0,n.kt)("p",null,"when a code proposal get enough approvals from members of technical council (more than the threshhold), it automatically launchs the CI/CD process."))}d.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/fa629964.a6656bfe.js b/assets/js/fa629964.f513f93a.js similarity index 98% rename from assets/js/fa629964.a6656bfe.js rename to assets/js/fa629964.f513f93a.js index 11078bf74..a7c9cb989 100644 --- a/assets/js/fa629964.a6656bfe.js +++ b/assets/js/fa629964.f513f93a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8607],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=r,m=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return n?a.createElement(m,i(i({ref:t},d),{},{components:n})):a.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"sharding",title:"Sharding"},i=void 0,s={unversionedId:"learn/sharding/sharding",id:"learn/sharding/sharding",title:"Sharding",description:"To become an unlimited decentralized network, Archethic Blockchain is using a feature called Sharding, used to split processing and storage power to ensure a scalable system.",source:"@site/docs/learn/sharding/README.md",sourceDirName:"learn/sharding",slug:"/learn/sharding/",permalink:"/learn/sharding/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"sharding",title:"Sharding"},sidebar:"docs",previous:{title:"Self Repair",permalink:"/learn/p2p/self-repair"},next:{title:"Beacon Chain",permalink:"/learn/sharding/beacon-chain/"}},l={},c=[{value:"Validation",id:"validation",level:2},{value:"Storage",id:"storage",level:2},{value:"Rotating Election",id:"rotating-election",level:2}],d={toc:c},u="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To become an unlimited decentralized network, Archethic Blockchain is using a feature called ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding"),", used to split processing and storage power to ensure a scalable system."),(0,r.kt)("p",null,"Thanks to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Transaction Chain")," paradigm, transactions can be divided into chains, to ensure a concurrent processing\nas the opposite of traditional blockchains."),(0,r.kt)("p",null,"Other new blockchain networks start to use ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding")," but sometimes not in a complete form: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"either storage"),(0,r.kt)("li",{parentName:"ul"},"either validation")),(0,r.kt)("p",null,"Archethic Blockchain supports a complete sharding scheme for validation and for storage."),(0,r.kt)("h2",{id:"validation"},"Validation"),(0,r.kt)("p",null,"Each transaction is validated by a new set of rotating nodes."),(0,r.kt)("p",null,"This ensures the distribution of validation and processing, to achieve a linear scalability and a high TPS."),(0,r.kt)("p",null,"Because transaction are using the UTXO model,\nthere is no reality out of the transaction, so the network is not subject to issues like:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"cross shards synchronization"),(0,r.kt)("li",{parentName:"ul"},"state channels communication")),(0,r.kt)("p",null,"To get the state of a transaction, only the transaction and the transaction inputs will be taken into consideration"),(0,r.kt)("h2",{id:"storage"},"Storage"),(0,r.kt)("p",null,"After the validation of the transaction, validation nodes will be in charge to send the transaction to several pools of nodes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Transaction Chain Storage Pool: All the transaction associated with the same chain must be replicated on the storage nodes associated with the new transaction's address."),(0,r.kt)("li",{parentName:"ul"},"I/O Storage Pool: Each validated transaction is replicated on the storage nodes associated with the addresses of the transaction input/outputs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Transaction movements addresses storage pools"),(0,r.kt)("li",{parentName:"ul"},"Node movements public key storage pools"),(0,r.kt)("li",{parentName:"ul"},"Recipients addresses storage pools"))),(0,r.kt)("li",{parentName:"ul"},"Beacon Storage Pool: Each transaction address must be replicated on the storage nodes of the associated address subset ",(0,r.kt)("a",{parentName:"li",href:"/learn/sharding/beacon-chain"},"See BeaconChain"))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"For each transaction, the Transaction Chain Storage Pool will change, assuring a completed distribution of nodes and the data replication. Nevertheless, nothing prevents the storage nodes to overlap within the chain.")),(0,r.kt)("h2",{id:"rotating-election"},"Rotating Election"),(0,r.kt)("p",null,"Like the validation nodes election, the storage nodes election is subject to a rotating election.\nIn other terms, each transaction will have its own shard and storage nodes."),(0,r.kt)("p",null,"The storage node election is based on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"the address of the transaction"),(0,r.kt)("li",{parentName:"ul"},"the storage nonce: a stable secret known by the network"),(0,r.kt)("li",{parentName:"ul"},"the list of nodes")),(0,r.kt)("p",null,"This permits any node to perform this computation autonomously to reproduce this list and to request a transaction from the closest node."),(0,r.kt)("p",null,"To ensure the best availability of the data, this list is refined by some criteria, such as:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"P2P availability"),(0,r.kt)("li",{parentName:"ul"},"Geographical distribution")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8607],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=r,m=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return n?a.createElement(m,i(i({ref:t},d),{},{components:n})):a.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));n(8209);const o={id:"sharding",title:"Sharding"},i=void 0,s={unversionedId:"learn/sharding/sharding",id:"learn/sharding/sharding",title:"Sharding",description:"To become an unlimited decentralized network, Archethic Blockchain is using a feature called Sharding, used to split processing and storage power to ensure a scalable system.",source:"@site/docs/learn/sharding/README.md",sourceDirName:"learn/sharding",slug:"/learn/sharding/",permalink:"/learn/sharding/",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"sharding",title:"Sharding"},sidebar:"docs",previous:{title:"Self Repair",permalink:"/learn/p2p/self-repair"},next:{title:"Beacon Chain",permalink:"/learn/sharding/beacon-chain/"}},l={},c=[{value:"Validation",id:"validation",level:2},{value:"Storage",id:"storage",level:2},{value:"Rotating Election",id:"rotating-election",level:2}],d={toc:c},u="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To become an unlimited decentralized network, Archethic Blockchain is using a feature called ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding"),", used to split processing and storage power to ensure a scalable system."),(0,r.kt)("p",null,"Thanks to the ",(0,r.kt)("inlineCode",{parentName:"p"},"Transaction Chain")," paradigm, transactions can be divided into chains, to ensure a concurrent processing\nas the opposite of traditional blockchains."),(0,r.kt)("p",null,"Other new blockchain networks start to use ",(0,r.kt)("inlineCode",{parentName:"p"},"Sharding")," but sometimes not in a complete form: "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"either storage"),(0,r.kt)("li",{parentName:"ul"},"either validation")),(0,r.kt)("p",null,"Archethic Blockchain supports a complete sharding scheme for validation and for storage."),(0,r.kt)("h2",{id:"validation"},"Validation"),(0,r.kt)("p",null,"Each transaction is validated by a new set of rotating nodes."),(0,r.kt)("p",null,"This ensures the distribution of validation and processing, to achieve a linear scalability and a high TPS."),(0,r.kt)("p",null,"Because transaction are using the UTXO model,\nthere is no reality out of the transaction, so the network is not subject to issues like:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"cross shards synchronization"),(0,r.kt)("li",{parentName:"ul"},"state channels communication")),(0,r.kt)("p",null,"To get the state of a transaction, only the transaction and the transaction inputs will be taken into consideration"),(0,r.kt)("h2",{id:"storage"},"Storage"),(0,r.kt)("p",null,"After the validation of the transaction, validation nodes will be in charge to send the transaction to several pools of nodes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Transaction Chain Storage Pool: All the transaction associated with the same chain must be replicated on the storage nodes associated with the new transaction's address."),(0,r.kt)("li",{parentName:"ul"},"I/O Storage Pool: Each validated transaction is replicated on the storage nodes associated with the addresses of the transaction input/outputs:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Transaction movements addresses storage pools"),(0,r.kt)("li",{parentName:"ul"},"Node movements public key storage pools"),(0,r.kt)("li",{parentName:"ul"},"Recipients addresses storage pools"))),(0,r.kt)("li",{parentName:"ul"},"Beacon Storage Pool: Each transaction address must be replicated on the storage nodes of the associated address subset ",(0,r.kt)("a",{parentName:"li",href:"/learn/sharding/beacon-chain"},"See BeaconChain"))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"For each transaction, the Transaction Chain Storage Pool will change, assuring a completed distribution of nodes and the data replication. Nevertheless, nothing prevents the storage nodes to overlap within the chain.")),(0,r.kt)("h2",{id:"rotating-election"},"Rotating Election"),(0,r.kt)("p",null,"Like the validation nodes election, the storage nodes election is subject to a rotating election.\nIn other terms, each transaction will have its own shard and storage nodes."),(0,r.kt)("p",null,"The storage node election is based on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"the address of the transaction"),(0,r.kt)("li",{parentName:"ul"},"the storage nonce: a stable secret known by the network"),(0,r.kt)("li",{parentName:"ul"},"the list of nodes")),(0,r.kt)("p",null,"This permits any node to perform this computation autonomously to reproduce this list and to request a transaction from the closest node."),(0,r.kt)("p",null,"To ensure the best availability of the data, this list is refined by some criteria, such as:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"P2P availability"),(0,r.kt)("li",{parentName:"ul"},"Geographical distribution")))}p.isMDXComponent=!0},8209:(e,t,n)=>{n(7294)}}]); \ No newline at end of file diff --git a/assets/js/fb57a917.d1ffb678.js b/assets/js/fb57a917.2d173326.js similarity index 98% rename from assets/js/fb57a917.d1ffb678.js rename to assets/js/fb57a917.2d173326.js index 4b4e7fae9..566fd79c3 100644 --- a/assets/js/fb57a917.d1ffb678.js +++ b/assets/js/fb57a917.2d173326.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4875],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>k});var n=i(7294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function a(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var o=n.createContext({}),d=function(e){var t=n.useContext(o),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},h=function(e){var t=d(e.components);return n.createElement(o.Provider,{value:t},e.children)},l="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var i=e.components,r=e.mdxType,c=e.originalType,o=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),l=d(i),u=r,k=l["".concat(o,".").concat(u)]||l[u]||y[u]||c;return i?n.createElement(k,a(a({ref:t},h),{},{components:i})):n.createElement(k,a({ref:t},h))}));function k(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var c=i.length,a=new Array(c);a[0]=u;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[l]="string"==typeof e?e:r,a[1]=s;for(var d=2;d{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>y,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=i(7462),r=(i(7294),i(3905));i(8209);const c={id:"yubikey",title:"Yubikey implementation"},a=void 0,s={unversionedId:"build/core/cryptography/yubikey",id:"build/core/cryptography/yubikey",title:"Yubikey implementation",description:"This section explains the HRT Yubikey Library implementation.",source:"@site/docs/build/core/cryptography/yubikey.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/yubikey",permalink:"/build/core/cryptography/yubikey",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"yubikey",title:"Yubikey implementation"},sidebar:"docs",previous:{title:"TPM Implementation",permalink:"/build/core/cryptography/tpm"},next:{title:"Archethic's database",permalink:"/build/core/database"}},o={},d=[{value:"initializeYK() :",id:"initializeyk-",level:2},{value:"bool checkYK():",id:"bool-checkyk",level:2},{value:"verifyPinYK():",id:"verifypinyk",level:2},{value:"authenticateYK():",id:"authenticateyk",level:2},{value:"fetchKey(keyIndex):",id:"fetchkeykeyindex",level:2},{value:"generateKey(ykIndex):",id:"generatekeyykindex",level:2},{value:"generateCertificate(ykIndex):",id:"generatecertificateykindex",level:2},{value:"getYKIndex():",id:"getykindex",level:2},{value:"saveIndex(ykIndex, archethicIndex):",id:"saveindexykindex-archethicindex",level:2},{value:"signECDSA(hashtoSign, ykIndex):",id:"signecdsahashtosign-ykindex",level:2},{value:"getECDHPoint(ykIndex, euphermerakley) :",id:"getecdhpointykindex-euphermerakley-",level:2},{value:"getArchEthicIndex():",id:"getarchethicindex",level:2},{value:"incrementIndex():",id:"incrementindex",level:2},{value:"getRootKey():",id:"getrootkey",level:2},{value:"getCurrentKey(publicKeySize):",id:"getcurrentkeypublickeysize",level:2},{value:"getNextKey( publicKeySize):",id:"getnextkey-publickeysize",level:2},{value:"getPastKey(archEthicIndex, publicKeySize):",id:"getpastkeyarchethicindex-publickeysize",level:2},{value:"getRootCertificate( certificateSize):",id:"getrootcertificate-certificatesize",level:2},{value:"getCurrentCertificate(certificateSize):",id:"getcurrentcertificatecertificatesize",level:2},{value:"getNextCertificate(certificateSize):",id:"getnextcertificatecertificatesize",level:2},{value:"getPastCertificate(archEthicIndex, certificateSize):",id:"getpastcertificatearchethicindex-certificatesize",level:2},{value:"signCurrentKey(hashToSign, eccSignSize):",id:"signcurrentkeyhashtosign-eccsignsize",level:2},{value:"signPastKey(archEthicIndex, hashToSign, eccSignSize):",id:"signpastkeyarchethicindex-hashtosign-eccsignsize",level:2},{value:"ecdhCurrentKey(euphemeralKey, eccPointSize):",id:"ecdhcurrentkeyeuphemeralkey-eccpointsize",level:2},{value:"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):",id:"ecdhpastkey-archethicindex-euphemeralkey-eccpointsize",level:2}],h={toc:d},l="wrapper";function y(e){let{components:t,...i}=e;return(0,r.kt)(l,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This section explains the HRT Yubikey Library implementation."),(0,r.kt)("admonition",{type:"success"},(0,r.kt)("p",{parentName:"admonition"},"Reference Files:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/yubikey-core/blob/main/uniris-yubikey.c"},"uniris-yubikey.c"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/yubikey-core/blob/main/uniris-yubikey.h"},"uniris-yubikey.h"))),(0,r.kt)("h2",{id:"initializeyk-"},"initializeYK() :"),(0,r.kt)("p",null,"Initializes the context of the yubikey application in the variable g_state and connects to the hardware device. If successful, then gets the key index of Archethic as well as key index of the yubikey device."),(0,r.kt)("h2",{id:"bool-checkyk"},"bool checkYK():"),(0,r.kt)("p",null,'displays the model of yubikey device used returns true if the device list contains "Yubico Yubikey".'),(0,r.kt)("h2",{id:"verifypinyk"},"verifyPinYK():"),(0,r.kt)("p",null,"verifies the pin code using ykpiv_verify() required to access PIV interface."),(0,r.kt)("h2",{id:"authenticateyk"},"authenticateYK():"),(0,r.kt)("p",null,"Management key is required to do administrative actions. First it does hex decoding of the management key and authenticates if ykpiv_authenticate() returns 0."),(0,r.kt)("h2",{id:"fetchkeykeyindex"},"fetchKey(keyIndex):"),(0,r.kt)("p",null,"A PIV card contains some interoperable seven mandatory and twenty optional data objects. These objects are identified with their respective ids. We use these twenty optional data objects to store the key certificates. fetchKey index takes the yubikey key index ykindex as input and fetches the certificate at the key_certificates","[ykindex]",". This X509 certificate is decoded and public key is extracted from it using X509_get0_pubkey_bitstr and copied to ecc_public_key."),(0,r.kt)("h2",{id:"generatekeyykindex"},"generateKey(ykIndex):"),(0,r.kt)("p",null,"It takes the ykIndex and generates an ECC key using ykpiv_util_generate_key(). It generates key at one of the slots {0x82.. 0x95} pointed by ykindex - key_slots","[ykIndex]"),(0,r.kt)("h2",{id:"generatecertificateykindex"},"generateCertificate(ykIndex):"),(0,r.kt)("p",null,"The keys in the slot are attested through ykpiv_attest() by taking the slot on the index as input. It returns attested key and its length which is then saved into an object pointed by ykIndex using ykpiv_save_object()."),(0,r.kt)("h2",{id:"getykindex"},"getYKIndex():"),(0,r.kt)("p",null,"The YKPIV_OBJ_KEY_HISTORY keeps the count of the keys generated in the yubikey. This fucntion fetches the YKPIV_OBJ_KEY_HISTORY using ykpiv_fetch_object() to get the index_yk and returns it."),(0,r.kt)("h2",{id:"saveindexykindex-archethicindex"},"saveIndex(ykIndex, archethicIndex):"),(0,r.kt)("p",null,"It takes ykindex and archethicIndex as input and generates index by combining ykindex and archethic index and keeps it in YKPIV_OBJ_HISTORY."),(0,r.kt)("h2",{id:"signecdsahashtosign-ykindex"},"signECDSA(hashtoSign, ykIndex):"),(0,r.kt)("p",null,"It uses ykpiv_sign_data() to sign hashToSign using YKPIV_ALGO_ECCP256 through the key pointed by ykindex - key_slots","[ykindex]","."),(0,r.kt)("h2",{id:"getecdhpointykindex-euphermerakley-"},"getECDHPoint(ykIndex, euphermerakley) :"),(0,r.kt)("p",null,"It generated an ecdh point using ykpiv_decipher_data() for the slot pointed by ykindex key_slots","[ykIndex]","."),(0,r.kt)("h2",{id:"getarchethicindex"},"getArchEthicIndex():"),(0,r.kt)("p",null,"Fetches the YKPIV_OBJ_KEY_HISTORY and derives the archethicindex from index_yk saved in key history object."),(0,r.kt)("h2",{id:"incrementindex"},"incrementIndex():"),(0,r.kt)("p",null,"We use the 20 data objects to store 20 keys certificates at once. The 21st key generated on the yubikey is stored in newYKIndex = ykindex % 20. The archethic index is incremented and a new key is generated using newYKindex .A certificate is generated and saved in the slot pointed by newYKindex. Finally it returns true if the current YK index is equal to newYKindex and current archethicindex is equal to newarchethic index ."),(0,r.kt)("h2",{id:"getrootkey"},"getRootKey():"),(0,r.kt)("p",null,"Reads the root key certificate from f9 slot and fetches public key from the certificate. Finally it copies the key into rsa_root_key and returns it."),(0,r.kt)("h2",{id:"getcurrentkeypublickeysize"},"getCurrentKey(publicKeySize):"),(0,r.kt)("p",null,"Generates the previous key index by and fetches the key behind previous key index and returns the ecc key."),(0,r.kt)("h2",{id:"getnextkey-publickeysize"},"getNextKey( publicKeySize):"),(0,r.kt)("p",null,"It fetches the key from the ykIndex and returns the ecc_public_key behind the index."),(0,r.kt)("h2",{id:"getpastkeyarchethicindex-publickeysize"},"getPastKey(archEthicIndex, publicKeySize):"),(0,r.kt)("p",null,"It fetches the keys stored previously in the slot. It first calculates the slot position and then fetches the key at the slot position and return it."),(0,r.kt)("h2",{id:"getrootcertificate-certificatesize"},"getRootCertificate( certificateSize):"),(0,r.kt)("p",null,"Reads the certificate of the rootkey from 0xf9 slot, copies it ykcertificate and returns it."),(0,r.kt)("h2",{id:"getcurrentcertificatecertificatesize"},"getCurrentCertificate(certificateSize):"),(0,r.kt)("p",null,"Calculates the curent key index and fetches the certificate from the object pointed by the current key index."),(0,r.kt)("h2",{id:"getnextcertificatecertificatesize"},"getNextCertificate(certificateSize):"),(0,r.kt)("p",null,"fetches the certificate of the key pointed by ykindex and returns it."),(0,r.kt)("h2",{id:"getpastcertificatearchethicindex-certificatesize"},"getPastCertificate(archEthicIndex, certificateSize):"),(0,r.kt)("p",null,"calculates the slot posistion according to the offset using archethicindex then fetches the object at the slot position which is a certificate amd returns it."),(0,r.kt)("h2",{id:"signcurrentkeyhashtosign-eccsignsize"},"signCurrentKey(hashToSign, eccSignSize):"),(0,r.kt)("p",null,"Calculates the current key index then verifies the Yubikey pin using verifyPinYK() and then signs hashToSign using signECDSA(). The signECDSA() signs the key at the currentkeyindex."),(0,r.kt)("h2",{id:"signpastkeyarchethicindex-hashtosign-eccsignsize"},"signPastKey(archEthicIndex, hashToSign, eccSignSize):"),(0,r.kt)("p",null,"Calculates the slot position by first calculating the offset by using archethicindex. Then it verifies the yubikey pin and signs the key pointed at the slotPosition."),(0,r.kt)("h2",{id:"ecdhcurrentkeyeuphemeralkey-eccpointsize"},"ecdhCurrentKey(euphemeralKey, eccPointSize):"),(0,r.kt)("p",null,"Calculates the current key index, verifies the yubikey pin to get the ECDH point through getECDHPoint() fucntion and finally returns it."),(0,r.kt)("h2",{id:"ecdhpastkey-archethicindex-euphemeralkey-eccpointsize"},"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):"),(0,r.kt)("p",null,"Calculates the offset and slotPosition using archEthicIndex., verifies Yubikey PIN and gets the ECDH point for the key pointed by slotPosiotion and returns it."))}y.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4875],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>k});var n=i(7294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function a(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var o=n.createContext({}),d=function(e){var t=n.useContext(o),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},h=function(e){var t=d(e.components);return n.createElement(o.Provider,{value:t},e.children)},l="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var i=e.components,r=e.mdxType,c=e.originalType,o=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),l=d(i),u=r,k=l["".concat(o,".").concat(u)]||l[u]||y[u]||c;return i?n.createElement(k,a(a({ref:t},h),{},{components:i})):n.createElement(k,a({ref:t},h))}));function k(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var c=i.length,a=new Array(c);a[0]=u;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[l]="string"==typeof e?e:r,a[1]=s;for(var d=2;d{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>y,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=i(7462),r=(i(7294),i(3905));i(8209);const c={id:"yubikey",title:"Yubikey implementation"},a=void 0,s={unversionedId:"build/core/cryptography/yubikey",id:"build/core/cryptography/yubikey",title:"Yubikey implementation",description:"This section explains the HRT Yubikey Library implementation.",source:"@site/docs/build/core/cryptography/yubikey.md",sourceDirName:"build/core/cryptography",slug:"/build/core/cryptography/yubikey",permalink:"/build/core/cryptography/yubikey",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"yubikey",title:"Yubikey implementation"},sidebar:"docs",previous:{title:"TPM Implementation",permalink:"/build/core/cryptography/tpm"},next:{title:"Archethic's database",permalink:"/build/core/database"}},o={},d=[{value:"initializeYK() :",id:"initializeyk-",level:2},{value:"bool checkYK():",id:"bool-checkyk",level:2},{value:"verifyPinYK():",id:"verifypinyk",level:2},{value:"authenticateYK():",id:"authenticateyk",level:2},{value:"fetchKey(keyIndex):",id:"fetchkeykeyindex",level:2},{value:"generateKey(ykIndex):",id:"generatekeyykindex",level:2},{value:"generateCertificate(ykIndex):",id:"generatecertificateykindex",level:2},{value:"getYKIndex():",id:"getykindex",level:2},{value:"saveIndex(ykIndex, archethicIndex):",id:"saveindexykindex-archethicindex",level:2},{value:"signECDSA(hashtoSign, ykIndex):",id:"signecdsahashtosign-ykindex",level:2},{value:"getECDHPoint(ykIndex, euphermerakley) :",id:"getecdhpointykindex-euphermerakley-",level:2},{value:"getArchEthicIndex():",id:"getarchethicindex",level:2},{value:"incrementIndex():",id:"incrementindex",level:2},{value:"getRootKey():",id:"getrootkey",level:2},{value:"getCurrentKey(publicKeySize):",id:"getcurrentkeypublickeysize",level:2},{value:"getNextKey( publicKeySize):",id:"getnextkey-publickeysize",level:2},{value:"getPastKey(archEthicIndex, publicKeySize):",id:"getpastkeyarchethicindex-publickeysize",level:2},{value:"getRootCertificate( certificateSize):",id:"getrootcertificate-certificatesize",level:2},{value:"getCurrentCertificate(certificateSize):",id:"getcurrentcertificatecertificatesize",level:2},{value:"getNextCertificate(certificateSize):",id:"getnextcertificatecertificatesize",level:2},{value:"getPastCertificate(archEthicIndex, certificateSize):",id:"getpastcertificatearchethicindex-certificatesize",level:2},{value:"signCurrentKey(hashToSign, eccSignSize):",id:"signcurrentkeyhashtosign-eccsignsize",level:2},{value:"signPastKey(archEthicIndex, hashToSign, eccSignSize):",id:"signpastkeyarchethicindex-hashtosign-eccsignsize",level:2},{value:"ecdhCurrentKey(euphemeralKey, eccPointSize):",id:"ecdhcurrentkeyeuphemeralkey-eccpointsize",level:2},{value:"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):",id:"ecdhpastkey-archethicindex-euphemeralkey-eccpointsize",level:2}],h={toc:d},l="wrapper";function y(e){let{components:t,...i}=e;return(0,r.kt)(l,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"This section explains the HRT Yubikey Library implementation."),(0,r.kt)("admonition",{type:"success"},(0,r.kt)("p",{parentName:"admonition"},"Reference Files:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/yubikey-core/blob/main/uniris-yubikey.c"},"uniris-yubikey.c"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/UNIRIS/yubikey-core/blob/main/uniris-yubikey.h"},"uniris-yubikey.h"))),(0,r.kt)("h2",{id:"initializeyk-"},"initializeYK() :"),(0,r.kt)("p",null,"Initializes the context of the yubikey application in the variable g_state and connects to the hardware device. If successful, then gets the key index of Archethic as well as key index of the yubikey device."),(0,r.kt)("h2",{id:"bool-checkyk"},"bool checkYK():"),(0,r.kt)("p",null,'displays the model of yubikey device used returns true if the device list contains "Yubico Yubikey".'),(0,r.kt)("h2",{id:"verifypinyk"},"verifyPinYK():"),(0,r.kt)("p",null,"verifies the pin code using ykpiv_verify() required to access PIV interface."),(0,r.kt)("h2",{id:"authenticateyk"},"authenticateYK():"),(0,r.kt)("p",null,"Management key is required to do administrative actions. First it does hex decoding of the management key and authenticates if ykpiv_authenticate() returns 0."),(0,r.kt)("h2",{id:"fetchkeykeyindex"},"fetchKey(keyIndex):"),(0,r.kt)("p",null,"A PIV card contains some interoperable seven mandatory and twenty optional data objects. These objects are identified with their respective ids. We use these twenty optional data objects to store the key certificates. fetchKey index takes the yubikey key index ykindex as input and fetches the certificate at the key_certificates","[ykindex]",". This X509 certificate is decoded and public key is extracted from it using X509_get0_pubkey_bitstr and copied to ecc_public_key."),(0,r.kt)("h2",{id:"generatekeyykindex"},"generateKey(ykIndex):"),(0,r.kt)("p",null,"It takes the ykIndex and generates an ECC key using ykpiv_util_generate_key(). It generates key at one of the slots {0x82.. 0x95} pointed by ykindex - key_slots","[ykIndex]"),(0,r.kt)("h2",{id:"generatecertificateykindex"},"generateCertificate(ykIndex):"),(0,r.kt)("p",null,"The keys in the slot are attested through ykpiv_attest() by taking the slot on the index as input. It returns attested key and its length which is then saved into an object pointed by ykIndex using ykpiv_save_object()."),(0,r.kt)("h2",{id:"getykindex"},"getYKIndex():"),(0,r.kt)("p",null,"The YKPIV_OBJ_KEY_HISTORY keeps the count of the keys generated in the yubikey. This fucntion fetches the YKPIV_OBJ_KEY_HISTORY using ykpiv_fetch_object() to get the index_yk and returns it."),(0,r.kt)("h2",{id:"saveindexykindex-archethicindex"},"saveIndex(ykIndex, archethicIndex):"),(0,r.kt)("p",null,"It takes ykindex and archethicIndex as input and generates index by combining ykindex and archethic index and keeps it in YKPIV_OBJ_HISTORY."),(0,r.kt)("h2",{id:"signecdsahashtosign-ykindex"},"signECDSA(hashtoSign, ykIndex):"),(0,r.kt)("p",null,"It uses ykpiv_sign_data() to sign hashToSign using YKPIV_ALGO_ECCP256 through the key pointed by ykindex - key_slots","[ykindex]","."),(0,r.kt)("h2",{id:"getecdhpointykindex-euphermerakley-"},"getECDHPoint(ykIndex, euphermerakley) :"),(0,r.kt)("p",null,"It generated an ecdh point using ykpiv_decipher_data() for the slot pointed by ykindex key_slots","[ykIndex]","."),(0,r.kt)("h2",{id:"getarchethicindex"},"getArchEthicIndex():"),(0,r.kt)("p",null,"Fetches the YKPIV_OBJ_KEY_HISTORY and derives the archethicindex from index_yk saved in key history object."),(0,r.kt)("h2",{id:"incrementindex"},"incrementIndex():"),(0,r.kt)("p",null,"We use the 20 data objects to store 20 keys certificates at once. The 21st key generated on the yubikey is stored in newYKIndex = ykindex % 20. The archethic index is incremented and a new key is generated using newYKindex .A certificate is generated and saved in the slot pointed by newYKindex. Finally it returns true if the current YK index is equal to newYKindex and current archethicindex is equal to newarchethic index ."),(0,r.kt)("h2",{id:"getrootkey"},"getRootKey():"),(0,r.kt)("p",null,"Reads the root key certificate from f9 slot and fetches public key from the certificate. Finally it copies the key into rsa_root_key and returns it."),(0,r.kt)("h2",{id:"getcurrentkeypublickeysize"},"getCurrentKey(publicKeySize):"),(0,r.kt)("p",null,"Generates the previous key index by and fetches the key behind previous key index and returns the ecc key."),(0,r.kt)("h2",{id:"getnextkey-publickeysize"},"getNextKey( publicKeySize):"),(0,r.kt)("p",null,"It fetches the key from the ykIndex and returns the ecc_public_key behind the index."),(0,r.kt)("h2",{id:"getpastkeyarchethicindex-publickeysize"},"getPastKey(archEthicIndex, publicKeySize):"),(0,r.kt)("p",null,"It fetches the keys stored previously in the slot. It first calculates the slot position and then fetches the key at the slot position and return it."),(0,r.kt)("h2",{id:"getrootcertificate-certificatesize"},"getRootCertificate( certificateSize):"),(0,r.kt)("p",null,"Reads the certificate of the rootkey from 0xf9 slot, copies it ykcertificate and returns it."),(0,r.kt)("h2",{id:"getcurrentcertificatecertificatesize"},"getCurrentCertificate(certificateSize):"),(0,r.kt)("p",null,"Calculates the curent key index and fetches the certificate from the object pointed by the current key index."),(0,r.kt)("h2",{id:"getnextcertificatecertificatesize"},"getNextCertificate(certificateSize):"),(0,r.kt)("p",null,"fetches the certificate of the key pointed by ykindex and returns it."),(0,r.kt)("h2",{id:"getpastcertificatearchethicindex-certificatesize"},"getPastCertificate(archEthicIndex, certificateSize):"),(0,r.kt)("p",null,"calculates the slot posistion according to the offset using archethicindex then fetches the object at the slot position which is a certificate amd returns it."),(0,r.kt)("h2",{id:"signcurrentkeyhashtosign-eccsignsize"},"signCurrentKey(hashToSign, eccSignSize):"),(0,r.kt)("p",null,"Calculates the current key index then verifies the Yubikey pin using verifyPinYK() and then signs hashToSign using signECDSA(). The signECDSA() signs the key at the currentkeyindex."),(0,r.kt)("h2",{id:"signpastkeyarchethicindex-hashtosign-eccsignsize"},"signPastKey(archEthicIndex, hashToSign, eccSignSize):"),(0,r.kt)("p",null,"Calculates the slot position by first calculating the offset by using archethicindex. Then it verifies the yubikey pin and signs the key pointed at the slotPosition."),(0,r.kt)("h2",{id:"ecdhcurrentkeyeuphemeralkey-eccpointsize"},"ecdhCurrentKey(euphemeralKey, eccPointSize):"),(0,r.kt)("p",null,"Calculates the current key index, verifies the yubikey pin to get the ECDH point through getECDHPoint() fucntion and finally returns it."),(0,r.kt)("h2",{id:"ecdhpastkey-archethicindex-euphemeralkey-eccpointsize"},"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):"),(0,r.kt)("p",null,"Calculates the offset and slotPosition using archEthicIndex., verifies Yubikey PIN and gets the ECDH point for the key pointed by slotPosiotion and returns it."))}y.isMDXComponent=!0},8209:(e,t,i)=>{i(7294)}}]); \ No newline at end of file diff --git a/assets/js/fbab86a0.01c31479.js b/assets/js/fbab86a0.526425a9.js similarity index 98% rename from assets/js/fbab86a0.01c31479.js rename to assets/js/fbab86a0.526425a9.js index 8204efe75..65d4e9c09 100644 --- a/assets/js/fbab86a0.01c31479.js +++ b/assets/js/fbab86a0.526425a9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7007],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=s(r),m=o,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||a;return r?n.createElement(f,l(l({ref:t},d),{},{components:r})):n.createElement(f,l({ref:t},d))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"sort-order",title:"SortOrder",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/enums/sort-order",id:"build/api/schema/enums/sort-order",title:"SortOrder",description:"SortOrder represents the order of the result",source:"@site/docs/build/api/schema/enums/sort-order.mdx",sourceDirName:"build/api/schema/enums",slug:"/build/api/schema/enums/sort-order",permalink:"/build/api/schema/enums/sort-order",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"sort-order",title:"SortOrder",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"ErrorContext",permalink:"/build/api/schema/enums/error-context"},next:{title:"AuthorizedKey",permalink:"/build/api/schema/objects/authorized-key"}},s={},d=[{value:"Values",id:"values",level:3},{value:"SortOrder.ASC",id:"code-style-fontweight-normal-sortorderbascbcode",level:4},{value:"SortOrder.DESC",id:"code-style-fontweight-normal-sortorderbdescbcode",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"SortOrder represents the order of the result\npossible values are ASC or DESC"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"enum SortOrder {\n ASC\n DESC\n}\n")),(0,a.kt)("h3",{id:"values"},"Values"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-sortorderbascbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"SortOrder.",(0,a.kt)("b",null,"ASC")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Ascending order")),(0,a.kt)("h4",{id:"code-style-fontweight-normal-sortorderbdescbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"SortOrder.",(0,a.kt)("b",null,"DESC")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Descending order")),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,a.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,a.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7007],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=s(r),m=o,f=u["".concat(c,".").concat(m)]||u[m]||p[m]||a;return r?n.createElement(f,l(l({ref:t},d),{},{components:r})):n.createElement(f,l({ref:t},d))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{r.r(t),r.d(t,{Badge:()=>m,Bullet:()=>u,SpecifiedBy:()=>p,assets:()=>s,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=r(7462),o=r(7294),a=r(3905);r(8209);const l={id:"sort-order",title:"SortOrder",hide_table_of_contents:!1},i=void 0,c={unversionedId:"build/api/schema/enums/sort-order",id:"build/api/schema/enums/sort-order",title:"SortOrder",description:"SortOrder represents the order of the result",source:"@site/docs/build/api/schema/enums/sort-order.mdx",sourceDirName:"build/api/schema/enums",slug:"/build/api/schema/enums/sort-order",permalink:"/build/api/schema/enums/sort-order",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"sort-order",title:"SortOrder",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"ErrorContext",permalink:"/build/api/schema/enums/error-context"},next:{title:"AuthorizedKey",permalink:"/build/api/schema/objects/authorized-key"}},s={},d=[{value:"Values",id:"values",level:3},{value:"SortOrder.ASC",id:"code-style-fontweight-normal-sortorderbascbcode",level:4},{value:"SortOrder.DESC",id:"code-style-fontweight-normal-sortorderbdescbcode",level:4},{value:"Member of",id:"member-of",level:3}],u=()=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),p=e=>(0,a.kt)(o.Fragment,null,"Specification",(0,a.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),m=e=>(0,a.kt)(o.Fragment,null,(0,a.kt)("span",{class:"badge badge--"+e.class},e.text)),f={toc:d,Bullet:u,SpecifiedBy:p,Badge:m},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"SortOrder represents the order of the result\npossible values are ASC or DESC"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"enum SortOrder {\n ASC\n DESC\n}\n")),(0,a.kt)("h3",{id:"values"},"Values"),(0,a.kt)("h4",{id:"code-style-fontweight-normal-sortorderbascbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"SortOrder.",(0,a.kt)("b",null,"ASC")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Ascending order")),(0,a.kt)("h4",{id:"code-style-fontweight-normal-sortorderbdescbcode"},(0,a.kt)("a",{parentName:"h4",href:"#"},(0,a.kt)("code",{style:{fontWeight:"normal"}},"SortOrder.",(0,a.kt)("b",null,"DESC")))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Descending order")),(0,a.kt)("h3",{id:"member-of"},"Member of"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/build/api/schema/queries/transaction-chain"},(0,a.kt)("inlineCode",{parentName:"a"},"transactionChain"))," ",(0,a.kt)(m,{class:"secondary",text:"query",mdxType:"Badge"})))}y.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/fe068327.cb584a22.js b/assets/js/fe068327.3659ad97.js similarity index 97% rename from assets/js/fe068327.cb584a22.js rename to assets/js/fe068327.3659ad97.js index e8b9b4173..2797a6bad 100644 --- a/assets/js/fe068327.cb584a22.js +++ b/assets/js/fe068327.3659ad97.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8568],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=i(r),f=a,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||o;return r?n.createElement(m,c(c({ref:t},d),{},{components:r})):n.createElement(m,c({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,c[1]=l;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>l,default:()=>g,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const c={id:"uco-ledger",title:"UcoLedger",hide_table_of_contents:!1},l=void 0,s={unversionedId:"build/api/schema/objects/uco-ledger",id:"build/api/schema/objects/uco-ledger",title:"UcoLedger",description:"[UCOLedger] represents the transfers to perform on the UCO ledger",source:"@site/docs/build/api/schema/objects/uco-ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-ledger",permalink:"/build/api/schema/objects/uco-ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"uco-ledger",title:"UcoLedger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoData",permalink:"/build/api/schema/objects/uco-data"},next:{title:"UcoTransfer",permalink:"/build/api/schema/objects/uco-transfer"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoLedger.transfers[UcoTransfer] ',id:"code-style-fontweight-normal-ucoledgerbtransfersbcodeucotransfer--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:u,Badge:f},b="wrapper";function g(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[UCOLedger]"," represents the transfers to perform on the UCO ledger"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoLedger {\n transfers: [UcoTransfer]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucoledgerbtransfersbcodeucotransfer--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoLedger.",(0,o.kt)("b",null,"transfers"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"[UcoTransfer]"))," ",(0,o.kt)(f,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}g.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8568],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=i(r),f=a,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||o;return r?n.createElement(m,c(c({ref:t},d),{},{components:r})):n.createElement(m,c({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,c[1]=l;for(var i=2;i{r.r(t),r.d(t,{Badge:()=>f,Bullet:()=>p,SpecifiedBy:()=>u,assets:()=>i,contentTitle:()=>l,default:()=>g,frontMatter:()=>c,metadata:()=>s,toc:()=>d});var n=r(7462),a=r(7294),o=r(3905);r(8209);const c={id:"uco-ledger",title:"UcoLedger",hide_table_of_contents:!1},l=void 0,s={unversionedId:"build/api/schema/objects/uco-ledger",id:"build/api/schema/objects/uco-ledger",title:"UcoLedger",description:"[UCOLedger] represents the transfers to perform on the UCO ledger",source:"@site/docs/build/api/schema/objects/uco-ledger.mdx",sourceDirName:"build/api/schema/objects",slug:"/build/api/schema/objects/uco-ledger",permalink:"/build/api/schema/objects/uco-ledger",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"uco-ledger",title:"UcoLedger",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"UcoData",permalink:"/build/api/schema/objects/uco-data"},next:{title:"UcoTransfer",permalink:"/build/api/schema/objects/uco-transfer"}},i={},d=[{value:"Fields",id:"fields",level:3},{value:'UcoLedger.transfers[UcoTransfer] ',id:"code-style-fontweight-normal-ucoledgerbtransfersbcodeucotransfer--",level:4},{value:"Member of",id:"member-of",level:3}],p=()=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),u=e=>(0,o.kt)(a.Fragment,null,"Specification",(0,o.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),f=e=>(0,o.kt)(a.Fragment,null,(0,o.kt)("span",{class:"badge badge--"+e.class},e.text)),m={toc:d,Bullet:p,SpecifiedBy:u,Badge:f},b="wrapper";function g(e){let{components:t,...r}=e;return(0,o.kt)(b,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"[UCOLedger]"," represents the transfers to perform on the UCO ledger"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql"},"type UcoLedger {\n transfers: [UcoTransfer]\n}\n")),(0,o.kt)("h3",{id:"fields"},"Fields"),(0,o.kt)("h4",{id:"code-style-fontweight-normal-ucoledgerbtransfersbcodeucotransfer--"},(0,o.kt)("a",{parentName:"h4",href:"#"},(0,o.kt)("code",{style:{fontWeight:"normal"}},"UcoLedger.",(0,o.kt)("b",null,"transfers"))),(0,o.kt)(p,{mdxType:"Bullet"}),(0,o.kt)("a",{parentName:"h4",href:"/build/api/schema/objects/uco-transfer"},(0,o.kt)("inlineCode",{parentName:"a"},"[UcoTransfer]"))," ",(0,o.kt)(f,{class:"secondary",text:"list",mdxType:"Badge"})," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})),(0,o.kt)("blockquote",null),(0,o.kt)("h3",{id:"member-of"},"Member of"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/build/api/schema/objects/ledger"},(0,o.kt)("inlineCode",{parentName:"a"},"Ledger"))," ",(0,o.kt)(f,{class:"secondary",text:"object",mdxType:"Badge"})))}g.isMDXComponent=!0},8209:(e,t,r)=>{r(7294)}}]); \ No newline at end of file diff --git a/assets/js/fe684f20.4c243562.js b/assets/js/fe684f20.1c102692.js similarity index 98% rename from assets/js/fe684f20.4c243562.js rename to assets/js/fe684f20.1c102692.js index beb05393b..d1171b909 100644 --- a/assets/js/fe684f20.4c243562.js +++ b/assets/js/fe684f20.1c102692.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5412],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),l=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(a),u=n,b=d["".concat(c,".").concat(u)]||d[u]||m[u]||s;return a?r.createElement(b,i(i({ref:t},p),{},{components:a})):r.createElement(b,i({ref:t},p))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,i=new Array(s);i[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>l,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),s=a(3905);a(8209);const i={id:"string",title:"String",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/string",id:"build/api/schema/scalars/string",title:"String",description:"The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.",source:"@site/docs/build/api/schema/scalars/string.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/string",permalink:"/build/api/schema/scalars/string",draft:!1,tags:[],version:"current",lastUpdatedAt:1700474734,formattedLastUpdatedAt:"Nov 20, 2023",frontMatter:{id:"string",title:"String",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"PublicKey",permalink:"/build/api/schema/scalars/public-key"},next:{title:"Timestamp",permalink:"/build/api/schema/scalars/timestamp"}},l={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,s.kt)(n.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,s.kt)(n.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,s.kt)(n.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},y="wrapper";function f(e){let{components:t,...a}=e;return(0,s.kt)(y,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"The ",(0,s.kt)("inlineCode",{parentName:"p"},"String")," scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar String\n")),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,s.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/endpoint"},(0,s.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,s.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,s.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,s.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/version"},(0,s.kt)("inlineCode",{parentName:"a"},"Version"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5412],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),l=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(a),u=n,b=d["".concat(c,".").concat(u)]||d[u]||m[u]||s;return a?r.createElement(b,i(i({ref:t},p),{},{components:a})):r.createElement(b,i({ref:t},p))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,i=new Array(s);i[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,i[1]=o;for(var l=2;l{a.r(t),a.d(t,{Badge:()=>u,Bullet:()=>d,SpecifiedBy:()=>m,assets:()=>l,contentTitle:()=>o,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=a(7462),n=a(7294),s=a(3905);a(8209);const i={id:"string",title:"String",hide_table_of_contents:!1},o=void 0,c={unversionedId:"build/api/schema/scalars/string",id:"build/api/schema/scalars/string",title:"String",description:"The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.",source:"@site/docs/build/api/schema/scalars/string.mdx",sourceDirName:"build/api/schema/scalars",slug:"/build/api/schema/scalars/string",permalink:"/build/api/schema/scalars/string",draft:!1,tags:[],version:"current",lastUpdatedAt:1700739326,formattedLastUpdatedAt:"Nov 23, 2023",frontMatter:{id:"string",title:"String",hide_table_of_contents:!1},sidebar:"docs",previous:{title:"PublicKey",permalink:"/build/api/schema/scalars/public-key"},next:{title:"Timestamp",permalink:"/build/api/schema/scalars/timestamp"}},l={},p=[{value:"Member of",id:"member-of",level:3}],d=()=>(0,s.kt)(n.Fragment,null,(0,s.kt)("span",{style:{fontWeight:"normal",fontSize:".5em",color:"var(--ifm-color-secondary-darkest)"}},"\xa0\u25cf\xa0")),m=e=>(0,s.kt)(n.Fragment,null,"Specification",(0,s.kt)("a",{className:"link",style:{fontSize:"1.5em",paddingLeft:"4px"},target:"_blank",href:e.url,title:"Specified by "+e.url},"\u2398")),u=e=>(0,s.kt)(n.Fragment,null,(0,s.kt)("span",{class:"badge badge--"+e.class},e.text)),b={toc:p,Bullet:d,SpecifiedBy:m,Badge:u},y="wrapper";function f(e){let{components:t,...a}=e;return(0,s.kt)(y,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"The ",(0,s.kt)("inlineCode",{parentName:"p"},"String")," scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-graphql"},"scalar String\n")),(0,s.kt)("h3",{id:"member-of"},"Member of"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/data"},(0,s.kt)("inlineCode",{parentName:"a"},"Data"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/endpoint"},(0,s.kt)("inlineCode",{parentName:"a"},"Endpoint"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/node"},(0,s.kt)("inlineCode",{parentName:"a"},"Node"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/token"},(0,s.kt)("inlineCode",{parentName:"a"},"Token"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction"},(0,s.kt)("inlineCode",{parentName:"a"},"Transaction"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-error"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionError"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-input"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionInput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-movement"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionMovement"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/transaction-summary"},(0,s.kt)("inlineCode",{parentName:"a"},"TransactionSummary"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/unspent-output"},(0,s.kt)("inlineCode",{parentName:"a"},"UnspentOutput"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"}),(0,s.kt)(d,{mdxType:"Bullet"}),(0,s.kt)("a",{parentName:"p",href:"/build/api/schema/objects/version"},(0,s.kt)("inlineCode",{parentName:"a"},"Version"))," ",(0,s.kt)(u,{class:"secondary",text:"object",mdxType:"Badge"})))}f.isMDXComponent=!0},8209:(e,t,a)=>{a(7294)}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.7824dc03.js b/assets/js/runtime~main.b7f9b5e0.js similarity index 54% rename from assets/js/runtime~main.7824dc03.js rename to assets/js/runtime~main.b7f9b5e0.js index fd1c6d0dc..595d313f2 100644 --- a/assets/js/runtime~main.7824dc03.js +++ b/assets/js/runtime~main.b7f9b5e0.js @@ -1 +1 @@ -(()=>{"use strict";var e,f,b,a,c,d={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var b=t[e]={exports:{}};return d[e].call(b.exports,b,b.exports,r),b.exports}r.m=d,e=[],r.O=(f,b,a,c)=>{if(!b){var d=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](b[o])))?b.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[b,a,c]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var d={};f=f||[null,b({}),b([]),b(b)];for(var t=2&a&&e;"object"==typeof t&&!~f.indexOf(t);t=b(t))Object.getOwnPropertyNames(t).forEach((f=>d[f]=()=>e[f]));return d.default=()=>e,r.d(c,d),c},r.d=(e,f)=>{for(var b in f)r.o(f,b)&&!r.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:f[b]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,b)=>(r.f[b](e,f),f)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",81:"61e43ac9",246:"5037eb2b",330:"f57a1375",420:"72ec880a",669:"d2674f84",681:"dd15e14a",711:"8153e280",827:"851bf865",844:"6efc9e6d",847:"710ae1bb",932:"4ad6f564",974:"9bb63452",1113:"8a9337ba",1137:"12706266",1166:"147d0e4e",1171:"87dfbf5d",1172:"4eef9a57",1248:"a0393694",1260:"79891879",1263:"199f22fd",1328:"2fdf8aec",1340:"24510ea8",1484:"764c3c46",1592:"70e1f15f",1601:"4bf323b4",1690:"bbc3785e",1696:"ecdd1e85",1697:"bf6e295d",1710:"2bbc5cd2",1718:"daff3ff4",1719:"ac1890eb",1778:"a1844ead",1855:"b5651cae",1938:"b2e52e63",1950:"db2ee795",1996:"7764509b",2052:"bf608a00",2217:"4c0f205c",2282:"16e43f8e",2323:"ceaeeb36",2488:"441b3d3d",2491:"07f0fc78",2502:"840f9766",2614:"8d60aa1f",2814:"9280a2e5",2849:"66dc3ce4",2926:"5fe1ab02",2971:"2d63ea61",3042:"11838df3",3085:"1f391b9e",3168:"66076425",3305:"484af1f2",3355:"1b311f41",3382:"27ab3fd0",3446:"f63a5cf4",3559:"16aa5868",3592:"7bfcff53",3633:"0666b85a",3723:"c204078c",3747:"1872c6b8",3812:"07620fdf",3890:"a18b1795",4060:"bd14bfe1",4099:"b17a2c3b",4195:"c4f5d8e4",4230:"89af9b08",4338:"e2b19375",4398:"bb9d9339",4439:"45e94216",4552:"d781e8a6",4560:"77c64564",4732:"2c3d8110",4875:"fb57a917",4889:"57fb9911",4898:"e0b1087e",5050:"56f0859a",5254:"300a963c",5258:"76b1eb51",5295:"0126df03",5344:"c65c1395",5352:"44c96576",5371:"eeb513bd",5400:"2ab0cde1",5412:"fe684f20",5510:"e2f82150",5630:"65c808a4",5682:"f43cc2fc",5888:"36739131",5896:"93c272fe",5935:"7746a795",5944:"d0a652bb",5986:"310207c7",6087:"f5288705",6112:"190711b6",6289:"193cb586",6328:"410469d2",6451:"8b5bd275",6484:"244870c6",6509:"e49ee1a9",6518:"6aade8bf",6605:"21e44e7e",6631:"2bc40b18",6691:"7d24ac82",6694:"aa1914e6",6697:"be94c4be",6716:"02486155",6748:"5eea7269",6753:"cc668907",6783:"9de09737",6829:"b684cce9",6894:"0607e0c5",6898:"2f55ba46",6907:"d409b53d",7007:"fbab86a0",7028:"9d5784d1",7045:"66545c3d",7080:"4d54d076",7136:"c47075b4",7157:"0c928027",7265:"009f927a",7414:"393be207",7443:"ae218501",7482:"378b5e98",7486:"6638f55a",7527:"c31d0f42",7611:"0945e04b",7655:"7e96883b",7701:"ee388bf8",7741:"16c17b5d",7766:"2159a0a5",7790:"0946372c",7793:"41e024b6",7849:"777b0dfa",7866:"b434a052",7870:"14d826f7",7918:"17896441",8016:"9327017b",8087:"1735c347",8208:"c325c1c7",8227:"32bd85cf",8268:"145f3c45",8342:"55620597",8370:"c1d281e2",8544:"d5f21d1f",8568:"fe068327",8607:"fa629964",8610:"08912224",8682:"dae7efd3",8715:"9c964f59",8731:"8a7bb9f4",8959:"b4914bc5",8992:"3247e900",9036:"bd1424fb",9056:"a90ecf70",9091:"17dede69",9174:"05fd4dd8",9185:"e98eede6",9199:"59ac5e04",9216:"cc71d488",9254:"8dbf302e",9255:"6fa4dae1",9286:"a22626c5",9333:"f3ebdb21",9514:"1be78505",9559:"9c94cf05",9573:"aef11b3c",9707:"954979f8",9712:"749f8745",9740:"c505f0d9",9817:"14eb3368",9852:"c4bb8d44",9855:"d54033d7",9909:"c8c61268"}[e]||e)+"."+{53:"269128a3",81:"407432e5",120:"807668b3",246:"5fff2e78",330:"96144408",420:"4fd5a8b7",669:"f821bc06",681:"d46dbca8",711:"84a1a851",827:"e5db55b1",844:"f69ec375",847:"50d8bf17",932:"85c9a485",974:"9cb69565",1113:"8bc817f2",1137:"2a13b956",1166:"2689713c",1171:"a9191686",1172:"982d02aa",1248:"45b72d95",1260:"175ff9e5",1263:"f9b76d2e",1328:"3d53e858",1340:"6ae98bcf",1484:"02794c54",1592:"24c95cc9",1601:"ab143a49",1690:"3298e81c",1696:"0c26c068",1697:"b3682a54",1710:"73b3213c",1718:"e65d413d",1719:"1e4ae3d2",1778:"4dfea765",1855:"19b35354",1938:"a998ff52",1950:"c18cbdef",1996:"35b6ee22",2052:"08d4d1aa",2217:"ee0463c4",2282:"fdb95d35",2323:"41779d5f",2488:"dc4b7ed7",2491:"ebd5c48d",2502:"0863c95b",2614:"a4c8fe50",2784:"f1b174e4",2814:"f3441417",2849:"43989ef2",2926:"51a85f80",2971:"317c32d5",3042:"5bb97674",3085:"c006f325",3168:"39215876",3305:"b5ff9e27",3355:"a4c5609a",3382:"583f2a51",3446:"5621a4ad",3559:"1ba402ac",3592:"a2526bf8",3633:"37d4ad68",3723:"9a201e98",3747:"454d14d8",3812:"e4f4f20b",3890:"9f9eb0a5",4060:"6616611b",4099:"2a990902",4195:"e4fe9374",4230:"e8cee91f",4338:"76028549",4398:"22e54186",4439:"1b01c570",4552:"c401cb17",4560:"21d4f1cd",4732:"36b29ddc",4875:"d1ffb678",4889:"c16384ac",4898:"d6818a21",4972:"fada9cb0",5050:"657b94c9",5254:"14633cff",5258:"49fb71f9",5295:"fe45d3af",5344:"ea7bda6d",5352:"a5f332f9",5371:"a8fc2376",5400:"4a1ff6a5",5412:"4c243562",5510:"3f492b27",5630:"26737a29",5682:"12580d38",5888:"4babf849",5896:"93352465",5935:"ca26196c",5944:"7274f371",5986:"b890e1f8",6087:"cea4e03b",6112:"a21b31bd",6289:"d63fe9c3",6328:"3a762a8e",6451:"e1e06d86",6484:"a4b31436",6509:"70137541",6518:"8594a04c",6605:"b731f269",6631:"140cacbc",6691:"eae084cf",6694:"684d74f4",6697:"1f4d1a52",6716:"b22e57c2",6748:"53325f97",6753:"37159abc",6783:"a43df085",6829:"9d64b9e8",6894:"31171ab2",6898:"b79d99cc",6907:"8ec4dace",7007:"01c31479",7028:"e47292aa",7045:"b8b47866",7080:"e8dbc213",7136:"a25fedf9",7157:"86ddbe9d",7265:"2bb2ef0c",7319:"6d46e2d5",7414:"71f53108",7443:"101c193f",7482:"6a40ee45",7486:"3652f3f8",7527:"0d79c0c6",7611:"2a9907b5",7655:"4bb205de",7701:"de7afe3d",7741:"37b26807",7766:"abd010e6",7790:"abe76719",7793:"f66330cf",7849:"8ce73a0d",7866:"41689d96",7870:"8d474c3e",7888:"a452b1f9",7918:"930dc307",8016:"1ebad2c7",8087:"32d815aa",8208:"6500a969",8227:"568874b3",8268:"a580fdc7",8342:"34aa18c0",8370:"e8f1baf5",8544:"77c1bd5e",8568:"cb584a22",8607:"a6656bfe",8610:"da7e0b17",8682:"15c43f47",8715:"8ed8d136",8731:"569e8e95",8959:"154d8b0b",8992:"3f926fd2",9036:"818e58cf",9056:"f1e42c8c",9091:"5513e72e",9174:"67c8c821",9185:"56a87fb8",9199:"ae0c5941",9216:"c8961cd6",9254:"26ab8380",9255:"9d3ce132",9286:"77a1cfd6",9333:"7aa98a0b",9514:"2a585bfd",9559:"0e59a491",9573:"c599cf22",9707:"075bab30",9712:"0f432c8d",9740:"672b425d",9817:"c795aef9",9852:"0007b4a3",9855:"77929368",9909:"a04e6b67"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),a={},c="docs:",r.l=(e,f,b,d)=>{if(a[e])a[e].push(f);else{var t,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=a[e];if(delete a[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(b))),f)return f(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={12706266:"1137",17896441:"7918",36739131:"5888",55620597:"8342",66076425:"3168",79891879:"1260","935f2afb":"53","61e43ac9":"81","5037eb2b":"246",f57a1375:"330","72ec880a":"420",d2674f84:"669",dd15e14a:"681","8153e280":"711","851bf865":"827","6efc9e6d":"844","710ae1bb":"847","4ad6f564":"932","9bb63452":"974","8a9337ba":"1113","147d0e4e":"1166","87dfbf5d":"1171","4eef9a57":"1172",a0393694:"1248","199f22fd":"1263","2fdf8aec":"1328","24510ea8":"1340","764c3c46":"1484","70e1f15f":"1592","4bf323b4":"1601",bbc3785e:"1690",ecdd1e85:"1696",bf6e295d:"1697","2bbc5cd2":"1710",daff3ff4:"1718",ac1890eb:"1719",a1844ead:"1778",b5651cae:"1855",b2e52e63:"1938",db2ee795:"1950","7764509b":"1996",bf608a00:"2052","4c0f205c":"2217","16e43f8e":"2282",ceaeeb36:"2323","441b3d3d":"2488","07f0fc78":"2491","840f9766":"2502","8d60aa1f":"2614","9280a2e5":"2814","66dc3ce4":"2849","5fe1ab02":"2926","2d63ea61":"2971","11838df3":"3042","1f391b9e":"3085","484af1f2":"3305","1b311f41":"3355","27ab3fd0":"3382",f63a5cf4:"3446","16aa5868":"3559","7bfcff53":"3592","0666b85a":"3633",c204078c:"3723","1872c6b8":"3747","07620fdf":"3812",a18b1795:"3890",bd14bfe1:"4060",b17a2c3b:"4099",c4f5d8e4:"4195","89af9b08":"4230",e2b19375:"4338",bb9d9339:"4398","45e94216":"4439",d781e8a6:"4552","77c64564":"4560","2c3d8110":"4732",fb57a917:"4875","57fb9911":"4889",e0b1087e:"4898","56f0859a":"5050","300a963c":"5254","76b1eb51":"5258","0126df03":"5295",c65c1395:"5344","44c96576":"5352",eeb513bd:"5371","2ab0cde1":"5400",fe684f20:"5412",e2f82150:"5510","65c808a4":"5630",f43cc2fc:"5682","93c272fe":"5896","7746a795":"5935",d0a652bb:"5944","310207c7":"5986",f5288705:"6087","190711b6":"6112","193cb586":"6289","410469d2":"6328","8b5bd275":"6451","244870c6":"6484",e49ee1a9:"6509","6aade8bf":"6518","21e44e7e":"6605","2bc40b18":"6631","7d24ac82":"6691",aa1914e6:"6694",be94c4be:"6697","02486155":"6716","5eea7269":"6748",cc668907:"6753","9de09737":"6783",b684cce9:"6829","0607e0c5":"6894","2f55ba46":"6898",d409b53d:"6907",fbab86a0:"7007","9d5784d1":"7028","66545c3d":"7045","4d54d076":"7080",c47075b4:"7136","0c928027":"7157","009f927a":"7265","393be207":"7414",ae218501:"7443","378b5e98":"7482","6638f55a":"7486",c31d0f42:"7527","0945e04b":"7611","7e96883b":"7655",ee388bf8:"7701","16c17b5d":"7741","2159a0a5":"7766","0946372c":"7790","41e024b6":"7793","777b0dfa":"7849",b434a052:"7866","14d826f7":"7870","9327017b":"8016","1735c347":"8087",c325c1c7:"8208","32bd85cf":"8227","145f3c45":"8268",c1d281e2:"8370",d5f21d1f:"8544",fe068327:"8568",fa629964:"8607","08912224":"8610",dae7efd3:"8682","9c964f59":"8715","8a7bb9f4":"8731",b4914bc5:"8959","3247e900":"8992",bd1424fb:"9036",a90ecf70:"9056","17dede69":"9091","05fd4dd8":"9174",e98eede6:"9185","59ac5e04":"9199",cc71d488:"9216","8dbf302e":"9254","6fa4dae1":"9255",a22626c5:"9286",f3ebdb21:"9333","1be78505":"9514","9c94cf05":"9559",aef11b3c:"9573","954979f8":"9707","749f8745":"9712",c505f0d9:"9740","14eb3368":"9817",c4bb8d44:"9852",d54033d7:"9855",c8c61268:"9909"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(f,b)=>{var a=r.o(e,f)?e[f]:void 0;if(0!==a)if(a)b.push(a[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var c=new Promise(((b,c)=>a=e[f]=[b,c]));b.push(a[2]=c);var d=r.p+r.u(f),t=new Error;r.l(d,(b=>{if(r.o(e,f)&&(0!==(a=e[f])&&(e[f]=void 0),a)){var c=b&&("load"===b.type?"missing":b.type),d=b&&b.target&&b.target.src;t.message="Loading chunk "+f+" failed.\n("+c+": "+d+")",t.name="ChunkLoadError",t.type=c,t.request=d,a[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,b)=>{var a,c,d=b[0],t=b[1],o=b[2],n=0;if(d.some((f=>0!==e[f]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(f&&f(b);n{"use strict";var e,a,f,b,d,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return c[e].call(f.exports,f,f.exports,r),f.exports}r.m=c,e=[],r.O=(a,f,b,d)=>{if(!f){var c=1/0;for(i=0;i=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,b,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(d,c),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",81:"61e43ac9",246:"5037eb2b",330:"f57a1375",420:"72ec880a",669:"d2674f84",681:"dd15e14a",711:"8153e280",827:"851bf865",844:"6efc9e6d",847:"710ae1bb",932:"4ad6f564",974:"9bb63452",1113:"8a9337ba",1137:"12706266",1166:"147d0e4e",1171:"87dfbf5d",1172:"4eef9a57",1248:"a0393694",1260:"79891879",1263:"199f22fd",1328:"2fdf8aec",1340:"24510ea8",1484:"764c3c46",1592:"70e1f15f",1601:"4bf323b4",1690:"bbc3785e",1696:"ecdd1e85",1697:"bf6e295d",1710:"2bbc5cd2",1718:"daff3ff4",1719:"ac1890eb",1778:"a1844ead",1855:"b5651cae",1938:"b2e52e63",1950:"db2ee795",1996:"7764509b",2052:"bf608a00",2217:"4c0f205c",2282:"16e43f8e",2323:"ceaeeb36",2488:"441b3d3d",2491:"07f0fc78",2502:"840f9766",2614:"8d60aa1f",2814:"9280a2e5",2849:"66dc3ce4",2926:"5fe1ab02",2971:"2d63ea61",3042:"11838df3",3085:"1f391b9e",3168:"66076425",3305:"484af1f2",3355:"1b311f41",3382:"27ab3fd0",3446:"f63a5cf4",3559:"16aa5868",3592:"7bfcff53",3633:"0666b85a",3723:"c204078c",3747:"1872c6b8",3812:"07620fdf",3890:"a18b1795",4060:"bd14bfe1",4099:"b17a2c3b",4195:"c4f5d8e4",4230:"89af9b08",4338:"e2b19375",4398:"bb9d9339",4439:"45e94216",4552:"d781e8a6",4560:"77c64564",4732:"2c3d8110",4875:"fb57a917",4889:"57fb9911",4898:"e0b1087e",5050:"56f0859a",5254:"300a963c",5258:"76b1eb51",5295:"0126df03",5344:"c65c1395",5352:"44c96576",5371:"eeb513bd",5400:"2ab0cde1",5412:"fe684f20",5510:"e2f82150",5630:"65c808a4",5682:"f43cc2fc",5888:"36739131",5896:"93c272fe",5935:"7746a795",5944:"d0a652bb",5986:"310207c7",6087:"f5288705",6112:"190711b6",6289:"193cb586",6328:"410469d2",6451:"8b5bd275",6484:"244870c6",6509:"e49ee1a9",6518:"6aade8bf",6605:"21e44e7e",6631:"2bc40b18",6691:"7d24ac82",6694:"aa1914e6",6697:"be94c4be",6716:"02486155",6748:"5eea7269",6753:"cc668907",6783:"9de09737",6829:"b684cce9",6894:"0607e0c5",6898:"2f55ba46",6907:"d409b53d",7007:"fbab86a0",7028:"9d5784d1",7045:"66545c3d",7080:"4d54d076",7136:"c47075b4",7157:"0c928027",7265:"009f927a",7414:"393be207",7443:"ae218501",7482:"378b5e98",7486:"6638f55a",7527:"c31d0f42",7611:"0945e04b",7655:"7e96883b",7701:"ee388bf8",7741:"16c17b5d",7766:"2159a0a5",7790:"0946372c",7793:"41e024b6",7849:"777b0dfa",7866:"b434a052",7870:"14d826f7",7918:"17896441",8016:"9327017b",8087:"1735c347",8208:"c325c1c7",8227:"32bd85cf",8268:"145f3c45",8342:"55620597",8370:"c1d281e2",8544:"d5f21d1f",8568:"fe068327",8607:"fa629964",8610:"08912224",8682:"dae7efd3",8715:"9c964f59",8731:"8a7bb9f4",8959:"b4914bc5",8992:"3247e900",9036:"bd1424fb",9056:"a90ecf70",9091:"17dede69",9174:"05fd4dd8",9185:"e98eede6",9199:"59ac5e04",9216:"cc71d488",9254:"8dbf302e",9255:"6fa4dae1",9286:"a22626c5",9333:"f3ebdb21",9514:"1be78505",9559:"9c94cf05",9573:"aef11b3c",9707:"954979f8",9712:"749f8745",9740:"c505f0d9",9817:"14eb3368",9852:"c4bb8d44",9855:"d54033d7",9909:"c8c61268"}[e]||e)+"."+{53:"9e849e78",81:"3fc8451f",120:"807668b3",246:"0b00f1bd",330:"ee36a749",420:"5d59cddf",669:"0f20fedb",681:"dbdbd7c6",711:"96c1d634",827:"1beb6a1d",844:"ef89e8a7",847:"b3d0bda0",932:"20c06c34",974:"a04233bc",1113:"1851e4cb",1137:"b8064979",1166:"199b9b7e",1171:"8e42eea6",1172:"982d02aa",1248:"8e936b9d",1260:"ef79de06",1263:"1f9e0c61",1328:"4467995e",1340:"e64959e2",1484:"550f8056",1592:"19bcd286",1601:"d17fe127",1690:"f98bb5a6",1696:"b1bda1ed",1697:"e6da95b2",1710:"0fc39d00",1718:"d73c314e",1719:"a552e2df",1778:"15d3ebba",1855:"9a62a652",1938:"627cf788",1950:"4015dd2f",1996:"044ee5c3",2052:"9dd6c6da",2217:"2c39320a",2282:"6da186e5",2323:"d27ff7c0",2488:"eac79287",2491:"7199b2e7",2502:"0863c95b",2614:"02e27dfc",2784:"f1b174e4",2814:"a1c331ac",2849:"43989ef2",2926:"5be26fde",2971:"d487f77f",3042:"0702be45",3085:"c006f325",3168:"7a04d023",3305:"8e3fa63a",3355:"b044aff3",3382:"c42f5e56",3446:"b210a4da",3559:"e07eb173",3592:"30945eb1",3633:"dcbfe9e3",3723:"ff9b82b6",3747:"28a92b85",3812:"ad9390af",3890:"1c35be55",4060:"145935ab",4099:"346acf95",4195:"e4fe9374",4230:"f43b7d3d",4338:"fad8c941",4398:"c09c1ea3",4439:"bcb4a71c",4552:"1f2a63b5",4560:"21d4f1cd",4732:"f1597fe2",4875:"2d173326",4889:"a9cc012e",4898:"c78ebb77",4972:"fada9cb0",5050:"a741d6af",5254:"a468f04b",5258:"8d7d2297",5295:"ab689ac9",5344:"0be46385",5352:"64e39ec9",5371:"9240e1bf",5400:"8338a378",5412:"1c102692",5510:"f14336b9",5630:"d576851c",5682:"12580d38",5888:"0630d706",5896:"4a70eec2",5935:"957b7ccf",5944:"2c7745ee",5986:"ee94769d",6087:"57da98d0",6112:"a21b31bd",6289:"54a5df7c",6328:"b5bd10ed",6451:"9a024590",6484:"505ba13d",6509:"e41e533c",6518:"cdcd3b04",6605:"4cabcc49",6631:"6e88fc89",6691:"a277f537",6694:"91bf66fe",6697:"463097b0",6716:"96eac468",6748:"50a08f79",6753:"dcb88331",6783:"a8862144",6829:"7ff56709",6894:"e7409be4",6898:"a23b6c37",6907:"0dcb8ca0",7007:"526425a9",7028:"ef361cee",7045:"392862a4",7080:"f8a1f211",7136:"2c8cecfa",7157:"c00e3b5e",7265:"f940b2b7",7319:"6d46e2d5",7414:"71f53108",7443:"85eca28f",7482:"d998a6a5",7486:"18ac5644",7527:"4f985764",7611:"a1f77a29",7655:"b3ff60ee",7701:"2bf3ae01",7741:"f34591e9",7766:"9cdad23a",7790:"bf638d1a",7793:"e220f692",7849:"54930575",7866:"41689d96",7870:"244f0081",7888:"a452b1f9",7918:"930dc307",8016:"0592043e",8087:"68f5c063",8208:"0ef06873",8227:"b7f46bb8",8268:"03610a43",8342:"e0da184f",8370:"e8f1baf5",8544:"829b6cfa",8568:"3659ad97",8607:"f513f93a",8610:"8b2f1a1a",8682:"f16d5eb9",8715:"6fb627df",8731:"569e8e95",8959:"3854a83d",8992:"1dc12107",9036:"50035d95",9056:"841855d6",9091:"c5c51daa",9174:"97ef881f",9185:"9e863936",9199:"67c0f95b",9216:"15fc1b32",9254:"779b84a2",9255:"2aee737b",9286:"b11552ea",9333:"20cd0ba2",9514:"2a585bfd",9559:"274e2ca0",9573:"d631b395",9707:"51bfeb3a",9712:"9a2e54b6",9740:"672b425d",9817:"c795aef9",9852:"93e50b0e",9855:"2fda2925",9909:"1cc02e9e"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},d="docs:",r.l=(e,a,f,c)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={12706266:"1137",17896441:"7918",36739131:"5888",55620597:"8342",66076425:"3168",79891879:"1260","935f2afb":"53","61e43ac9":"81","5037eb2b":"246",f57a1375:"330","72ec880a":"420",d2674f84:"669",dd15e14a:"681","8153e280":"711","851bf865":"827","6efc9e6d":"844","710ae1bb":"847","4ad6f564":"932","9bb63452":"974","8a9337ba":"1113","147d0e4e":"1166","87dfbf5d":"1171","4eef9a57":"1172",a0393694:"1248","199f22fd":"1263","2fdf8aec":"1328","24510ea8":"1340","764c3c46":"1484","70e1f15f":"1592","4bf323b4":"1601",bbc3785e:"1690",ecdd1e85:"1696",bf6e295d:"1697","2bbc5cd2":"1710",daff3ff4:"1718",ac1890eb:"1719",a1844ead:"1778",b5651cae:"1855",b2e52e63:"1938",db2ee795:"1950","7764509b":"1996",bf608a00:"2052","4c0f205c":"2217","16e43f8e":"2282",ceaeeb36:"2323","441b3d3d":"2488","07f0fc78":"2491","840f9766":"2502","8d60aa1f":"2614","9280a2e5":"2814","66dc3ce4":"2849","5fe1ab02":"2926","2d63ea61":"2971","11838df3":"3042","1f391b9e":"3085","484af1f2":"3305","1b311f41":"3355","27ab3fd0":"3382",f63a5cf4:"3446","16aa5868":"3559","7bfcff53":"3592","0666b85a":"3633",c204078c:"3723","1872c6b8":"3747","07620fdf":"3812",a18b1795:"3890",bd14bfe1:"4060",b17a2c3b:"4099",c4f5d8e4:"4195","89af9b08":"4230",e2b19375:"4338",bb9d9339:"4398","45e94216":"4439",d781e8a6:"4552","77c64564":"4560","2c3d8110":"4732",fb57a917:"4875","57fb9911":"4889",e0b1087e:"4898","56f0859a":"5050","300a963c":"5254","76b1eb51":"5258","0126df03":"5295",c65c1395:"5344","44c96576":"5352",eeb513bd:"5371","2ab0cde1":"5400",fe684f20:"5412",e2f82150:"5510","65c808a4":"5630",f43cc2fc:"5682","93c272fe":"5896","7746a795":"5935",d0a652bb:"5944","310207c7":"5986",f5288705:"6087","190711b6":"6112","193cb586":"6289","410469d2":"6328","8b5bd275":"6451","244870c6":"6484",e49ee1a9:"6509","6aade8bf":"6518","21e44e7e":"6605","2bc40b18":"6631","7d24ac82":"6691",aa1914e6:"6694",be94c4be:"6697","02486155":"6716","5eea7269":"6748",cc668907:"6753","9de09737":"6783",b684cce9:"6829","0607e0c5":"6894","2f55ba46":"6898",d409b53d:"6907",fbab86a0:"7007","9d5784d1":"7028","66545c3d":"7045","4d54d076":"7080",c47075b4:"7136","0c928027":"7157","009f927a":"7265","393be207":"7414",ae218501:"7443","378b5e98":"7482","6638f55a":"7486",c31d0f42:"7527","0945e04b":"7611","7e96883b":"7655",ee388bf8:"7701","16c17b5d":"7741","2159a0a5":"7766","0946372c":"7790","41e024b6":"7793","777b0dfa":"7849",b434a052:"7866","14d826f7":"7870","9327017b":"8016","1735c347":"8087",c325c1c7:"8208","32bd85cf":"8227","145f3c45":"8268",c1d281e2:"8370",d5f21d1f:"8544",fe068327:"8568",fa629964:"8607","08912224":"8610",dae7efd3:"8682","9c964f59":"8715","8a7bb9f4":"8731",b4914bc5:"8959","3247e900":"8992",bd1424fb:"9036",a90ecf70:"9056","17dede69":"9091","05fd4dd8":"9174",e98eede6:"9185","59ac5e04":"9199",cc71d488:"9216","8dbf302e":"9254","6fa4dae1":"9255",a22626c5:"9286",f3ebdb21:"9333","1be78505":"9514","9c94cf05":"9559",aef11b3c:"9573","954979f8":"9707","749f8745":"9712",c505f0d9:"9740","14eb3368":"9817",c4bb8d44:"9852",d54033d7:"9855",c8c61268:"9909"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>b=e[a]=[f,d]));f.push(b[2]=d);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var d=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+c+")",t.name="ChunkLoadError",t.type=d,t.request=c,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var b,d,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(f);n include | Archethic - +
-

include

Directs the executor to include this field or fragment only when the if argument is true.

directive @include(
if: Boolean!
)

Arguments

include.if ● Boolean! non-null scalar

Included when true.

- +

include

Directs the executor to include this field or fragment only when the if argument is true.

directive @include(
if: Boolean!
)

Arguments

include.if ● Boolean! non-null scalar

Included when true.

+ \ No newline at end of file diff --git a/build/api/schema/directives/skip/index.html b/build/api/schema/directives/skip/index.html index d2eb6b756..8b023c9fc 100644 --- a/build/api/schema/directives/skip/index.html +++ b/build/api/schema/directives/skip/index.html @@ -4,13 +4,13 @@ skip | Archethic - +
-

skip

Directs the executor to skip this field or fragment when the if argument is true.

directive @skip(
if: Boolean!
)

Arguments

skip.if ● Boolean! non-null scalar

Skipped when true.

- +

skip

Directs the executor to skip this field or fragment when the if argument is true.

directive @skip(
if: Boolean!
)

Arguments

skip.if ● Boolean! non-null scalar

Skipped when true.

+ \ No newline at end of file diff --git a/build/api/schema/enums/error-context/index.html b/build/api/schema/enums/error-context/index.html index 3bd164438..2d82cdd9e 100644 --- a/build/api/schema/enums/error-context/index.html +++ b/build/api/schema/enums/error-context/index.html @@ -4,13 +4,13 @@ ErrorContext | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/enums/sort-order/index.html b/build/api/schema/enums/sort-order/index.html index 9ee99e15f..1c7c6d506 100644 --- a/build/api/schema/enums/sort-order/index.html +++ b/build/api/schema/enums/sort-order/index.html @@ -4,14 +4,14 @@ SortOrder | Archethic - + - +possible values are ASC or DESC

enum SortOrder {
ASC
DESC
}

Values

SortOrder.ASC

Ascending order

SortOrder.DESC

Descending order

Member of

transactionChain query

+ \ No newline at end of file diff --git a/build/api/schema/objects/authorized-key/index.html b/build/api/schema/objects/authorized-key/index.html index c7df7fa9d..ba4b26cbc 100644 --- a/build/api/schema/objects/authorized-key/index.html +++ b/build/api/schema/objects/authorized-key/index.html @@ -4,14 +4,14 @@ AuthorizedKey | Archethic - + - +By decrypting this secret key, the authorized public key will be able to decrypt its related secret

type AuthorizedKey {
encryptedSecretKey: Hex
publicKey: PublicKey
}

Fields

AuthorizedKey.encryptedSecretKey ● Hex scalar

AuthorizedKey.publicKey ● PublicKey scalar

Member of

Ownership object

+ \ No newline at end of file diff --git a/build/api/schema/objects/balance/index.html b/build/api/schema/objects/balance/index.html index 91f2e675a..59dadea24 100644 --- a/build/api/schema/objects/balance/index.html +++ b/build/api/schema/objects/balance/index.html @@ -4,14 +4,14 @@ Balance | Archethic - + - +It includes:

  • UCO: uco balance
  • token: token balances
type Balance {
token: [TokenBalance]
uco: Int
}

Fields

Balance.token ● [TokenBalance] list object

Balance.uco ● Int scalar

Returned by

balance query

Member of

Transaction object

+ \ No newline at end of file diff --git a/build/api/schema/objects/beacon-chain-summary/index.html b/build/api/schema/objects/beacon-chain-summary/index.html index 867edfefb..bc7774a9b 100644 --- a/build/api/schema/objects/beacon-chain-summary/index.html +++ b/build/api/schema/objects/beacon-chain-summary/index.html @@ -4,13 +4,13 @@ BeaconChainSummary | Archethic - +
-
- + + \ No newline at end of file diff --git a/build/api/schema/objects/cross-validation-stamp/index.html b/build/api/schema/objects/cross-validation-stamp/index.html index 5126c8b4a..54763b655 100644 --- a/build/api/schema/objects/cross-validation-stamp/index.html +++ b/build/api/schema/objects/cross-validation-stamp/index.html @@ -4,14 +4,14 @@ CrossValidationStamp | Archethic - + - +It includes:

  • Signature: signature of the validation stamp
  • Node public key: cross validation node's public key
type CrossValidationStamp {
nodePublicKey: PublicKey
signature: Hex
}

Fields

CrossValidationStamp.nodePublicKey ● PublicKey scalar

CrossValidationStamp.signature ● Hex scalar

Member of

Transaction object

+ \ No newline at end of file diff --git a/build/api/schema/objects/data/index.html b/build/api/schema/objects/data/index.html index a3715d635..d8223326f 100644 --- a/build/api/schema/objects/data/index.html +++ b/build/api/schema/objects/data/index.html @@ -4,14 +4,14 @@ Data | Archethic - +

Data

[TransactionData] represents the data section for every transaction. -It includes:

  • Ledger: asset transfers
  • Code: smart contract code (hexadecimal),
  • Content: free zone for data hosting (string or hexadecimal)
  • Ownership: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • Recipients: For non asset transfers, the list of recipients of the transaction (e.g Smart contract interactions)
type Data {
code: String
content: Content
ledger: Ledger
ownerships: [Ownership]
recipients: [Address]
}

Fields

Data.code ● String scalar

Data.content ● Content scalar

Data.ledger ● Ledger object

Data.ownerships ● [Ownership] list object

Data.recipients ● [Address] list scalar

Member of

Transaction object

- +It includes:

  • Ledger: asset transfers
  • Code: smart contract code (hexadecimal),
  • Content: free zone for data hosting (string or hexadecimal)
  • Ownership: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • Recipients: For non asset transfers, the list of recipients of the transaction (e.g Smart contract interactions)
type Data {
code: String
content: Content
ledger: Ledger
ownerships: [Ownership]
recipients: [Address]
}

Fields

Data.code ● String scalar

Data.content ● Content scalar

Data.ledger ● Ledger object

Data.ownerships ● [Ownership] list object

Data.recipients ● [Address] list scalar

Member of

Transaction object

+ \ No newline at end of file diff --git a/build/api/schema/objects/endpoint/index.html b/build/api/schema/objects/endpoint/index.html index 9a312b183..f99cac645 100644 --- a/build/api/schema/objects/endpoint/index.html +++ b/build/api/schema/objects/endpoint/index.html @@ -4,13 +4,13 @@ Endpoint | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/ledger-operations/index.html b/build/api/schema/objects/ledger-operations/index.html index 55a6fc447..82898a9b0 100644 --- a/build/api/schema/objects/ledger-operations/index.html +++ b/build/api/schema/objects/ledger-operations/index.html @@ -4,14 +4,14 @@ LedgerOperations | Archethic - + - +It includes:

  • Transaction movements: assets transfers
  • Unspent outputs: remaining unspent outputs
  • Fee: transaction fee
type LedgerOperations {
fee: Int
transactionMovements: [TransactionMovement]
unspentOutputs: [UnspentOutput]
}

Fields

LedgerOperations.fee ● Int scalar

LedgerOperations.transactionMovements ● [TransactionMovement] list object

LedgerOperations.unspentOutputs ● [UnspentOutput] list object

Member of

ValidationStamp object

+ \ No newline at end of file diff --git a/build/api/schema/objects/ledger/index.html b/build/api/schema/objects/ledger/index.html index ab02e2d8b..93c1a1d41 100644 --- a/build/api/schema/objects/ledger/index.html +++ b/build/api/schema/objects/ledger/index.html @@ -4,13 +4,13 @@ Ledger | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/node/index.html b/build/api/schema/objects/node/index.html index f8c2886c3..4d09cd7dc 100644 --- a/build/api/schema/objects/node/index.html +++ b/build/api/schema/objects/node/index.html @@ -4,13 +4,13 @@ Node | Archethic - +
-

Node

[Node] represents a node in the network

type Node {
authorizationDate: Timestamp
authorized: Boolean
available: Boolean
averageAvailability: Float
enrollmentDate: Timestamp
firstPublicKey: PublicKey
geoPatch: String
ip: String
lastPublicKey: PublicKey
networkPatch: String
originPublicKey: PublicKey
port: Int
rewardAddress: Address
}

Fields

Node.authorizationDate ● Timestamp scalar

Node.authorized ● Boolean scalar

Node.available ● Boolean scalar

Node.averageAvailability ● Float scalar

Node.enrollmentDate ● Timestamp scalar

Node.firstPublicKey ● PublicKey scalar

Node.geoPatch ● String scalar

Node.ip ● String scalar

Node.lastPublicKey ● PublicKey scalar

Node.networkPatch ● String scalar

Node.originPublicKey ● PublicKey scalar

Node.port ● Int scalar

Node.rewardAddress ● Address scalar

Returned by

nodes query

- +

Node

[Node] represents a node in the network

type Node {
authorizationDate: Timestamp
authorized: Boolean
available: Boolean
averageAvailability: Float
enrollmentDate: Timestamp
firstPublicKey: PublicKey
geoPatch: String
ip: String
lastPublicKey: PublicKey
networkPatch: String
originPublicKey: PublicKey
port: Int
rewardAddress: Address
}

Fields

Node.authorizationDate ● Timestamp scalar

Node.authorized ● Boolean scalar

Node.available ● Boolean scalar

Node.averageAvailability ● Float scalar

Node.enrollmentDate ● Timestamp scalar

Node.firstPublicKey ● PublicKey scalar

Node.geoPatch ● String scalar

Node.ip ● String scalar

Node.lastPublicKey ● PublicKey scalar

Node.networkPatch ● String scalar

Node.originPublicKey ● PublicKey scalar

Node.port ● Int scalar

Node.rewardAddress ● Address scalar

Returned by

nodes query

+ \ No newline at end of file diff --git a/build/api/schema/objects/oracle-data/index.html b/build/api/schema/objects/oracle-data/index.html index 865c17dbd..471aa8825 100644 --- a/build/api/schema/objects/oracle-data/index.html +++ b/build/api/schema/objects/oracle-data/index.html @@ -4,13 +4,13 @@ OracleData | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/oracle-services/index.html b/build/api/schema/objects/oracle-services/index.html index a8989eda1..1786a1e8f 100644 --- a/build/api/schema/objects/oracle-services/index.html +++ b/build/api/schema/objects/oracle-services/index.html @@ -4,13 +4,13 @@ OracleServices | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/ownership/index.html b/build/api/schema/objects/ownership/index.html index 458d4978d..59c2d5028 100644 --- a/build/api/schema/objects/ownership/index.html +++ b/build/api/schema/objects/ownership/index.html @@ -4,13 +4,13 @@ Ownership | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/shared-secrets/index.html b/build/api/schema/objects/shared-secrets/index.html index 1e8bad56f..44cc497ed 100644 --- a/build/api/schema/objects/shared-secrets/index.html +++ b/build/api/schema/objects/shared-secrets/index.html @@ -4,14 +4,14 @@ SharedSecrets | Archethic - + - +It includes:

  • The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)
type SharedSecrets {
storageNoncePublicKey: PublicKey
}

Fields

SharedSecrets.storageNoncePublicKey ● PublicKey scalar

Returned by

sharedSecrets query

+ \ No newline at end of file diff --git a/build/api/schema/objects/token-balance/index.html b/build/api/schema/objects/token-balance/index.html index 89fadd8af..2b9449324 100644 --- a/build/api/schema/objects/token-balance/index.html +++ b/build/api/schema/objects/token-balance/index.html @@ -4,14 +4,14 @@ TokenBalance | Archethic - + - +It includes:

  • Token: address of the token
  • Amount: amount of token
  • Token ID: ID of the token
type TokenBalance {
address: Address
amount: Int
tokenId: Int
}

Fields

TokenBalance.address ● Address scalar

TokenBalance.amount ● Int scalar

TokenBalance.tokenId ● Int scalar

Member of

Balance object

+ \ No newline at end of file diff --git a/build/api/schema/objects/token-ledger/index.html b/build/api/schema/objects/token-ledger/index.html index aacc2a83e..e0b0f85df 100644 --- a/build/api/schema/objects/token-ledger/index.html +++ b/build/api/schema/objects/token-ledger/index.html @@ -4,13 +4,13 @@ TokenLedger | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/token-transfer/index.html b/build/api/schema/objects/token-transfer/index.html index 36214c60a..a890db2e8 100644 --- a/build/api/schema/objects/token-transfer/index.html +++ b/build/api/schema/objects/token-transfer/index.html @@ -4,13 +4,13 @@ TokenTransfer | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/token/index.html b/build/api/schema/objects/token/index.html index 20344b786..ae669d4ef 100644 --- a/build/api/schema/objects/token/index.html +++ b/build/api/schema/objects/token/index.html @@ -4,14 +4,14 @@ Token | Archethic - +

Token

[token] represents a token metadata. -It includes:

  • genesis: Genesis address to the token
  • name: Name of the token
  • symbol: Symbol of the token
  • supply: Supply of the token
  • type: Type of the token
  • decimals: Number of decimals of the token
  • properties: Properties of the token (if any)
  • collection: List of properties for a collection (if any)
  • ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • id: Unique identification of the token on the chain
type Token {
collection: [TokenProperties]
decimals: Int
genesis: Address
id: String
name: String
ownerships: [Ownership]
properties: TokenProperties
supply: Int
symbol: String
type: String
}

Fields

Token.collection ● [TokenProperties] list scalar

Token.decimals ● Int scalar

Token.genesis ● Address scalar

Token.id ● String scalar

Token.name ● String scalar

Token.ownerships ● [Ownership] list object

Token.properties ● TokenProperties scalar

Token.supply ● Int scalar

Token.symbol ● String scalar

Token.type ● String scalar

Returned by

token query

- +It includes:

  • genesis: Genesis address to the token
  • name: Name of the token
  • symbol: Symbol of the token
  • supply: Supply of the token
  • type: Type of the token
  • decimals: Number of decimals of the token
  • properties: Properties of the token (if any)
  • collection: List of properties for a collection (if any)
  • ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • id: Unique identification of the token on the chain
type Token {
collection: [TokenProperties]
decimals: Int
genesis: Address
id: String
name: String
ownerships: [Ownership]
properties: TokenProperties
supply: Int
symbol: String
type: String
}

Fields

Token.collection ● [TokenProperties] list scalar

Token.decimals ● Int scalar

Token.genesis ● Address scalar

Token.id ● String scalar

Token.name ● String scalar

Token.ownerships ● [Ownership] list object

Token.properties ● TokenProperties scalar

Token.supply ● Int scalar

Token.symbol ● String scalar

Token.type ● String scalar

Returned by

token query

+ \ No newline at end of file diff --git a/build/api/schema/objects/transaction-attestation/index.html b/build/api/schema/objects/transaction-attestation/index.html index e2c72299a..fecb5505c 100644 --- a/build/api/schema/objects/transaction-attestation/index.html +++ b/build/api/schema/objects/transaction-attestation/index.html @@ -4,14 +4,14 @@ TransactionAttestation | Archethic - + - +Few attestations can be received with differents confirmations to ensure a better security of the replication.

type TransactionAttestation {
address: Address
maxConfirmations: Int
nbConfirmations: Int
}

Fields

TransactionAttestation.address ● Address scalar

TransactionAttestation.maxConfirmations ● Int scalar

TransactionAttestation.nbConfirmations ● Int scalar

Returned by

transactionConfirmed subscription

+ \ No newline at end of file diff --git a/build/api/schema/objects/transaction-error/index.html b/build/api/schema/objects/transaction-error/index.html index 12548951c..eb153b20c 100644 --- a/build/api/schema/objects/transaction-error/index.html +++ b/build/api/schema/objects/transaction-error/index.html @@ -4,13 +4,13 @@ TransactionError | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/transaction-input/index.html b/build/api/schema/objects/transaction-input/index.html index 23ef80b44..0b0849875 100644 --- a/build/api/schema/objects/transaction-input/index.html +++ b/build/api/schema/objects/transaction-input/index.html @@ -4,14 +4,14 @@ TransactionInput | Archethic - +

TransactionInput

[TransactionInput] represents the inputs from the transaction -It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token/Call
  • token address: address of the token if the type is token
  • Spent: determines if the input has been spent
  • Timestamp: Date time when the inputs was generated
  • token id: It is the id for a token which is allocated when the token is minted.
type TransactionInput {
amount: Int
from: Address
spent: Boolean
timestamp: Timestamp
tokenAddress: Address
tokenId: Int
type: String
}

Fields

TransactionInput.amount ● Int scalar

TransactionInput.from ● Address scalar

TransactionInput.spent ● Boolean scalar

TransactionInput.timestamp ● Timestamp scalar

TransactionInput.tokenAddress ● Address scalar

TransactionInput.tokenId ● Int scalar

TransactionInput.type ● String scalar

Returned by

transactionInputs query

Member of

Transaction object

- +It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token/Call
  • token address: address of the token if the type is token
  • Spent: determines if the input has been spent
  • Timestamp: Date time when the inputs was generated
  • token id: It is the id for a token which is allocated when the token is minted.
type TransactionInput {
amount: Int
from: Address
spent: Boolean
timestamp: Timestamp
tokenAddress: Address
tokenId: Int
type: String
}

Fields

TransactionInput.amount ● Int scalar

TransactionInput.from ● Address scalar

TransactionInput.spent ● Boolean scalar

TransactionInput.timestamp ● Timestamp scalar

TransactionInput.tokenAddress ● Address scalar

TransactionInput.tokenId ● Int scalar

TransactionInput.type ● String scalar

Returned by

transactionInputs query

Member of

Transaction object

+ \ No newline at end of file diff --git a/build/api/schema/objects/transaction-movement/index.html b/build/api/schema/objects/transaction-movement/index.html index 1da2e50ae..10e6eee77 100644 --- a/build/api/schema/objects/transaction-movement/index.html +++ b/build/api/schema/objects/transaction-movement/index.html @@ -4,14 +4,14 @@ TransactionMovement | Archethic - +

TransactionMovement

[TransactionMovement] represents ledger transaction movement -It includes:

  • TO: asset transfer recipient
  • Amount: asset amount
  • Type: UCO/token
  • token address: address of the token if the type is token
  • token id: It is the id for a token which is allocated when the token is minted.
type TransactionMovement {
amount: Int
to: Address
tokenAddress: Address
tokenId: Int
type: String
}

Fields

TransactionMovement.amount ● Int scalar

TransactionMovement.to ● Address scalar

TransactionMovement.tokenAddress ● Address scalar

TransactionMovement.tokenId ● Int scalar

TransactionMovement.type ● String scalar

Member of

LedgerOperations object

- +It includes:

  • TO: asset transfer recipient
  • Amount: asset amount
  • Type: UCO/token
  • token address: address of the token if the type is token
  • token id: It is the id for a token which is allocated when the token is minted.
type TransactionMovement {
amount: Int
to: Address
tokenAddress: Address
tokenId: Int
type: String
}

Fields

TransactionMovement.amount ● Int scalar

TransactionMovement.to ● Address scalar

TransactionMovement.tokenAddress ● Address scalar

TransactionMovement.tokenId ● Int scalar

TransactionMovement.type ● String scalar

Member of

LedgerOperations object

+ \ No newline at end of file diff --git a/build/api/schema/objects/transaction-summary/index.html b/build/api/schema/objects/transaction-summary/index.html index c7009bb57..2980dbf09 100644 --- a/build/api/schema/objects/transaction-summary/index.html +++ b/build/api/schema/objects/transaction-summary/index.html @@ -4,13 +4,13 @@ TransactionSummary | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/transaction/index.html b/build/api/schema/objects/transaction/index.html index 05d7bb446..6947342da 100644 --- a/build/api/schema/objects/transaction/index.html +++ b/build/api/schema/objects/transaction/index.html @@ -4,13 +4,13 @@ Transaction | Archethic - +
-

Transaction

[Transaction] represents a unitary transaction in the Archethic network.

type Transaction {
address: Address
balance: Balance
chainLength: Int
crossValidationStamps: [CrossValidationStamp]
data: Data
inputs(
limit: PosInteger
pagingOffset: NonNegInteger
): [TransactionInput]
originSignature: Hex
previousAddress: Address
previousPublicKey: PublicKey
previousSignature: Hex
type: String
validationStamp: ValidationStamp
version: Int
}

Fields

Transaction.address ● Address scalar

Transaction.balance ● Balance object

Transaction.chainLength ● Int scalar

Transaction.crossValidationStamps ● [CrossValidationStamp] list object

Transaction.data ● Data object

Transaction.inputs ● [TransactionInput] list object

Transaction.inputs.limit ● PosInteger scalar
Transaction.inputs.pagingOffset ● NonNegInteger scalar

Transaction.originSignature ● Hex scalar

Transaction.previousAddress ● Address scalar

Transaction.previousPublicKey ● PublicKey scalar

Transaction.previousSignature ● Hex scalar

Transaction.type ● String scalar

Transaction.validationStamp ● ValidationStamp object

Transaction.version ● Int scalar

Returned by

lastTransaction query ● networkTransactions query ● transaction query ● transactionChain query ● transactions query

- +

Transaction

[Transaction] represents a unitary transaction in the Archethic network.

type Transaction {
address: Address
balance: Balance
chainLength: Int
crossValidationStamps: [CrossValidationStamp]
data: Data
inputs(
limit: PosInteger
pagingOffset: NonNegInteger
): [TransactionInput]
originSignature: Hex
previousAddress: Address
previousPublicKey: PublicKey
previousSignature: Hex
type: String
validationStamp: ValidationStamp
version: Int
}

Fields

Transaction.address ● Address scalar

Transaction.balance ● Balance object

Transaction.chainLength ● Int scalar

Transaction.crossValidationStamps ● [CrossValidationStamp] list object

Transaction.data ● Data object

Transaction.inputs ● [TransactionInput] list object

Transaction.inputs.limit ● PosInteger scalar
Transaction.inputs.pagingOffset ● NonNegInteger scalar

Transaction.originSignature ● Hex scalar

Transaction.previousAddress ● Address scalar

Transaction.previousPublicKey ● PublicKey scalar

Transaction.previousSignature ● Hex scalar

Transaction.type ● String scalar

Transaction.validationStamp ● ValidationStamp object

Transaction.version ● Int scalar

Returned by

lastTransaction query ● networkTransactions query ● transaction query ● transactionChain query ● transactions query

+ \ No newline at end of file diff --git a/build/api/schema/objects/uco-data/index.html b/build/api/schema/objects/uco-data/index.html index e518fb267..ff382ef5a 100644 --- a/build/api/schema/objects/uco-data/index.html +++ b/build/api/schema/objects/uco-data/index.html @@ -4,13 +4,13 @@ UcoData | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/uco-ledger/index.html b/build/api/schema/objects/uco-ledger/index.html index 6668db499..760471584 100644 --- a/build/api/schema/objects/uco-ledger/index.html +++ b/build/api/schema/objects/uco-ledger/index.html @@ -4,13 +4,13 @@ UcoLedger | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/uco-transfer/index.html b/build/api/schema/objects/uco-transfer/index.html index 43e99484c..60b53047b 100644 --- a/build/api/schema/objects/uco-transfer/index.html +++ b/build/api/schema/objects/uco-transfer/index.html @@ -4,13 +4,13 @@ UcoTransfer | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/objects/unspent-output/index.html b/build/api/schema/objects/unspent-output/index.html index 36a3cbd38..089a27b37 100644 --- a/build/api/schema/objects/unspent-output/index.html +++ b/build/api/schema/objects/unspent-output/index.html @@ -4,14 +4,14 @@ UnspentOutput | Archethic - +

UnspentOutput

[UnspentOutput] represents the remaining unspent output of the transaction. -It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token
  • token address: address of the token if the type is token
  • token id: It is the id for a token which is allocated when the token is minted.
  • Timestamp: Date time when the UTXO created/manipulated
  • Version: Version of the UTXO data structure
type UnspentOutput {
amount: Int
from: Address
timestamp: Timestamp
tokenAddress: Address
tokenId: Int
type: String
version: Int
}

Fields

UnspentOutput.amount ● Int scalar

UnspentOutput.from ● Address scalar

UnspentOutput.timestamp ● Timestamp scalar

UnspentOutput.tokenAddress ● Address scalar

UnspentOutput.tokenId ● Int scalar

UnspentOutput.type ● String scalar

UnspentOutput.version ● Int scalar

Member of

LedgerOperations object

- +It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token
  • token address: address of the token if the type is token
  • token id: It is the id for a token which is allocated when the token is minted.
  • Timestamp: Date time when the UTXO created/manipulated
  • Version: Version of the UTXO data structure
type UnspentOutput {
amount: Int
from: Address
timestamp: Timestamp
tokenAddress: Address
tokenId: Int
type: String
version: Int
}

Fields

UnspentOutput.amount ● Int scalar

UnspentOutput.from ● Address scalar

UnspentOutput.timestamp ● Timestamp scalar

UnspentOutput.tokenAddress ● Address scalar

UnspentOutput.tokenId ● Int scalar

UnspentOutput.type ● String scalar

UnspentOutput.version ● Int scalar

Member of

LedgerOperations object

+ \ No newline at end of file diff --git a/build/api/schema/objects/validation-stamp/index.html b/build/api/schema/objects/validation-stamp/index.html index 1d13118cf..12eb37924 100644 --- a/build/api/schema/objects/validation-stamp/index.html +++ b/build/api/schema/objects/validation-stamp/index.html @@ -4,14 +4,14 @@ ValidationStamp | Archethic - +

ValidationStamp

[ValidationStamp] represents the validation performs by the coordinator -It includes:

  • Proof of work: Public key matching the origin signature
  • Proof of integrity: Hash of the previous proof of integrity and the transaction
  • Ledger operations: All the operations performed by the transaction
  • Signature: Coordinator signature of the stamp
  • Protocol version: Version of the transaction validation protocol
type ValidationStamp {
ledgerOperations: LedgerOperations
proofOfIntegrity: Hash
proofOfWork: PublicKey
protocolVersion: Int
signature: Hex
timestamp: Timestamp
}

Fields

ValidationStamp.ledgerOperations ● LedgerOperations object

ValidationStamp.proofOfIntegrity ● Hash scalar

ValidationStamp.proofOfWork ● PublicKey scalar

ValidationStamp.protocolVersion ● Int scalar

ValidationStamp.signature ● Hex scalar

ValidationStamp.timestamp ● Timestamp scalar

Member of

Transaction object

- +It includes:

  • Proof of work: Public key matching the origin signature
  • Proof of integrity: Hash of the previous proof of integrity and the transaction
  • Ledger operations: All the operations performed by the transaction
  • Signature: Coordinator signature of the stamp
  • Protocol version: Version of the transaction validation protocol
type ValidationStamp {
ledgerOperations: LedgerOperations
proofOfIntegrity: Hash
proofOfWork: PublicKey
protocolVersion: Int
signature: Hex
timestamp: Timestamp
}

Fields

ValidationStamp.ledgerOperations ● LedgerOperations object

ValidationStamp.proofOfIntegrity ● Hash scalar

ValidationStamp.proofOfWork ● PublicKey scalar

ValidationStamp.protocolVersion ● Int scalar

ValidationStamp.signature ● Hex scalar

ValidationStamp.timestamp ● Timestamp scalar

Member of

Transaction object

+ \ No newline at end of file diff --git a/build/api/schema/objects/version/index.html b/build/api/schema/objects/version/index.html index 853d19ec2..7a22a0d92 100644 --- a/build/api/schema/objects/version/index.html +++ b/build/api/schema/objects/version/index.html @@ -4,13 +4,13 @@ Version | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/balance/index.html b/build/api/schema/queries/balance/index.html index 7a183d1bd..31d0dcc80 100644 --- a/build/api/schema/queries/balance/index.html +++ b/build/api/schema/queries/balance/index.html @@ -4,14 +4,14 @@ balance | Archethic - +

balance

Query the network to find a balance from an address coming from the latest transaction on the chain

balance(
address: Address!
): Balance

Arguments

balance.address ● Address! non-null scalar

Type

Balance object

[Balance] represents a ledger balance. -It includes:

  • UCO: uco balance
  • token: token balances
- +It includes:

  • UCO: uco balance
  • token: token balances
+ \ No newline at end of file diff --git a/build/api/schema/queries/beacon-chain-summary/index.html b/build/api/schema/queries/beacon-chain-summary/index.html index 78d75c42f..eeed2c1f8 100644 --- a/build/api/schema/queries/beacon-chain-summary/index.html +++ b/build/api/schema/queries/beacon-chain-summary/index.html @@ -4,13 +4,13 @@ beaconChainSummary | Archethic - +
-

beaconChainSummary

Query the network to get the value of the summary of beacon chain at a specific time or the last value

beaconChainSummary(
timestamp: Timestamp
): BeaconChainSummary

Arguments

beaconChainSummary.timestamp ● Timestamp scalar

Type

BeaconChainSummary object

[Beacon Chain Summary] represents the beacon chain aggregate for a certain date

- +

beaconChainSummary

Query the network to get the value of the summary of beacon chain at a specific time or the last value

beaconChainSummary(
timestamp: Timestamp
): BeaconChainSummary

Arguments

beaconChainSummary.timestamp ● Timestamp scalar

Type

BeaconChainSummary object

[Beacon Chain Summary] represents the beacon chain aggregate for a certain date

+ \ No newline at end of file diff --git a/build/api/schema/queries/genesis-address/index.html b/build/api/schema/queries/genesis-address/index.html index 553e7502e..b584fda61 100644 --- a/build/api/schema/queries/genesis-address/index.html +++ b/build/api/schema/queries/genesis-address/index.html @@ -4,15 +4,15 @@ genesisAddress | Archethic - +

genesisAddress

Query the network to find the genesis address of a transaction

genesisAddress(
address: Address!
): Address

Arguments

genesisAddress.address ● Address! non-null scalar

Type

Address scalar

The [Address] scalar type represents a transaction's address. The Address appears in a JSON response as Base16 formatted string. The parsed address will -be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

- +be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

+ \ No newline at end of file diff --git a/build/api/schema/queries/last-transaction/index.html b/build/api/schema/queries/last-transaction/index.html index 215a96a30..2df5e8c36 100644 --- a/build/api/schema/queries/last-transaction/index.html +++ b/build/api/schema/queries/last-transaction/index.html @@ -4,13 +4,13 @@ lastTransaction | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/nearest-endpoints/index.html b/build/api/schema/queries/nearest-endpoints/index.html index 2edf9e7bf..a582612fc 100644 --- a/build/api/schema/queries/nearest-endpoints/index.html +++ b/build/api/schema/queries/nearest-endpoints/index.html @@ -4,13 +4,13 @@ nearestEndpoints | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/network-transactions/index.html b/build/api/schema/queries/network-transactions/index.html index 79f0c3b19..af5750d04 100644 --- a/build/api/schema/queries/network-transactions/index.html +++ b/build/api/schema/queries/network-transactions/index.html @@ -4,13 +4,13 @@ networkTransactions | Archethic - + - +
+ \ No newline at end of file diff --git a/build/api/schema/queries/nodes/index.html b/build/api/schema/queries/nodes/index.html index 37b937c99..10a65c181 100644 --- a/build/api/schema/queries/nodes/index.html +++ b/build/api/schema/queries/nodes/index.html @@ -4,13 +4,13 @@ nodes | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/oracle-data/index.html b/build/api/schema/queries/oracle-data/index.html index 1e85db0d1..c91be083d 100644 --- a/build/api/schema/queries/oracle-data/index.html +++ b/build/api/schema/queries/oracle-data/index.html @@ -4,13 +4,13 @@ oracleData | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/shared-secrets/index.html b/build/api/schema/queries/shared-secrets/index.html index 0be321088..95d2a9a7d 100644 --- a/build/api/schema/queries/shared-secrets/index.html +++ b/build/api/schema/queries/shared-secrets/index.html @@ -4,14 +4,14 @@ sharedSecrets | Archethic - +

sharedSecrets

Query the network to get the storage nonce public key

sharedSecrets: SharedSecrets

Type

SharedSecrets object

[SharedSecrets] represents the public shared secret information -It includes:

  • The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)
- +It includes:

  • The storage nonce public key: Public Key to encrypt data for the node, so they will be able to decrypt it (mostly for smart contract authorized key)
+ \ No newline at end of file diff --git a/build/api/schema/queries/token/index.html b/build/api/schema/queries/token/index.html index d0a8fb3c8..304fe52dc 100644 --- a/build/api/schema/queries/token/index.html +++ b/build/api/schema/queries/token/index.html @@ -4,14 +4,14 @@ token | Archethic - +

token

Query the network to find a token's data

token(
address: Address!
): Token

Arguments

token.address ● Address! non-null scalar

Type

Token object

[token] represents a token metadata. -It includes:

  • genesis: Genesis address to the token
  • name: Name of the token
  • symbol: Symbol of the token
  • supply: Supply of the token
  • type: Type of the token
  • decimals: Number of decimals of the token
  • properties: Properties of the token (if any)
  • collection: List of properties for a collection (if any)
  • ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • id: Unique identification of the token on the chain
- +It includes:

  • genesis: Genesis address to the token
  • name: Name of the token
  • symbol: Symbol of the token
  • supply: Supply of the token
  • type: Type of the token
  • decimals: Number of decimals of the token
  • properties: Properties of the token (if any)
  • collection: List of properties for a collection (if any)
  • ownerships: authorization/delegations containing list of secrets and their authorized public keys to proof the ownership
  • id: Unique identification of the token on the chain
+ \ No newline at end of file diff --git a/build/api/schema/queries/transaction-chain/index.html b/build/api/schema/queries/transaction-chain/index.html index eacfb7041..378c4a432 100644 --- a/build/api/schema/queries/transaction-chain/index.html +++ b/build/api/schema/queries/transaction-chain/index.html @@ -4,13 +4,13 @@ transactionChain | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/transaction-inputs/index.html b/build/api/schema/queries/transaction-inputs/index.html index 0cc02665c..2b1ca184c 100644 --- a/build/api/schema/queries/transaction-inputs/index.html +++ b/build/api/schema/queries/transaction-inputs/index.html @@ -4,14 +4,14 @@ transactionInputs | Archethic - +

transactionInputs

Query the network to list the transaction inputs from an address

transactionInputs(
address: Address!
limit: PosInteger
pagingOffset: NonNegInteger
): [TransactionInput]

Arguments

transactionInputs.address ● Address! non-null scalar

transactionInputs.limit ● PosInteger scalar

transactionInputs.pagingOffset ● NonNegInteger scalar

Type

TransactionInput object

[TransactionInput] represents the inputs from the transaction -It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token/Call
  • token address: address of the token if the type is token
  • Spent: determines if the input has been spent
  • Timestamp: Date time when the inputs was generated
  • token id: It is the id for a token which is allocated when the token is minted.
- +It includes:

  • From: transaction which send the amount of assets
  • Amount: asset amount
  • Type: UCO/token/Call
  • token address: address of the token if the type is token
  • Spent: determines if the input has been spent
  • Timestamp: Date time when the inputs was generated
  • token id: It is the id for a token which is allocated when the token is minted.
+ \ No newline at end of file diff --git a/build/api/schema/queries/transaction/index.html b/build/api/schema/queries/transaction/index.html index d94786162..4285ad686 100644 --- a/build/api/schema/queries/transaction/index.html +++ b/build/api/schema/queries/transaction/index.html @@ -4,13 +4,13 @@ transaction | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/transactions/index.html b/build/api/schema/queries/transactions/index.html index 551380136..c05875978 100644 --- a/build/api/schema/queries/transactions/index.html +++ b/build/api/schema/queries/transactions/index.html @@ -4,13 +4,13 @@ transactions | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/queries/version/index.html b/build/api/schema/queries/version/index.html index 674f27373..9c13e3a75 100644 --- a/build/api/schema/queries/version/index.html +++ b/build/api/schema/queries/version/index.html @@ -4,13 +4,13 @@ version | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/address/index.html b/build/api/schema/scalars/address/index.html index 25f2c0f40..785e00167 100644 --- a/build/api/schema/scalars/address/index.html +++ b/build/api/schema/scalars/address/index.html @@ -4,15 +4,15 @@ Address | Archethic - +

Address

The [Address] scalar type represents a transaction's address. The Address appears in a JSON response as Base16 formatted string. The parsed address will -be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

scalar Address

Returned by

genesisAddress query

Member of

balance query ● Data object ● genesisAddress query ● lastTransaction query ● Node object ● Token object ● token query ● TokenBalance object ● TokenTransfer object ● Transaction object ● transaction query ● TransactionAttestation object ● transactionChain query ● transactionConfirmed subscription ● TransactionError object ● transactionError subscription ● TransactionInput object ● transactionInputs query ● TransactionMovement object ● TransactionSummary object ● UcoTransfer object ● UnspentOutput object

- +be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

scalar Address

Returned by

genesisAddress query

Member of

balance query ● Data object ● genesisAddress query ● lastTransaction query ● Node object ● Token object ● token query ● TokenBalance object ● TokenTransfer object ● Transaction object ● transaction query ● TransactionAttestation object ● transactionChain query ● transactionConfirmed subscription ● TransactionError object ● transactionError subscription ● TransactionInput object ● transactionInputs query ● TransactionMovement object ● TransactionSummary object ● UcoTransfer object ● UnspentOutput object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/boolean/index.html b/build/api/schema/scalars/boolean/index.html index 4e7677c3a..86d6bad9d 100644 --- a/build/api/schema/scalars/boolean/index.html +++ b/build/api/schema/scalars/boolean/index.html @@ -4,13 +4,13 @@ Boolean | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/content/index.html b/build/api/schema/scalars/content/index.html index cc191d4ca..419c8fab1 100644 --- a/build/api/schema/scalars/content/index.html +++ b/build/api/schema/scalars/content/index.html @@ -4,14 +4,14 @@ Content | Archethic - + - +it will be rendered as plain text otherwise in hexadecimal

scalar Content

Member of

Data object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/float/index.html b/build/api/schema/scalars/float/index.html index 567d174f1..872cb3230 100644 --- a/build/api/schema/scalars/float/index.html +++ b/build/api/schema/scalars/float/index.html @@ -4,13 +4,13 @@ Float | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/hash/index.html b/build/api/schema/scalars/hash/index.html index 4dfdff4d2..626f22c80 100644 --- a/build/api/schema/scalars/hash/index.html +++ b/build/api/schema/scalars/hash/index.html @@ -4,7 +4,7 @@ Hash | Archethic - + @@ -12,8 +12,8 @@

Hash

The [Hash] scalar type represents a cryptographic hash used in the Archethic network with an identification byte to specify from which algorithm the hash was generated. The Hash appears in a JSON response as Base16 formatted string. The parsed hash will -be converted to a binary and any invalid hash with an invalid algorithm or invalid size will be rejected

scalar Hash

Member of

TransactionSummary object ● ValidationStamp object

- +be converted to a binary and any invalid hash with an invalid algorithm or invalid size will be rejected

scalar Hash

Member of

TransactionSummary object ● ValidationStamp object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/hex/index.html b/build/api/schema/scalars/hex/index.html index 237db96d2..e5db47162 100644 --- a/build/api/schema/scalars/hex/index.html +++ b/build/api/schema/scalars/hex/index.html @@ -4,13 +4,13 @@ Hex | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/int/index.html b/build/api/schema/scalars/int/index.html index 3484d47c3..9d448d981 100644 --- a/build/api/schema/scalars/int/index.html +++ b/build/api/schema/scalars/int/index.html @@ -4,13 +4,13 @@ Int | Archethic - +
-

Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

scalar Int

Member of

Balance object ● BeaconChainSummary object ● Endpoint object ● LedgerOperations object ● Node object ● Token object ● TokenBalance object ● TokenTransfer object ● Transaction object ● TransactionAttestation object ● TransactionInput object ● TransactionMovement object ● TransactionSummary object ● UcoTransfer object ● UnspentOutput object ● ValidationStamp object

- +

Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

scalar Int

Member of

Balance object ● BeaconChainSummary object ● Endpoint object ● LedgerOperations object ● Node object ● Token object ● TokenBalance object ● TokenTransfer object ● Transaction object ● TransactionAttestation object ● TransactionInput object ● TransactionMovement object ● TransactionSummary object ● UcoTransfer object ● UnspentOutput object ● ValidationStamp object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/non-neg-integer/index.html b/build/api/schema/scalars/non-neg-integer/index.html index a337885e4..8a4caf79a 100644 --- a/build/api/schema/scalars/non-neg-integer/index.html +++ b/build/api/schema/scalars/non-neg-integer/index.html @@ -4,13 +4,13 @@ NonNegInteger | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/p2-p-availabilities/index.html b/build/api/schema/scalars/p2-p-availabilities/index.html index 19a3ff894..f30e52a1b 100644 --- a/build/api/schema/scalars/p2-p-availabilities/index.html +++ b/build/api/schema/scalars/p2-p-availabilities/index.html @@ -4,13 +4,13 @@ P2pAvailabilities | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/pos-integer/index.html b/build/api/schema/scalars/pos-integer/index.html index b95125952..063265ca2 100644 --- a/build/api/schema/scalars/pos-integer/index.html +++ b/build/api/schema/scalars/pos-integer/index.html @@ -4,13 +4,13 @@ PosInteger | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/public-key/index.html b/build/api/schema/scalars/public-key/index.html index dc001bcca..bda220185 100644 --- a/build/api/schema/scalars/public-key/index.html +++ b/build/api/schema/scalars/public-key/index.html @@ -4,15 +4,15 @@ PublicKey | Archethic - +

PublicKey

The [PublicKey] scalar type represents a public key. The PublicKey appears in a JSON response as Base16 formatted string. The parsed public key will -be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

scalar PublicKey

Member of

AuthorizedKey object ● CrossValidationStamp object ● Node object ● SharedSecrets object ● Transaction object ● ValidationStamp object

- +be converted to a binary and any invalid address with an invalid algorithm or invalid size will be rejected

scalar PublicKey

Member of

AuthorizedKey object ● CrossValidationStamp object ● Node object ● SharedSecrets object ● Transaction object ● ValidationStamp object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/string/index.html b/build/api/schema/scalars/string/index.html index 2e734ae7f..0158e9556 100644 --- a/build/api/schema/scalars/string/index.html +++ b/build/api/schema/scalars/string/index.html @@ -4,13 +4,13 @@ String | Archethic - +
-

String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

scalar String

Member of

Data object ● Endpoint object ● Node object ● Token object ● Transaction object ● TransactionError object ● TransactionInput object ● TransactionMovement object ● TransactionSummary object ● UnspentOutput object ● Version object

- +

String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

scalar String

Member of

Data object ● Endpoint object ● Node object ● Token object ● Transaction object ● TransactionError object ● TransactionInput object ● TransactionMovement object ● TransactionSummary object ● UnspentOutput object ● Version object

+ \ No newline at end of file diff --git a/build/api/schema/scalars/timestamp/index.html b/build/api/schema/scalars/timestamp/index.html index a8d03d652..1fa32d64d 100644 --- a/build/api/schema/scalars/timestamp/index.html +++ b/build/api/schema/scalars/timestamp/index.html @@ -4,13 +4,13 @@ Timestamp | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/token-properties/index.html b/build/api/schema/scalars/token-properties/index.html index 47c5454cb..b9b70e6b5 100644 --- a/build/api/schema/scalars/token-properties/index.html +++ b/build/api/schema/scalars/token-properties/index.html @@ -4,13 +4,13 @@ TokenProperties | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/scalars/transaction-type/index.html b/build/api/schema/scalars/transaction-type/index.html index 850eb71cc..f1729698a 100644 --- a/build/api/schema/scalars/transaction-type/index.html +++ b/build/api/schema/scalars/transaction-type/index.html @@ -4,13 +4,13 @@ TransactionType | Archethic - + - + + \ No newline at end of file diff --git a/build/api/schema/subscriptions/oracle-update/index.html b/build/api/schema/subscriptions/oracle-update/index.html index 90495839b..160c76377 100644 --- a/build/api/schema/subscriptions/oracle-update/index.html +++ b/build/api/schema/subscriptions/oracle-update/index.html @@ -4,13 +4,13 @@ oracleUpdate | Archethic - + - +

oracleUpdate

Subscribe to be notified when a new oracle data is stored

oracleUpdate: OracleData

Type

OracleData object

[OracleData] represents an oracle data.

+ \ No newline at end of file diff --git a/build/api/schema/subscriptions/transaction-confirmed/index.html b/build/api/schema/subscriptions/transaction-confirmed/index.html index 16b29d653..e86fa442c 100644 --- a/build/api/schema/subscriptions/transaction-confirmed/index.html +++ b/build/api/schema/subscriptions/transaction-confirmed/index.html @@ -4,14 +4,14 @@ transactionConfirmed | Archethic - +

transactionConfirmed

Subscribe to be notified when a transaction is stored (if acted as welcome node)

transactionConfirmed(
address: Address!
): TransactionAttestation

Arguments

transactionConfirmed.address ● Address! non-null scalar

Type

TransactionAttestation object

[TransactionAttestation] represents an attestation when a transaction is successfully validated and stored. -Few attestations can be received with differents confirmations to ensure a better security of the replication.

- +Few attestations can be received with differents confirmations to ensure a better security of the replication.

+ \ No newline at end of file diff --git a/build/api/schema/subscriptions/transaction-error/index.html b/build/api/schema/subscriptions/transaction-error/index.html index 32b56ead1..cc0fd417f 100644 --- a/build/api/schema/subscriptions/transaction-error/index.html +++ b/build/api/schema/subscriptions/transaction-error/index.html @@ -4,13 +4,13 @@ transactionError | Archethic - +
-
- +
+ \ No newline at end of file diff --git a/build/clients/ledger-wallet/api/index.html b/build/clients/ledger-wallet/api/index.html index 4b8ef0efb..b1af2765e 100644 --- a/build/clients/ledger-wallet/api/index.html +++ b/build/clients/ledger-wallet/api/index.html @@ -4,7 +4,7 @@ Ledger Application API | Archethic - + @@ -28,8 +28,8 @@ getTransactionHash(uint8_t *senderAddr, uint8_t senderAddrLen, uint8_t *receiveAddr, uint8_t receiveAddrLen, uint8_t *amount, uint8_t *txHash, uint8_t *txHashLen)
  • Format for Transaction Hash Generation
    • tx_version | senderAddr | tx_type | code_size | content_size | ownership_length | total_uco_transfers | recieverAddr | amount | total_token_transfers | recipients
  • We apply cx_hash_sha256() and return the hash in txHash
  • We prompt user in GUI to approve the transaction
  • Once approve we performECDSA on the transactionHash
    • Function Signature -performECDSA(uint8_t *txHash, uint8_t txHashLen, uint32_t address_index, uint8_t *encoded_wallet, uint8_t *wallet_len, uint8_t sequence_no, uint8_t *asn_sign, uint8_t *sign_len)
    • We generateKey from Wallet Similar to when getting address and give back publicKey and privateKey
    • We copy curve_type on asn_sign buffer
    • We set 0 to signify onchain wallet
    • We copy the publicKey on asn_sign buffer
    • We sign the txnHash with the privateKet and append signature to asn_sign buffer
    • We increase sign_len by publicKey length + 2 bytes
  • Once signature is performed we copy the txnHash to the G_io_apdu_buffer
  • Then, we copy the contents of encodedWallet on which we have overwritten the signature to the G_io_apdu_buffer
  • And we return the APDU with SW_OK and total length as txnhash length + walletLen
  • - +performECDSA(uint8_t *txHash, uint8_t txHashLen, uint32_t address_index, uint8_t *encoded_wallet, uint8_t *wallet_len, uint8_t sequence_no, uint8_t *asn_sign, uint8_t *sign_len)
  • We generateKey from Wallet Similar to when getting address and give back publicKey and privateKey
  • We copy curve_type on asn_sign buffer
  • We set 0 to signify onchain wallet
  • We copy the publicKey on asn_sign buffer
  • We sign the txnHash with the privateKet and append signature to asn_sign buffer
  • We increase sign_len by publicKey length + 2 bytes
  • Once signature is performed we copy the txnHash to the G_io_apdu_buffer
  • Then, we copy the contents of encodedWallet on which we have overwritten the signature to the G_io_apdu_buffer
  • And we return the APDU with SW_OK and total length as txnhash length + walletLen
  • + \ No newline at end of file diff --git a/build/clients/ledger-wallet/commands/index.html b/build/clients/ledger-wallet/commands/index.html index 84068261a..7cbba11af 100644 --- a/build/clients/ledger-wallet/commands/index.html +++ b/build/clients/ledger-wallet/commands/index.html @@ -4,13 +4,13 @@ ADPU commands | Archethic - +
    -

    ADPU commands

    APDU commands

    Get Origin Public Key

    APDU Command [bytes]:

    CLA = E0INS = 02P1 = 00P2 = 00Lc = 00

    APDU Response = Encoded Origin Public Key i.e., encode(o_{pub})

    Get Archethic Account Address

    APDU Command [bytes] =

    CLA = E0INS = 04P1 = hash_type (for addr) [1 byte]P2 = address_index (for bip44) [4 bytes]Lc = len(ewk{aes}+ew{aes}) [1 byte]ewk_{aes} [bytes]ew_{aes} [bytes]

    APDU Response = Encoded Archethic Account Address i.e., arch_address

    Get Signature

    CLA = E0INS = 08P1 = hash_type (of tx_hash) [1 byte]P2 = address_index (for bip44) [4 bytes]Lc = len(txhash+ewk{aes}+ew_{aes}) [1 byte]tx_hash [bytes]ewk_{aes} [bytes]ew_{aes} [bytes]

    APDU Response = ASN DER Signature || Corresponding public key from whose private key the signature was made, i.e., encode(pub_key)

    - +

    ADPU commands

    APDU commands

    Get Origin Public Key

    APDU Command [bytes]:

    CLA = E0INS = 02P1 = 00P2 = 00Lc = 00

    APDU Response = Encoded Origin Public Key i.e., encode(o_{pub})

    Get Archethic Account Address

    APDU Command [bytes] =

    CLA = E0INS = 04P1 = hash_type (for addr) [1 byte]P2 = address_index (for bip44) [4 bytes]Lc = len(ewk{aes}+ew{aes}) [1 byte]ewk_{aes} [bytes]ew_{aes} [bytes]

    APDU Response = Encoded Archethic Account Address i.e., arch_address

    Get Signature

    CLA = E0INS = 08P1 = hash_type (of tx_hash) [1 byte]P2 = address_index (for bip44) [4 bytes]Lc = len(txhash+ewk{aes}+ew_{aes}) [1 byte]tx_hash [bytes]ewk_{aes} [bytes]ew_{aes} [bytes]

    APDU Response = ASN DER Signature || Corresponding public key from whose private key the signature was made, i.e., encode(pub_key)

    + \ No newline at end of file diff --git a/build/clients/ledger-wallet/index.html b/build/clients/ledger-wallet/index.html index eedc5a0b5..5ff5861e4 100644 --- a/build/clients/ledger-wallet/index.html +++ b/build/clients/ledger-wallet/index.html @@ -4,7 +4,7 @@ Ledger wallet | Archethic - + @@ -13,8 +13,8 @@ This application is written in C and resides on the physical Ledger device. For Archethic's blockchain, this can be found on Archethic's github and the functional documentation for the app can be found on the official docs repository.

  • Companion App This is the application which acts like a bridge of communication between user/blockchain and the Bolos application mentioned above. For Archethic's blockchain, this is ALCA (CLI) and Flutter based Wallet (GUI).

  • Remote backend -This is the node which accepts data (signed transactions) from the Companion app mentioned above in order to include it into the blockchain. For Archethic's blockchain, it is the testnet node. Once transaction is published, the data can be verified on archethic.net.

  • Synopsis

    This guide will help you to connect your Ledger device to ALCA, dedicated Command Line Interface (CLI). ALCA (Archethic Ledger CLI App) enables you to Send and Receive UCOs on Archethic Testnet with the Ledger Device.

    Soon, ALCA will be replaced by Archethic's Wallet, which is GUI-based, thus enabling non-tech users to experiment with Archethic's testnet.

    tip

    This is a developer guide and not for general public. This guide assumes the reader has a prior knowledge of ArchEthic and Ledger Ecosystem.

    Prerequisites

    info

    A more general public guide will soon be released once security audit for developer release is done and GUI support for Ledger Device is added to current Archethic's Wallet (Mobile + Desktop)

    Before You Start, Make Sure:

    • You’ve initialized your Ledger Device.
    • The latest firmware is installed (Ledger Nano S).
    • Archethic Bolos App is loaded on Ledger (Tested with Nano S only).
    • Install the latest version of ALCA.
    • Nodejs (v14.0+)

    Installation Instructions

    • Clone the repository from github
    • Run yarn or npm install from root folder of the project
    • Run npm link
    • Use it as ledger_cli (commands)

    Testing

    From Terminal use it as ledger_cli (about | getAppVersion | getPublicKey | getArchAddress | sendTxn)

    Demo

    The demo shows various screens a user will be shown for getting origin public key, onchain wallet address and performing signature on transaction involving single UCO transfer at a time between 2 parties.

    - +This is the node which accepts data (signed transactions) from the Companion app mentioned above in order to include it into the blockchain. For Archethic's blockchain, it is the testnet node. Once transaction is published, the data can be verified on archethic.net.

    Synopsis

    This guide will help you to connect your Ledger device to ALCA, dedicated Command Line Interface (CLI). ALCA (Archethic Ledger CLI App) enables you to Send and Receive UCOs on Archethic Testnet with the Ledger Device.

    Soon, ALCA will be replaced by Archethic's Wallet, which is GUI-based, thus enabling non-tech users to experiment with Archethic's testnet.

    tip

    This is a developer guide and not for general public. This guide assumes the reader has a prior knowledge of ArchEthic and Ledger Ecosystem.

    Prerequisites

    info

    A more general public guide will soon be released once security audit for developer release is done and GUI support for Ledger Device is added to current Archethic's Wallet (Mobile + Desktop)

    Before You Start, Make Sure:

    • You’ve initialized your Ledger Device.
    • The latest firmware is installed (Ledger Nano S).
    • Archethic Bolos App is loaded on Ledger (Tested with Nano S only).
    • Install the latest version of ALCA.
    • Nodejs (v14.0+)

    Installation Instructions

    • Clone the repository from github
    • Run yarn or npm install from root folder of the project
    • Run npm link
    • Use it as ledger_cli (commands)

    Testing

    From Terminal use it as ledger_cli (about | getAppVersion | getPublicKey | getArchAddress | sendTxn)

    Demo

    The demo shows various screens a user will be shown for getting origin public key, onchain wallet address and performing signature on transaction involving single UCO transfer at a time between 2 parties.

    + \ No newline at end of file diff --git a/build/clients/wallet-access/index.html b/build/clients/wallet-access/index.html index db41a37fc..4c5b0cf09 100644 --- a/build/clients/wallet-access/index.html +++ b/build/clients/wallet-access/index.html @@ -4,14 +4,14 @@ Archethic's wallet access | Archethic - +

    Archethic's wallet access

    Onchain wallet (aka Keychain) is a wallet stored on Archethic blockchain in encrypted form, to allow only the authorized access to read it and build transaction from it.

    Also to avoid disclosure of information, access and keychain are using end to end encryption with elliptic curve cryptography to secure it.

    Hence any client which would like to support wallet access and transaction building will have to be authorized.

    Access enrollment

    When a device or application want to become an access to the wallet, it first have to create a transaction where the keychain transaction's address is encrypted into it. -This data is stored in the /data/ownerships section of the transaction., where the authorized public key is the transaction's public key and the secret is an aes encryption of the keychain's address.

    Then the keychain will create a new transaction on its chain by encrypting the wallet with a new AES key itself encrypted for the list of authorized access public keys wanted. (For instance the new device or application)

    Keychain retrieval

    In order to retrieve the keychain from a device or application perspective, the access transaction's will be generated to be retrieved from the network.

    Then the device or application will decrypt the encrypted keychain address to be able to download the keychain transaction.

    Once received, the device or application - as being authorized by the keychain - will be able to decrypt the AES key to decrypt the wallet and perform any key derivation and transaction building from it.

    Then, because the key have been generated on the fly, the client will forget about the private keys and seeds decrypted.

    - +This data is stored in the /data/ownerships section of the transaction., where the authorized public key is the transaction's public key and the secret is an aes encryption of the keychain's address.

    Then the keychain will create a new transaction on its chain by encrypting the wallet with a new AES key itself encrypted for the list of authorized access public keys wanted. (For instance the new device or application)

    Keychain retrieval

    In order to retrieve the keychain from a device or application perspective, the access transaction's will be generated to be retrieved from the network.

    Then the device or application will decrypt the encrypted keychain address to be able to download the keychain transaction.

    Once received, the device or application - as being authorized by the keychain - will be able to decrypt the AES key to decrypt the wallet and perform any key derivation and transaction building from it.

    Then, because the key have been generated on the fly, the client will forget about the private keys and seeds decrypted.

    + \ No newline at end of file diff --git a/build/clients/wallet-spec/index.html b/build/clients/wallet-spec/index.html index 43b64bcd7..4389b3afb 100644 --- a/build/clients/wallet-spec/index.html +++ b/build/clients/wallet-spec/index.html @@ -4,7 +4,7 @@ Archethic's wallet specification | Archethic - + @@ -13,8 +13,8 @@ It can also support multichains identification through the use of key derivation and derivation path.

    A keychain is then a wallet which stores a main master seed, with a list of services (Archethic chains / other crypto identification) encrypted and only accessible by a list of authorized public keys

    Glossary

    • w_{e} = Encoded Onchain Archethic Wallet
    • wk_{aes} = AES256 CTR Key used to encrypt w_{e}
    • enc(w_{e}) = AES256 CTR Encryption of w_{e} using wk_{aes}
    • ew_{aes} = Encoded enc(w_{e})
    • aes_key = AES256 CBC Key used to encrypt wk_{aes}
    • enc(wk_{aes}) = AES256 CBC Encryption of wk_{aes} using aes_key
    • ewk_{aes} = Encoded enc(wk_{aes})
    • encode(pub_key) = Encoded Public Key.
    • arch_address = Encoded Account Address.
    • o_{priv} = Origin Device Private Key
    • o_{pub} = Origin Device Public Key (raw 04xy)
    • encode(o_{pub}) = Encoded Origin Device Public Key
    • e_{key} = Ephemeral Key Pair
    • e_{pub} = Ephemeral Public Key (raw 04xy)
    • e_{priv} = Ephemeral Private Key

    Cryptography

    Derivation path

    Archethic's keychain is using hierarchical derivation key scheme inspired by BIP32 to define a way to generate keys and addresses.

    Because Archethic cryptography and transaction chain paradigm differs from traditional blockchain (used in BIP32/BIP44) we adapted it to use specific derivation scheme (as describe in the BIP43)

    The main derivation path of Archethic keychain is: m/650'/account/index (where 650 is the Archethic transaction chain purpose - in the BIP43 terminology)

    The account can be anything, by default 0 is the main uco transaction chain, but it could be customized to create more entropy.

    The index is the number of transaction in the chain, used to compute the derived keys and addresses

    Key derivation

    In order to derive the keys using the derivation path mentioned above, we implemented our own key derivation scheme, which takes inspiration from BIP32 but simplifies it a bit.

    Replace the derivation path index

    Given the derivation path: m/650'/0/0, we change the last number (the transaction's index in the chain) we some variable provided by the application(ie: m/650'/0/1 will give the 1st transaction's address on the chain)

    Hash of the derivation path

    Once the derivation path index is replaced we hashed it to give a constant size through SHA256

    hashedPath = SHA256(ReplaceDerivationPath(derivationPath, index))

    Derive private key

    Then we have to derive the private key based on the hashedPath and the master seed by using HMAC and extracting the first 32 bytes of the result

    extendedSeed = HMAC-SHA512(Key=MasterSeed, Data=hashedPath)
    extendedPrivateKey = extendedSeed.slice(0, 32)

    Derive public key

    Now with the given private key we can easily extract the public key for the given curve specified in the Keychain's service

    { publicKey, private } = generateKeyPair(extendedPrivateKey, curve)

    Encryption

    The keychain is using a double encryption scheme where:

    • the wallet is encrypted with AES
    • the aes_key is encrypted with elliptic curve cryptography using ECIES (Elliptic Curve Integration Encryption Scheme): wk_{aes} for the authorized public keys
    info

    Ephemeral key is used to perform ECDH with authorized public key, in order to derive aes_key. This aes_key is then used to encrypt the wk_{aes}. This is called ECIESE(Elliptic Curve Integration Encryption Scheme Ephemeral)

    Then to guarantee the security of the wallet, only the authorized public keys are able to decrypt the encrypted aes key(enc(aes_key)) to be able to decrypt the encrypted wallet (wk_{aes})

    Encrypting the Onchain Wallet

    The onchain encoded wallet w_{e} is encrypted using symmetric encryption AES256 CTR key wk_{aes} as follows:

    wallet_iv [16 bytes], reserved [16 bytes] = sha256(sha256(wk_{aes})) 
    enc(w_{e}) = aes256(mode=ctr, key = wk_{aes}, iv = wallet_iv, data = w_{e})

    Encoding of Encrypted Wallet

    The above encrypted wallet enc(w_{e}) is stored on the Archethic Blockchain with the following format.

    enc(w_{e}) [bytes]

    Encrypting Wallet Encryption Key

    The key (wk_{aes}) which encrypts the wallet (w_{e}) is subsequently encrypted using Elliptic Curve Integrated Encryption Scheme to support different authorized public keys and to reduce the increased space overhead of the encryptions.

    Algorithm$ for encrypting wk_{aes}= ECIES (ECDH + AES256 CBC)

    ecdh_secret = ecdh_point_x(e_{pub}, o_{priv}) = ecdh_point_x(e_{priv}, o_{pub}) 

    aes_key [32 bytes], iv [16 bytes], auth_seed [16 bytes] = sha512(sha512(ecdh\_secret))

    enc(wk_{aes}) = aes256(mode=cbc, key = aes\_key, iv = iv, data = wk_{aes})

    auth_key = sha256(auth_seed)

    auth_tag [16 bytes], reserved [16 bytes] = hmac256(key = auth_key, data = enc(wk_{aes}))

    Encoding of Encrypted Wallet Key

    The above encrypted key enc(wk_{aes}) is stored on the Archethic Blockchain with the following format.

    e_{pub} 04xy [bytes]auth_tag [16 bytes]enc(wk_{aes}) [32 bytes]

    Encoding

    The wallet before encryption is encoding into a binary format

    Encoding of wallet

    VersionSeed sizeSeedNb servicesService name sizeService nameDerivation path lengthDerivation pathCurve typeHash type...
    4 bytes1 byteN bytes1 byte1 byteN bytes1 byteN bytes1 byte1 byte...

    Encoding of Curve Types

    The curve_type is a 1 byte long field, hex encoded. Currently, following curves are supported:

    • 0: ED25519
    • 1: NISTP256
    • 2: SECP256K1

    Encoding of Hash Types

    The hash_type is a 1 byte long field, hex encoded. Currently, following hashes are supported:

    • 0: SHA256 (sha2)
    • 1: SHA512 (sha2)
    • 2: SHA3_256 (keccak)
    • 3: SHA3_512 (keccak)
    • 4: BLAKE2B

    Transaction representation

    Transaction 
    - Data:
    - Ownerships:
    Secret: Encrypted Wallet,
    Authorized Keys:
    Public Key: Origin Device / Password Public Key,
    Encrypted Secret Key: Encrypted AES Key for the authorized public key

    Format

    Public Key Format

    When clients have to produce public key, an origin type identification byte have to prepend before the key material as well as the curve type.

    Curve IDOrigin IDKey material
    1 byte1 byteN bytes

    The origin_type is a 1 byte long field, hex encoded. Currently, following origins are defined:

    • 0: Onchain Wallet
    • 1: Software Wallet (Node, Mobile App, Desktop, etc.)
    • 2: TPM (Node)
    • 3: Yubikey (Node, Hardware Wallet)
    • 4: Ledger (Hardware Wallet)

    Account Address Format

    Archethic addresses following a specific format to version algorithms used helping -to evolve easily between curves and hash algorithms.

    Curve TypeHash algohash(encode(pub_key))
    1 byte1 byteN bytes
    - +to evolve easily between curves and hash algorithms.

    Curve TypeHash algohash(encode(pub_key))
    1 byte1 byteN bytes
    + \ No newline at end of file diff --git a/build/core/account/index.html b/build/core/account/index.html index 1829c944a..ce86a98f4 100644 --- a/build/core/account/index.html +++ b/build/core/account/index.html @@ -4,13 +4,13 @@ Account | Archethic - +
    -

    Account

    Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.

    This gives us faster computation and data retrieval to asserts balances and UTXO loading.

    UCO

    A memory table is defined to list of the UCO available for a given address

    Few functions are provided to be able to query this table in order to:

    • get the UCO balance
    • get the UTXOs
    • get the total inputs (spent and unspent)
    • spend all the UTXOs
    • add new UCO UTXO

    Ledger

    Each entry is indexed by a tuple recipient/sender to identify uniquely an UTXO

    Recipient, SenderAmountSpent ?Date

    Index

    An index table is provided to be able to retrieve all the sender UTXOs for a given recipient

    RecipientSender

    Token

    A memory table is defined to list al the token available for a given address

    Few functions are provided to be able to query this table in order to:

    • get the token balance s
    • get the UTXOs
    • get the total inputs (spent and unspent)
    • spend all the UTXOs
    • add new token UTXO

    Ledger

    Each entry is indexed by a tuple recipient/sender/token address to identify uniquely an UTXO

    Recipient, Sender, TokenAmountSpent ?Date

    Index

    An index table is provided to be able to retrieve all the sender UTXOs for a given recipient

    RecipientSenderToken address

    Loading

    When a transaction replicated, the storage nodes in charge of storing the new transaction (chain replicas or recipient replicas) will load the transaction in those tables to index the UTXO and build in memory view.

    The same goes when a node is bootstraping, a process will load all the transactions from the database to load them into those tables.

    - +

    Account

    Archethic node provides a high level and fast access to an account assets using primarily memory tables with ETS.

    This gives us faster computation and data retrieval to asserts balances and UTXO loading.

    UCO

    A memory table is defined to list of the UCO available for a given address

    Few functions are provided to be able to query this table in order to:

    • get the UCO balance
    • get the UTXOs
    • get the total inputs (spent and unspent)
    • spend all the UTXOs
    • add new UCO UTXO

    Ledger

    Each entry is indexed by a tuple recipient/sender to identify uniquely an UTXO

    Recipient, SenderAmountSpent ?Date

    Index

    An index table is provided to be able to retrieve all the sender UTXOs for a given recipient

    RecipientSender

    Token

    A memory table is defined to list al the token available for a given address

    Few functions are provided to be able to query this table in order to:

    • get the token balance s
    • get the UTXOs
    • get the total inputs (spent and unspent)
    • spend all the UTXOs
    • add new token UTXO

    Ledger

    Each entry is indexed by a tuple recipient/sender/token address to identify uniquely an UTXO

    Recipient, Sender, TokenAmountSpent ?Date

    Index

    An index table is provided to be able to retrieve all the sender UTXOs for a given recipient

    RecipientSenderToken address

    Loading

    When a transaction replicated, the storage nodes in charge of storing the new transaction (chain replicas or recipient replicas) will load the transaction in those tables to index the UTXO and build in memory view.

    The same goes when a node is bootstraping, a process will load all the transactions from the database to load them into those tables.

    + \ No newline at end of file diff --git a/build/core/beacon-chain/index.html b/build/core/beacon-chain/index.html index 3f6d0d815..be5b43646 100644 --- a/build/core/beacon-chain/index.html +++ b/build/core/beacon-chain/index.html @@ -4,14 +4,14 @@ BeaconChain | Archethic - +

    BeaconChain

    BeaconChain helps the Archethic sharding network to be supervised and provided global view of the system.

    To be able to manage it, few modules and functions are needed to make this possible.

    Subsets

    The BeaconChain is divided into a set of subsets (shards of the BeaconChain) based on hexadecimal splits. -Currently the BeaconChain supports 256 subsets, from 0 to F (hex)

    Each subset is maintained by its own process

    This process is responsible of:

    • Add transaction replication confirmation to the current slot
    • Check P2P availability of the nodes where their public key starts by the subset hexadecimal identifier
    • Create beacon transaction and notify BeaconChain summary nodes (for the current epoch)
    • Create beacon summary transaction (if it's one of the summary node)
    • Notify explorer about the new transaction validated (See Sharded Explorer)

    Timers and schedulers

    Because each BeaconChain subsets change over time, we need a may to determine what are the current nodes for those subsets and so on. So we have two kind of timers and schedulers:

    • Slot timer: Manage the interval for the beacon slot creations
    • Summary timer: Manage the interval for the beacon summary creations

    Each of those timer provides helpers to be able to generate previous or next dates

    Transaction loading

    Before a transaction's confirmation is loaded into the BeaconChain, a phase of validation is performed to ensure the correctness of the replication:

    • it asserts the transaction's address is the right one
    • it asserts the transaction attestation (node election, signatures, etc.)

    For more details, SlotValidation

    Then the slot is deserialized to be loaded into a cache, for a faster summary aggregation and computation

    Supervisor

    To manage all those processes and isolation a proper supervision tree is defined

    - +Currently the BeaconChain supports 256 subsets, from 0 to F (hex)

    Each subset is maintained by its own process

    This process is responsible of:

    • Add transaction replication confirmation to the current slot
    • Check P2P availability of the nodes where their public key starts by the subset hexadecimal identifier
    • Create beacon transaction and notify BeaconChain summary nodes (for the current epoch)
    • Create beacon summary transaction (if it's one of the summary node)
    • Notify explorer about the new transaction validated (See Sharded Explorer)

    Timers and schedulers

    Because each BeaconChain subsets change over time, we need a may to determine what are the current nodes for those subsets and so on. So we have two kind of timers and schedulers:

    • Slot timer: Manage the interval for the beacon slot creations
    • Summary timer: Manage the interval for the beacon summary creations

    Each of those timer provides helpers to be able to generate previous or next dates

    Transaction loading

    Before a transaction's confirmation is loaded into the BeaconChain, a phase of validation is performed to ensure the correctness of the replication:

    • it asserts the transaction's address is the right one
    • it asserts the transaction attestation (node election, signatures, etc.)

    For more details, SlotValidation

    Then the slot is deserialized to be loaded into a cache, for a faster summary aggregation and computation

    Supervisor

    To manage all those processes and isolation a proper supervision tree is defined

    + \ No newline at end of file diff --git a/build/core/beacon-chain/p2p-sampling/index.html b/build/core/beacon-chain/p2p-sampling/index.html index 59f6e8bab..d29ae0e44 100644 --- a/build/core/beacon-chain/p2p-sampling/index.html +++ b/build/core/beacon-chain/p2p-sampling/index.html @@ -4,13 +4,13 @@ P2P availability sampling | Archethic - +
    -

    P2P availability sampling

    Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor.

    Heartbeat

    So periodically (when a transaction is confirmed or before a slot creation), the nodes of a given subset perform P2P availability sampling of the given peers.

    info

    If multiple transactions arrive to a given subset quickly, a timespan of 3s from the previous sampling is used, to determine if we need to sample availability again

    A timeout of 1s is given in which a node should respond otherwise it will considered as locally offline by the beacon chain

    Aggregation

    During the transaction generation of the BeaconChain summary, we aggregate multiple slots into a common structure.

    All the aggregated P2P samples are accumulated to determine the frequencies of availability and determine the average.

    So during the Self-Repair, we are using those summary and aggregated data to determine if a node is considered as available for the next epoch/cycle.

    - +

    P2P availability sampling

    Each beacon chain's subset is responsible to perform verification of the nodes is in charge to monitor.

    Heartbeat

    So periodically (when a transaction is confirmed or before a slot creation), the nodes of a given subset perform P2P availability sampling of the given peers.

    info

    If multiple transactions arrive to a given subset quickly, a timespan of 3s from the previous sampling is used, to determine if we need to sample availability again

    A timeout of 1s is given in which a node should respond otherwise it will considered as locally offline by the beacon chain

    Aggregation

    During the transaction generation of the BeaconChain summary, we aggregate multiple slots into a common structure.

    All the aggregated P2P samples are accumulated to determine the frequencies of availability and determine the average.

    So during the Self-Repair, we are using those summary and aggregated data to determine if a node is considered as available for the next epoch/cycle.

    + \ No newline at end of file diff --git a/build/core/bootstrap/index.html b/build/core/bootstrap/index.html index b80596bf4..0b6c012c6 100644 --- a/build/core/bootstrap/index.html +++ b/build/core/bootstrap/index.html @@ -4,13 +4,13 @@ Bootstrap | Archethic - +
    -

    Bootstrap

    When the Archethic node, a task is launched to perform the node bootstrapping to join the network.

    To be able to bootstrap a node, we gather connectivity information (IP, Port, Transport, Reward address, Bootstrapping seeds) and also last synchronization date.

    But a flow is determine to define what is the state of the bootstrap: network initialization, first bootstrap, next bootstrap

    Network initizialiation

    The first node joining the network will be in charge to initialize the network by defining few transaction chains:

    • Create first node shared secrets transaction chain with initial dailly nonce
    • Create genesis wallets according to the allocation from the UCO token distribution

    First node bootstrapping

    During the first initialization, a node will contact P2P bootstrapping seeds (anchor nodes) to be able to fetch existing nodes.

    Next a node will create transaction to publish its connectivity and crypto information which will authorize or not new joining node.

    Once a node is authorized, after the success of this transaction, it can decrypt/load the storage nonce (will be used for self-repair) and start the self-repair initial cycle to sync transactions.

    Next time bootstraps

    For further bootstraps, the bootstrap tasks determine if an update is required based on connectivity/crypto information changes, then a transaction is emitted to the node chain.

    Once validated, the self-repair is also triggered to resync missed transactions.

    - +

    Bootstrap

    When the Archethic node, a task is launched to perform the node bootstrapping to join the network.

    To be able to bootstrap a node, we gather connectivity information (IP, Port, Transport, Reward address, Bootstrapping seeds) and also last synchronization date.

    But a flow is determine to define what is the state of the bootstrap: network initialization, first bootstrap, next bootstrap

    Network initizialiation

    The first node joining the network will be in charge to initialize the network by defining few transaction chains:

    • Create first node shared secrets transaction chain with initial dailly nonce
    • Create genesis wallets according to the allocation from the UCO token distribution

    First node bootstrapping

    During the first initialization, a node will contact P2P bootstrapping seeds (anchor nodes) to be able to fetch existing nodes.

    Next a node will create transaction to publish its connectivity and crypto information which will authorize or not new joining node.

    Once a node is authorized, after the success of this transaction, it can decrypt/load the storage nonce (will be used for self-repair) and start the self-repair initial cycle to sync transactions.

    Next time bootstraps

    For further bootstraps, the bootstrap tasks determine if an update is required based on connectivity/crypto information changes, then a transaction is emitted to the node chain.

    Once validated, the self-repair is also triggered to resync missed transactions.

    + \ No newline at end of file diff --git a/build/core/cryptography/index.html b/build/core/cryptography/index.html index 105bdfc05..4db83f022 100644 --- a/build/core/cryptography/index.html +++ b/build/core/cryptography/index.html @@ -4,13 +4,13 @@ Cryptography | Archethic - +
    -

    Cryptography

    Node cryptography is maintains through keystores

    Node Keystore

    Node cryptography is maintain through keystore which stores the transaction index and reference to the public keys.

    A behavior is defined to be able swap and test easily implementations.

    There are several implementations of the node keystore:

    • Software implementation (used in dev mode and testnet)
    • Hardware implementation

    More details here: Node keystore

    Node Shared Secrets Keystore

    Along with node keystore, node shared secrets have their own keystore as it used to store secrets as daily nonce, storage nonce and provide the API to leverage them for transaction validation, election algorithm, etc..

    A behavior is also provided to be able to swap implementations. Right now only the software implementation is supported.

    More details here: Shared Secrets keystore

    - +

    Cryptography

    Node cryptography is maintains through keystores

    Node Keystore

    Node cryptography is maintain through keystore which stores the transaction index and reference to the public keys.

    A behavior is defined to be able swap and test easily implementations.

    There are several implementations of the node keystore:

    • Software implementation (used in dev mode and testnet)
    • Hardware implementation

    More details here: Node keystore

    Node Shared Secrets Keystore

    Along with node keystore, node shared secrets have their own keystore as it used to store secrets as daily nonce, storage nonce and provide the API to leverage them for transaction validation, election algorithm, etc..

    A behavior is also provided to be able to swap implementations. Right now only the software implementation is supported.

    More details here: Shared Secrets keystore

    + \ No newline at end of file diff --git a/build/core/cryptography/tpm/index.html b/build/core/cryptography/tpm/index.html index 6ece9a784..b701a95a8 100644 --- a/build/core/cryptography/tpm/index.html +++ b/build/core/cryptography/tpm/index.html @@ -4,7 +4,7 @@ TPM Implementation | Archethic - + @@ -15,8 +15,8 @@ The function adds the headers squentially and then the raw x coordinate of public key and then the y coordinate finally the size is updated.

    void signToASN(BYTE r, INT sizeR, BYTE s, INT sizeS, INT *asnSignSize)

    tip

    Converts uncompressed signature values to ASN DER format.

    TPM generates the raw signature in form of integer values : R & S. signToASN() converts these raw values into ASN DER format. It first prepends the ASN sequence then checks the MSB of R . If it is 1 then it prepends a byte (0) to R otherwise it move on to increase the index pointed to the asn by the size of R. Similarly, it does the above for S.

    void generatePublicKey(INT keyIndex)

    danger

    Generates public key on the endorsement key hierarchy of TPM by taking one byte key index as input.

    Firstly, the template of the public key is defined in the inPublicECC which contains the endorsement key template such that certificate on the keys can be generated except modifying the endorsement key object attributes. The inPublicECC structure defines the following sub-structure:

    1. publicArea : defines the attributes of the public key to be generated. For endorsement key the signing operation is restricted due to privacy concern, defined under this structure. In this case we are generating key in the endordement hierarchy by using the template of the endorsement key.
    • The object attributes of generating key are as follows:
    * TPMA_OBJECT_USERWITHAUTH: Signifies the approval of "USER" actions with associated with the public key with a password.
    * TPMA_OBJECT_ADMINWITHPOLICY: Signifies the Approval of "ADMIN" role actions with this object may only be done with a policy session.
    * TPMA_OBJECT_SIGN_ENCRYPT: For a symmetric cipher object, the private portion of the key be used to encrypt. For other objects, the private portion of the key can be used to sign.
    * TPMA_OBJECT_DECRYPT:The private portion of the key can be used to decrypt
    * TPMA_OBJECT_FIXEDTPM: Indicates that the hierarchy of the key genrated cannot be changed.
    * TPMA_OBJECT_FIXEDPARENT:Indicates that the parent of the object cannot be changed.
    * TPMA_OBJECT_SENSITIVEDATAORIGIN: Indicates that the sensitive data is generated by the TPM on the key generation except the authvalue.
    .objectAttributes = (TPMA_OBJECT_USERWITHAUTH |
    TPMA_OBJECT_ADMINWITHPOLICY |
    TPMA_OBJECT_SIGN_ENCRYPT |
    TPMA_OBJECT_DECRYPT |
    TPMA_OBJECT_FIXEDTPM |
    TPMA_OBJECT_FIXEDPARENT |
    TPMA_OBJECT_SENSITIVEDATAORIGIN),

    • Object attributes for generating under Endorsement key hierarchy:
      • TPMA_OBJECT_RESTRICTED: Key usage is restricted to manipulate structures of known format.
    info

    Endorsement key has same template except that there is no SIGN_ENCRYPT FLAG in the object attribute.

    .objectAttributes = (TPMA_OBJECT_RESTRICTED |
    TPMA_OBJECT_ADMINWITHPOLICY |
    TPMA_OBJECT_DECRYPT |
    TPMA_OBJECT_FIXEDTPM |
    TPMA_OBJECT_FIXEDPARENT |
    TPMA_OBJECT_SENSITIVEDATAORIGIN),
    1. authPolicy: this substructure contains a 32 byte buffer with values exactly same as endorsement key attributes. This parameter associates the generated key template to the TPM hence during certificate generation the CA is able to return the certificate for the public key generated under Endorsement key hierarchy.
    .authPolicy = {
    .size = 32,
    .buffer = {0x83, 0x71, 0x97, 0x67, 0x44, 0x84, 0xB3, 0xF8, 0x1A, 0x90, 0xCC,
    0x8D, 0x46, 0xA5, 0xD7, 0x24, 0xFD, 0x52, 0xD7, 0x6E, 0x06, 0x52,
    0x0B, 0x64, 0xF2, 0xA1, 0xDA, 0x1B, 0x33, 0x14, 0x69, 0xAA}},
    1. parameters: In the parameter structure we define the algorithm to be used for private key cryptography and public key cryptography operations.
     .parameters.eccDetail = {.symmetric = {
    .algorithm = TPM2_ALG_AES,
    .keyBits.aes = 128,
    .mode.sym = TPM2_ALG_CFB,
    },
    .scheme = {.scheme = TPM2_ALG_NULL, .details = {.ecdsa = {.hashAlg = TPM2_ALG_SHA256}}},
    .curveID = TPM2_ECC_NIST_P256,
    .kdf = {.scheme = TPM2_ALG_NULL, .details = {}}},

    After definning the template of the public key, a unique data is passed to each key in the unique structure of inPublicEC which is root key hash and key index. For the root key the root key hash is 0 and key index is 0.

    .unique.ecc = {.x = {.size = 32, .buffer = {0}}, .y = {.size = 32, .buffer = {0}}},

    The primary key is created by using Esys_CreatePrimary() function with the following parameters:

    • ESYS_TR_RH_ENDORSEMENT: To generate key in the endorsement hierarchy6.
    • ESYS_TR_PASSWORD: indicates a password authorization
    • inPublicECC: the public key template defined is passed.

    Finally the created key is converted to ASN DER format.

    setRootKey()

    danger

    Initializes root key by calling generatePublicKey(0) since 0 is the index of root key.

    It also sets the root key hash. It is calculated by concatenating the raw x and y part of the root key and then hashing it.

    The rootkey hash is stored statically and is important for every new primary key generation since it is passed as parameter to the unique structure of inPublicEC.X part. The key index is passed as parameter to the inpublicEc.y.

    updateHandlesIndexes()

    tip

    Increments the current index value by 1 and also updates all the corresponding keys.

    Flushes the previous key handles index and points it to the nextKeyHandle then increments NEXT index by 1 to store it in the nextkeyindex. Then generates a new public key by sending nextkeyIndex as the parameter. Finally it assigns the currentKeyhandle to the nextkey handle .

    initializeTPM(INT keyIndex):

    danger

    Initializes TPM context by calling Esys_Initialize() function and sets the previous key handle and nextkey handle as null. Then it sets the root key and key index.

    getKeyIndex():

    info

    Returns previous key index because that is the "current" key index used for performing signature.

    setKeyIndex(INT keyIndex):

    danger

    Sets the previous key index (which is our current key) to the key index passed as parameter.

    Also sets keyIndex+1 as the nextKey index.

    For the key generated at after first initialization it flushes the previous key handle and generates the key with keyIndex then points then populates the previous key handle with the current key handle value. -Next it generates the public key with keyIndex+1 and stores it in the nextkey handle.

    getPublicKey(INT keyIndex, INT *publicKeySize):

    tip

    Returns the public key for the given index.

    Takes keyIndex and returns root key if the keyINDEX is 0, next key if the keyindex matches with the nextKey index, previous key if the keyINdex matches with the previous Key index.

    If it matches with none of these indexes, then it flushes the root key from the tpm (due to the limit of max 3 transient handles), generates the key for the corresponding keyIndex and copies it into temp key then flushes it from the TPM. Finally, it regenerates the root key and then returns temp key.

    signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):

    danger

    Signs the given hash using the key referred by the key index.

    Converts the byte hash to TPM2B_hash object and then checks the key index . If it is root key or previous key then assigns it to the signing key handle otherwise;

    Sets the previous key index to the given keyindex by calling setkeyindex() function and assigns it to the signing handle. It signs the hash using Esys_Sign() function. Finally the signature is converted to ASN DER format which is returned by signECDSA().

    getECDHPoint(INT keyIndex, BYTE *euphemeralKey):

    info

    Performs Elliptic Curve Diffe Hellmen Key Exchange using the private part of the key referred by the Key Index and public euphemeral key. Returns the derived shared secret uncompressed point.

    Takes the key index and checks whether it's previous key, next key or root key. If it's one of these then it assigns it to the ECDH key handle else it removes the root key and generates a new key for the given key index and use it in the ECDH handle.

    Next, it re-structures the euphemeral key with the format 04 x y and generates an ECDH point using the Esys_ECDH_ZGen() function and stores it 04 x y format in zPoint which is then returned by the function.

    - +Next it generates the public key with keyIndex+1 and stores it in the nextkey handle.

    getPublicKey(INT keyIndex, INT *publicKeySize):

    tip

    Returns the public key for the given index.

    Takes keyIndex and returns root key if the keyINDEX is 0, next key if the keyindex matches with the nextKey index, previous key if the keyINdex matches with the previous Key index.

    If it matches with none of these indexes, then it flushes the root key from the tpm (due to the limit of max 3 transient handles), generates the key for the corresponding keyIndex and copies it into temp key then flushes it from the TPM. Finally, it regenerates the root key and then returns temp key.

    signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):

    danger

    Signs the given hash using the key referred by the key index.

    Converts the byte hash to TPM2B_hash object and then checks the key index . If it is root key or previous key then assigns it to the signing key handle otherwise;

    Sets the previous key index to the given keyindex by calling setkeyindex() function and assigns it to the signing handle. It signs the hash using Esys_Sign() function. Finally the signature is converted to ASN DER format which is returned by signECDSA().

    getECDHPoint(INT keyIndex, BYTE *euphemeralKey):

    info

    Performs Elliptic Curve Diffe Hellmen Key Exchange using the private part of the key referred by the Key Index and public euphemeral key. Returns the derived shared secret uncompressed point.

    Takes the key index and checks whether it's previous key, next key or root key. If it's one of these then it assigns it to the ECDH key handle else it removes the root key and generates a new key for the given key index and use it in the ECDH handle.

    Next, it re-structures the euphemeral key with the format 04 x y and generates an ECDH point using the Esys_ECDH_ZGen() function and stores it 04 x y format in zPoint which is then returned by the function.

    + \ No newline at end of file diff --git a/build/core/cryptography/yubikey/index.html b/build/core/cryptography/yubikey/index.html index c41bc7b8b..2fc479073 100644 --- a/build/core/cryptography/yubikey/index.html +++ b/build/core/cryptography/yubikey/index.html @@ -4,15 +4,15 @@ Yubikey implementation | Archethic - +

    Yubikey implementation

    This section explains the HRT Yubikey Library implementation.

    tip

    initializeYK() :

    Initializes the context of the yubikey application in the variable g_state and connects to the hardware device. If successful, then gets the key index of Archethic as well as key index of the yubikey device.

    bool checkYK():

    displays the model of yubikey device used returns true if the device list contains "Yubico Yubikey".

    verifyPinYK():

    verifies the pin code using ykpiv_verify() required to access PIV interface.

    authenticateYK():

    Management key is required to do administrative actions. First it does hex decoding of the management key and authenticates if ykpiv_authenticate() returns 0.

    fetchKey(keyIndex):

    A PIV card contains some interoperable seven mandatory and twenty optional data objects. These objects are identified with their respective ids. We use these twenty optional data objects to store the key certificates. fetchKey index takes the yubikey key index ykindex as input and fetches the certificate at the key_certificates[ykindex]. This X509 certificate is decoded and public key is extracted from it using X509_get0_pubkey_bitstr and copied to ecc_public_key.

    generateKey(ykIndex):

    It takes the ykIndex and generates an ECC key using ykpiv_util_generate_key(). It generates key at one of the slots {0x82.. 0x95} pointed by ykindex - key_slots[ykIndex]

    generateCertificate(ykIndex):

    The keys in the slot are attested through ykpiv_attest() by taking the slot on the index as input. It returns attested key and its length which is then saved into an object pointed by ykIndex using ykpiv_save_object().

    getYKIndex():

    The YKPIV_OBJ_KEY_HISTORY keeps the count of the keys generated in the yubikey. This fucntion fetches the YKPIV_OBJ_KEY_HISTORY using ykpiv_fetch_object() to get the index_yk and returns it.

    saveIndex(ykIndex, archethicIndex):

    It takes ykindex and archethicIndex as input and generates index by combining ykindex and archethic index and keeps it in YKPIV_OBJ_HISTORY.

    signECDSA(hashtoSign, ykIndex):

    It uses ykpiv_sign_data() to sign hashToSign using YKPIV_ALGO_ECCP256 through the key pointed by ykindex - key_slots[ykindex].

    getECDHPoint(ykIndex, euphermerakley) :

    It generated an ecdh point using ykpiv_decipher_data() for the slot pointed by ykindex key_slots[ykIndex].

    getArchEthicIndex():

    Fetches the YKPIV_OBJ_KEY_HISTORY and derives the archethicindex from index_yk saved in key history object.

    incrementIndex():

    We use the 20 data objects to store 20 keys certificates at once. The 21st key generated on the yubikey is stored in newYKIndex = ykindex % 20. The archethic index is incremented and a new key is generated using newYKindex .A certificate is generated and saved in the slot pointed by newYKindex. Finally it returns true if the current YK index is equal to newYKindex and current archethicindex is equal to newarchethic index .

    getRootKey():

    Reads the root key certificate from f9 slot and fetches public key from the certificate. Finally it copies the key into rsa_root_key and returns it.

    getCurrentKey(publicKeySize):

    Generates the previous key index by and fetches the key behind previous key index and returns the ecc key.

    getNextKey( publicKeySize):

    It fetches the key from the ykIndex and returns the ecc_public_key behind the index.

    getPastKey(archEthicIndex, publicKeySize):

    It fetches the keys stored previously in the slot. It first calculates the slot position and then fetches the key at the slot position and return it.

    getRootCertificate( certificateSize):

    Reads the certificate of the rootkey from 0xf9 slot, copies it ykcertificate and returns it.

    getCurrentCertificate(certificateSize):

    Calculates the curent key index and fetches the certificate from the object pointed by the current key index.

    getNextCertificate(certificateSize):

    fetches the certificate of the key pointed by ykindex and returns it.

    getPastCertificate(archEthicIndex, certificateSize):

    calculates the slot posistion according to the offset using archethicindex then fetches the object at the slot position which is a certificate amd returns it.

    signCurrentKey(hashToSign, eccSignSize):

    Calculates the current key index then verifies the Yubikey pin using verifyPinYK() and then signs hashToSign using signECDSA(). The signECDSA() signs the key at the currentkeyindex.

    signPastKey(archEthicIndex, hashToSign, eccSignSize):

    Calculates the slot position by first calculating the offset by using archethicindex. Then it verifies the yubikey pin and signs the key pointed at the slotPosition.

    ecdhCurrentKey(euphemeralKey, eccPointSize):

    Calculates the current key index, verifies the yubikey pin to get the ECDH point through getECDHPoint() fucntion and finally returns it.

    ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):

    Calculates the offset and slotPosition using archEthicIndex., verifies Yubikey PIN and gets the ECDH point for the key pointed by slotPosiotion and returns it.

    - +uniris-yubikey.h

    initializeYK() :

    Initializes the context of the yubikey application in the variable g_state and connects to the hardware device. If successful, then gets the key index of Archethic as well as key index of the yubikey device.

    bool checkYK():

    displays the model of yubikey device used returns true if the device list contains "Yubico Yubikey".

    verifyPinYK():

    verifies the pin code using ykpiv_verify() required to access PIV interface.

    authenticateYK():

    Management key is required to do administrative actions. First it does hex decoding of the management key and authenticates if ykpiv_authenticate() returns 0.

    fetchKey(keyIndex):

    A PIV card contains some interoperable seven mandatory and twenty optional data objects. These objects are identified with their respective ids. We use these twenty optional data objects to store the key certificates. fetchKey index takes the yubikey key index ykindex as input and fetches the certificate at the key_certificates[ykindex]. This X509 certificate is decoded and public key is extracted from it using X509_get0_pubkey_bitstr and copied to ecc_public_key.

    generateKey(ykIndex):

    It takes the ykIndex and generates an ECC key using ykpiv_util_generate_key(). It generates key at one of the slots {0x82.. 0x95} pointed by ykindex - key_slots[ykIndex]

    generateCertificate(ykIndex):

    The keys in the slot are attested through ykpiv_attest() by taking the slot on the index as input. It returns attested key and its length which is then saved into an object pointed by ykIndex using ykpiv_save_object().

    getYKIndex():

    The YKPIV_OBJ_KEY_HISTORY keeps the count of the keys generated in the yubikey. This fucntion fetches the YKPIV_OBJ_KEY_HISTORY using ykpiv_fetch_object() to get the index_yk and returns it.

    saveIndex(ykIndex, archethicIndex):

    It takes ykindex and archethicIndex as input and generates index by combining ykindex and archethic index and keeps it in YKPIV_OBJ_HISTORY.

    signECDSA(hashtoSign, ykIndex):

    It uses ykpiv_sign_data() to sign hashToSign using YKPIV_ALGO_ECCP256 through the key pointed by ykindex - key_slots[ykindex].

    getECDHPoint(ykIndex, euphermerakley) :

    It generated an ecdh point using ykpiv_decipher_data() for the slot pointed by ykindex key_slots[ykIndex].

    getArchEthicIndex():

    Fetches the YKPIV_OBJ_KEY_HISTORY and derives the archethicindex from index_yk saved in key history object.

    incrementIndex():

    We use the 20 data objects to store 20 keys certificates at once. The 21st key generated on the yubikey is stored in newYKIndex = ykindex % 20. The archethic index is incremented and a new key is generated using newYKindex .A certificate is generated and saved in the slot pointed by newYKindex. Finally it returns true if the current YK index is equal to newYKindex and current archethicindex is equal to newarchethic index .

    getRootKey():

    Reads the root key certificate from f9 slot and fetches public key from the certificate. Finally it copies the key into rsa_root_key and returns it.

    getCurrentKey(publicKeySize):

    Generates the previous key index by and fetches the key behind previous key index and returns the ecc key.

    getNextKey( publicKeySize):

    It fetches the key from the ykIndex and returns the ecc_public_key behind the index.

    getPastKey(archEthicIndex, publicKeySize):

    It fetches the keys stored previously in the slot. It first calculates the slot position and then fetches the key at the slot position and return it.

    getRootCertificate( certificateSize):

    Reads the certificate of the rootkey from 0xf9 slot, copies it ykcertificate and returns it.

    getCurrentCertificate(certificateSize):

    Calculates the curent key index and fetches the certificate from the object pointed by the current key index.

    getNextCertificate(certificateSize):

    fetches the certificate of the key pointed by ykindex and returns it.

    getPastCertificate(archEthicIndex, certificateSize):

    calculates the slot posistion according to the offset using archethicindex then fetches the object at the slot position which is a certificate amd returns it.

    signCurrentKey(hashToSign, eccSignSize):

    Calculates the current key index then verifies the Yubikey pin using verifyPinYK() and then signs hashToSign using signECDSA(). The signECDSA() signs the key at the currentkeyindex.

    signPastKey(archEthicIndex, hashToSign, eccSignSize):

    Calculates the slot position by first calculating the offset by using archethicindex. Then it verifies the yubikey pin and signs the key pointed at the slotPosition.

    ecdhCurrentKey(euphemeralKey, eccPointSize):

    Calculates the current key index, verifies the yubikey pin to get the ECDH point through getECDHPoint() fucntion and finally returns it.

    ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):

    Calculates the offset and slotPosition using archEthicIndex., verifies Yubikey PIN and gets the ECDH point for the key pointed by slotPosiotion and returns it.

    + \ No newline at end of file diff --git a/build/core/database/index.html b/build/core/database/index.html index ab86833ca..dea5af521 100644 --- a/build/core/database/index.html +++ b/build/core/database/index.html @@ -4,7 +4,7 @@ Archethic's database | Archethic - + @@ -24,8 +24,8 @@ So during the write, the transaction index/summary is notified about the last offset of the chain, and help to move forward in the location of new transaction.

    Last index

    As we mentioned in the last addresses chain index file, we need to quickly know what is the last address of a chain, so here we a cache, we says for a given genesis address what is the latest.

    So this table is filled every time a node receives a last address notification.

    Type index

    Because we have type index file, we can also leverages a memory index to know how many transactions for a given type exists. This is useful for key derivation for network transactions. So we can easily and quickly get the size of a chain.

    Chain reader

    Wide column storages provides the capability to extract sub columns information to avoid the load of an entire row in the memory to let the application filter the data. -The filtering can be done on the disk, while make it efficients.

    The behaviour like is a two dimensional key-value pair, where the 1st dimension targets the partition key and the 2nd targets the columns of the row.

    So we achieve a similar approach here, by eing the 1st dimension as the chain file and the 2nd as the list of columns names encoded during the transaction write.

    1. After being able to get the lookup informations from the chain indexes to identify the file and offset in the file of a given transaction, we seek (put the cursor) at the offset position.
    2. Then we can sequentially read columns and values and pick the ones we want
    3. When we reached the end of the transaction (thanks to the size information from the indexes) or the enf of file, we convert those values into a transaction where the values retrieved will be filled in to the structure.

    Write path

    So in order to be written, a transaction follows a write path to make reads efficient.

    After a transaction is written to disk in the genesis chain file, several disks and memory writes are performed to help the indexing of this transaction.

    Transaction's address is written to:

    • the summary index from the subset of the transaction (file)
    • the last addresses index of the chain (in memory and file)
    • the transaction's type index (in memory)
    • the bloom filters (in memory)
    • transaction index (in memory)

    Its public key is also written to the chain's public key index. (file)

    Then transaction's type in memory index number incremented, as well as the chain stats in memory index.

    Read path

    To make read efficients, when a transaction wants to be retrieved, it goes to the read path:

    • Check if the transaction index is present, if yes we have information about the file and position
    • Otherwise we check the bloom filter, if yes, we read the subset summary to identify the position of the transaction, otherwise you inform the transaction does not exists
    • Then a reader is able to perform reads according to the fields requested and the position retrieved.

    Additional of-chain storage

    For now, we have covered the scope of chain storage and retrieval, however we also need to persist some data which are not really inserted into a chain and are important for well-being of the node execution.

    So we have to leverage others kind of storages and indexes as simple key-value in memory loaded from disk.

    The scope of those storages are:

    • Bootstrapping information (last P2P bootstrapping seeds, storage nonce, last sync date)
    • Network statistics (aggregated TPS and nb of transactions)
    • P2P view (aggregated node availability from the beacon chain)
    - +The filtering can be done on the disk, while make it efficients.

    The behaviour like is a two dimensional key-value pair, where the 1st dimension targets the partition key and the 2nd targets the columns of the row.

    So we achieve a similar approach here, by eing the 1st dimension as the chain file and the 2nd as the list of columns names encoded during the transaction write.

    1. After being able to get the lookup informations from the chain indexes to identify the file and offset in the file of a given transaction, we seek (put the cursor) at the offset position.
    2. Then we can sequentially read columns and values and pick the ones we want
    3. When we reached the end of the transaction (thanks to the size information from the indexes) or the enf of file, we convert those values into a transaction where the values retrieved will be filled in to the structure.

    Write path

    So in order to be written, a transaction follows a write path to make reads efficient.

    After a transaction is written to disk in the genesis chain file, several disks and memory writes are performed to help the indexing of this transaction.

    Transaction's address is written to:

    • the summary index from the subset of the transaction (file)
    • the last addresses index of the chain (in memory and file)
    • the transaction's type index (in memory)
    • the bloom filters (in memory)
    • transaction index (in memory)

    Its public key is also written to the chain's public key index. (file)

    Then transaction's type in memory index number incremented, as well as the chain stats in memory index.

    Read path

    To make read efficients, when a transaction wants to be retrieved, it goes to the read path:

    • Check if the transaction index is present, if yes we have information about the file and position
    • Otherwise we check the bloom filter, if yes, we read the subset summary to identify the position of the transaction, otherwise you inform the transaction does not exists
    • Then a reader is able to perform reads according to the fields requested and the position retrieved.

    Additional of-chain storage

    For now, we have covered the scope of chain storage and retrieval, however we also need to persist some data which are not really inserted into a chain and are important for well-being of the node execution.

    So we have to leverage others kind of storages and indexes as simple key-value in memory loaded from disk.

    The scope of those storages are:

    • Bootstrapping information (last P2P bootstrapping seeds, storage nonce, last sync date)
    • Network statistics (aggregated TPS and nb of transactions)
    • P2P view (aggregated node availability from the beacon chain)
    + \ No newline at end of file diff --git a/build/core/election/index.html b/build/core/election/index.html index d779d9fee..232f1a16d 100644 --- a/build/core/election/index.html +++ b/build/core/election/index.html @@ -4,15 +4,15 @@ Election | Archethic - +

    Election

    Archethic provides rotating algorithm to elect validation and storage nodes.

    Validation and Storage Election algorithm provides also list of heuristic constraints to fine grained elections.

    Heuristic constraints

    An ETS table is used to store the last constraints values for a faster lookup.

    Storage constraints are defined by:

    • minimum storage geographical patches
    • minimum storage average by geographical patch
    • number of replicast

    Validation constraints are defined by:

    • minimum validation geographical patch distribution
    • minimum validation nodes
    • validation number based on a given transaction

    Low-Level integrations

    Sometimes for performance issue, we are leveraging low-level programming in C, to perform fast computation.

    Hypergeomtric distribution

    For example, the Hypergeometric Distribution simulation is computed in C and wrapped in an Erlang port communication. But for better simulation lookup, a cache is provided as process to hold the last value for a given number of nodes. -If the number of nodes changes, the hypergeometric distribution will be trigger.

    The C program is using GMP for big float arithemetic operations and OMP for parallel computations to make it efficient.

    - +If the number of nodes changes, the hypergeometric distribution will be trigger.

    The C program is using GMP for big float arithemetic operations and OMP for parallel computations to make it efficient.

    + \ No newline at end of file diff --git a/build/core/governance/code-proposals-cd/index.html b/build/core/governance/code-proposals-cd/index.html index 7797f200d..2c8a56148 100644 --- a/build/core/governance/code-proposals-cd/index.html +++ b/build/core/governance/code-proposals-cd/index.html @@ -4,14 +4,14 @@ CD | Archethic - +

    CD

    The archethic-cd target produces an image capable of running archethic_node release. -The objective of cd is to test the code proposal in a testnet environment which means spawning:

    • 5 nodes that run the new version
    • 2 validator containers
    • 1 prometheus container
    • 1 benchmark container

    the cd happens in multiple steps:

    • first we start by copying the upgrade release and the logs we created in the CI part to a tmp folder
    • next we create the subnet and we start all the containers responsible for the CD
    • The validator container ensures that every node is up and do a benchmark before we apply the upgrade
    • We apply the upgrade
    • we start the second round of validation which is responsible for running benchmarks again, running the playbooks and gathering metrics from prometheus.
    • we wait for the final validation message and we clean all containers and images we created.

    nb: the cleaning phase will happen even in the case of failure.

    - +The objective of cd is to test the code proposal in a testnet environment which means spawning:

    • 5 nodes that run the new version
    • 2 validator containers
    • 1 prometheus container
    • 1 benchmark container

    the cd happens in multiple steps:

    • first we start by copying the upgrade release and the logs we created in the CI part to a tmp folder
    • next we create the subnet and we start all the containers responsible for the CD
    • The validator container ensures that every node is up and do a benchmark before we apply the upgrade
    • We apply the upgrade
    • we start the second round of validation which is responsible for running benchmarks again, running the playbooks and gathering metrics from prometheus.
    • we wait for the final validation message and we clean all containers and images we created.

    nb: the cleaning phase will happen even in the case of failure.

    + \ No newline at end of file diff --git a/build/core/governance/code-proposals-ci/index.html b/build/core/governance/code-proposals-ci/index.html index 1ebbf7054..38d1276ca 100644 --- a/build/core/governance/code-proposals-ci/index.html +++ b/build/core/governance/code-proposals-ci/index.html @@ -4,7 +4,7 @@ CI | Archethic - + @@ -12,8 +12,8 @@

    CI

    After a code proposal is received by a node in the network and passes initial validation, the next step in the process is the CI.

    The archethic-ci target produces an image with build tools. Its goal is to compile the source code into archethic_node release. The CI part is powered by scripts/proposal_ci_job.sh. -The script runs in a container named archethic-prop-{address}, it produces: release upgrade of archethic_node and combined log of application of a code proposal to the source code, execution of unit tests, and log from linter. The log can be obtained with docker logs, the release upgrade and the validator with docker cp, after that the container can be disposed.

    the logs are collected in ci_logfile.txt and this file is copied at the end to tmp directory created in filesystem.

    the script runs multiple commands:

    • Creates a branch prop_{proposal_address}
    • Apply the changes to the branch
    • Add the changes and commit
    • Checking if the project is formatted correctly
    • Check if the project compiles without warning
    • Credo
    • Sobelow
    • Knigge
    • Runs the test suite
    • Dialyzer
    • Checks if dependencies are outdated
    • And Finally it creates an upgrade release with Distillery
    - +The script runs in a container named archethic-prop-{address}, it produces: release upgrade of archethic_node and combined log of application of a code proposal to the source code, execution of unit tests, and log from linter. The log can be obtained with docker logs, the release upgrade and the validator with docker cp, after that the container can be disposed.

    the logs are collected in ci_logfile.txt and this file is copied at the end to tmp directory created in filesystem.

    the script runs multiple commands:

    • Creates a branch prop_{proposal_address}
    • Apply the changes to the branch
    • Add the changes and commit
    • Checking if the project is formatted correctly
    • Check if the project compiles without warning
    • Credo
    • Sobelow
    • Knigge
    • Runs the test suite
    • Dialyzer
    • Checks if dependencies are outdated
    • And Finally it creates an upgrade release with Distillery
    + \ No newline at end of file diff --git a/build/core/governance/code-proposals/index.html b/build/core/governance/code-proposals/index.html index 91fdb3be3..f3fe0b7cf 100644 --- a/build/core/governance/code-proposals/index.html +++ b/build/core/governance/code-proposals/index.html @@ -4,14 +4,14 @@ Code Proposals | Archethic - +

    Code Proposals

    Archethic Blockchain is using code proposals to have a way to upgrade current blockchain -code in a automated and tested way.

    A pending code proposal contains the following fields:

    • Address: Address of the code proposal
    • Approvals: Approvals signed by the users
    • Changes: Diff between current version and code proposal
    • Description: Description of the code proposal
    • Files: Files changed in code proposal
    • Previous Public Key
    • Timestamp
    • Version: target version

    For a code proposal to be valid it needs to validate 3 conditions:

    • The version in code proposal needs to be a successor version of the current one
    • The changes need to contain a valid appup file
    • the code proposal is applicable on the current branch

    Code proposals can be visualised in the governance section of the UI.

    when a code proposal get enough approvals from members of technical council (more than the threshhold), it automatically launchs the CI/CD process.

    - +code in a automated and tested way.

    A pending code proposal contains the following fields:

    • Address: Address of the code proposal
    • Approvals: Approvals signed by the users
    • Changes: Diff between current version and code proposal
    • Description: Description of the code proposal
    • Files: Files changed in code proposal
    • Previous Public Key
    • Timestamp
    • Version: target version

    For a code proposal to be valid it needs to validate 3 conditions:

    • The version in code proposal needs to be a successor version of the current one
    • The changes need to contain a valid appup file
    • the code proposal is applicable on the current branch

    Code proposals can be visualised in the governance section of the UI.

    when a code proposal get enough approvals from members of technical council (more than the threshhold), it automatically launchs the CI/CD process.

    + \ No newline at end of file diff --git a/build/core/index.html b/build/core/index.html index 8c1668536..74fba83da 100644 --- a/build/core/index.html +++ b/build/core/index.html @@ -4,15 +4,15 @@ Core development | Archethic - +

    Core development

    Archethic Node repository can be found here

    Technology Stack

    Archethic Blockchain node used a combination of Elixir & C programming languages to achieve fast and reliable decentralized network.

    Why Elixir ?

    Elixir is a dynamic, functional language for building scalable and maintainable applications.

    It leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems.

    Elixir is successfully used in web development, embedded software, data ingestion, and multimedia processing, across a wide range of industries.

    When we are building P2P systems and Blockchain technologies we need to think about fault-tolerance, low-latency, concurrent/parallelism. Elixir matches all those requirements.

    Because all Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages, we can build fast -processing of data which result in a high TPS for a better scalability.

    The unavoidable truth about software running in production is that things will go wrong.

    Even more when we take network, file systems, and other third-party resources into account.

    Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work.

    This feature ensures in case of failure, the entire system will not be down, and the isolation provided by the processes and their restarting strategy helps us to achieve it.

    Functional programming promotes a coding style that helps developers write code that is short, concise, and maintainable.

    Out of the box, Erlang VM provides the capability to hot reload code, which is the best case scenario if we want to provide an on-chain governance without restarting nodes.

    Why C ?

    We need to interact with hardware components and C seems the best candidate, so we are using this language to communicate with TPM for instance.

    But also, for some intensive task which are really complex in computing, we rely on C to perform those processing.

    Structure

    Code base is divided into domains (contexts) for better single responsibility principle:

    core structure

    - +processing of data which result in a high TPS for a better scalability.

    The unavoidable truth about software running in production is that things will go wrong.

    Even more when we take network, file systems, and other third-party resources into account.

    Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work.

    This feature ensures in case of failure, the entire system will not be down, and the isolation provided by the processes and their restarting strategy helps us to achieve it.

    Functional programming promotes a coding style that helps developers write code that is short, concise, and maintainable.

    Out of the box, Erlang VM provides the capability to hot reload code, which is the best case scenario if we want to provide an on-chain governance without restarting nodes.

    Why C ?

    We need to interact with hardware components and C seems the best candidate, so we are using this language to communicate with TPM for instance.

    But also, for some intensive task which are really complex in computing, we rely on C to perform those processing.

    Structure

    Code base is divided into domains (contexts) for better single responsibility principle:

    core structure

    + \ No newline at end of file diff --git a/build/core/mining/index.html b/build/core/mining/index.html index b1ec94df9..0a365e27c 100644 --- a/build/core/mining/index.html +++ b/build/core/mining/index.html @@ -4,14 +4,14 @@ Mining | Archethic - +

    Mining

    Transaction validation (aka Mining) defines processes and validations algorithms.

    Once a transaction is under validation a given process is dedicated to this transaction. -Depending of the number of validation nodes several validation implementation are defined.

    Along with validation workflow and processes, this context defines high levels functions to get the validation nodes and to assert their election.

    Standalone validation workflow

    When there is not only a single validation nodes (during the network initialization), a process is spawn to manage the transaction validation as a Task to run it (fire-off)

    Distributed validation

    Worflow

    FSM

    When there are multiple validation nodes, a distributed workflow process is spawn as FSM to define the states and evolution of the ARCH consensus algorithm.

    This FSM process is ran by all the validation nodes.

    Therefore each validation maintains a Registry of all the pending transaction validation processes, to be able to redirect P2P messages to the right process.

    - +Depending of the number of validation nodes several validation implementation are defined.

    Along with validation workflow and processes, this context defines high levels functions to get the validation nodes and to assert their election.

    Standalone validation workflow

    When there is not only a single validation nodes (during the network initialization), a process is spawn to manage the transaction validation as a Task to run it (fire-off)

    Distributed validation

    Worflow

    FSM

    When there are multiple validation nodes, a distributed workflow process is spawn as FSM to define the states and evolution of the ARCH consensus algorithm.

    This FSM process is ran by all the validation nodes.

    Therefore each validation maintains a Registry of all the pending transaction validation processes, to be able to redirect P2P messages to the right process.

    + \ No newline at end of file diff --git a/build/core/mining/proof-of-work/index.html b/build/core/mining/proof-of-work/index.html index 2beaf44aa..ad1140016 100644 --- a/build/core/mining/proof-of-work/index.html +++ b/build/core/mining/proof-of-work/index.html @@ -4,14 +4,14 @@ Proof of Work algorithm | Archethic - +

    Proof of Work algorithm

    The Archethic's proof of work algorithm defines way to assert the validity of the origin signature.

    It defines two main components:

    • List of origin public key candidates
    • Lookup of the origin public key to verify the signature

    Origin public key candidates

    Origin public keys listed for a given transaction are known by the entire network and are shared between clients and nodes.

    However, a given transaction can specify - through smart-contract the origin family.

    By this way, the nodes are able to extract the list of origin public keys to assert with the signature.

    Lookup

    A simple algorithm is defined to scan the entire list of public keys candidates and verify the cryptographic origin signature.

    Once the public key is found, it becomes the Proof of Work. -If no public key is found, the proof of work is invalid and the transaction as well.

    info

    Telemetry timing is used for this algorithm to indicate how fast the algorithm is with a given number of public keys

    - +If no public key is found, the proof of work is invalid and the transaction as well.

    info

    Telemetry timing is used for this algorithm to indicate how fast the algorithm is with a given number of public keys

    + \ No newline at end of file diff --git a/build/core/mining/transaction-context/index.html b/build/core/mining/transaction-context/index.html index d82e1997c..45718e142 100644 --- a/build/core/mining/transaction-context/index.html +++ b/build/core/mining/transaction-context/index.html @@ -4,14 +4,14 @@ Transaction context retrieval | Archethic - +

    Transaction context retrieval

    When a transaction is under validation, after the pending transaction validation, the nodes are fetching the context of the transaction.

    Retrieval

    This retrieval include multiple queries to be able to perform an efficient validation:

    • Get the previous transaction
    • Get the unspent outputs
    • Get the P2P view of the storage nodes (chain and beacon)

    All of thoses queries happen concurrently making efficient the transaction validation.

    To be sure the data is fetched faster, an algorithm is provided to first target the closest nodes from the validation node but -also ensure the if node fails to respond, other nodes will take the relay.

    However, if for the P2P view query, some node doesn't respond in a timeframe, it will be considered as offline, and through aggregation during the replication tree creation, this node will not receive replication request

    Node distribution

    To be sure all the validation will get the best of this retrieval, an algorithm have been developed to ensure a fair distribution of the nodes invovled in those queries.

    The storage nodes for the previous chain are split into 2 group: previous transaction and unspent outputs

    This way a given node will get several responses ensuring the atomic commitment of the transaction.

    The algorithm defines the number of group to have and the number of nodes in each group.

    Also it balances the groups to be sure a group have the same number of node without duplication

    - +also ensure the if node fails to respond, other nodes will take the relay.

    However, if for the P2P view query, some node doesn't respond in a timeframe, it will be considered as offline, and through aggregation during the replication tree creation, this node will not receive replication request

    Node distribution

    To be sure all the validation will get the best of this retrieval, an algorithm have been developed to ensure a fair distribution of the nodes invovled in those queries.

    The storage nodes for the previous chain are split into 2 group: previous transaction and unspent outputs

    This way a given node will get several responses ensuring the atomic commitment of the transaction.

    The algorithm defines the number of group to have and the number of nodes in each group.

    Also it balances the groups to be sure a group have the same number of node without duplication

    + \ No newline at end of file diff --git a/build/core/mining/transaction-validation/index.html b/build/core/mining/transaction-validation/index.html index a8b33a567..1f812ff1e 100644 --- a/build/core/mining/transaction-validation/index.html +++ b/build/core/mining/transaction-validation/index.html @@ -4,7 +4,7 @@ Pending transaction validation | Archethic - + @@ -12,8 +12,8 @@

    Pending transaction validation

    When a transaction is under validation a process is started to perform the ARCH consensus workflow.

    At the beginning of this workflow, a prior validation is done to detect if the transaction is errornous according of several implementations based on the type of the transactions and other criterias.

    1. Check of the previous signature
    2. Check if there is smart contract, of its validity
    3. Check the content size does not exceed the threshold defined in the configuration
    4. Provide verification based on the transaction type

    Smart contract verification

    If a transaction contains smart contract, it needs to verify certains things to be sure the smart contract is valid and the nodes will be able to interpret the contract, for example:

    • Parse the contract and determines its validity
    • If an ownership and its secret have been encoded for the node shared storage nonce public key, so they will be able create new transaction on the chain

    Transaction type verification

    Node transaction verification

    Before to join the network, node must submit a transaction with a type "node". The following checks are performed:

    • Decoding of the transaction's content
    • Assert the origin key is authorized along with the certification. (See Hardware Root of Trust)
    • Check if there are not already existing nodes with the same ip, port and public key

    Node shared secrets transaction verification

    Periodically the nodes submit a renewal of node shared secrets through a transaction. The following checks are performed:

    • Decoding of the transactio's content
    • Check is the new authorized node proposed are available

    Token transaction verification

    To create a new asset (Token), a transaction with a type "token" is submitted to the network.

    The nodes asserts the content of the Token transactions respects the formatting to be able for the node to interpret it and mint tokens.

    Oracle transaction verification

    When the OracleChain polled some external data and build a transaction to propose the new changes, the nodes will assert the content from the services data are correct regarding the service SLA. (See OracleChain Service)

    OracleSummary transaction verification

    Periodically, after a cycle/epoch, the nodes submit a transaction which summarizes the entire oracle chain data for this epoch. -Then the nodes have to assert the changes through:

    • Fetching the entire oracle chain for this epoch
    • Assert the aggregated content in the oracle chain summary matches the data from all the transaction in the oracle chain

    Code proposal transaction verification

    When a new upgrade of the network is proposed, a transaction embeds the changes and is sent to the network. (See: On-Chain Governance

    The following checks are performed:

    • Decoding the proposal changes (like Git patch)
    • Assert the validity of the changes: format, conformity with the latest Git commit

    Code approval transaction verification

    When an updated have been proposed, technical commitee member can vote for a proposal, then a transaction is sent. (See: On-Chain Governance)

    The following checks are performed:

    • Check if the approver is a member of the technical commitee,
    • Check if the proposal exists
    • Check if the proposal hasn't been signed by the approver earlier
    - +Then the nodes have to assert the changes through:

    • Fetching the entire oracle chain for this epoch
    • Assert the aggregated content in the oracle chain summary matches the data from all the transaction in the oracle chain

    Code proposal transaction verification

    When a new upgrade of the network is proposed, a transaction embeds the changes and is sent to the network. (See: On-Chain Governance

    The following checks are performed:

    • Decoding the proposal changes (like Git patch)
    • Assert the validity of the changes: format, conformity with the latest Git commit

    Code approval transaction verification

    When an updated have been proposed, technical commitee member can vote for a proposal, then a transaction is sent. (See: On-Chain Governance)

    The following checks are performed:

    • Check if the approver is a member of the technical commitee,
    • Check if the proposal exists
    • Check if the proposal hasn't been signed by the approver earlier
    + \ No newline at end of file diff --git a/build/core/oracle-chain/index.html b/build/core/oracle-chain/index.html index ee629f7f8..9b6fb9e92 100644 --- a/build/core/oracle-chain/index.html +++ b/build/core/oracle-chain/index.html @@ -4,13 +4,13 @@ OracleChain | Archethic - +
    -

    OracleChain

    OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.

    It's built around three main components:

    - +

    OracleChain

    OracleChain is an internal mechanism inside Archethic Node Software making external data fetching embedded into a transaction chain.

    It's built around three main components:

    + \ No newline at end of file diff --git a/build/core/oracle-chain/memory-table/index.html b/build/core/oracle-chain/memory-table/index.html index ebe25f48b..34511bd21 100644 --- a/build/core/oracle-chain/memory-table/index.html +++ b/build/core/oracle-chain/memory-table/index.html @@ -4,13 +4,13 @@ OracleChain Memory Tables | Archethic - +
    -

    OracleChain Memory Tables

    OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.

    But we need a way to access quickly this information for better computation latency.

    For this purpose, the OracleChain service maintains a memory table using ETS to hold the information according to their date.

    It represented in that way:

    TimestampServiceData

    For example for the UCO service we may have:

    TimestampServiceData
    1622801400UCO%{ "eur" => 0.02 }

    The table is loading after each oracle or oracle summary transaction and during the bootstrap for faster computation.

    info

    The transaction's fee algorithm is using this cached information to provide this computation quickly

    - +

    OracleChain Memory Tables

    OracleChain component provides scheduler and services to maintain transaction chain and real world data integration.

    But we need a way to access quickly this information for better computation latency.

    For this purpose, the OracleChain service maintains a memory table using ETS to hold the information according to their date.

    It represented in that way:

    TimestampServiceData

    For example for the UCO service we may have:

    TimestampServiceData
    1622801400UCO%{ "eur" => 0.02 }

    The table is loading after each oracle or oracle summary transaction and during the bootstrap for faster computation.

    info

    The transaction's fee algorithm is using this cached information to provide this computation quickly

    + \ No newline at end of file diff --git a/build/core/oracle-chain/scheduler/index.html b/build/core/oracle-chain/scheduler/index.html index 863b1792b..d289ccb78 100644 --- a/build/core/oracle-chain/scheduler/index.html +++ b/build/core/oracle-chain/scheduler/index.html @@ -4,14 +4,14 @@ OracleChain Scheduler | Archethic - +

    OracleChain Scheduler

    The OracleChain module contains a process in charge of scheduling the data fetching and transaction submitting.

    It's modeled as finite state machine.

    Three main state are represented:

    • IDLE: When the process is waiting a new tick to be triggered based on some interval
    • Polling: When the process must fetch data from external sources
    • Summary: When the process must aggregate the entire polling transactions for a given interval
    info

    Mainnet and Testnet can have different values based on environment variables.

    This is due to simulate quicker events and summary.

    For example,

    • on Mainnet: each polling is triggered each minute and the summary each day at 00:00 UTC.
    • on Testnet: each polling is triggered each 10s and the summary each minute. -:::

    For each actionable state, the process determines if the current running node is in charge to fetch or emit the transaction, based on the election algorithm.

    Also to avoid any useless transactions, the process identifies if a new transaction must be emitted regarding the freshness of the information retrieved from the Oracle services.

    You can find below a schema representing this finite state machine and its related events.

    :::note

    - +:::

    For each actionable state, the process determines if the current running node is in charge to fetch or emit the transaction, based on the election algorithm.

    Also to avoid any useless transactions, the process identifies if a new transaction must be emitted regarding the freshness of the information retrieved from the Oracle services.

    You can find below a schema representing this finite state machine and its related events.

    :::note

    + \ No newline at end of file diff --git a/build/core/oracle-chain/service/index.html b/build/core/oracle-chain/service/index.html index c20799547..d97bef1fb 100644 --- a/build/core/oracle-chain/service/index.html +++ b/build/core/oracle-chain/service/index.html @@ -4,14 +4,14 @@ Oracle Chain Service | Archethic - +

    Oracle Chain Service

    OracleChain provides a way to extend it and to add more services to the scheduler.

    Behavior

    The behavior defines functions to extend to support new services

    • Fetch: This will perform the data fetching and will return a map of the data to be serialized by the transaction
    • Verify: This will let validation nodes asserts the information provided in the new oracle transaction
    • Parse data: This will parse the incoming data from the oracle transaction and checks its validatity

    Example

    UCO service behavior is implemented in such way:

    • Fetch: it request Coingecko to fetch the USD/EUR pair of the Archethic token
    • Verify: fetch Coingecko again to gather the token price and compare price using a standard deviation function with a threshold of 0.01
    • Parse data: Ensure the data is map with the USD/EUR pair and an amount encoded as float

    Configuration

    Along with the definition of the new service, we need to inform how to add this service to the scheduler. -For this we need to add the service in the configuration (config.exs)

    config :archethic, Archethic.OracleChain,
    services: [
    uco: Archethic.OracleChain.Services.UCOPrice,
    mynewservice: Archethic.OracleChain.Service.MyNewService # Added line
    ]
    - +For this we need to add the service in the configuration (config.exs)

    config :archethic, Archethic.OracleChain,
    services: [
    uco: Archethic.OracleChain.Services.UCOPrice,
    mynewservice: Archethic.OracleChain.Service.MyNewService # Added line
    ]
    + \ No newline at end of file diff --git a/build/core/p2p/index.html b/build/core/p2p/index.html index c60103ce7..eade7687f 100644 --- a/build/core/p2p/index.html +++ b/build/core/p2p/index.html @@ -4,13 +4,13 @@ P2P | Archethic - + - + + \ No newline at end of file diff --git a/build/core/p2p/messaging/index.html b/build/core/p2p/messaging/index.html index 147aa024f..db0b34643 100644 --- a/build/core/p2p/messaging/index.html +++ b/build/core/p2p/messaging/index.html @@ -4,14 +4,14 @@ Messaging | Archethic - +

    Messaging

    Archethic Blockchain is used a brand new P2P layer from the Supervised Multicast, but to ensure the best data transmission possible, we are using two modern approaches: Stream Multiplexer and Binary Protocol.

    Those two features helps to achieve a low latency P2P messaging.

    Stream Multiplexer

    Stream Multiplexing allows multiple independent logical streams to share a common underlying transport stream and
    -there are many independent streams of communication between peers.

    Stream Multiplexing amortizes the overhead of establishing a transport connection and helps to distinguish which messages to handle in a concurrent way.

    |---------|                           |---------|
    | Service | | Service |
    |---------| |---------|
    | Msg ID: 2 |------------| |
    |--------------| Connection |---------| Msg ID: 1
    | TCP |
    |--------------|------------|---------|
    | Msg ID: 1 | Msg ID: 2
    |---------| |---------|
    | Service | | Service |
    |---------| |---------|

    In the current implementation, each node connection is backed by a GenServer which serializes the call the remote endpoint, through an established connection.

    Even if the calls are serialized, it leverages a non-blocking messaging, so multiple messages can be sent with several independant clients. However after a certain amount of time(timeout: 5s), the message is dropped to reduce the message queue.

    Binary Protocol

    Network latency is very important to reach an unlimited and really scalable network and using binary protocol helps to reduce bandwidth.

    Different kind of solutions existing for binary protocol: Protobuf, Avro, Thrift, MsgPack, etc.

    However, to support a custom and efficient binary serialization, Archethic uses it own binary protocol through the transport layer to reduce and to optimize by the message, the data to send.

    This aspect is important, when we are dealing with bits, to reduce byte size.

    For example, if we want to serialize this bitstring: 11100000

    • With existing solutions, we may end up with a list of 8 bytes
    • With a custom solution, we serialize it with only 1 byte

    Message envelop

    To support privacy and security, each message is wrapped in a MessageEnvelop struct within:

    • Message ID: used in the stream multiplexing
    • Message to send
    • Sender public key: used to determine the liveness of the node from the recipient P2P view

    The envelop is then encrypted with the recipient public key (known by the network) using ECIES cryptography protocol.

    - +there are many independent streams of communication between peers.

    Stream Multiplexing amortizes the overhead of establishing a transport connection and helps to distinguish which messages to handle in a concurrent way.

    |---------|                           |---------|
    | Service | | Service |
    |---------| |---------|
    | Msg ID: 2 |------------| |
    |--------------| Connection |---------| Msg ID: 1
    | TCP |
    |--------------|------------|---------|
    | Msg ID: 1 | Msg ID: 2
    |---------| |---------|
    | Service | | Service |
    |---------| |---------|

    In the current implementation, each node connection is backed by a GenServer which serializes the call the remote endpoint, through an established connection.

    Even if the calls are serialized, it leverages a non-blocking messaging, so multiple messages can be sent with several independant clients. However after a certain amount of time(timeout: 5s), the message is dropped to reduce the message queue.

    Binary Protocol

    Network latency is very important to reach an unlimited and really scalable network and using binary protocol helps to reduce bandwidth.

    Different kind of solutions existing for binary protocol: Protobuf, Avro, Thrift, MsgPack, etc.

    However, to support a custom and efficient binary serialization, Archethic uses it own binary protocol through the transport layer to reduce and to optimize by the message, the data to send.

    This aspect is important, when we are dealing with bits, to reduce byte size.

    For example, if we want to serialize this bitstring: 11100000

    • With existing solutions, we may end up with a list of 8 bytes
    • With a custom solution, we serialize it with only 1 byte

    Message envelop

    To support privacy and security, each message is wrapped in a MessageEnvelop struct within:

    • Message ID: used in the stream multiplexing
    • Message to send
    • Sender public key: used to determine the liveness of the node from the recipient P2P view

    The envelop is then encrypted with the recipient public key (known by the network) using ECIES cryptography protocol.

    + \ No newline at end of file diff --git a/build/core/p2p/node/index.html b/build/core/p2p/node/index.html index f361ad727..b40cd317a 100644 --- a/build/core/p2p/node/index.html +++ b/build/core/p2p/node/index.html @@ -4,14 +4,14 @@ Node | Archethic - +

    Node

    Data structure

    Archethic is using a structured and open P2P network based on some properties:

    A node include a list P2P information such as:

    • IP
    • P2P Port
    • HTTP Port (Web layer - Explorer)
    • P2P Protocol (i.e TCP)
    • First public key
    • Last public key
    • GeoPatch (for geographical distribution based on the GeoIP of the IP)
    • NetworkPatch (for P2P responsiveness based on the latency to reach it)
    • Reward address (the address where the mining rewards should be sent)
    • Global availability (from BeaconChain qualification)
    • Local availability (from Supervised Multicast)
    • Average availability (from BeaconChain qualification)
    • Authorized
    • Authorization Date

    P2P tables view

    The application is stored a P2P view in memory table using ETS (Erlang Term Storage) to support fast query to fetch node information.

    When network transaction(node, node shared secrets) are loaded inside the system, MemTableLoader module is called to populate the tables. This is also true during the bootstrap of the node to fill up the data as cache.

    Discovery table

    first public keylast public keyIPP2P portHTTP portgeo patchnetwork patchaverage availabilityavailability historyenrollment datetransportreward ddress

    This table contains all the P2P information for a given node index by its first public key

    Availability lookup table

    first public key

    This table indicates the node availability, if its first public key is present in the table. -The purpose of this short table is to provide a really fast access to determine the availability.

    Authorized nodes table

    first public keyauthorization date

    All the node public keys presents in this table will be considered at authorized nodes along with their authorization date.

    So in order to determine if a node is authorized a fast lookup can be performed.

    In the same order, to get the list of authorized nodes by folding this table which can then lookup data from the discovery table to fetch all the information regarding the authorized node.

    Nodes key lookup table

    last public keyfirst public key

    This is a reverse ordered table where we can have access to the first node public key from its last public key, without traversing the entire discovery table

    - +The purpose of this short table is to provide a really fast access to determine the availability.

    Authorized nodes table

    first public keyauthorization date

    All the node public keys presents in this table will be considered at authorized nodes along with their authorization date.

    So in order to determine if a node is authorized a fast lookup can be performed.

    In the same order, to get the list of authorized nodes by folding this table which can then lookup data from the discovery table to fetch all the information regarding the authorized node.

    Nodes key lookup table

    last public keyfirst public key

    This is a reverse ordered table where we can have access to the first node public key from its last public key, without traversing the entire discovery table

    + \ No newline at end of file diff --git a/build/sdk/dart/index.html b/build/sdk/dart/index.html index ff599ff75..f13d10bc8 100644 --- a/build/sdk/dart/index.html +++ b/build/sdk/dart/index.html @@ -4,14 +4,14 @@ Dart SDK | Archethic - +

    Dart SDK

    Archethic Blockchain Official Dart SDK available on Github -Dart Packages published on Pub.dev

    This SDK will help you to generate transaction on top of Archethic Blockchain.

    info

    This SDK is mainly used in the official Archethic Wallet using Flutter. Please have a look if you are interested.

    - +Dart Packages published on Pub.dev

    This SDK will help you to generate transaction on top of Archethic Blockchain.

    info

    This SDK is mainly used in the official Archethic Wallet using Flutter. Please have a look if you are interested.

    + \ No newline at end of file diff --git a/build/sdk/go/index.html b/build/sdk/go/index.html index 41965496d..63634407e 100644 --- a/build/sdk/go/index.html +++ b/build/sdk/go/index.html @@ -4,13 +4,13 @@ Go SDK | Archethic - +
    -

    Go SDK

    Archethic Blockchain Official Go SDK is available on Github


    This SDK will help you to generate transaction on top of Archethic Blockchain.

    - +

    Go SDK

    Archethic Blockchain Official Go SDK is available on Github


    This SDK will help you to generate transaction on top of Archethic Blockchain.

    + \ No newline at end of file diff --git a/build/sdk/index.html b/build/sdk/index.html index 571084253..8e6b3262d 100644 --- a/build/sdk/index.html +++ b/build/sdk/index.html @@ -4,13 +4,13 @@ SDK | Archethic - + - + + \ No newline at end of file diff --git a/build/sdk/js/index.html b/build/sdk/js/index.html index 763a825bf..fc07183e3 100644 --- a/build/sdk/js/index.html +++ b/build/sdk/js/index.html @@ -4,13 +4,13 @@ Javascript SDK | Archethic - +
    -

    Javascript SDK

    Archethic Blockchain Official Javascript SDK is available on Github


    This SDK will help you to generate transaction on top of Archethic Blockchain.

    info

    The AEWeb product is using this SDK to build transaction to deploy web hosting assets in the Archethic Blockchain. Please have a look

    - +

    Javascript SDK

    Archethic Blockchain Official Javascript SDK is available on Github


    This SDK will help you to generate transaction on top of Archethic Blockchain.

    info

    The AEWeb product is using this SDK to build transaction to deploy web hosting assets in the Archethic Blockchain. Please have a look

    + \ No newline at end of file diff --git a/build/smart-contracts/fees/index.html b/build/smart-contracts/fees/index.html index 0d1c01a23..f36238767 100644 --- a/build/smart-contracts/fees/index.html +++ b/build/smart-contracts/fees/index.html @@ -4,13 +4,13 @@ Smart Contracts - Fees | Archethic - + - + + \ No newline at end of file diff --git a/build/smart-contracts/index.html b/build/smart-contracts/index.html index c638eb027..40c9f465e 100644 --- a/build/smart-contracts/index.html +++ b/build/smart-contracts/index.html @@ -4,15 +4,15 @@ Smart Contracts | Archethic - +

    Smart Contracts

    Smart-contracts are in computing what robots are in real life: they perform actions according to events.

    Archethic Blockchain leverages next generation of smart contract to make the development of decentralized application easier to bring a mass adoption of the Blockchain technology.

    They introduce new features to this domain:

    • Completly autonomous and can be triggered from internal states (date, transactions) or real life (OracleChain updates).
    • Entirely modifiable: TransactionChains make update seamless
    • Interpreted: Code is interpreted and atomically verified by the miners
    • Without external reality: They are entirely based on the UTXO model and do not depend on the state of an internal database but only the transactions validated

    Archethic Smart Contract is defined by: triggers, conditions and actions

    • Triggers: events will automatically launch the execution of a contract.
    • Conditions: define the rules to accept new transactions (chain or UTXO)
    • Actions: operations to perform from a trigger's calls

    Autonomous

    Archethic smart contracts autonomous behavior is due to the capability to define different kind of triggers:

    • Datetime: when the current date matches this timestamp
    • Interval: when the current dates matches this cron interval scheduler
    • Transaction: when the contract receive a transaction in input (UTXO model)
    • Oracle: when the OracleChain pushed new data

    Transactions are then created on the behalf of the contract's owner which authorized nodes to use the chain's private key to generate transaction.

    info

    To restrict a misusage of the user's cryptographic keys, inherit conditions can be defined as a security guard by the contract's owner.

    However, in order to make contract development and improve readability, transparent inherit conditions are generated based on the action's code. This verification is done during the transaction validation and the ARCH consensus with atomic commitment and ensures the next transaction of the chain respects the inherit constraints either :

    • mentioned in the code by the contract's owner
    • derived by the action's code.

    This way, users can delegate the chain's private key to the nodes with the guarantee of a good usage of the chain's identity and signature capability.

    Modifiable:

    Archethic relies on TransactionChain which means that a smart contract can have its own transaction chain.

    Then, it is subject to the same properties of the transaction chain: any last transaction of a chain is considered as the reference.

    For example:

    We deployed a smart contract with the address @Contract1.

    Then we want to add a feature or to fix an issue, we resend a transaction on this chain, and we get the new address: @Contract2

    But clients which depends on the smart contract don't need to update their code or interaction, as each destination address is forwarded to the last one.

    So if we send a transaction to @Contract#, the code executed will be at @Contract2

    info

    Because we are not relying on internal state and database, and only with the UTXO, we don't need to provide migrations of data or funds, and neither implement cross shard synchronization

    Interpreted

    Archethic smart contracts are interpreted instead of compiled, here are the reasons:

    • Interpreted code is understandable by the human, and compiled code are only understandable by the computer.

    • Intepreted code makes the transparency and audit of smart contracts easier as we do need to provide the source of the contracts

    • Interpreted code makes verification and safety checks better, instead to execute a code in blindness, miners can step by step verify the instructions and avoid any security issues

    Stateless

    Archethic Smart Contracts does not depend on internal state or databases, only the UTXO is used as inputs and the source of truth relies on the transactions.

    For example, in an e-commerce smart contract, the smart-contract issued by a merchant will be able to define stocks, prices and interactions with its customers using a view which is continuously updated by the transactions validated to that same smart-contract.

    The contract doesn't hold a given state but allows it to be calculated. In the example above, can verify the proven status of orders through validated transactions.

    Hence, each state is irrefutable and unambiguous.

    However, if required, we could easily make a snapshot data during time to have faster reads for archived data, by creating a new transaction on the chain. -This operation would serialize the "state" of a contract and be able to be queried by applications.

    Be careful

    Any data processed within the contract which is not stored in the next transaction or send somewhere will be lost

    - +This operation would serialize the "state" of a contract and be able to be queried by applications.

    Be careful

    Any data processed within the contract which is not stored in the next transaction or send somewhere will be lost

    + \ No newline at end of file diff --git a/build/smart-contracts/language/actions/index.html b/build/smart-contracts/language/actions/index.html index 6b8f2676d..3ea43d46b 100644 --- a/build/smart-contracts/language/actions/index.html +++ b/build/smart-contracts/language/actions/index.html @@ -4,7 +4,7 @@ Smart Contracts - Actions block | Archethic - + @@ -13,8 +13,8 @@ Be careful not to rebind them inadvertedly. Do not use any of the reserved keywords as parameter.

    Argument VS Parameter

    A parameter is a variable in a function definition. It is a placeholder and hence does not have a concrete value. An argument is a value passed during function invocation. In a way, arguments fill in the place the parameters have held for them. Source: https://www.educative.io/answers/parameter-vs-argument

    actions trigger_by: transaction, on: vote(firstname, lastname) do
    full_name = String.to_lowercase("#{firstname} #{lastname}")
    ...
    end

    Generating the next transaction

    The main goal of the action block is to generate a new transaction in the smart contract chain. To do so, you can use the Contract module that allows to set the transaction field value.

    # Set uco ATH in content
    actions triggered_by: oracle do
    current_ath = String.to_number(contract.content)
    new_price = Json.path_extract(transaction.content, "$.uco.usd")

    if new_price > current_ath do
    Contract.set_content(new_price)
    end
    end
    info

    Note that there are 3 fields that are preset before executing the action code.

    • type: set to "contract" by default
    • code: set with the previous contract code
    • ownerships: set with the previous contract ownerships

    So you don't need to set the type, the code and the ownerships each time you generate a new transaction.

    Appendix 1: The transaction map

    • address is the transaction's address.
    • type is the transaction's type.
    • content is the transaction's content (it's a string that can contain anything, for example a smart contract state)
    • code is the transaction's code
    • timestamp is the transaction's validation timestamp
    • uco_movements is a map of UCO transfers grouped by resolved address of the transaction.
    ["00001ab...": 1, "00001bc...": 2]
    • token_movements is a map of list of token transfers grouped by resolved address of the transaction
    ["00001ab...":
    [
    [amount: 1, token_address: "0000ab12..." , token_id: 1],
    [amount: 1, token_address: "0000ab12..." , token_id: 4],
    ]
    ]
    • uco_transfers is a map of UCO transfers grouped by address of the transaction.
    ["00001ab...": 1, "00001bc...": 2]
    • token_transfers is a map of list of token transfers grouped by address of the transaction
    ["00001ab...":
    [
    [amount: 1, token_address: "0000ab12..." , token_id: 1],
    [amount: 1, token_address: "0000ab12..." , token_id: 4],
    ]
    ]
    Difference between transfers and movements

    The transfers and movements are almost the same thing. The difference is in the addresses. -The addresses of the transfers are "raw" whereas the addresses of the movements are "resolved".

    • raw address: address that was specified on a transfer (usually the genesis but not mandatory)
    • resolved address: address of the latest transaction of the chain (the chain that contains raw address)

    Here's an example to understand the difference:

    This is a UCO transfer to MyAmazingContract. The transfer is usually done on the genesis address (here: 0x00abc). But the transfer is actually creating an UTXO on the latest transaction of the chain (here: 0x00def).

    Thus contract.uco_transfers == [0x00abc: 1] and contract.uco_movements == [0x00def: 1].

    In most cases, you'll want to use movements instead of transfers.

    - +The addresses of the transfers are "raw" whereas the addresses of the movements are "resolved".

    • raw address: address that was specified on a transfer (usually the genesis but not mandatory)
    • resolved address: address of the latest transaction of the chain (the chain that contains raw address)

    Here's an example to understand the difference:

    This is a UCO transfer to MyAmazingContract. The transfer is usually done on the genesis address (here: 0x00abc). But the transfer is actually creating an UTXO on the latest transaction of the chain (here: 0x00def).

    Thus contract.uco_transfers == [0x00abc: 1] and contract.uco_movements == [0x00def: 1].

    In most cases, you'll want to use movements instead of transfers.

    + \ No newline at end of file diff --git a/build/smart-contracts/language/condition/index.html b/build/smart-contracts/language/condition/index.html index 86fb5a832..acf7bfbf6 100644 --- a/build/smart-contracts/language/condition/index.html +++ b/build/smart-contracts/language/condition/index.html @@ -4,13 +4,13 @@ Smart Contracts - Condition block | Archethic - +
    -

    Smart Contracts - Condition block

    Conditions are blocks which purpose is to check the validity of a transaction.

    There are 3 types of condition block:

    The condition blocks are not code block, they are maps of what we call "boolean expressions".

    In this map, the keys are the transaction property, and the values are expressions that must return a boolean or a value.

    Conditions transaction and oracle are mandatory if the associated trigger is used. Condition inherit is optional.

    Pseudo-code:

    condition triggered_by: <type>, as: [
    <prop1>: <value>,
    <prop2>: <boolean>,
    <prop3>: <expr that returns a value>,
    <prop4>: <expr that returns a boolean>
    ]

    # note the syntax is a bit different for the inherit
    condition inherit: [
    <prop1>: <value>,
    <prop2>: <boolean>,
    <prop3>: <expr that returns a value>,
    <prop4>: <expr that returns a boolean>
    ]
    • type is either transaction or oracle.
    • prop is a property of the transaction or origin_family. See Action's Appendix 1 for the available properties.
    • expr is a code expression.
    tip

    If you wish use a complex expression for condition property. You can use multi-lines block enclosed by parenthesis

    condition transaction: [
    content: (
    # Complex logic
    # ...
    )
    ]

    Example:

    condition inherit: [
    # <value>
    type: "contract",

    # <boolean>
    content: true,

    # <expr that returns a value>
    code:
    if Time.now() > 1677572714 do
    "condition inherit: []"
    else
    previous.code
    end,

    # <expr that returns a boolean>
    uco_transfers: Map.size() > 0
    ]

    Rules

    1. All "boolean expressions" must pass for the transaction to be valid.
    2. If the expression returns true, this "boolean expression" passes.
    3. If the expression returns false, this "boolean expression" fails.
    4. If the expression returns a value, this "boolean expression" passes if the transaction's property has the same value.
    info

    In these blocks, there is also some sugar to automatically add the property as an argument of the functions called. For example uco_transfers: Map.size() > 0 will automatically expand to uco_transfers: Map.size(transaction.uco_transfers) > 0.

    Condition inherit

    The condition inherit purpose is to check the next transaction generated by the smart contract after its code execution. It ensures the next transaction respects specific rules so the smart contract chain cannot be compromised.

    condition inherit: [...]
    caution

    If the map is empty [], it means the transaction chain is closed: no transaction will be accepted anymore.

    There are 2 global variables for this condition block:

    1. previous is the transaction of the current contract.
    2. next is the "next transaction".

    See Action's Appendix 1 for the details of the transaction map.

    caution

    A specific rule is applied for inherit condition, if a field is not specified in the conditions, it assumes that it must have the same value as the previous transaction. ie. code: previous.code == next.code

    Examples

    Pass only if it is executed before a timestamp:

    condition inherit: [
    timestamp: next.timestamp < 1677598185
    ]

    Pass only if the transaction is type "transfer", without any uco_transfers and at least one token_transfers:

    condition inherit: [
    type: "transfer",
    uco_transfers: Map.size() == 0,
    token_transfers: Map.size() > 0
    ]

    Pass only if chain has been closed (the code part) and there is a 2 UCO transfer to an address depending on the time:

    condition inherit: [
    code: "condition inherit: []",
    uco_transfers:
    if Time.now() >= 1674564088 do
    ["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98": 2]
    else
    ["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd": 2]
    end
    ]

    Pass only if the key "index" of the content is greater than the previous one:

    # Note that we have to embed a block code inside parenthesis as we create complex code 
    # like create/assign variables with multilines conditions statements
    condition inherit: [
    content: (
    json_path = "$.index"
    if Json.path_match?(next.content, json_path) do
    previous_index = Json.path_extract(previous.content, json_path)
    new_index = Json.path_extract(next.content, json_path)

    new_index > previous_index
    else
    false
    end
    )
    ]

    Condition transaction

    The condition transaction purpose is to check the transaction that triggered the contract (a transaction with the contract address in the recipients).

    condition triggered_by: transaction, as: [...]
    caution

    If the map is empty [], it means any transaction can trigger the contract.

    There are 2 global variables for this condition block:

    1. contract is the transaction of the current contract.
    2. transaction is the transaction that triggered the contract.

    See Action's Appendix 1 for the details of the transaction map.

    Examples

    Pass only if the transaction that triggered the contract comes from a specific chain (a chain can be identified by it's genesis address):

    condition triggered_by: transaction, as: [
    address: Chain.get_genesis_address() == 0x00001234ab
    ]

    Pass only if the transaction that triggered sent 10 UCOs to this contract:

    condition triggered_by: transaction, as: [
    uco_transfers: Map.get(contract.address) == 10
    ]

    Pass only if the candidate is in the list:

    condition triggered_by: transaction, on: vote(candidate), as: [
    content: List.in?(["Peter", "Sofia", "Claire"], candidate)
    ]
    Did you notice?

    We wrote the expression in the content and we did not use this field. We'll soon introduce a new syntax to avoid this "hack".

    Condition oracle

    The condition oracle purpose is to check the oracle transaction that triggered the contract.

    condition triggered_by: oracle, as: [...]
    caution

    If the map is empty [], it means any transaction can trigger the contract.

    There are 2 global variables for this condition block:

    1. contract is the transaction of the current contract.
    2. transaction is the oracle transaction that triggered the contract.

    See Action's Appendix 1 for the details of the transaction map.

    Examples

    Pass only if the transaction's content is a JSON string including the UCO price in USD.

    condition triggered_by: oracle, as: [
    content: Json.path_match?(transaction.content, "$.uco.usd")
    ]

    Legacy syntax

    Deprecated

    The syntax still works, but we'd like everyone to use the new syntax.

    The condition oracle & transaction used to have the same syntax as inherit.

    condition transaction: [...]
    condition oracle: [...]
    - +

    Smart Contracts - Condition block

    Conditions are blocks which purpose is to check the validity of a transaction.

    There are 3 types of condition block:

    The condition blocks are not code block, they are maps of what we call "boolean expressions".

    In this map, the keys are the transaction property, and the values are expressions that must return a boolean or a value.

    Conditions transaction and oracle are mandatory if the associated trigger is used. Condition inherit is optional.

    Pseudo-code:

    condition triggered_by: <type>, as: [
    <prop1>: <value>,
    <prop2>: <boolean>,
    <prop3>: <expr that returns a value>,
    <prop4>: <expr that returns a boolean>
    ]

    # note the syntax is a bit different for the inherit
    condition inherit: [
    <prop1>: <value>,
    <prop2>: <boolean>,
    <prop3>: <expr that returns a value>,
    <prop4>: <expr that returns a boolean>
    ]
    • type is either transaction or oracle.
    • prop is a property of the transaction or origin_family. See Action's Appendix 1 for the available properties.
    • expr is a code expression.
    tip

    If you wish use a complex expression for condition property. You can use multi-lines block enclosed by parenthesis

    condition transaction: [
    content: (
    # Complex logic
    # ...
    )
    ]

    Example:

    condition inherit: [
    # <value>
    type: "contract",

    # <boolean>
    content: true,

    # <expr that returns a value>
    code:
    if Time.now() > 1677572714 do
    "condition inherit: []"
    else
    previous.code
    end,

    # <expr that returns a boolean>
    uco_transfers: Map.size() > 0
    ]

    Rules

    1. All "boolean expressions" must pass for the transaction to be valid.
    2. If the expression returns true, this "boolean expression" passes.
    3. If the expression returns false, this "boolean expression" fails.
    4. If the expression returns a value, this "boolean expression" passes if the transaction's property has the same value.
    info

    In these blocks, there is also some sugar to automatically add the property as an argument of the functions called. For example uco_transfers: Map.size() > 0 will automatically expand to uco_transfers: Map.size(transaction.uco_transfers) > 0.

    Condition inherit

    The condition inherit purpose is to check the next transaction generated by the smart contract after its code execution. It ensures the next transaction respects specific rules so the smart contract chain cannot be compromised.

    condition inherit: [...]
    caution

    If the map is empty [], it means the transaction chain is closed: no transaction will be accepted anymore.

    There are 2 global variables for this condition block:

    1. previous is the transaction of the current contract.
    2. next is the "next transaction".

    See Action's Appendix 1 for the details of the transaction map.

    caution

    A specific rule is applied for inherit condition, if a field is not specified in the conditions, it assumes that it must have the same value as the previous transaction. ie. code: previous.code == next.code

    Examples

    Pass only if it is executed before a timestamp:

    condition inherit: [
    timestamp: next.timestamp < 1677598185
    ]

    Pass only if the transaction is type "transfer", without any uco_transfers and at least one token_transfers:

    condition inherit: [
    type: "transfer",
    uco_transfers: Map.size() == 0,
    token_transfers: Map.size() > 0
    ]

    Pass only if chain has been closed (the code part) and there is a 2 UCO transfer to an address depending on the time:

    condition inherit: [
    code: "condition inherit: []",
    uco_transfers:
    if Time.now() >= 1674564088 do
    ["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98": 2]
    else
    ["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd": 2]
    end
    ]

    Pass only if the key "index" of the content is greater than the previous one:

    # Note that we have to embed a block code inside parenthesis as we create complex code 
    # like create/assign variables with multilines conditions statements
    condition inherit: [
    content: (
    json_path = "$.index"
    if Json.path_match?(next.content, json_path) do
    previous_index = Json.path_extract(previous.content, json_path)
    new_index = Json.path_extract(next.content, json_path)

    new_index > previous_index
    else
    false
    end
    )
    ]

    Condition transaction

    The condition transaction purpose is to check the transaction that triggered the contract (a transaction with the contract address in the recipients).

    condition triggered_by: transaction, as: [...]
    caution

    If the map is empty [], it means any transaction can trigger the contract.

    There are 2 global variables for this condition block:

    1. contract is the transaction of the current contract.
    2. transaction is the transaction that triggered the contract.

    See Action's Appendix 1 for the details of the transaction map.

    Examples

    Pass only if the transaction that triggered the contract comes from a specific chain (a chain can be identified by it's genesis address):

    condition triggered_by: transaction, as: [
    address: Chain.get_genesis_address() == 0x00001234ab
    ]

    Pass only if the transaction that triggered sent 10 UCOs to this contract:

    condition triggered_by: transaction, as: [
    uco_transfers: Map.get(contract.address) == 10
    ]

    Pass only if the candidate is in the list:

    condition triggered_by: transaction, on: vote(candidate), as: [
    content: List.in?(["Peter", "Sofia", "Claire"], candidate)
    ]
    Did you notice?

    We wrote the expression in the content and we did not use this field. We'll soon introduce a new syntax to avoid this "hack".

    Condition oracle

    The condition oracle purpose is to check the oracle transaction that triggered the contract.

    condition triggered_by: oracle, as: [...]
    caution

    If the map is empty [], it means any transaction can trigger the contract.

    There are 2 global variables for this condition block:

    1. contract is the transaction of the current contract.
    2. transaction is the oracle transaction that triggered the contract.

    See Action's Appendix 1 for the details of the transaction map.

    Examples

    Pass only if the transaction's content is a JSON string including the UCO price in USD.

    condition triggered_by: oracle, as: [
    content: Json.path_match?(transaction.content, "$.uco.usd")
    ]

    Legacy syntax

    Deprecated

    The syntax still works, but we'd like everyone to use the new syntax.

    The condition oracle & transaction used to have the same syntax as inherit.

    condition transaction: [...]
    condition oracle: [...]
    + \ No newline at end of file diff --git a/build/smart-contracts/language/examples/index.html b/build/smart-contracts/language/examples/index.html index d906fc21a..2124ff5da 100644 --- a/build/smart-contracts/language/examples/index.html +++ b/build/smart-contracts/language/examples/index.html @@ -4,7 +4,7 @@ Smart Contracts - Examples | Archethic - + @@ -12,8 +12,8 @@

    Smart Contracts - Examples

    Hello World

    This simple contract will be triggered once, at the specified unix timestamp. It will create a new transaction with a content "Hello world!".

    @version 1

    actions triggered_by: datetime, at: 1689857160 do
    Contract.set_content("Hello world!")
    end

    ICO (Initial Coin Offering)

    This contract the crowdsale of an ICO.

    Users can send UCOs to this contract and will receive 10000 times the amount as token from this contract.

    It is possible for users to define a different receive address.

    The Smart Contract's chain must define a token.

    @version 1

    condition triggered_by: transaction, on: buyToken(recipient_address), as: [
    uco_transfers: check_amount(transaction.uco_movements)
    ]

    actions triggered_by: transaction, on: buyToken(recipient_address) do
    transfers = get_transfered_amount()

    # Get the amount of UCO sent to this contract
    amount_send = number_of_uco_sent()

    # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token
    token_to_credit = number_of_tokens(amount_send)

    Contract.set_type("transfer")

    # Users can specify to send the token in a different address
    Contract.add_token_transfer(to: recipient_address, token_address: token_address(), amount: token_to_credit)
    end

    fun number_of_tokens(uco_amount) do
    uco_amount * 10000
    end

    fun number_of_uco_sent() do
    Map.get(transaction.uco_movements, contract.address)
    end

    fun get_transfered_amount() do
    Map.get(transaction.uco_transfers, contract.address)
    end

    fun check_amount(transfers) do
    transfered_amount = Map.get(transfers, contract.address)
    transfered_amount != nil && transfered_amount > 0
    end

    fun token_address() do
    Chain.get_genesis_address(contract.address)
    end

    Recurring ICO

    This contract will automatically call the ICO contract with 2 UCOs every hours. The tokens will be transfered in a different chain.

    @version 1

    actions triggered_by: interval, at: "0 * * * *" do

    ico_contract = 0x0000993F3BE0CE40541E47735AA083854ECAC7785B39435C90D8456C777B9E9D81F1

    Contract.set_type("transfer")
    Contract.add_recipient address: ico_contract, action: "buyTokens", args: [0x0000A3A066DD64FBD51AE384F2383684B3803BC72012BFEAA9CD1C93AB7C60F584DC]
    Contract.add_uco_transfer(amount: 2, to: ico_contract)
    end

    Vote system

    This contract counts the number of votes for list of candidates (Mr.X and Mrs.Y).

    For each vote request, it increments the number of votes for the given candidate, -and create a new transaction out of it, with the new state in the content field of the transaction as JSON document.

    info

    A public function is available to be able to easily query the number of votes in the system

    @version 1
    condition triggered_by: transaction, on: vote(candidate), as: [
    content: List.in?(["X", "Y"], candidate)
    ]

    actions triggered_by: transaction, on: vote(candidate) do
    votes = []

    if contract.content == "" do
    votes = add_vote([x: 0, y: 0], candidate)
    else
    votes = get_votes()
    votes = add_vote(votes, candidate)
    end

    Contract.set_content(Json.to_string(votes))
    end

    fun add_vote(votes, candidate) do
    if candidate == "X" do
    Map.set(votes, "x", votes.x + 1)
    else
    Map.set(votes, "y", votes.y + 1)
    end
    end

    export fun get_votes() do
    count_x = Json.path_extract(contract.content, "$.x")
    count_y = Json.path_extract(contract.content, "$.y")
    [x: count_x, y: count_y]
    end
    - +and create a new transaction out of it, with the new state in the content field of the transaction as JSON document.

    info

    A public function is available to be able to easily query the number of votes in the system

    @version 1
    condition triggered_by: transaction, on: vote(candidate), as: [
    content: List.in?(["X", "Y"], candidate)
    ]

    actions triggered_by: transaction, on: vote(candidate) do
    votes = []

    if contract.content == "" do
    votes = add_vote([x: 0, y: 0], candidate)
    else
    votes = get_votes()
    votes = add_vote(votes, candidate)
    end

    Contract.set_content(Json.to_string(votes))
    end

    fun add_vote(votes, candidate) do
    if candidate == "X" do
    Map.set(votes, "x", votes.x + 1)
    else
    Map.set(votes, "y", votes.y + 1)
    end
    end

    export fun get_votes() do
    count_x = Json.path_extract(contract.content, "$.x")
    count_y = Json.path_extract(contract.content, "$.y")
    [x: count_x, y: count_y]
    end
    + \ No newline at end of file diff --git a/build/smart-contracts/language/index.html b/build/smart-contracts/language/index.html index 84480e86e..c998cf9a1 100644 --- a/build/smart-contracts/language/index.html +++ b/build/smart-contracts/language/index.html @@ -4,7 +4,7 @@ Smart Contracts - Language | Archethic - + @@ -13,8 +13,8 @@ The only thing to keep in mind is that we truncate at decimal 8.

    Ranges

    • 1..5 is equivalent to [1,2,3,4,5]

    Loop

    • for name in names do ... end
    • for i in 1..10 do ... end

    Variables & Scopes

    Variables are not typed, you can assign any value to them.

    Variables are mutable, if you update a variable declared in a parent scope, it will also update the value of this variable for the parent scope.

    A new scope is created every time you enter a new block (do .. end). A scope can access (read/write) the variables declared in its parent's scope, but not its child's scope.

    names = ["Tom", "Jerry", ""]
    text = ""
    for name in names do # ENTER SCOPE 1
    if name != "" do # ENTER SCOPE 1.1
    new_line = "\n"
    text = "#{name}#{new_line}"
    end # EXIT SCOPE 1.1
    # new_line does not exists here
    end # EXIT SCOPE 1
    # test = "Tom\nJerry\n"
    # name and new_line does not exists here

    Here's the tree of scopes and variables for the above example:

    [SCOPE 0]
    ├── names
    ├── text
    └── [SCOPE 1]
    ├── name
    └── [SCOPE 1.1]
    └── new_line

    Lists

    The list is the data structure to work with collections. The syntax is: [1, 2]. An empty list is: []. There is a List module in the library to manipulate lists.

    info

    Lists are actually Linked Lists.

    Maps

    The map is the key-value data structure in the Smart Contract language. The syntax is: [key1: 1, key2: 2] or if key starts with a number: ["00001abc...": 1]. The keys must be strings. There is 3 ways to retrieve a value:

    • map.property
    • map["property"]
    • Map.get(map, "property")

    We suggest to use the 1st syntax as often as possible. Use the 2nd or 3rd when dealing with dynamic properties.

    There is a Map module module in the library to manipulate maps.

    note

    Since the maps and the lists have a very close syntax, it is impossible to differentiate an empty map from an empty list. So, for semantic reasons, to create an empty map, use the Map.new() function call.

    tip

    The brackets are mostly optional! key1: 1, key2: 2 will work as well. But if you have a nested map, you cannot omit them!

    Functions

    In the Archethic Smart Contract Language, you can declare 2 types of functions:

    • Internal Functions declared with the fun keyword
    • Exported Functions declared with the export fun keyword

    Internal Functions

    Internal functions are functions that are only available in the Smart Contract. They are not callable from the outside.

    They are declared with the fun keyword and can be called from the Action or Condition blocks.

    They can have 0 argument:

    fun hello() do
    "Hello World!"
    end

    Or more:

    fun sum(a, b) do
    a + b
    end

    You can also have the same function name with different signature:

    fun sum(a, b) do
    a + b
    end

    fun sum(list) do
    acc = 0
    for i in list do
    acc = acc + i
    end
    acc
    end

    These functions aren't able to call another internal function but can call an Exported one.

    info

    Internal functions are able to use library module functions tagged as I/O but not the functions tagged as UPDATE_CONTRACT.

    Exported Functions

    Exported functions are callable from the Smart Contract but also through the outside via the JSON-RPC API. -They are declared like internal function but with the export fun syntax.

    export fun get_current_count() do
    String.to_number contract.content
    end

    Unlike internal functions, they can be called from any block of code.

    info

    External functions are not able to use library module functions tagged as I/O or Transaction.

    Library

    You may use any functions from the library. The syntax is Module.function(arg1, arg2).

    tip

    The parenthesis are actually optional! Module.function arg1, arg2 will work as well.

    To see the list of functions available in the Smart Contract Language, check the Library page.

    Reserved keywords

    • for
    • do
    • end
    • if
    • else

    ... to be completed

    - +They are declared like internal function but with the export fun syntax.

    export fun get_current_count() do
    String.to_number contract.content
    end

    Unlike internal functions, they can be called from any block of code.

    info

    External functions are not able to use library module functions tagged as I/O or Transaction.

    Library

    You may use any functions from the library. The syntax is Module.function(arg1, arg2).

    tip

    The parenthesis are actually optional! Module.function arg1, arg2 will work as well.

    To see the list of functions available in the Smart Contract Language, check the Library page.

    Reserved keywords

    • for
    • do
    • end
    • if
    • else

    ... to be completed

    + \ No newline at end of file diff --git a/build/smart-contracts/language/legacy/examples/index.html b/build/smart-contracts/language/legacy/examples/index.html index 23f74017a..9de48ba6b 100644 --- a/build/smart-contracts/language/legacy/examples/index.html +++ b/build/smart-contracts/language/legacy/examples/index.html @@ -4,13 +4,13 @@ Smart Contract examples | Archethic - +
    -

    Smart Contract examples

    Recurrent transfer

    # Send 1.0 each to the given address each month

    condition inherit: [
    type: transfer,
    uco_transfers: %{
    "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA" => 100000000
    }
    ]

    actions triggered_by: interval, at: "0 0 1 * *" do
    set_type transfer
    add_uco_transfer to: "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA", amount: 100000000
    end

    ICO / Crowdfunding


    # Ensure the next transaction will be a transfer
    condition inherit: [
    type: transfer,
    token_transfers: size() == 1
    # TODO: to provide more security, we should check the destination address is within the previous transaction inputs
    ]

    # Define conditions to accept incoming transactions
    condition transaction: [
    type: transfer,
    uco_transfers: size() > 0
    ]

    actions triggered_by: transaction do
    # Get the amount of uco send to this contract
    amount_send = transaction.uco_transfers[contract.address]

    if amount_send > 0 do
    # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token
    token_to_credit = amount_send * 10000

    # Send the new transaction
    set_type transfer
    add_token_transfer to: transaction.address, token_address: contract.address, amount: token_to_credit
    end
    end
    - +

    Smart Contract examples

    Recurrent transfer

    # Send 1.0 each to the given address each month

    condition inherit: [
    type: transfer,
    uco_transfers: %{
    "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA" => 100000000
    }
    ]

    actions triggered_by: interval, at: "0 0 1 * *" do
    set_type transfer
    add_uco_transfer to: "0000D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CCA", amount: 100000000
    end

    ICO / Crowdfunding


    # Ensure the next transaction will be a transfer
    condition inherit: [
    type: transfer,
    token_transfers: size() == 1
    # TODO: to provide more security, we should check the destination address is within the previous transaction inputs
    ]

    # Define conditions to accept incoming transactions
    condition transaction: [
    type: transfer,
    uco_transfers: size() > 0
    ]

    actions triggered_by: transaction do
    # Get the amount of uco send to this contract
    amount_send = transaction.uco_transfers[contract.address]

    if amount_send > 0 do
    # Convert UCO to the number of tokens to credit. Each UCO worth 10000 token
    token_to_credit = amount_send * 10000

    # Send the new transaction
    set_type transfer
    add_token_transfer to: transaction.address, token_address: contract.address, amount: token_to_credit
    end
    end
    + \ No newline at end of file diff --git a/build/smart-contracts/language/legacy/index.html b/build/smart-contracts/language/legacy/index.html index c5bc121a7..720c48ead 100644 --- a/build/smart-contracts/language/legacy/index.html +++ b/build/smart-contracts/language/legacy/index.html @@ -4,13 +4,13 @@ Smart Contracts (Legacy) | Archethic - + - +

    Smart Contracts (Legacy)

    Disclaimer

    This specification is deprecated and will be still be valid for SC before 1.1.0. The new version is available here

    + \ No newline at end of file diff --git a/build/smart-contracts/language/legacy/language/index.html b/build/smart-contracts/language/legacy/language/index.html index dffc8f4b7..1f984f624 100644 --- a/build/smart-contracts/language/legacy/language/index.html +++ b/build/smart-contracts/language/legacy/language/index.html @@ -4,13 +4,13 @@ Smart Contract Language | Archethic - +
    -

    Smart Contract Language

    Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:

    • Expressiveness
    • Simplify
    • Security

    Along with the new features of Archethic Smart Contracts (triggers, conditions, actions), a new custom language is defined

    Triggers/Actions

    To define a trigger, we need to specify an action block with its trigger type and the following parameters (if presents)

    For example:

    • based on an incoming transaction
    actions triggered_by: transaction do
    # do something when a receive transaction
    end
    • based on time interval
    actions triggered_by: interval, at: "0 8 * * *" do
    # do something each day at 8AM
    end

    Conditions

    To define a condition, we need to specify a condition block with its subject and the list conditions by fields:

    • type
    • content
    • code
    • authorized_keys
    • secrets
    • uco_transfers
    • token_transfers
    • previous_public_key
    • origin_family

    For example:

    • expecting the incoming transaction contains the content "hello"
    condition transaction: [
    content: "Hello"
    ]
    • expecting all the transaction in the chain should be generated from a biometric device
    condition inherit: [
    origin_family: biometric
    ]

    Global variables

    Smart Contract can use global variable in the different blocks:

    • contract: represent the actual contract
    • transaction: incoming transaction
    • (inherit condition only) next: next transaction on the chain
    • (inherit condition only) previous: previous transaction on the chain

    Each of this variables contains the following fields:

    • address (hex)
    • type
    • content (abitraty string)
    • code (abritraty string)
    • authorized_keys (map of public keys)
    • secrets (list of encrypted secrets in hex)
    • previous_public_key (hex)
    • recipients (list of smart contract recipients addresses in hex)
    • uco_transfers (map of the uco transfers: %{ recipient_address => amount }
    • token_transfers (map of the token transfers: %{ recipient_address => list(%{ amount: amount, token_address: token_to_transfer, token_id: token_id}})

    Functions

    Archethic Smart Contracts relies on function which can be used on condition or action blocks.

    There are two categories of functions:

    • Utilities
    • Statements (for transaction generation)

    Utilities

    info

    In the condition block, if no parameter is given, the transaction's field value will be the first one

    • hash(data): Perform a cryptographic hash
    condition transaction: [
    content: hash(contract.code)
    ]
    • regex_match?(data, pattern): Verify a regular expression
    condition transaction: [
    content: regex_match?("hello")
    ]
    • regex_extract(data, pattern): Extract data from a regular expression

    • json_match?: Verify the data matches a JSONPath expression

    condition oracle: [
    content: json_match?("$.uco.usd")
    ]
    • json_extract(data, pattern): Extract data from a JSONPath expression
    condition oracle: [
    content: json_extract("$.uco.usd") > 0.2
    ]

    Statements

    • set_type: Set the transaction type
    actions triggered_by: transaction do
    set_type transfer
    end
    • add_uco_transfer: Add a new UCO transfer
    actions triggered_by: transaction do
    add_uco_transfer to: "F28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", amount: 1.0
    end
    • add_token_transfer: Add a new token transfer
    actions triggered_by: transaction do
    add_token_transfer: to: "AF28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", token_address: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 1.0
    end
    • set_content: Set the new content
    actions triggered_by: transaction do
    set_content "hello"
    end
    • set_code: Set the new code
    actions triggered_by: transaction do
    set_code """
    actions triggered_by: transaction do
    add_uco_transfer to: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 2.0
    end
    """
    end
    • add_ownership: Add a new ownership with a secret and its authorized public keys
    actions triggered_by: transaction do
    add_ownership secret: "...", secret_key: "...", authorized_public_key: ["0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"]
    end
    • add_recipient: Add a contract address to reach
    actions triggered_by: datetime, at: 1391309040 do
    add_recipient "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"
    end

    - +

    Smart Contract Language

    Archethic Blockchain defines a new smart contract language which was designed to resolve the issue of smart contracts:

    • Expressiveness
    • Simplify
    • Security

    Along with the new features of Archethic Smart Contracts (triggers, conditions, actions), a new custom language is defined

    Triggers/Actions

    To define a trigger, we need to specify an action block with its trigger type and the following parameters (if presents)

    For example:

    • based on an incoming transaction
    actions triggered_by: transaction do
    # do something when a receive transaction
    end
    • based on time interval
    actions triggered_by: interval, at: "0 8 * * *" do
    # do something each day at 8AM
    end

    Conditions

    To define a condition, we need to specify a condition block with its subject and the list conditions by fields:

    • type
    • content
    • code
    • authorized_keys
    • secrets
    • uco_transfers
    • token_transfers
    • previous_public_key
    • origin_family

    For example:

    • expecting the incoming transaction contains the content "hello"
    condition transaction: [
    content: "Hello"
    ]
    • expecting all the transaction in the chain should be generated from a biometric device
    condition inherit: [
    origin_family: biometric
    ]

    Global variables

    Smart Contract can use global variable in the different blocks:

    • contract: represent the actual contract
    • transaction: incoming transaction
    • (inherit condition only) next: next transaction on the chain
    • (inherit condition only) previous: previous transaction on the chain

    Each of this variables contains the following fields:

    • address (hex)
    • type
    • content (abitraty string)
    • code (abritraty string)
    • authorized_keys (map of public keys)
    • secrets (list of encrypted secrets in hex)
    • previous_public_key (hex)
    • recipients (list of smart contract recipients addresses in hex)
    • uco_transfers (map of the uco transfers: %{ recipient_address => amount }
    • token_transfers (map of the token transfers: %{ recipient_address => list(%{ amount: amount, token_address: token_to_transfer, token_id: token_id}})

    Functions

    Archethic Smart Contracts relies on function which can be used on condition or action blocks.

    There are two categories of functions:

    • Utilities
    • Statements (for transaction generation)

    Utilities

    info

    In the condition block, if no parameter is given, the transaction's field value will be the first one

    • hash(data): Perform a cryptographic hash
    condition transaction: [
    content: hash(contract.code)
    ]
    • regex_match?(data, pattern): Verify a regular expression
    condition transaction: [
    content: regex_match?("hello")
    ]
    • regex_extract(data, pattern): Extract data from a regular expression

    • json_match?: Verify the data matches a JSONPath expression

    condition oracle: [
    content: json_match?("$.uco.usd")
    ]
    • json_extract(data, pattern): Extract data from a JSONPath expression
    condition oracle: [
    content: json_extract("$.uco.usd") > 0.2
    ]

    Statements

    • set_type: Set the transaction type
    actions triggered_by: transaction do
    set_type transfer
    end
    • add_uco_transfer: Add a new UCO transfer
    actions triggered_by: transaction do
    add_uco_transfer to: "F28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", amount: 1.0
    end
    • add_token_transfer: Add a new token transfer
    actions triggered_by: transaction do
    add_token_transfer: to: "AF28C3D5B3828AD3F8682F1B1D14A8507B829F65F7BE6C50427A6019CCB6801C", token_address: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 1.0
    end
    • set_content: Set the new content
    actions triggered_by: transaction do
    set_content "hello"
    end
    • set_code: Set the new code
    actions triggered_by: transaction do
    set_code """
    actions triggered_by: transaction do
    add_uco_transfer to: "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC", amount: 2.0
    end
    """
    end
    • add_ownership: Add a new ownership with a secret and its authorized public keys
    actions triggered_by: transaction do
    add_ownership secret: "...", secret_key: "...", authorized_public_key: ["0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"]
    end
    • add_recipient: Add a contract address to reach
    actions triggered_by: datetime, at: 1391309040 do
    add_recipient "0D574D171A484F8DEAC2D61FC3F7CC984BEB52465D69B3B5F670090742CBF5CC"
    end

    + \ No newline at end of file diff --git a/build/smart-contracts/language/library/index.html b/build/smart-contracts/language/library/index.html index 623623c89..42f956a17 100644 --- a/build/smart-contracts/language/library/index.html +++ b/build/smart-contracts/language/library/index.html @@ -4,7 +4,7 @@ Smart Contracts - Library | Archethic - + @@ -19,8 +19,8 @@ The return value is a map where the keys are the tokens' identifiers: [token_address: HEX, token_id: POS_INT] and the value are floats.

    Useful if you need to retrieve many tokens at the same time.


    Crypto

    hash/1

    Equivalent to hash/2 with the second argument "sha256".

    hash/2

    Crypto.hash("my text", "sha256") # "7330D2B39CA35EA..."
    Crypto.hash("my text", "sha512") # "A3D7E45A0D9BE5F..."

    Parameters:

    • str the text to hash
    • algo the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512", "blake2b", "keccak256")

    Returns the hash of str by using algo algorithm.

    hmac/1

    Equivalent to hmac/2 with the second argument "sha256".

    hmac/2

    Equivalent to hmac/3 with the third argument being a key created from the contract seed and secret data known by nodes. The key created is deterministic and will always be the same for a contract.

    hmac/3

    Crypto.hmac("my text") # "374C7527733556..."
    Crypto.hmac("my text", "sha256") # "374C7527733556..."
    Crypto.hmac("my text", "sha256", "secret_key") # "901A365FF22B895..."

    Parameters:

    • data the data to hash (if the data is hexadecimal it will be decoded in binary)
    • algo the hash algorithm ("sha256", "sha512", "sha3_256", "sha3_512")
    • key the key to perform the hmac (if the data is hexadecimal it will be decoded in binary)

    Returns the hmac of data with key using algo.

    sign_with_recovery/1

    signature_payload = Crypto.hash("tintin", "keccak256")
    Crypto.sign_with_recovery(signature_payload) # [r: "00ABCD...", s: "00BCDE...", v: 0]

    Parameters:

    • hash the hash to sign

    Return a signature of the given hash.


    Token

    fetch_id_from_address/1 [I/O]

    Token.fetch_id_from_address("000012345") # "3C21EF708BF11B4232..."

    Parameters:

    • address the token address

    Returns the token's id of the token at address.


    Code

    is_same?/2

    code = """
    @version

    condition triggered_by: transaction, as: []

    actions triggered_by: transaction do
    Contract.add_uco_transfer to: 0x1234, amount: 15.5
    end
    """

    Code.is_same?(code, transaction.code)

    Parameters:

    • first_code a string containing a smart contract code
    • second_code a string containing a smart contract code

    Return true if codes are the same, false otherwise. This function is more accurate than comparing two strings, as it convert code into structured AST and compare only code instruction and not line numbers, carriage return ...

    is_valid?/1

    code = """
    @version

    condition triggered_by: transaction, as: []

    actions triggered_by: transaction do
    Contract.add_uco_transfer to: 0x1234, amount: 15.5
    end
    """

    Code.is_valid?(code)

    Parameters:

    • code a string containing a smart contract code

    Returns true if the code is valid according to Archethic smart contracts language, false otherwise


    Math

    pow/2

    Math.pow(2, 3)
    # 8
    Math.pow(1.7, 8)
    # 69.75757441

    Parameters:

    • number the number to apply the power
    • exponent the exponent of the power

    Returns the result of the power of number by exponent.

    trunc/1

    Math.trunc(8.32)
    # 8

    Parameters:

    • number the number to truncate

    Returns the truncated number as an integer.

    sqrt/1

    Math.sqrt(16)
    # 4
    Math.sqrt(12.5)
    # 3.53553390

    Parameters:

    • number the number to calculate the square root

    Returns the square root if the number.

    rem/2

    Math.rem(2.1, 3)
    # 2.1
    Math.rem(10, 3)
    # 1
    Math.rem(-10, 3)
    # -1
    Math.rem(10.2, 1)
    # 0.2

    Parameters:

    • dividend the number to divid
    • divisor the number which divid

    Returns the remainder (modulo) of a division.


    Http

    request/1 [I/O]

    Similar to request/2 with method: "GET".

    request/2 [I/O]

    Similar to request/3 with headers: Map.new().

    request/3 [I/O]

    Similar to request/4 with body: nil.

    request/4 [I/O]

    response = Http.request("https://fakerapi.it/api/v1/addresses?_quantity=1&_seed=watermelon", "GET", Map.new(), nil) # [status: 200, body: "..."]
    if response.status == 200 do
    # do something with response.body
    end

    Parameters:

    • url the url to fetch
    • method the HTTP method ("GET", "POST", "PUT", "DELETE" or "PATCH")
    • headers the HTTP headers
    • body the HTTP body

    Performs a HTTP request and returns a map with status (integer) and body (string).

    This status integer can be any HTTP status code.

    • The URL must use HTTPS protocol.
    • The response body's size must be less than 256KB.
    • The response must be received in less than 2 seconds.
    • The response must be idempotent (= identical every time it is called)
    • Only 1 call of either request/1,2,3,4 or request_many/1 is allowed per execution.
    caution

    The function raises if these requirements are not meet.

    Disclaimer

    We discourage to call services that change their internal state directly (such as writing to a database or notifying a user). Because Archethic relies on atomic commitment of all storage nodes, it may happen that atomic commitment is not reached and the transaction resulting of a Smart Contract is not validated.

    Instead, you should notify the service of the transaction being validated. The service subscribes to that transaction via the GraphQL API, and once it receives a confirmation, it should act accordingly.

    request_many/1 [I/O]

    responses = Http.request_many([
    [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=male&_seed=cucumber"],
    [url: "https://fakerapi.it/api/v1/users?_quantity=1&_gender=female&_seed=tomato", method: "GET", headers: Map.new(), body: nil]
    ])
    for r in responses do
    if r.status == 200 do
    # do something with r.body
    end
    end

    Parameters:

    • request a list of requests to perform

    Performs a HTTP request and returns a map with status (integer) and body (string). Order and length is preserved.

    See request/4 for rules and more details.


    Contract

    call_function/3 [I/O]

    Contract.call_function(0x0000ABCD..., "add", [1, 2])

    Parameters:

    • contract_address the contract's adddress
    • function_name the function name
    • args the list of arguments to call the function with

    Calls the exported function function_name of the Smart Contract at contract_address with given args and return the result value.

    set_type/1 [Transaction]

    Contract.set_type("transfer")

    Parameters:

    • type the transaction type ("contract", "transfer", "data", "hosting")

    Mutates the next transaction to be of type type.

    set_content/1 [Transaction]

    Contract.set_content("Hello Smart Contract")

    Parameters:

    • content the transaction's content (we usually use this as the state of the smart contract)

    Mutates the next transaction content to be content.

    tip

    While content is always a string when you read it, it is possible here to send an integer or a float for convenience. -For any other data structure, you should serialize it with the Json module for example.

    set_code/1 [Transaction]

    Contract.set_code("@version 1\ncondition inherit: []")

    Parameters:

    • code the code

    Mutates the next transaction code to be code.

    tip

    This example "closes" the contract, by adding an condition inherit that doesn't accept anything. It will be impossible to create a new transaction in this chain.

    add_uco_transfer/1 [Transaction]

    Contract.add_uco_transfer(to: "000012345...", amount: 1)

    Parameters:

    • uco_transfer a map with two keys:
      • to: the destination address
      • amount: the number of UCO

    Mutates the next transaction to add the uco_transfer.

    add_uco_transfers/1 [Transaction]

    Equivalent to call add_uco_transfer/1 for each element of the list

    add_token_transfer/1 [Transaction]

    Contract.add_token_transfer(
    to: "000012345...",
    amount: 1.2,
    token_address: "000023456...")
    Contract.add_token_transfer(
    to: "000012345...",
    amount: 1.2,
    token_id: 4,
    token_address: "000023456...")

    Parameters:

    • token_transfer a map with three or four keys:
      • to: the destination address
      • amount: the number of UCO
      • token_address: the transaction address of the token
      • [token_id]: an optional integer to specify which index in the list (used for the NFTs)

    Mutates the next transaction to add the token_transfer.

    add_token_transfers/1 [Transaction]

    Equivalent to call add_token_transfer/1 for each element of the list

    add_ownership/1 [Transaction]

    authorized_keys = Map.new()
    authorized_keys = Map.set(authorized_keys, public_key, encoded_secret_key)
    Contract.add_ownership(
    secret: "ENCODED_SECRET1",
    authorized_keys: authorized_keys
    )

    Parameters:

    • ownership a map with two keys:
      • secret: the encoded secret
      • authorized_keys: a map where the keys are the public_keys and the values are the encoded_secret_keys (the keys to decode the secret encoded by each public_key)
    info

    It is the developer's job to encode the secret & the secret key for each authorized key.

    Mutates the next transaction to add the ownership.

    add_ownerships/1 [Transaction]

    Equivalent to call add_ownership/1 for each element of the list

    add_recipient/1 [Transaction]

    Contract.add_recipient("000012345...")

    Parameters:

    • address: a transaction address (one with a smart contract)

    Mutates the next transaction to add the address in the recipients.

    info

    Recipients are used to trigger smart contracts

    add_recipients/1 [Transaction]

    Equivalent to call add_recipients/1 for each element of the list


    Evm

    abi_encode/2

    Evm.abi_encode(signature, data)

    Parameters:

    • signature: the function or tuple signature (ex: "baz(uint,address)")
    • data: the data to encode

    Encodes the given data according to the signature.

    abi_decode/2

    Evm.abi_decode(signature, encoded_data)

    Parameters:

    • signature: the function or tuple signature (ex: "baz(uint,address)")
    • encoded_data: the data to decode

    Decodes the given encoded_data according to the signature.

    - +For any other data structure, you should serialize it with the Json module for example.

    set_code/1 [Transaction]

    Contract.set_code("@version 1\ncondition inherit: []")

    Parameters:

    • code the code

    Mutates the next transaction code to be code.

    tip

    This example "closes" the contract, by adding an condition inherit that doesn't accept anything. It will be impossible to create a new transaction in this chain.

    add_uco_transfer/1 [Transaction]

    Contract.add_uco_transfer(to: "000012345...", amount: 1)

    Parameters:

    • uco_transfer a map with two keys:
      • to: the destination address
      • amount: the number of UCO

    Mutates the next transaction to add the uco_transfer.

    add_uco_transfers/1 [Transaction]

    Equivalent to call add_uco_transfer/1 for each element of the list

    add_token_transfer/1 [Transaction]

    Contract.add_token_transfer(
    to: "000012345...",
    amount: 1.2,
    token_address: "000023456...")
    Contract.add_token_transfer(
    to: "000012345...",
    amount: 1.2,
    token_id: 4,
    token_address: "000023456...")

    Parameters:

    • token_transfer a map with three or four keys:
      • to: the destination address
      • amount: the number of UCO
      • token_address: the transaction address of the token
      • [token_id]: an optional integer to specify which index in the list (used for the NFTs)

    Mutates the next transaction to add the token_transfer.

    add_token_transfers/1 [Transaction]

    Equivalent to call add_token_transfer/1 for each element of the list

    add_ownership/1 [Transaction]

    authorized_keys = Map.new()
    authorized_keys = Map.set(authorized_keys, public_key, encoded_secret_key)
    Contract.add_ownership(
    secret: "ENCODED_SECRET1",
    authorized_keys: authorized_keys
    )

    Parameters:

    • ownership a map with two keys:
      • secret: the encoded secret
      • authorized_keys: a map where the keys are the public_keys and the values are the encoded_secret_keys (the keys to decode the secret encoded by each public_key)
    info

    It is the developer's job to encode the secret & the secret key for each authorized key.

    Mutates the next transaction to add the ownership.

    add_ownerships/1 [Transaction]

    Equivalent to call add_ownership/1 for each element of the list

    add_recipient/1 [Transaction]

    Contract.add_recipient("000012345...")

    Parameters:

    • address: a transaction address (one with a smart contract)

    Mutates the next transaction to add the address in the recipients.

    info

    Recipients are used to trigger smart contracts

    add_recipients/1 [Transaction]

    Equivalent to call add_recipients/1 for each element of the list


    Evm

    abi_encode/2

    Evm.abi_encode(signature, data)

    Parameters:

    • signature: the function or tuple signature (ex: "baz(uint,address)")
    • data: the data to encode

    Encodes the given data according to the signature.

    abi_decode/2

    Evm.abi_decode(signature, encoded_data)

    Parameters:

    • signature: the function or tuple signature (ex: "baz(uint,address)")
    • encoded_data: the data to decode

    Decodes the given encoded_data according to the signature.

    + \ No newline at end of file diff --git a/build/smart-contracts/language/triggers/index.html b/build/smart-contracts/language/triggers/index.html index 0d9f2718a..8a8b14982 100644 --- a/build/smart-contracts/language/triggers/index.html +++ b/build/smart-contracts/language/triggers/index.html @@ -4,13 +4,13 @@ Smart Contracts - Triggers | Archethic - +
    -

    Smart Contracts - Triggers

    Contract triggered by a transaction

    To trigger a SC execution, the incoming transaction must add the SC address in the recipients part of the transaction.

    tip

    This allows to activate a SC without sending funds to it, or to send funds to it without activating the code execution.

    Because the recipients field is a list, you can trigger multiple contracts in the same transaction 😉

    In this scenario:

    • a condition transaction may be used to check the incoming transaction (before executing the trigger).
    • a transaction variable is available in the blocks.
    @version 1
    condition triggered_by: transaction, as: [
    ...
    ]

    actions triggered_by: transaction do
    ...
    end

    Contract triggered by a transaction with a named action

    The SC caller may be able to execute a specific "named" action with specified arguments on the Smart Contract.

    In this scenario:

    • a condition transaction may be used to check the incoming transaction (before executing the trigger).
    • a transaction variable is available in the blocks.
    • every argument defined is available in the blocks.
    @version 1
    condition triggered_by: transaction, on: vote_for_class_president(firstname, lastname), as: [
    ...
    ]

    actions triggered_by: transaction, on: vote_for_class_president(firstname, lastname) do
    ...
    end

    Contract triggered at a specific date and time

    You may trigger a contract at a specific date and time. You need to specify a Unix time (seconds since epoch).

    The datetime must be rounded to the minute

    A contract will not parse if the datetime isn't rounded.

    @version 1
    actions triggered_by: datetime, at: 1676332800 do
    ...
    end

    Contract triggered at a specific interval

    You may trigger a contract at a specific interval. You need to specify a CRON Format String.

    note

    The minimum granularity is the minute. Except in local development where the minimum granularity is the second.

    @version 1

    # ┌───────────── minute (0 - 59)
    # │ ┌───────────── hour (0 - 23)
    # │ │ ┌───────────── day of the month (1 - 31)
    # │ │ │ ┌───────────── month (1 - 12)
    # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
    # │ │ │ │ │
    # │ │ │ │ │
    # │ │ │ │ │
    # * * * * *
    actions triggered_by: interval, at: "0 8 * * *" do
    # do something each day at 8AM UTC
    end

    Contract triggered on every Oracle transaction

    You may trigger a contract on every Oracle transaction.

    In this scenario:

    • a condition oracle must be used to check the oracle transaction (to avoid running a contract if the oracle does not contain what you require)
    • a transaction variable is available in the blocks.
    @version 1
    condition triggered_by: oracle, as: [
    # use transaction.content to make sure the oracle has the data you require
    ]
    actions triggered_by: oracle do
    # do something with transaction.content
    end

    Multiple triggers

    Only named action triggers may have multiple triggers. Other triggers are limited to 1 per type.

    DO:

    @version 1

    actions triggered_by: transaction do
    ...
    end

    actions triggered_by: transaction, on: upgrade() do
    ...
    end

    actions triggered_by: transaction, on: calculate(x, y) do
    ...
    end

    actions triggered_by: interval, at: "0 8 * * *" do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: interval, at: "0 9 * * *" do
    ...
    end

    actions triggered_by: interval, at: "0 8 * * *" do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: transaction do
    ...
    end

    actions triggered_by: transaction do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: datetime, at: 1693519200 do
    ...
    end

    actions triggered_by: datetime, at: 1693605600 do
    ...
    end
    - +

    Smart Contracts - Triggers

    Contract triggered by a transaction

    To trigger a SC execution, the incoming transaction must add the SC address in the recipients part of the transaction.

    tip

    This allows to activate a SC without sending funds to it, or to send funds to it without activating the code execution.

    Because the recipients field is a list, you can trigger multiple contracts in the same transaction 😉

    In this scenario:

    • a condition transaction may be used to check the incoming transaction (before executing the trigger).
    • a transaction variable is available in the blocks.
    @version 1
    condition triggered_by: transaction, as: [
    ...
    ]

    actions triggered_by: transaction do
    ...
    end

    Contract triggered by a transaction with a named action

    The SC caller may be able to execute a specific "named" action with specified arguments on the Smart Contract.

    In this scenario:

    • a condition transaction may be used to check the incoming transaction (before executing the trigger).
    • a transaction variable is available in the blocks.
    • every argument defined is available in the blocks.
    @version 1
    condition triggered_by: transaction, on: vote_for_class_president(firstname, lastname), as: [
    ...
    ]

    actions triggered_by: transaction, on: vote_for_class_president(firstname, lastname) do
    ...
    end

    Contract triggered at a specific date and time

    You may trigger a contract at a specific date and time. You need to specify a Unix time (seconds since epoch).

    The datetime must be rounded to the minute

    A contract will not parse if the datetime isn't rounded.

    @version 1
    actions triggered_by: datetime, at: 1676332800 do
    ...
    end

    Contract triggered at a specific interval

    You may trigger a contract at a specific interval. You need to specify a CRON Format String.

    note

    The minimum granularity is the minute. Except in local development where the minimum granularity is the second.

    @version 1

    # ┌───────────── minute (0 - 59)
    # │ ┌───────────── hour (0 - 23)
    # │ │ ┌───────────── day of the month (1 - 31)
    # │ │ │ ┌───────────── month (1 - 12)
    # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
    # │ │ │ │ │
    # │ │ │ │ │
    # │ │ │ │ │
    # * * * * *
    actions triggered_by: interval, at: "0 8 * * *" do
    # do something each day at 8AM UTC
    end

    Contract triggered on every Oracle transaction

    You may trigger a contract on every Oracle transaction.

    In this scenario:

    • a condition oracle must be used to check the oracle transaction (to avoid running a contract if the oracle does not contain what you require)
    • a transaction variable is available in the blocks.
    @version 1
    condition triggered_by: oracle, as: [
    # use transaction.content to make sure the oracle has the data you require
    ]
    actions triggered_by: oracle do
    # do something with transaction.content
    end

    Multiple triggers

    Only named action triggers may have multiple triggers. Other triggers are limited to 1 per type.

    DO:

    @version 1

    actions triggered_by: transaction do
    ...
    end

    actions triggered_by: transaction, on: upgrade() do
    ...
    end

    actions triggered_by: transaction, on: calculate(x, y) do
    ...
    end

    actions triggered_by: interval, at: "0 8 * * *" do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: interval, at: "0 9 * * *" do
    ...
    end

    actions triggered_by: interval, at: "0 8 * * *" do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: transaction do
    ...
    end

    actions triggered_by: transaction do
    ...
    end

    DON'T:

    @version 1

    actions triggered_by: datetime, at: 1693519200 do
    ...
    end

    actions triggered_by: datetime, at: 1693605600 do
    ...
    end
    + \ No newline at end of file diff --git a/build/smart-contracts/playground/build/index.html b/build/smart-contracts/playground/build/index.html index 3d5b8e33a..5602b5665 100644 --- a/build/smart-contracts/playground/build/index.html +++ b/build/smart-contracts/playground/build/index.html @@ -4,15 +4,15 @@ Smart Contracts Playground - Build | Archethic - +

    Smart Contracts Playground - Build

    Let's create a small smart contracts that reacts to two different triggers. We'll then be able to test them separately.

    @version 1

    actions triggered_by: interval, at: "0 * * * *" do
    Contract.set_content "Hello from interval"
    end

    condition triggered_by: transaction, as: []
    actions triggered_by: transaction do
    Contract.set_content "Hello from tx"
    end

    I. Write the contract

    Write the code of the smart contract in the text area: the contract is written in the textarea

    As you write, you might see the console at the bottom reacting with different errors:

    a parsing error visible in the console

    II. Test the triggers

    To test a smart contract, you need to test all its triggers. We are going to open the trigger panel by clicking on the trigger button:

    the trigger button

    The trigger panel opens on the left hand side:

    the trigger panel

    You are now able to select which trigger you want to test, for this contract a selector of two triggers is displayed (as per the contract): -You'll also see the mock form that is used to mock the functions that does side-effect.

    Test trigger 'interval'

    An interval trigger is a contract that triggers automatically at a specific interval. It does not require anything so it's pretty easy to test. Just click on the trigger button.

    the resulting transaction is displayed in the console

    What you see above is the JSON representation of the output transaction payload. Here we can control that my contract behaved as expected. The content is set to "Hello from interval" as expected.

    You probably saw the trigger and update contract's transaction button. Let's click on it to see the difference:

    the resulting transaction is displayed in the contract&#39; transaction panel

    The difference is not easy to spot, but the transaction of the contract (the right panel) has been updated. This is useful to test a sequence of triggers.

    Test trigger 'transaction'

    This trigger is more complex to test because it requires you to mock the transaction that should trigger the contract. After selecting the transaction from the trigger selector, a form appears:

    the transaction form appears in the panel

    This form is composed of two forms:

    1. the transaction form
    2. the mock form

    Which results in a very big form that are covered in the links above. For this contract, we'll just submit the form without changing anything.

    I can now control that the output transaction payload is correct.

    Test trigger 'datetime'

    Testing a 'datetime' trigger is similar to testing a trigger 'interval'.

    Test trigger 'oracle'

    Testing an 'oracle' trigger is similar to testing a trigger 'transaction' (where the transaction is of type 'oracle').

    That's it!

    You should now be able to build your own smart contracts and test them! The next step now is to deploy them.

    - +You'll also see the mock form that is used to mock the functions that does side-effect.

    Test trigger 'interval'

    An interval trigger is a contract that triggers automatically at a specific interval. It does not require anything so it's pretty easy to test. Just click on the trigger button.

    the resulting transaction is displayed in the console

    What you see above is the JSON representation of the output transaction payload. Here we can control that my contract behaved as expected. The content is set to "Hello from interval" as expected.

    You probably saw the trigger and update contract's transaction button. Let's click on it to see the difference:

    the resulting transaction is displayed in the contract&#39; transaction panel

    The difference is not easy to spot, but the transaction of the contract (the right panel) has been updated. This is useful to test a sequence of triggers.

    Test trigger 'transaction'

    This trigger is more complex to test because it requires you to mock the transaction that should trigger the contract. After selecting the transaction from the trigger selector, a form appears:

    the transaction form appears in the panel

    This form is composed of two forms:

    1. the transaction form
    2. the mock form

    Which results in a very big form that are covered in the links above. For this contract, we'll just submit the form without changing anything.

    I can now control that the output transaction payload is correct.

    Test trigger 'datetime'

    Testing a 'datetime' trigger is similar to testing a trigger 'interval'.

    Test trigger 'oracle'

    Testing an 'oracle' trigger is similar to testing a trigger 'transaction' (where the transaction is of type 'oracle').

    That's it!

    You should now be able to build your own smart contracts and test them! The next step now is to deploy them.

    + \ No newline at end of file diff --git a/build/smart-contracts/playground/deploy/index.html b/build/smart-contracts/playground/deploy/index.html index a079b9215..9ca501698 100644 --- a/build/smart-contracts/playground/deploy/index.html +++ b/build/smart-contracts/playground/deploy/index.html @@ -4,14 +4,14 @@ Smart Contracts Playground - Deploy | Archethic - +

    Smart Contracts Playground - Deploy

    Not mainnet-ready

    The communication via the archethic wallet has not been done yet. For this reason we disabled the deployment to the mainnet because it doesn't meet the security standard we expect.

    Once the code is written and the triggers are tested, the next step is to deploy the Smart Contract. Please open the deploy panel by clicking on the deploy button:

    the deploy button

    The deploy panel opens on the left hand side:

    the deploy panel

    1. Choose the network where you want to deploy the Smart Contract. This will always be "https://testnet.archethic.net" for now.
    2. You'll see that we automatically retrieve the storage nonce public key that is used to give ownership of the contract to the authorized nodes (miners).
    3. Then specify a seed of a transaction chain that will host the contract.

    While modifying the seed, you can see that the future contract's address is displayed. The contract's genesis address is also displayed.

    Genesis address

    The genesis address is the one you'll use in the faucet to transfer funds.

    Now you may click on estimate fees and then deploy. Hopefully you'll see a success message! -You may follow the link to view the transaction on the explorer.

    That's it!

    Congratulations on your contract's deployment.

    - +You may follow the link to view the transaction on the explorer.

    That's it!

    Congratulations on your contract's deployment.

    + \ No newline at end of file diff --git a/build/smart-contracts/playground/functions/index.html b/build/smart-contracts/playground/functions/index.html index 54a5a45c7..e8b470dd2 100644 --- a/build/smart-contracts/playground/functions/index.html +++ b/build/smart-contracts/playground/functions/index.html @@ -4,13 +4,13 @@ Smart Contracts Playground - Functions | Archethic - +
    -

    Smart Contracts Playground - Functions

    Since 1.3, we introduced the capability to have some public functions in to smart contract code.

    The playground have been updated to support this feature and be able to test it by calling those functions.

    Let's create a small smart contract that use function to export some data to the user

    @version 1
    condition triggered_by: transaction, on: increment(), as: []

    actions triggered_by: transaction, on: increment() do
    counter = String.to_number(contract.content) + 1
    Contract.set_content String.from_number(counter)
    end

    export fun counter() do
    Json.to_string([counter: contract.content])
    end

    Firstly, we initiate a transaction to increment the counter and update the contract

    a contract that send a transaction to increment a counter

    Now to test the function, we are going to open the function panel by clicking on the function button:

    the trigger button

    We can see the function panel on the left with the list of function availables to be called

    a function panel opened

    After clicking on "Execute", we can see in the console the return of the function

    a function executed

    - +

    Smart Contracts Playground - Functions

    Since 1.3, we introduced the capability to have some public functions in to smart contract code.

    The playground have been updated to support this feature and be able to test it by calling those functions.

    Let's create a small smart contract that use function to export some data to the user

    @version 1
    condition triggered_by: transaction, on: increment(), as: []

    actions triggered_by: transaction, on: increment() do
    counter = String.to_number(contract.content) + 1
    Contract.set_content String.from_number(counter)
    end

    export fun counter() do
    Json.to_string([counter: contract.content])
    end

    Firstly, we initiate a transaction to increment the counter and update the contract

    a contract that send a transaction to increment a counter

    Now to test the function, we are going to open the function panel by clicking on the function button:

    the trigger button

    We can see the function panel on the left with the list of function availables to be called

    a function panel opened

    After clicking on "Execute", we can see in the console the return of the function

    a function executed

    + \ No newline at end of file diff --git a/build/smart-contracts/playground/index.html b/build/smart-contracts/playground/index.html index e6f19047d..493223aa9 100644 --- a/build/smart-contracts/playground/index.html +++ b/build/smart-contracts/playground/index.html @@ -4,14 +4,14 @@ Smart Contracts Playground | Archethic - +

    Smart Contracts Playground

    The Smart Contracts playground is an online service use to write, test and deploy smart contracts. -It is available here: https://playground.archethic.net/.

    • Follow the Build menu to build a smart contracts with the playground.
    • Follow the Deploy menu to deploy a smart contracts.

    The Smart Contracts playground

    - +It is available here: https://playground.archethic.net/.

    • Follow the Build menu to build a smart contracts with the playground.
    • Follow the Deploy menu to deploy a smart contracts.

    The Smart Contracts playground

    + \ No newline at end of file diff --git a/build/smart-contracts/playground/mock-form/index.html b/build/smart-contracts/playground/mock-form/index.html index 13162ce73..255a0ea4a 100644 --- a/build/smart-contracts/playground/mock-form/index.html +++ b/build/smart-contracts/playground/mock-form/index.html @@ -4,14 +4,14 @@ Smart Contracts Playground - Mock form | Archethic - +

    Smart Contracts Playground - Mock form

    Mocks allow developers to simulate the behaviour of functions that have side-effects. A few examples of side-effect: retrieve the genesis address of a chain, retrieve the date, a random value etc.

    The mock form is part of the trigger panel.

    the mock form is display

    These functions must be mocked to test Smart Contracts that use them:

    A function can be mocked multiple times, for example to mock multiple different inputs.

    Example: Time.now/0

    Time.now/0 can be mocked to simulate a future execution of the contract. This one is actually optional, the playground will use current time if it is not set.

    @version 1
    actions triggered_by: interval, at: "* * * * *" do
    Contract.set_content(Time.now())
    end

    All you need to do is fill the expected output (seconds since epoch):

    mocking the Time.now/0

    Then click on the Add button, then trigger to test the Smart Contract:

    Time.now/0 is mocked

    We can see via the console that the mock was called as expected.

    Example: Chain.get_genesis_address/1

    Let's see an example with a function that takes an argument. -In the form you specify the output for a given input. Let's try it!

    The screenshot below mocked the function with these values:

    • input: 00002223BBD4EC3D64AE597696C7D7ADE1CEE65C639D885450AD2D7B75592AC76AFA
    • output: MOCKED
    @version 1
    actions triggered_by: interval, at: "* * * * *" do
    Contract.set_content(Chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa))
    end

    a contract that used Chain.get_genesis_address/1 is tested

    We can see via the console that the mock was called as expected.

    a contract that used Chain.get_genesis_address/1 is tested

    - +In the form you specify the output for a given input. Let's try it!

    The screenshot below mocked the function with these values:

    • input: 00002223BBD4EC3D64AE597696C7D7ADE1CEE65C639D885450AD2D7B75592AC76AFA
    • output: MOCKED
    @version 1
    actions triggered_by: interval, at: "* * * * *" do
    Contract.set_content(Chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa))
    end

    a contract that used Chain.get_genesis_address/1 is tested

    We can see via the console that the mock was called as expected.

    a contract that used Chain.get_genesis_address/1 is tested

    + \ No newline at end of file diff --git a/build/smart-contracts/playground/transaction-form/index.html b/build/smart-contracts/playground/transaction-form/index.html index 0f20d5e4d..370bc22fe 100644 --- a/build/smart-contracts/playground/transaction-form/index.html +++ b/build/smart-contracts/playground/transaction-form/index.html @@ -4,7 +4,7 @@ Smart Contracts Playground - Transaction form | Archethic - + @@ -12,8 +12,8 @@

    Smart Contracts Playground - Transaction form

    The transaction form is a form that you might encounter at different places:

    1. Trigger panel
    2. Previous contract panel
    3. Deploy panel

    The goal of this form is to prepare a transaction payload (everything non-crypto). We'll describe here every subpart of this form.

    type

    This is a selector to choose the transaction's type. It is used to give a hint about what's in the transaction. Some types impose some rules to follow.

    Read Transaction types for the details.

    code

    This is the text field for the code of the Smart Contract. It may be hidden because in the Smart Contracts Playground, the code is usually at the root level of the user interface.

    content

    The content is a text field. It often depends on the transaction's type. For Smart Contracts, we use it to store the aggregated state. This might change in the very near future (see AEIP-14).

    validation timestamp (not used in deployment)

    It represents the time at which the transaction was validated. This is only used to mock a value for your tests.

    address (not used in deployment)

    It's the transaction's address. It must be a 68 characters hexadecimal. This is only used to mock a value for your tests.

    uco transfers

    This is the list of transfers for the UCOs. Every transfer is defined by 2 fields:

    • amount: required - float
    • to: required - hexadecimal address of destination (68 characters)
    info

    The amount accepts 8 decimals maximum.

    token transfers

    This is the list of transfers for AEIP-02 tokens. Every transfer is defined by 3-4 fields:

    • amount: required - float
    • to: required - hexadecimal address of destination (68 characters)
    • token_address: required - hexadecimal address of the token's definition (68 characters)
    • token_id: optional - default: 0 - the index of the token in the token's definition (mainly used for NFTs)

    recipients

    This is the list of the Smart Contracts addresses to trigger. Note that the Smart Contracts are executed in dry mode (not writing anything) when the transaction is being validated, which means that if an execution fails, the transaction is invalid.

    note

    For now a Smart Contracts should not trigger other Smart Contracts because the execution is not atomic.

    ownerships

    This is the list of secrets with the public keys authorized to decrypt them. -Every secret is defined by 2 fields:

    • secret: required - the non-encrypted secret (the SDK will encrypt with a key that is then encrypted for every authorized_public_keys below)
    • authorized_public_keys: required - the list of public keys allowed to decrypt the secret
    contract's ownership

    When deploying, the playground automatically creates a secret that is used to give the ability to execute the contract to all authorized nodes.

    In raw terms, it encrypts the seed with the storage nonce public key.

    TODO

    missing mock for movements

    - +Every secret is defined by 2 fields:

    • secret: required - the non-encrypted secret (the SDK will encrypt with a key that is then encrypted for every authorized_public_keys below)
    • authorized_public_keys: required - the list of public keys allowed to decrypt the secret
    contract's ownership

    When deploying, the playground automatically creates a secret that is used to give the ability to execute the contract to all authorized nodes.

    In raw terms, it encrypts the seed with the storage nonce public key.

    TODO

    missing mock for movements

    + \ No newline at end of file diff --git a/build/testnet/index.html b/build/testnet/index.html index a5ccca0f4..7854b29e2 100644 --- a/build/testnet/index.html +++ b/build/testnet/index.html @@ -4,13 +4,13 @@ Testnet | Archethic - +
    -

    Testnet

    Local

    To test and build on top of Archethic network, we encourage people to test with a local instance.

    Installation

    • Clone the repository:
    git clone https://github.com/archethic-foundation/archethic-node.git
    mix deps.get
    • Build web assets
    cd assets ; npm install; cd -
    • Start instance
    iex -S mix

    Get some funds

    To be able to fund some addresses, the development mode of the running enable the testnet faucet.

    1. Funding

      Browse to the http://localhost:4000/faucet and enter any address to send funds to.

      It should transfer 100 UCO to the given address.

    2. Check the balance

      Go to http://localhost:4000/explorer/transaction/{TYPE_YOUR_ADDRESS_IN_HEXADECIMAL}

      It should display 100 unspent outputs (in the "Ledger inputs" section)

    Public

    Public testnet is available at https://testnet.archethic.net

    Get some funds

    You can then go the faucet to get free UCOs to experiment the Archethic network

    - +

    Testnet

    Local

    To test and build on top of Archethic network, we encourage people to test with a local instance.

    Installation

    • Clone the repository:
    git clone https://github.com/archethic-foundation/archethic-node.git
    mix deps.get
    • Build web assets
    cd assets ; npm install; cd -
    • Start instance
    iex -S mix

    Get some funds

    To be able to fund some addresses, the development mode of the running enable the testnet faucet.

    1. Funding

      Browse to the http://localhost:4000/faucet and enter any address to send funds to.

      It should transfer 100 UCO to the given address.

    2. Check the balance

      Go to http://localhost:4000/explorer/transaction/{TYPE_YOUR_ADDRESS_IN_HEXADECIMAL}

      It should display 100 unspent outputs (in the "Ledger inputs" section)

    Public

    Public testnet is available at https://testnet.archethic.net

    Get some funds

    You can then go the faucet to get free UCOs to experiment the Archethic network

    + \ No newline at end of file diff --git a/category/api/index.html b/category/api/index.html index c0a35ed8c..75070fd6f 100644 --- a/category/api/index.html +++ b/category/api/index.html @@ -4,13 +4,13 @@ API | Archethic - + - + \ No newline at end of file diff --git a/category/build/index.html b/category/build/index.html index ef435e1bd..d1323087a 100644 --- a/category/build/index.html +++ b/category/build/index.html @@ -4,13 +4,13 @@ Build | Archethic - + - + \ No newline at end of file diff --git a/category/clients/index.html b/category/clients/index.html index c81e08796..25b01a59c 100644 --- a/category/clients/index.html +++ b/category/clients/index.html @@ -4,13 +4,13 @@ Clients | Archethic - + - + \ No newline at end of file diff --git a/category/faq/index.html b/category/faq/index.html index 2c92f3730..9f794d6a4 100644 --- a/category/faq/index.html +++ b/category/faq/index.html @@ -4,13 +4,13 @@ FAQ | Archethic - + - + \ No newline at end of file diff --git a/category/graphql/index.html b/category/graphql/index.html index f112ba513..efb1c45c9 100644 --- a/category/graphql/index.html +++ b/category/graphql/index.html @@ -4,13 +4,13 @@ GraphQL | Archethic - + - + \ No newline at end of file diff --git a/category/participate/index.html b/category/participate/index.html index e1e1ceb66..4c486bcb9 100644 --- a/category/participate/index.html +++ b/category/participate/index.html @@ -4,13 +4,13 @@ Participate | Archethic - + - + \ No newline at end of file diff --git a/category/usage-1/index.html b/category/usage-1/index.html index c7642426d..e13762b8b 100644 --- a/category/usage-1/index.html +++ b/category/usage-1/index.html @@ -4,13 +4,13 @@ Usage | Archethic - + - + \ No newline at end of file diff --git a/category/usage/index.html b/category/usage/index.html index 28052decd..a0c92a75e 100644 --- a/category/usage/index.html +++ b/category/usage/index.html @@ -4,13 +4,13 @@ Usage | Archethic - + - + \ No newline at end of file diff --git a/contributing/index.html b/contributing/index.html index d18615b07..d7519b4c6 100644 --- a/contributing/index.html +++ b/contributing/index.html @@ -4,15 +4,15 @@ Contributing | Archethic - +

    Contributing

    This documentation is maintained by the Archethic Foundation. It's an open source project and aims to be the most extensive resources of knowledge on Archethic and its ecosystem.

    We welcome contributions from anyone and are grateful for even the smallest of improvement from typo issues, to proposals, to enhance explaination or create diagrams, etc. -Therefore, pull requests, discussions, and contributions from the community are encouraged.

    How to contribute

    You can contribute on the archethic-foundation/archethic-docs repository. The documentation is build with Docusaurus and each page is written in Markdown which is an easy to learn syntax extension to plain text that make creating links, rendering images and nice looking formatting example.

    Guidelines

    There are few basic ground-rules for contributing:

    1. No --force pushes or modifying the Git history
    2. Pull requests are preferred to issues, especially for small changes such as typos. Issues should be used for generic or broad-based changes or missing content. Suggestions and requests are encouraged.
    3. Please fork or use non-main branches.
    4. Significant modifications, even by contributors, ought to be subject to a pull request to solicit feedback from other contributors.
    5. Pull requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor.
    6. Contributors should attempt to adhere to the prevailing MarkDown style, language, and layout.
    7. Correct grammar should be used at all times. Pull requests with typos will not be merged until fixed.
    8. Care should be taken to remain as objective and informative as possible. There should be no editorializing, and external bias should not be present.

    Diagrams

    The documentation supports also diagram through the use or Mermaid which permits to create diagram with markdown code:

    Inserting this code:

    ```mermaid
    sequenceDiagram
       Alice->>John: Hello John, how are you?
       John-->>Alice: Great!
       Alice-)John: See you later!
    ```

    will output this diagram

    To help you design them you can leverage an editor to visualize the diagrams.

    - +Therefore, pull requests, discussions, and contributions from the community are encouraged.

    How to contribute

    You can contribute on the archethic-foundation/archethic-docs repository. The documentation is build with Docusaurus and each page is written in Markdown which is an easy to learn syntax extension to plain text that make creating links, rendering images and nice looking formatting example.

    Guidelines

    There are few basic ground-rules for contributing:

    1. No --force pushes or modifying the Git history
    2. Pull requests are preferred to issues, especially for small changes such as typos. Issues should be used for generic or broad-based changes or missing content. Suggestions and requests are encouraged.
    3. Please fork or use non-main branches.
    4. Significant modifications, even by contributors, ought to be subject to a pull request to solicit feedback from other contributors.
    5. Pull requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor.
    6. Contributors should attempt to adhere to the prevailing MarkDown style, language, and layout.
    7. Correct grammar should be used at all times. Pull requests with typos will not be merged until fixed.
    8. Care should be taken to remain as objective and informative as possible. There should be no editorializing, and external bias should not be present.

    Diagrams

    The documentation supports also diagram through the use or Mermaid which permits to create diagram with markdown code:

    Inserting this code:

    ```mermaid
    sequenceDiagram
       Alice->>John: Hello John, how are you?
       John-->>Alice: Great!
       Alice-)John: See you later!
    ```

    will output this diagram

    To help you design them you can leverage an editor to visualize the diagrams.

    + \ No newline at end of file diff --git a/index.html b/index.html index ece4d04f8..3572b28d6 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ Archethic - +

    Archethic

    Digital sovereignty at your fingertips

    Archethic gives back to humanity control over technology, and to each individual, control over their identity
    thanks to a truly decentralized and limitless P2P network

    You will find the complete reference of the Archethic network splitted into three main sections:

    Learn

    Discover Archethic, the TransactionChain, the new ARCH Consensus, why it helps to build the more secure and decentralized P2P network

    Participate

    Join the network and use existing solutions build on Archethic.

    Build

    Access documentation and guides to build on Archethic or to contribute to the core development

    FAQ

    Learn more about Archethic solutions by exploring our FAQ section.

    - + \ No newline at end of file diff --git a/learn/arch-consensus/index.html b/learn/arch-consensus/index.html index 175444cab..622aa06a6 100644 --- a/learn/arch-consensus/index.html +++ b/learn/arch-consensus/index.html @@ -4,14 +4,14 @@ ARCH consensus | Archethic - +

    ARCH consensus

    Archethic Blockchain is using a new consensus called ARCH (Atomic Rotating Commitment Heuristic) for an uncompromising consensus to support high scalability and high throughput.

    Archethic Blockchain is based on three properties:

    • Security: Each transaction is validated atomically
    • Data consistency: Algorithms ensure to access the latest write and maximum availability
    • Fault tolerance: Allow nodes to operate independently even in case of disaster

    ARCH consensus is defined by three concepts:

    • Atomic Commitment: The most absolute form a consensus which implies 100% of concordant responses for the acceptance or refusal of the transaction validation
    • Heuristic: Set of algorithms which manages the entire network, allowing to elect in a decentralized and coordinated way the nodes in charge to validate or store the transaction chains
    • Rotating: Node election is constantly changing. No nodes can predict which nodes will validate the transaction before its arrives.

    Atomic Commitment

    Archethic Blockchain is based on Hypergeometric distribution laws which from an unpredictable election and formal consensus make it possible to obtain with certainty (99.99999999%) the same answer by querying 197 nodes as would be obtained by querying 100 000 nodes.

    Therefore, it makes possible the consensus establishment with a small part of nodes and can resist to attacks of 90% of malicious nodes.

    The risk of related availability is ensured by a strict management of the disruptive nodes, which are banished after investigation of the origin of the disagreement.

    By supporting more 90% of malicious nodes into its network, ARCH consensus is above aeronautical or nuclear standard, thanks to the Atomic Commitment which request the total agreement of the validation nodes and from a Malicious Detection algorithm to detect the malicious nodes.

    Rotating Election

    Each rotating election is unpredictable, but still verifiable and reproducible. -The rotating algorithm sort a list of nodes based on:

    • Hash of transaction: Unpredictable until the transaction arrives
    • Daily nonce: Secret shared between the authorized nodes and renewed daily
    • Node public key: Last node public key

    The rotating election produces a proof, named: Proof of Election which can be verified by any other nodes to ensure the right election of nodes.

    From this algorithm, we get a list of nodes which can be filtered according to the constraints of the validation of the transaction.

    • P2P availability
    • Geographical distribution

    Workflow

    When a transaction is willing to be validated, its follows the given workflow:

    1. The transaction is received by any node (aka Welcome node)
    2. The Welcome Node determines the validation nodes from the Rotating Election algorithm and forward the transaction
    3. The validation nodes after receiving the transaction start some preliminary job to gather the context of the transaction:
      • Previous transaction
      • List of unspent outputs
    4. After the context building, the Cross Validation Nodes communicate to the Coordinator Node the list of storage nodes involved to gather this information.
    5. The Coordinator Node can build the Validation Stamp and compute the replication tree. Then it transmits them to the Cross Validation Nodes.
    6. The Cross Validation Nodes verify the content of the Validation Stamp, sign with or without inconsistencies, and send the Cross Validation Stamp to all the validation nodes involved.
    7. Once all the Cross Validation Stamps are received and if the Atomic Commitment is reached, the replication phase starts.
    8. Validation nodes send the transaction to the respective storage nodes:
    • Storage nodes responsible for the new transaction chain
    • Storage nodes responsible for the outputs of the transactions (transaction's movements addresses, recipients)
    • Storage nodes responsible for the Beacon Chain
    1. The storage for the new transaction chain will notify the validation nodes and the Welcome Node about the replication, and the Welcome Node will notify the client about it.
    - +The rotating algorithm sort a list of nodes based on:

    • Hash of transaction: Unpredictable until the transaction arrives
    • Daily nonce: Secret shared between the authorized nodes and renewed daily
    • Node public key: Last node public key

    The rotating election produces a proof, named: Proof of Election which can be verified by any other nodes to ensure the right election of nodes.

    From this algorithm, we get a list of nodes which can be filtered according to the constraints of the validation of the transaction.

    • P2P availability
    • Geographical distribution

    Workflow

    When a transaction is willing to be validated, its follows the given workflow:

    1. The transaction is received by any node (aka Welcome node)
    2. The Welcome Node determines the validation nodes from the Rotating Election algorithm and forward the transaction
    3. The validation nodes after receiving the transaction start some preliminary job to gather the context of the transaction:
      • Previous transaction
      • List of unspent outputs
    4. After the context building, the Cross Validation Nodes communicate to the Coordinator Node the list of storage nodes involved to gather this information.
    5. The Coordinator Node can build the Validation Stamp and compute the replication tree. Then it transmits them to the Cross Validation Nodes.
    6. The Cross Validation Nodes verify the content of the Validation Stamp, sign with or without inconsistencies, and send the Cross Validation Stamp to all the validation nodes involved.
    7. Once all the Cross Validation Stamps are received and if the Atomic Commitment is reached, the replication phase starts.
    8. Validation nodes send the transaction to the respective storage nodes:
    • Storage nodes responsible for the new transaction chain
    • Storage nodes responsible for the outputs of the transactions (transaction's movements addresses, recipients)
    • Storage nodes responsible for the Beacon Chain
    1. The storage for the new transaction chain will notify the validation nodes and the Welcome Node about the replication, and the Welcome Node will notify the client about it.
    + \ No newline at end of file diff --git a/learn/arch-consensus/proof-of-work/index.html b/learn/arch-consensus/proof-of-work/index.html index 42363a86c..83aa03d24 100644 --- a/learn/arch-consensus/proof-of-work/index.html +++ b/learn/arch-consensus/proof-of-work/index.html @@ -4,7 +4,7 @@ Proof of Work | Archethic - + @@ -12,8 +12,8 @@

    Proof of Work

    Others blockchains are using the concept of Proof of Work to ensure an unpredictable and pseudo random election of block validation (mining). But this technique requires a lot of energy consumption and can still be subject to exploit by HashRate control.

    Archethic Blockchain is using a new kind of Proof of Work to ensure the authenticity of the transaction origination devices. This allows the additional security requirements on transaction validation like:

    • prohibit any transaction even in case of key theft
    • allow user to consult their balance on any smartphone, but generate a transaction only on a trusted device
    • enable the organizers of an election to ensure biometric identity of a voter

    The Proof Of Work consists of finding the right public key associated to the Origin Signature of the transaction -from a list of public keys known by the network.

    This verification is performed during the Validation Stamp creation by the Coordinator Node and ensure the device is authorized to generate the transaction

    Just like any other actor into the system, devices will have their own transaction chain allowing them to update their keys.

    info

    Each origin device public keys are grouped by family which helps nodes to determine which set of keys, must be played to produce the Proof of Work. (i.e: software, usb, biometric).

    info

    Each origin device public key is encrypted and renewed by the network ensuring confidentiality and authenticity of devices.

    - +from a list of public keys known by the network.

    This verification is performed during the Validation Stamp creation by the Coordinator Node and ensure the device is authorized to generate the transaction

    Just like any other actor into the system, devices will have their own transaction chain allowing them to update their keys.

    info

    Each origin device public keys are grouped by family which helps nodes to determine which set of keys, must be played to produce the Proof of Work. (i.e: software, usb, biometric).

    info

    Each origin device public key is encrypted and renewed by the network ensuring confidentiality and authenticity of devices.

    + \ No newline at end of file diff --git a/learn/cryptography/hardware-root-of-trust/index.html b/learn/cryptography/hardware-root-of-trust/index.html index fc1f8f806..1153b8aad 100644 --- a/learn/cryptography/hardware-root-of-trust/index.html +++ b/learn/cryptography/hardware-root-of-trust/index.html @@ -3,14 +3,14 @@ -Harware Root of Trust | Archethic - +Hardware Root of Trust | Archethic +
    -

    Harware Root of Trust

    What is hardware root of trust?

    A hardware root of trust is the foundation on which all secure operations of a computing system depend. It contains the keys used for cryptographic functions and enables a secure boot process. It is inherently trusted, and therefore must be secure by design. The most secure implementation of a root of trust is in hardware making it immune from malware attacks. As such, it can be a stand-alone security module or implemented as security module within a processor or system on chip (SoC) (source).

    Why hardware root of trust for Archethic?

    The ability to sustain the network even with more than 90% of malicious nodes effectively comes from 2 very important steps.

    • Identifying the malcious nodes effectively and preemptively.
    • Banish and effectively ban the malicious nodes.

    While the first part involves complex alogrithms implemented in the software layer, the second part involves uniquely tying node's identity to its hardware. This way, the malicious node, once identified and banished, cannot rejoin the network by changing its representive identity.

    This second part can be effectively achieved using the concept of hardware root of trust. With hardware root of trust, a unique keypair is injected in the into the wafer at the time of fabrication, thus tying the identity with this keypair. Once, this keypair is certified, the node cannot effectively use another keypair, once banished, thus eliminating identity forgery. This is, in principle, possible due to fact once a key-pair is injected, it cannot be changed for that particular hardware.

    Further, with this hardware root of trust, we can also ensure that no two nodes have the same public key tied to their identity. Thus, using hardware root of trust, contributes significantly to the increased miner security and makes the Archethic blockchain more resilient against bad actors.

    Implementation of Hardware Root of Trust (HRT)

    To implement hardware root of Trust, within Archethic ecosystem, two technologies have been used.

    • Trusted Platform Module (TPM 2.O)
    • Yubico Yubikey (PIV)

    Both of these technologies are based on Secure Element (SE) which are certified under Common Criteria (CC).

    Placement of HRT in Archethic Blockchain/Ecosystem

    Along with the initial software crypto library, the HRT is now the de-facto crypto engine for all the cryptographic operations carried out by Archethic miners. This includes signature (ECC), verification (ECC), encryption (AES), decryption (AES), hashing (SHA2/SHA3), etc.

    The Archethic node software delegates all the cryptography operations to the HRT libraries of TPM and Yubikey, which are specially developed for this purpose by Uniris.

    Given the latency constraints, a new hybrid mechanism have been developed involving usage of software crypto library and the HRT libraries (TPM/Yubikey). In this approach, the root of trust - crypto operation are still HRT based while the stem and branches will be software crypto library based.

    The advantages of this mechanism over pure HRT based mechanism is:

    • Possiblity of key aggregation
    • Freedom of using newer elliptic curves that are not yet supported by TPM/Yubikey.
    • Scalability without impacting security and performance.
    - +

    Hardware Root of Trust

    What is hardware root of trust?

    A hardware root of trust is the foundation on which all secure operations of a computing system depend. It contains the keys used for cryptographic functions and enables a secure boot process. It is inherently trusted, and therefore must be secure by design. The most secure implementation of a root of trust is in hardware making it immune from malware attacks. As such, it can be a stand-alone security module or implemented as security module within a processor or system on chip (SoC) (source).

    Why hardware root of trust for Archethic?

    The ability to sustain the network even with more than 90% of malicious nodes effectively comes from 2 very important steps.

    • Identifying the malcious nodes effectively and preemptively.
    • Banish and effectively ban the malicious nodes.

    While the first part involves complex alogrithms implemented in the software layer, the second part involves uniquely tying node's identity to its hardware. This way, the malicious node, once identified and banished, cannot rejoin the network by changing its representive identity.

    This second part can be effectively achieved using the concept of hardware root of trust. With hardware root of trust, a unique keypair is injected in the into the wafer at the time of fabrication, thus tying the identity with this keypair. Once, this keypair is certified, the node cannot effectively use another keypair, once banished, thus eliminating identity forgery. This is, in principle, possible due to fact once a key-pair is injected, it cannot be changed for that particular hardware.

    Further, with this hardware root of trust, we can also ensure that no two nodes have the same public key tied to their identity. Thus, using hardware root of trust, contributes significantly to the increased miner security and makes the Archethic blockchain more resilient against bad actors.

    Implementation of Hardware Root of Trust (HRT)

    To implement hardware root of Trust, within Archethic ecosystem, two technologies have been used.

    • Trusted Platform Module (TPM 2.O)
    • Yubico Yubikey (PIV)

    Both of these technologies are based on Secure Element (SE) which are certified under Common Criteria (CC).

    Placement of HRT in Archethic Blockchain/Ecosystem

    Along with the initial software crypto library, the HRT is now the de-facto crypto engine for all the cryptographic operations carried out by Archethic miners. This includes signature (ECC), verification (ECC), encryption (AES), decryption (AES), hashing (SHA2/SHA3), etc.

    The Archethic node software delegates all the cryptography operations to the HRT libraries of TPM and Yubikey, which are specially developed for this purpose by Uniris.

    Given the latency constraints, a new hybrid mechanism have been developed involving usage of software crypto library and the HRT libraries (TPM/Yubikey). In this approach, the root of trust - crypto operation are still HRT based while the stem and branches will be software crypto library based.

    The advantages of this mechanism over pure HRT based mechanism is:

    • Possiblity of key aggregation
    • Freedom of using newer elliptic curves that are not yet supported by TPM/Yubikey.
    • Scalability without impacting security and performance.
    + \ No newline at end of file diff --git a/learn/cryptography/index.html b/learn/cryptography/index.html index 037816c20..ecc549877 100644 --- a/learn/cryptography/index.html +++ b/learn/cryptography/index.html @@ -4,18 +4,18 @@ Cryptography | Archethic - +
    -

    Cryptography

    Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.

    Quantum-Safe

    Non-Discolure of public keys

    Archethic TransactionChains uses a non-disclosure mechanism of public keys using chains of cryptography. +

    Cryptography

    Archethic network through the usage of TransactionChains is leveraging an adaptative and quantum-safe cryptography.

    Quantum-Safe

    Non-Discolure of public keys

    Archethic TransactionChains uses a non-disclosure mechanism of public keys using chains of cryptography. Each transaction contains an address, which is a hash of the next public key and the previous public key. Therefore, we don't have way to know which public key is used for a given transaction until a next one is coming.

    Origin Devices

    In order to build a transaction, we need to known multiple temporary private keys a key to provide a signature based on the previous private key and a signature based on an origin device private key. Origin device can be categorized in several families: software, hardware, biometrics. (See Proof of Work)

    So to be allowed to generate a transaction, the task of a quantum computer potentially capable of breaking private keys should be considerably more complex

    Adaptative

    In order to be backward compatible and to evolve the network as the cryptographic research progesses and to provide the choice of cryptographic algorithms to people, organizations or countries, Archethic is a versioned cryptography or metadata cryptography.

    While this word sounds complex, it's not hard to get it.

    Public keys

    Each public key is prepended by some additional bytes to inform some metadata or algorithm versioning. This includes:

    • a byte to indicate the elliptic curve used (i.e Ed25519, NIST, secp256k1)
    • a byte to indicate the origin of the generation (i.e software, hardware, ...)

    Hashes

    Like the public keys, cryptographic hashes are also versioned with a byte of to identify which algorithms is used (i.e SHA-256). -This information helps to determine the length of a hash and to perform some checks for the validition and for the encoding/decoding of the data.

    Transaction addresses

    While transaction addresses are often represented as hashes, Archethic provide a new level of information inside the transaction's address. A byte is prepending the hash with an information regarding the elliptic curve used to generate the public key related.

    You may be wondering why would we need this kind of information.

    So, in order to be really adaptative and based on the non-disclosure mechanism offered by the transaction chain, we need to know which elliptic was used for a previous transaction to be able to reproduce the previous public key.

    For example, imagine we have a transaction address encoded in that way, using a secp256k1 elliptic

    Hash algorithmDigest
    0101309F1C765967AC7
    info

    Reminder: a transaction address is the hash of the next public key

    For a new transaction coming after, if now, we want to use the ed25519 elliptic curve, we need to know which was used before. For this reason, we have two possibility:

    • keep an history of the previous transaction and curves (not really pratical and not scalable)
    • add a byte in front of each transaction's address to the curve used

    So with a new model:

    Curve typeHash algorithmDigest
    010101309F1C765967AC7

    Now we are able to compute the previous public key, with the curve secp256k1 and continues with new elliptic curve along the way.

    This will be even more pratical with On-Chain Decentralized Wallet (Keychain) to support multiple derived keys and custom algorithms.

    Default algorithms

    Except for hardware compatability issues (HSM, etc..), EdDSA signatures, Curve25519 and AES256 will be used by default on the network.

    - +This information helps to determine the length of a hash and to perform some checks for the validition and for the encoding/decoding of the data.

    Transaction addresses

    While transaction addresses are often represented as hashes, Archethic provide a new level of information inside the transaction's address. A byte is prepending the hash with an information regarding the elliptic curve used to generate the public key related.

    You may be wondering why would we need this kind of information.

    So, in order to be really adaptative and based on the non-disclosure mechanism offered by the transaction chain, we need to know which elliptic was used for a previous transaction to be able to reproduce the previous public key.

    For example, imagine we have a transaction address encoded in that way, using a secp256k1 elliptic

    Hash algorithmDigest
    0101309F1C765967AC7
    info

    Reminder: a transaction address is the hash of the next public key

    For a new transaction coming after, if now, we want to use the ed25519 elliptic curve, we need to know which was used before. For this reason, we have two possibility:

    • keep an history of the previous transaction and curves (not really pratical and not scalable)
    • add a byte in front of each transaction's address to the curve used

    So with a new model:

    Curve typeHash algorithmDigest
    010101309F1C765967AC7

    Now we are able to compute the previous public key, with the curve secp256k1 and continues with new elliptic curve along the way.

    This will be even more pratical with On-Chain Decentralized Wallet (Keychain) to support multiple derived keys and custom algorithms.

    Default algorithms

    Except for hardware compatability issues (HSM, etc..), EdDSA signatures, Curve25519 and AES256 will be used by default on the network.

    + \ No newline at end of file diff --git a/learn/decentralized-id/index.html b/learn/decentralized-id/index.html index 5411cdfaf..8a9c4aa03 100644 --- a/learn/decentralized-id/index.html +++ b/learn/decentralized-id/index.html @@ -4,14 +4,14 @@ Decentralized Identity | Archethic - +

    Decentralized Identity

    Identity

    Archethic was designed mainly to resolve one big issue that we are facing right now in the technology: provide an secure and easy way to identify ourselves.

    Decentralized identity avoids the need of entrusting one's identity to a third party, who might find itself in a conflict of interest and exploit our identity without our knowledge. -This person retains sole control of his/her identity, which is stored on a multitude of nodes ensuring its durability and integrity.

    Hence Archethic's decentralized identity is brought by the Archethic transaction chain which enables authorization, end to end encryption and upgradability in the decentralized network.

    The identity is or will be compatible and interoperable with others standard in the industry such as W3C DID, FIDO2, WebAuthn, etc.

    Password-less

    While digital identity is being standardized, we also designed a new way to connect and access this identy: password-less authentication.

    Embedded in the blockchain, on-chain wallet access allows anyone to identify themselves using several methods: biometric, hardware (usb, ledger), or event password. (We don't want to prevent passphrase to being use, just keep it as the lowest secure authentication method).

    For this reason we have created a Keychain, a new way to access our private keys for several services easily.

    The idea of an on-chain wallet, end to end encrypted wallet, makes the password-less possible in a near future.

    - +This person retains sole control of his/her identity, which is stored on a multitude of nodes ensuring its durability and integrity.

    Hence Archethic's decentralized identity is brought by the Archethic transaction chain which enables authorization, end to end encryption and upgradability in the decentralized network.

    The identity is or will be compatible and interoperable with others standard in the industry such as W3C DID, FIDO2, WebAuthn, etc.

    Password-less

    While digital identity is being standardized, we also designed a new way to connect and access this identy: password-less authentication.

    Embedded in the blockchain, on-chain wallet access allows anyone to identify themselves using several methods: biometric, hardware (usb, ledger), or event password. (We don't want to prevent passphrase to being use, just keep it as the lowest secure authentication method).

    For this reason we have created a Keychain, a new way to access our private keys for several services easily.

    The idea of an on-chain wallet, end to end encrypted wallet, makes the password-less possible in a near future.

    + \ No newline at end of file diff --git a/learn/decentralized-id/keychain/index.html b/learn/decentralized-id/keychain/index.html index f172e90c8..3d314c3e0 100644 --- a/learn/decentralized-id/keychain/index.html +++ b/learn/decentralized-id/keychain/index.html @@ -4,14 +4,14 @@ Keychain | Archethic - +

    Keychain

    Archethic's keychain is new concept to make wallet accessible, configurable and interoperable with several service providers and why not multi chains.

    It describes wallet which is stored encrypted on chain, as only you and the authorized access or person you allowed, to be able to decrypt and build transactions from it.

    Key generation

    Technically speaking, this wallet - also referenced as Decentralized Identity - is made up of randomly generated seed (root key) from which it's possible to generate all keys according to a path of derivation.

    So for any access to a service or an application, a key will be generated on the fly from the seed (root key) and the first public key associated with a service or an application.

    Thus allowing creating an infinite number of identities without even having to store related keys.

    End to end encryption

    While this wallet or keychain being on-chain, it still remains secure as no other party (at least non authorized) can access with service keys.

    This is possible as we are using end to end encryption and elliptic curve cryptography.

    Each keychain/wallet generated is embedded into a transaction encrypted using an AES key itself encrypted with a list of authorized keys or authenticated access (biometric, smartphone, USB, etc.)

    Once generated, we also create transactions for the access of this keychain. -So in other words, each access have its own transaction chain, where the keychain's location is encrypted as well.

    Then in order to retrieve or access your keychain, your authentication method should retrieve its transaction chain, then decrypt the keychain's location, download the keychain transaction and finally decrypt the keychain with the right AES key.

    This avoids disclosure of critical information and prevents unauthorized access.

    Standard compliance

    Archethic decentralized identity and keychain concepts is also compliant with industry standard in the field of online and digital identity.

    Then once created, the keychain embeds on-chain a representation of a W3C DID (Decentralized Identitifier) document which help the discovery of your key materials.

    It displays a JSON message with the list of public key you own and you allow other parties to interact with, such as your main Archethic public key or your Amazon public for example.

    This coupled with verifiable credentials and WebAuthn (Website authentication without password) make the complete usage of decentralized identity possible.

    Customization

    Because this wallet should be your digital identity security, we can customize the services and way the keys are generated.

    Each service in the keychain is joined with other customizable property:

    • derivation path: this will inform how the key will be generated. For example, the default one is m/650'/0/0 informing we are using Archethic derivation method (650 instead of the usual BIP44) and then the 0/0 indicates the first account and the first key of the chain.

    But nothing prevent to add something like: m/650'/Amazon/0 or m/650'/JohnDoeUCO@!/0

    • curve: this indicates during the derivate key which elliptic curve we want to use. (Ed25519, NIST, Bitcoin curve)

    • hash algorithm: this is used in the transaction address generation from the key produced, by default it's associated to sha256 but if you want higher security you could use something like sha3-512 o blake2b

    - +So in other words, each access have its own transaction chain, where the keychain's location is encrypted as well.

    Then in order to retrieve or access your keychain, your authentication method should retrieve its transaction chain, then decrypt the keychain's location, download the keychain transaction and finally decrypt the keychain with the right AES key.

    This avoids disclosure of critical information and prevents unauthorized access.

    Standard compliance

    Archethic decentralized identity and keychain concepts is also compliant with industry standard in the field of online and digital identity.

    Then once created, the keychain embeds on-chain a representation of a W3C DID (Decentralized Identitifier) document which help the discovery of your key materials.

    It displays a JSON message with the list of public key you own and you allow other parties to interact with, such as your main Archethic public key or your Amazon public for example.

    This coupled with verifiable credentials and WebAuthn (Website authentication without password) make the complete usage of decentralized identity possible.

    Customization

    Because this wallet should be your digital identity security, we can customize the services and way the keys are generated.

    Each service in the keychain is joined with other customizable property:

    • derivation path: this will inform how the key will be generated. For example, the default one is m/650'/0/0 informing we are using Archethic derivation method (650 instead of the usual BIP44) and then the 0/0 indicates the first account and the first key of the chain.

    But nothing prevent to add something like: m/650'/Amazon/0 or m/650'/JohnDoeUCO@!/0

    • curve: this indicates during the derivate key which elliptic curve we want to use. (Ed25519, NIST, Bitcoin curve)

    • hash algorithm: this is used in the transaction address generation from the key produced, by default it's associated to sha256 but if you want higher security you could use something like sha3-512 o blake2b

    + \ No newline at end of file diff --git a/learn/ecosystem/index.html b/learn/ecosystem/index.html index 14c72d87a..63faa2000 100644 --- a/learn/ecosystem/index.html +++ b/learn/ecosystem/index.html @@ -4,14 +4,14 @@ Ecosystem | Archethic - +

    Ecosystem

    The technical and functional parameters that make Archethic unique and ready for global adoption:

    Limitless network

    Archethic is outperforming the market standards with some key indicators:

    • a scalability >1 Million TPS
    • a validation time < 5 sec
    • capability to handle up to 90% maliciousness
    • 3.6 billion times less energy consumption than Bitcoin and 0.1% transaction fee
    Super Fast & Limitless

    Without impacting the global validation, the heuristic polymorphic replication provides a linear increase of the capacity (in storage and number of validations) allowing us to reach 1 MILLION TPS transactions per second.

    Safest

    Beyond just PoW (51%) or dBFT (66%), Archethic implements a consensus that can handle 90% of malicious miners and decentralized security based on the standards of aviation safety (fraud risk less than 10-9).

    Earth Friendly

    3.6 Billion times less energy consumption than Bitcoin by using the ARCH consensus based on heuristic miners' election and a polymorphic worldwide replication. Each transaction only needs 0.42w of energy.

    Unlimited applications

    Our blockchain platform aims to replace and to improve all current applications with a comprehensive and open ecosystem, allowing people to move from the trust imposed by centralized to a decentralized system.

    • AEWeb: One app for website maintenance, security, handling and costing on the blockchain at a fraction of the current hosting costs!
    • AEMail: Email Redefined! An all-in-one email, messaging, wallet and payments app that provides the full suite for a user. Coming soon
    • AENFT: Archethic embeds in its transaction structure NFTs and are therefore native to the network. However a decentralized marketplace reimagined in collaboration with artists will come soon !
    • And so more...

    Decentralized Identity

    Your identity is your right. The security and threat issues that centralized systems pose helped us realize that self-sovereign identity is needed now more than ever.

    With Archethic, you can access your identity but no one owns it. -Have you ever wondered how many times your identity is exploited without your knowledge by centralized monopolies or even your favorite merchant site?

    The world wants you to believe that ownership doesn’t matter. We are here to change that narrative.

    Identity is not just about ownership but control and freedom.

    Archethic provides interoperable decentralized identity management using both the traditional key management as well as our crypto-biometrics key management solution.

    Enter the era of innovation and decentralized identity that is yours to own and control.

    Governance

    Archethic Foundation is a non-profit organization whose vision is the promotion of the Archethic Public Blockchain Protocol.

    It considers Archethic as a project – where a solid technical foundation is a key to winning the marathon race to global adoption. Its role is to sustainably deploy resources that are under control to support the long-term success of Archethic. This long-term success will only be possible with a vibrant decentralized ecosystem.

    To provide an inclusive, generously incentivized, and on-chain Governance, Archethic is based on those four pillars:

    • Decentralized Identity & Proof of Identity: An essential prerequisite for a human-inclusive governance in blockchain is the ability of the ecosystem to uniquely identify a person and to integrate that person into a relevant group.

    • Modifiable: Each algorithm can be updated through transactions allowing the network to version (git...) all updates, and also to force each update according to a specific governance (voting quorum, veto right...).

    • On-Chain Governance: The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will immediately apply the decided updates along with the ability to test the impact of a new feature in real-time.

    • Generous Incentives: Financing the work associated with updates, new features, and contributions is an essential element. The network has a reserve of one-third of the tokens for this purpose.

    Open enhancements

    We are an open-source and decentralized protocol which decision involves community votes and suggestions.

    In that sense, we have created Archethic Improvement Proposals (AEIPs) to offer opportunity to contribute in the project by proposing technical, informational and process-based enhancements.

    If you are interested, please take on the AEIP repository

    - +Have you ever wondered how many times your identity is exploited without your knowledge by centralized monopolies or even your favorite merchant site?

    The world wants you to believe that ownership doesn’t matter. We are here to change that narrative.

    Identity is not just about ownership but control and freedom.

    Archethic provides interoperable decentralized identity management using both the traditional key management as well as our crypto-biometrics key management solution.

    Enter the era of innovation and decentralized identity that is yours to own and control.

    Governance

    Archethic Foundation is a non-profit organization whose vision is the promotion of the Archethic Public Blockchain Protocol.

    It considers Archethic as a project – where a solid technical foundation is a key to winning the marathon race to global adoption. Its role is to sustainably deploy resources that are under control to support the long-term success of Archethic. This long-term success will only be possible with a vibrant decentralized ecosystem.

    To provide an inclusive, generously incentivized, and on-chain Governance, Archethic is based on those four pillars:

    • Decentralized Identity & Proof of Identity: An essential prerequisite for a human-inclusive governance in blockchain is the ability of the ecosystem to uniquely identify a person and to integrate that person into a relevant group.

    • Modifiable: Each algorithm can be updated through transactions allowing the network to version (git...) all updates, and also to force each update according to a specific governance (voting quorum, veto right...).

    • On-Chain Governance: The code used by the nodes is hosted by the Blockchain itself, so the network is certain that all the nodes will immediately apply the decided updates along with the ability to test the impact of a new feature in real-time.

    • Generous Incentives: Financing the work associated with updates, new features, and contributions is an essential element. The network has a reserve of one-third of the tokens for this purpose.

    Open enhancements

    We are an open-source and decentralized protocol which decision involves community votes and suggestions.

    In that sense, we have created Archethic Improvement Proposals (AEIPs) to offer opportunity to contribute in the project by proposing technical, informational and process-based enhancements.

    If you are interested, please take on the AEIP repository

    + \ No newline at end of file diff --git a/learn/fee/index.html b/learn/fee/index.html index b8d2687c4..11397f21b 100644 --- a/learn/fee/index.html +++ b/learn/fee/index.html @@ -4,7 +4,7 @@ Transaction fees | Archethic - + @@ -12,8 +12,8 @@

    Transaction fees

    Archethic Blockchain is using specific heuristic algorithms to ensure the best transaction's distribution.

    The fees are calculated according to the real costs of the network (size, complexity) and is based on a minimal fee ($0.01) indexed to the real UCO's price (using Oracle Chain)

    During the transaction validation, the entire fee is burned to make the UCO more rare. This programmable destruction of the UCO ensures a deflation and increases the value of each token.

    This way a fair reward mechanism is put in place for nodes regarding their work and their availability.

    Calculation

    The transaction's fee computation is based on some properties:

    • Minimum fee: $0.01 of the current UCO price
    • Number of recipient (for transfers or smart contractcalls)
      • 1: no more additional fee
      • > 1: each additional recipient will have an additional cost of $0.1 UCO(Because sending transaction to multiple leverages more resources in term of network and storage, as the transaction must be replicated in all the chain targets)
    • Size of the transaction: each stored byte will cost 10-8 of the current UCO's price
    • Number of replicas
    • Complexity of the smart contract (Coming soon)

    Overall formula:

    Transaction Fee = minimum_fee + fee_for_storage(size * nb_replicas) + fee_for_complexity + cost_per_recipient
    info

    Regular transfer of UCO to single person would cost around ~$0.01 (+/- additional information + nb of replicas)

    danger

    The $0.01 cost is static only as minimum fee for any transaction. Depending on the number of recipients, size, etc. the fee will increase, as it requires more work for the network

    Transaction's type particularities

    Network

    All the transactions with a transaction's type such as node, node shared secrets, oracle, beacon chain, etc. don't cost fee, as their intent is only for network management.

    Keychain

    Transactions to manage keychain for creation, updates or add new access don't cost fee, as this will be blockage to the adoption and there are just meant to ease the wallet management.

    Token

    Archethic supports a token mining through a given type of transaction token. -Because during this step validation nodes have to perform some additional work to create new unspent transaction outputs (UTXOs) and deliver them (if multiple - for example in a collection creation).

    Hence an additional fee is computed based on the number of UTXO to create.

    • Fungible tokens: there will only cost the minimum fee: $0.01 - as it's like doing some UCO transfer

    • Non fungible tokens: These are tokens which each collection item have some unique properties and well identified. So a list of UTXO is created for each unique collection items. This creation will consume resources of computation, networking and storage.

    An additional fee is determined in that case through the following formula:

    (log10(number of utxos) + 1) * number of utxos * minimum fee

    So the transaction fee will gradually increase according of the number of unique token to create (= new UTXO)

    - +Because during this step validation nodes have to perform some additional work to create new unspent transaction outputs (UTXOs) and deliver them (if multiple - for example in a collection creation).

    Hence an additional fee is computed based on the number of UTXO to create.

    • Fungible tokens: there will only cost the minimum fee: $0.01 - as it's like doing some UCO transfer

    • Non fungible tokens: These are tokens which each collection item have some unique properties and well identified. So a list of UTXO is created for each unique collection items. This creation will consume resources of computation, networking and storage.

    An additional fee is determined in that case through the following formula:

    (log10(number of utxos) + 1) * number of utxos * minimum fee

    So the transaction fee will gradually increase according of the number of unique token to create (= new UTXO)

    + \ No newline at end of file diff --git a/learn/governance/index.html b/learn/governance/index.html index 665b5378c..b766958e5 100644 --- a/learn/governance/index.html +++ b/learn/governance/index.html @@ -4,7 +4,7 @@ Governance | Archethic - + @@ -19,8 +19,8 @@ immediately apply the decided updates (via Elixir hot-reload modules and from the information stored in the "transaction content" area).

    The Archethic Blockchain is also equipped with the ability to test the impact of a new feature in real-time.

    Each update is stored in the form of a specific transaction chain allowing the network to version (git...) all updates, but also to force each update according to a specific governance (voting quorum, veto right...).

    Details

    Archethic Blockchain is using code proposals to have a way to upgrade current blockchain code in a automated and tested way.

    The idea behind the governance on Archethic blockchain is to be able to audit, test and apply code proposals in a automatic, indepedent and secure way across the deployed network.

    1. The process begins when a contributor creates a code proposal within a transaction. This code proposal will be checked to ensure that it follows the proper form (contains the correct fields for example).
    2. After the code proposal is verified, we start going over the details of the proposal and verifying that it contains correct version, valid upgrade terms and valid changes for example.
    3. When the code proposal is considered valid, and after gathering enough approvals from members of the technical council, we start the Continuous Integration phase. The role of this part is to check that the proposal passes the tests, security checks and code style.
    4. If the phase returns a success then we start the Continuous Deployment phase. The aim of this part is to test the proposal in a real world settings by deploying it into a testnet with various nodes performing multiple distinct functions.
    5. After the last phase succeeded, we launch the next phase which consists of upgrading the actual nodes to the new versions and finally rewarding all the actors that participated in the global process.

    Incentives

    Financing of the work associated with updates, new features, and contributions is an essential element. -The network has a reserve of one-third of the tokens (with progressive distribution constraints) for this purpose.

    - +The network has a reserve of one-third of the tokens (with progressive distribution constraints) for this purpose.

    + \ No newline at end of file diff --git a/learn/index.html b/learn/index.html index 889a8bf94..b48c56f5e 100644 --- a/learn/index.html +++ b/learn/index.html @@ -4,15 +4,15 @@ Archethic introduction | Archethic - +

    Archethic introduction

    Archethic is the next generation of Blockchain which provides a truly decentralized limitless network, using TransactionChain and a new consensus named ARCH (Atomic Rotating Commitment Heuristic), to be the most secure and scalable decentralized network.


    Archethic's network is built to overcome the issues faced by other blockchain solutions:

    • Support of billions of transactions
    • Linear scalability
    • Low-energy consumption
    • Mass adoption
    • Low transaction fees

    This document aims to provide information and resources about the technology and the usage to build new decentralized applications on top of Archethic.

    Motivations

    Given the universal constraints both material and physical, billions of transactions cannot be integrated into a single branch of chained blocks.

    Similarly, regardless of the consensus method, it is not possible to ensure universal consensus on billions of transactions by polling all nodes of the network.

    Finally, the functioning of current distributed networks (P2P) is such that it is not possible to guarantee the freshness (consistency) of data on an asynchronous network, -unless the network is slowed down excessively by the calculation of the nonce of the block (PoW), as is the case with other blockchain networks.

    Innovations

    Archethic Blockchain solved this issues in the following way:

    TransactionChains
    Instead of chained blocks of transactions, each block is reduced to its atomic form.
    Therefore, each block contains only one transaction and each transaction will be chained in its own chain.
    Real Sharded Network
    Archethic is using sharding technology to ensure distribution of transaction processing and storage to provide a very high scalability.
    Next-generation consensus
    Archethic is using an universal consensus called ARCH based on Atomic Commitment using Heuristic Rotating election of a tiny set of validation nodes providing the highest level of security
    Optimized Replication and Self Repair
    Every transaction will be stored in a deterministic way on a set of nodes using a sharded storage layer.
    Thus, every node will autonomously know all the nodes for a given transaction and ease the network by only interrogating the closest elected nodes.
    Distributed network without bottleneck
    Archethic rebuilds the entire P2P layer to provide an efficient messaging between peers based on the Supervised Multicast using self discovery mechanism from incoming connection and network transactions.
    The system is able to maintain a qualified vision of the network while limiting the generation of requests.
    - +unless the network is slowed down excessively by the calculation of the nonce of the block (PoW), as is the case with other blockchain networks.

    Innovations

    Archethic Blockchain solved this issues in the following way:

    TransactionChains
    Instead of chained blocks of transactions, each block is reduced to its atomic form.
    Therefore, each block contains only one transaction and each transaction will be chained in its own chain.
    Real Sharded Network
    Archethic is using sharding technology to ensure distribution of transaction processing and storage to provide a very high scalability.
    Next-generation consensus
    Archethic is using an universal consensus called ARCH based on Atomic Commitment using Heuristic Rotating election of a tiny set of validation nodes providing the highest level of security
    Optimized Replication and Self Repair
    Every transaction will be stored in a deterministic way on a set of nodes using a sharded storage layer.
    Thus, every node will autonomously know all the nodes for a given transaction and ease the network by only interrogating the closest elected nodes.
    Distributed network without bottleneck
    Archethic rebuilds the entire P2P layer to provide an efficient messaging between peers based on the Supervised Multicast using self discovery mechanism from incoming connection and network transactions.
    The system is able to maintain a qualified vision of the network while limiting the generation of requests.
    + \ No newline at end of file diff --git a/learn/oracle-chain/index.html b/learn/oracle-chain/index.html index f6e1a188a..9024d2123 100644 --- a/learn/oracle-chain/index.html +++ b/learn/oracle-chain/index.html @@ -4,13 +4,13 @@ OracleChain | Archethic - +
    -

    OracleChain

    Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.

    It aims to gather external data to be used inside the network or the smart contract layer.

    How is it work ?

    OracleChain behaves a bit like the BeaconChain except the transaction on the chain are generated every 10min but only when there is a new data updated.

    It's using a long-polling mechanism to get data from external sources and submit a transaction through ARCH Consensus.

    By using ARCH consensus, we ensure the atomic commitment of the data submitted and ensure validity of the information written into the transaction.

    Each node receives the new transaction from the OracleChain and can apply behaviors from this new data and notify smart contracts which depends on oracle updates.

    Services

    The list of services supported by the OracleChain:

    • UCO Price Feed: fetching UCO token price from Coingecko in USD/EUR currency and is used for the:
      • Transaction Fee algorithm
      • Auto reward of nodes which didn't receive enough mining rewards
    - +

    OracleChain

    Archethic Blockchain supports Off-Chain communication through a dedicated transaction chain called OracleChain.

    It aims to gather external data to be used inside the network or the smart contract layer.

    How is it work ?

    OracleChain behaves a bit like the BeaconChain except the transaction on the chain are generated every 10min but only when there is a new data updated.

    It's using a long-polling mechanism to get data from external sources and submit a transaction through ARCH Consensus.

    By using ARCH consensus, we ensure the atomic commitment of the data submitted and ensure validity of the information written into the transaction.

    Each node receives the new transaction from the OracleChain and can apply behaviors from this new data and notify smart contracts which depends on oracle updates.

    Services

    The list of services supported by the OracleChain:

    • UCO Price Feed: fetching UCO token price from Coingecko in USD/EUR currency and is used for the:
      • Transaction Fee algorithm
      • Auto reward of nodes which didn't receive enough mining rewards
    + \ No newline at end of file diff --git a/learn/p2p/bootstrapping/index.html b/learn/p2p/bootstrapping/index.html index 185d93b81..183ecaf38 100644 --- a/learn/p2p/bootstrapping/index.html +++ b/learn/p2p/bootstrapping/index.html @@ -4,15 +4,15 @@ Bootstrapping | Archethic - +

    Bootstrapping

    Archethic Blockchain by using Network Transaction and Supervised Multicast, requires some actions to be performed when a node is bootstrapping. These operations will ensure synchronization and P2P awareness.

    Joining

    When a node joins the network for the first time, it will request from a list of preconfigured nodes to reach (called "bootstrapping seeds"), the closest nodes from its position.

    Then, it will generate a first node transaction including as data: ip, port, protocol, reward address, key certificate (to ensure the key is coming from a secure element) -Once the network will attest and verify its transaction, the node will be able to start a SelfRepair process

    Updates

    When a node rejoins the network after some time, depending on if its previous data expired, it will generate a new transaction with the new information

    Synchronization

    Once the transaction is validated, the node will start by requesting the list of nodes.

    Then, it will start the Self-Repair sequence to get and synchronize the missing transactions and publish its end of sync to the network.

    By this way, the entire will know the existence the readiness of this node.

    - +Once the network will attest and verify its transaction, the node will be able to start a SelfRepair process

    Updates

    When a node rejoins the network after some time, depending on if its previous data expired, it will generate a new transaction with the new information

    Synchronization

    Once the transaction is validated, the node will start by requesting the list of nodes.

    Then, it will start the Self-Repair sequence to get and synchronize the missing transactions and publish its end of sync to the network.

    By this way, the entire will know the existence the readiness of this node.

    + \ No newline at end of file diff --git a/learn/p2p/index.html b/learn/p2p/index.html index 6782e1175..eb0586439 100644 --- a/learn/p2p/index.html +++ b/learn/p2p/index.html @@ -4,7 +4,7 @@ P2P | Archethic - + @@ -15,8 +15,8 @@ Then through this view, if the node is not considered as available it can pick another node to fetch an information, while data pushing will remain to check/recheck the availability over time.

    Network transaction chains

    Network transaction chains are a way to announce information to the network through consensus and replicated throw all the nodes.

    Other networks may leverage gossip for P2P information, Archethic uses transaction based node information for P2P connectivity and cryptography. So when a node joins/rejoins the network or when its IP/Port/Key changed, a new transaction is disseminated to all the nodes in the network after its validation.

    Then each node knows the entire list of nodes allowed to participate in the network through the use of Node transaction chains. To provide a high level of security and privacy, each connection is encrypted and authenticated by the first node public key known from the transaction chains.

    Beacons Chains

    BeaconChain is a sharded layer able to monitor the entire network and therefore able to snapshot and sample P2P availability/latencies to produce summaries each day to maintain a qualified vision of the network.

    The P2P availability can also be broadcasted to the network in a shorter time range (such a epoch/slot times) to provide a fresher node availability.

    Data propagation

    Archethic uses a sharding and distributed replication. -This property limits the number of information and messages sent through the network to reduce bandwidth and data traffic

    - +This property limits the number of information and messages sent through the network to reduce bandwidth and data traffic

    + \ No newline at end of file diff --git a/learn/p2p/self-repair/index.html b/learn/p2p/self-repair/index.html index d12f9a405..6834771f1 100644 --- a/learn/p2p/self-repair/index.html +++ b/learn/p2p/self-repair/index.html @@ -4,15 +4,15 @@ Self Repair | Archethic - +

    Self Repair

    Archethic Blockchain is using a self-repair mechanism to be able to sync/re-sync missing transactions to be able to restore the state of a node.

    Because Archethic is using a multidimensional sharding, a node needs to execute a self-repair on multiple occasions, to ensure data availability and security:

    • When the node bootstraps
    • When a node goes offline
    • When the code and heuristic algorithms changes

    Identification

    To be able to determine which transactions are missing, for each cycle of repair, a date of last sync is persisted. -Therefore, we can decide from this date, the list of missing BeaconChain transactions to sync. (Reminder: BeaconChain summaries transactions across the entire network each day)

    The Self-Repair will then request BeaconChain storage pools to get the missing transactions from those missing days

    Synchronization

    Because we are using rotating election, nodes need to perform the Storage Node Election to determine if they need to store this transaction.

    In that case, we will get the list of existing storage nodes from the transaction's address to sync and request from the closest nodes the transaction to be replicated.

    Once finalized, a new last date of sync is persisted for the next cycle.

    - +Therefore, we can decide from this date, the list of missing BeaconChain transactions to sync. (Reminder: BeaconChain summaries transactions across the entire network each day)

    The Self-Repair will then request BeaconChain storage pools to get the missing transactions from those missing days

    Synchronization

    Because we are using rotating election, nodes need to perform the Storage Node Election to determine if they need to store this transaction.

    In that case, we will get the list of existing storage nodes from the transaction's address to sync and request from the closest nodes the transaction to be replicated.

    Once finalized, a new last date of sync is persisted for the next cycle.

    + \ No newline at end of file diff --git a/learn/patents/index.html b/learn/patents/index.html index 3a9024d4e..c8d1661ec 100644 --- a/learn/patents/index.html +++ b/learn/patents/index.html @@ -4,7 +4,7 @@ Patents | Archethic - + @@ -17,8 +17,8 @@ Ref: FR3049088 (A1)

    Method of securing transactions through knowledge and through cross-capabilities across a decentralized network

    Cryptographic process to cross-reference the knowledge and capabilities of the devices so as to prohibit any unauthorized operation, renew and permanently forfeit all cryptographic keys of all devices, remove correlation elements of time, value, and actors involved (privacy wheel), initialize cryptographic keys for a decentralized network without using an external device to the system, minimize the exposure of public keys related to private keys of the device, to reset a device and revoke a user.
    Ref: FR3049087 (A1)

    Biometrics

    Method of Biometric Authentication without disclosure through a decentralized network

    A method of not having to reveal all or part of the biometric measurements of an individual - integrating the compensations of the biometric measurements and lifelong morphological adaptability of an individual - never having to store any biometric data or any biometric measurement or a cryptographic key relating to an individual - making it possible to record several fingers of the same individual without disclosure and allowing operations without a network and without an individual having never used any device before.
    Ref: FR3049086 (A1)

    Biometric adaptive authentication device using ultrasound, photographs in visible light of contrast and infrared, without disclosure through a decentralized network

    A Biometric authentication device without any disclosure obtained from ultrasounds and photograph of the venous network of the finger, of the lateral fingerprint of the finger and configured to take a photograph of the infrared intrinsic emission of the finger, to check the heart rate and perform an analysis, Multireferential spectrometry of the finger.
    -Ref: FR3049090 (A1); CN108780501; CN109074478; US2019089539; WO2017162930

    Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements.

    Ref: FR3049093 (A1)

    Device for Biometric ultrasonic testing and vital signs verification.

    Ref: FR3049091 (A1)

    Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis.

    Ref: FR3049092 (A1)

    Hardware

    Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network.

    Ref: FR3049085 (A1)

    Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system.

    Ref: FR3049121 (A1)

    - +Ref: FR3049090 (A1); CN108780501; CN109074478; US2019089539; WO2017162930

    Device for the reproducible positioning of at least one finger of an individual while taking the biometric measurements.

    Ref: FR3049093 (A1)

    Device for Biometric ultrasonic testing and vital signs verification.

    Ref: FR3049091 (A1)

    Device for biometric authentication and reliability of measurements by visible and infrared light photography, spectrometry, and differential analysis.

    Ref: FR3049092 (A1)

    Hardware

    Communication device for communicating with other devices and enabling nearby transactions and creating a mesh network.

    Ref: FR3049085 (A1)

    Mechanical and electrical coupling device to connect to a computer periphery without damaging the host system.

    Ref: FR3049121 (A1)

    + \ No newline at end of file diff --git a/learn/sharding/beacon-chain/explorer/index.html b/learn/sharding/beacon-chain/explorer/index.html index 690f90936..44405d5e0 100644 --- a/learn/sharding/beacon-chain/explorer/index.html +++ b/learn/sharding/beacon-chain/explorer/index.html @@ -4,7 +4,7 @@ Beacon Explorer | Archethic - + @@ -14,8 +14,8 @@ One epoch may have many slots based on the slot timer interval. At each epoch a new transaction is emitted to have a summary of the entire epoch.

    Epoch interval may differ between mainnet, testnet or development. For instance mainnet epoch interval is daily while for testnet it is currently every minute, to ease integration and simulation of the network.

    So in this time interval beacon transactions are sealing the transaction in the current beacon summary transaction and replicates the transactions to other nodes.

    Subset

    Archethic Blockchain have 256 subsets, from 00 to FF [0-255] (two nibbles) as the byte capacity and the first byte of the transaction.

    Process to get transaction notifications

    Beacon Chain will store the transactions in slots and at the beacon summary time all those transactions are summarized and will be replicated among the beacon storage nodes which are elected as storage nodes.

    The day 1 will be the next beacon summary date from the first node enrollment date, which means, if the first node joins on 02/11/2021 10:00:00, the beacon chain date to pull will be 03/11/2021 00:00:00

    The explorer then exposes a pagination based on date, since we can easily reproduce the addresses through a deterministic address generation based on date.

    So from the day 1 until now, we can offer pagination over the beacon summaries.

    Because we are able to have a reproducible storage node election algorithm we can fetch data for a given date -for the right nodes.

    How to get transactions in realtime

    When a client is displaying the beacon chain explorer, a request is sent to the BeaconChain subset in charge of the current slot, to subscribe notifications about transactions replications.

    On the BeaconChain, once a transaction is replicated a subset will enlist it for the next slot to be persisted.

    Then we have the capability to notify subscribed clients (aka explorer nodes) the transaction completion.

    But because Archethic is using a rotating sharding implementation, the nodes involved for a given slot will change over the time, therefore behind the scenes the explorer will subscribe for each new slot to have the latest transactions in a soft real time fashion.

    - +for the right nodes.

    How to get transactions in realtime

    When a client is displaying the beacon chain explorer, a request is sent to the BeaconChain subset in charge of the current slot, to subscribe notifications about transactions replications.

    On the BeaconChain, once a transaction is replicated a subset will enlist it for the next slot to be persisted.

    Then we have the capability to notify subscribed clients (aka explorer nodes) the transaction completion.

    But because Archethic is using a rotating sharding implementation, the nodes involved for a given slot will change over the time, therefore behind the scenes the explorer will subscribe for each new slot to have the latest transactions in a soft real time fashion.

    + \ No newline at end of file diff --git a/learn/sharding/beacon-chain/index.html b/learn/sharding/beacon-chain/index.html index 443c383b3..f27d3a10d 100644 --- a/learn/sharding/beacon-chain/index.html +++ b/learn/sharding/beacon-chain/index.html @@ -4,14 +4,14 @@ Beacon Chain | Archethic - +

    Beacon Chain

    Archethic Blockchain is using Sharding mechanism to ensure scalability in terms of storage and validation.

    But since there is no way in a well sharded and distributed network to know all the transaction in the system, -a Beacon Chain is used to keep a global synchronization and reference.

    Concepts

    Beacon Chain is used as tracer/marker of a global state but to face some scalability issue, Archethic Blockchain is using Sharding also for the Beacon Chain.

    Which means that the Beacon Chain is sharded and divided into subset defined by the transaction's address and a given date.

    For example: a transaction's address starting by 0F for a given day, will not be stored on the same subset as a transaction's address starting by 9F for the same day.

    Transaction tracking and timestamping

    Each time a transaction is validated, the validation nodes will send the transaction to the right Beacon Chain storage nodes, to transmit the address of the transaction and its timestamp.

    For each Beacon Chain interval, a new slot is generated referencing all the transaction during this interval.

    At the end of the day, a transaction chain is formed, and a last transaction is computed to generate a summary of the current day for a given subset.

    Because each transaction has its own storage nodes, Beacon Chains are balanced between the storage nodes to ensure a better scalability and distribution.

    Status and Network Coordinates of nodes

    Beacon Chains also contains network status of the nodes where the public key starts by the Beacon Chain subset.

    The storage nodes in each subset is in charge of:

    • checking the node availabilities
    • gathering networking information such as latency, bandwidth

    At the end of the day, a transaction is formed as well and a last transaction is computed to generate a summary of node availability and network coordinates

    Slot

    Each Beacon Chain is divided during the day into multiple slots, defined by interval (for instance every 10 min).

    Those slot contains the following information:

    • Transaction summaries: timestamping of the validated transactions
      • address: Transaction's address
      • timestamp: Transaction validation time
      • movements addresses: List of outputs addresses of the transaction
    • End of node synchronization: timestamping when a node finished its synchronization
      • node public key: Node's first public key
      • timestamp: Time when the node synchronization ended
    • P2P view:
      • availabilities: binary form of the availability of the sampled nodes for the given subset
      • network statistics: latency and bandwidth of the sampled nodes for the given subset
    - +a Beacon Chain is used to keep a global synchronization and reference.

    Concepts

    Beacon Chain is used as tracer/marker of a global state but to face some scalability issue, Archethic Blockchain is using Sharding also for the Beacon Chain.

    Which means that the Beacon Chain is sharded and divided into subset defined by the transaction's address and a given date.

    For example: a transaction's address starting by 0F for a given day, will not be stored on the same subset as a transaction's address starting by 9F for the same day.

    Transaction tracking and timestamping

    Each time a transaction is validated, the validation nodes will send the transaction to the right Beacon Chain storage nodes, to transmit the address of the transaction and its timestamp.

    For each Beacon Chain interval, a new slot is generated referencing all the transaction during this interval.

    At the end of the day, a transaction chain is formed, and a last transaction is computed to generate a summary of the current day for a given subset.

    Because each transaction has its own storage nodes, Beacon Chains are balanced between the storage nodes to ensure a better scalability and distribution.

    Status and Network Coordinates of nodes

    Beacon Chains also contains network status of the nodes where the public key starts by the Beacon Chain subset.

    The storage nodes in each subset is in charge of:

    • checking the node availabilities
    • gathering networking information such as latency, bandwidth

    At the end of the day, a transaction is formed as well and a last transaction is computed to generate a summary of node availability and network coordinates

    Slot

    Each Beacon Chain is divided during the day into multiple slots, defined by interval (for instance every 10 min).

    Those slot contains the following information:

    • Transaction summaries: timestamping of the validated transactions
      • address: Transaction's address
      • timestamp: Transaction validation time
      • movements addresses: List of outputs addresses of the transaction
    • End of node synchronization: timestamping when a node finished its synchronization
      • node public key: Node's first public key
      • timestamp: Time when the node synchronization ended
    • P2P view:
      • availabilities: binary form of the availability of the sampled nodes for the given subset
      • network statistics: latency and bandwidth of the sampled nodes for the given subset
    + \ No newline at end of file diff --git a/learn/sharding/index.html b/learn/sharding/index.html index b140896f8..af3855ca7 100644 --- a/learn/sharding/index.html +++ b/learn/sharding/index.html @@ -4,7 +4,7 @@ Sharding | Archethic - + @@ -12,8 +12,8 @@

    Sharding

    To become an unlimited decentralized network, Archethic Blockchain is using a feature called Sharding, used to split processing and storage power to ensure a scalable system.

    Thanks to the Transaction Chain paradigm, transactions can be divided into chains, to ensure a concurrent processing as the opposite of traditional blockchains.

    Other new blockchain networks start to use Sharding but sometimes not in a complete form:

    • either storage
    • either validation

    Archethic Blockchain supports a complete sharding scheme for validation and for storage.

    Validation

    Each transaction is validated by a new set of rotating nodes.

    This ensures the distribution of validation and processing, to achieve a linear scalability and a high TPS.

    Because transaction are using the UTXO model, there is no reality out of the transaction, so the network is not subject to issues like:

    • cross shards synchronization
    • state channels communication

    To get the state of a transaction, only the transaction and the transaction inputs will be taken into consideration

    Storage

    After the validation of the transaction, validation nodes will be in charge to send the transaction to several pools of nodes:

    • Transaction Chain Storage Pool: All the transaction associated with the same chain must be replicated on the storage nodes associated with the new transaction's address.
    • I/O Storage Pool: Each validated transaction is replicated on the storage nodes associated with the addresses of the transaction input/outputs:
      • Transaction movements addresses storage pools
      • Node movements public key storage pools
      • Recipients addresses storage pools
    • Beacon Storage Pool: Each transaction address must be replicated on the storage nodes of the associated address subset See BeaconChain

    For each transaction, the Transaction Chain Storage Pool will change, assuring a completed distribution of nodes and the data replication. Nevertheless, nothing prevents the storage nodes to overlap within the chain.

    Rotating Election

    Like the validation nodes election, the storage nodes election is subject to a rotating election. -In other terms, each transaction will have its own shard and storage nodes.

    The storage node election is based on:

    • the address of the transaction
    • the storage nonce: a stable secret known by the network
    • the list of nodes

    This permits any node to perform this computation autonomously to reproduce this list and to request a transaction from the closest node.

    To ensure the best availability of the data, this list is refined by some criteria, such as:

    • P2P availability
    • Geographical distribution
    - +In other terms, each transaction will have its own shard and storage nodes.

    The storage node election is based on:

    • the address of the transaction
    • the storage nonce: a stable secret known by the network
    • the list of nodes

    This permits any node to perform this computation autonomously to reproduce this list and to request a transaction from the closest node.

    To ensure the best availability of the data, this list is refined by some criteria, such as:

    • P2P availability
    • Geographical distribution
    + \ No newline at end of file diff --git a/learn/sharding/replication-attestation/index.html b/learn/sharding/replication-attestation/index.html index 269136d7d..7931def2a 100644 --- a/learn/sharding/replication-attestation/index.html +++ b/learn/sharding/replication-attestation/index.html @@ -4,7 +4,7 @@ Replication attestation | Archethic - + @@ -20,8 +20,8 @@ So for example, the replication can be splitted by levels: [ Main Chain ] -> [ Recipient Chains]

    Then the welcome node will be notified by a validation node with a given number of replica confirmations.

              V1
    / | \
    Chain: S1 S2 S3
    / | \
    Recipient Shards

    Client notifications

    When a transaction is submitted, the welcome node will transfer this transaction to the validation nodes and return a pending status to the client. The client would have to subscribe to notifications about the completion of the transaction. Once the transaction will be validated and the validation nodes by notifing the welcome will notify the clients asynchronously.

    Further improvements

    To reduce the overall size of the attestations and confirmations we can support signature aggregation or cosigning to embed a single transaction with a bitfield -to indicate which nodes signed the transaction replication, which will be signed over by a validation node.

    - +to indicate which nodes signed the transaction replication, which will be signed over by a validation node.

    + \ No newline at end of file diff --git a/learn/token/index.html b/learn/token/index.html index ae55437c5..40e8d73d2 100644 --- a/learn/token/index.html +++ b/learn/token/index.html @@ -4,15 +4,15 @@ Tokens | Archethic - +

    Tokens

    Tokens is an important feature on Archethic. Nowadays, our world is transforming towards digitalisation and tokenization with new use cases and trends (royalties, collection, proof of ownerships, etc.)

    Archethic allows users to create and transaction with an unlimited-defined (custom) token natively.

    Native

    Archethic tokens are considered as native as for developers, there is no need to create smart contract to mint or transfer tokens.

    The transaction's structure supports - by design, asn extension of the ledger model (more than UCO-only transaction)

    All the layer of complexity have been removed to make them efficient and performant.

    Because of this, the transfer of tokens is as simple as a transfer of UCO (just UTXO), making it fast and cheap.

    Standardized

    Archethic's tokens are also unified through specifications to help implementers, developers and users to have a clear understanding of their definition.

    The complete specification is composed of many AEIPs:

    Creation

    In order to create a token, you have to:

    1. set the transaction's type to: token
    2. define in the transaction's content the token's json definition

    The JSON Schema is available on GitHub

    note

    As everything on Archethic, it is a good practice to create a new transaction chain for this token only.

    Fungible

    Example of a token that doesn't allow minting (may never be resupplied):

    {
    "supply": 100000000000, // 1000 tokens
    "decimals": 8, // 1 token == 10⁸
    "type": "fungible",
    "symbol": "TOKEN_SYMBOL",
    "name": "TOKEN_NAME",
    "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}
    }

    Example of a token that allows minting (may be resupplied later):

    {
    "allow_mint": true, // <------------
    "supply": 100000000000, // 100000 tokens
    "decimals": 6, // 1 token == 10⁶
    "type": "fungible",
    "symbol": "TOKEN_SYMBOL",
    "name": "TOKEN_NAME",
    "properties": {"PROPERTY_NAME": "PROPERTY_VALUE"}
    }

    Non-fungible

    There are 2 definitions for the NFT:

    1. either for a single token
    2. either for a collection of tokens
    info

    NFTs always have 8 decimals.

    Example of a NFT:

    {
    "supply": 100000000, // 1 token
    "type": "non-fungible",
    "name": "My NFT",
    "symbol": "MNFT",
    "properties": {
    "image": "base64 of the image",
    "description": "This is a NFT with an image"
    }
    }

    Example of a NFT Collection:

    {
    "supply": 300000000, // 3 tokens
    "type": "non-fungible",
    "name": "COLLETION NAME",
    "symbol": "COLLETION_SYMBOL",
    "properties": {"globalProperty": "value"},
    "collection": [
    {"image": "link"},
    {"image": "link"},
    {"image": "link"}
    ]
    }

    During the transaction validation, the miners will understand how to interpret this transaction and create the relative assets and UTXOs to make transfers possible right away.

    Resupply fungible tokens (AEIP-18)

    As mentioned above, fungible tokens may accept to be minted at any time. This transaction must be done in the same transaction chain of the referenced token (to prove ownership of the token) and it's type must be token.

    The JSON Schema is available on GitHub

    Here's an example of the token resupply transaction's content:

    {
    "aeip": [8, 18],
    "supply": 100000000000, // 1000 tokens if referenced token has decimals=8
    "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2"
    }

    Recipients (AEIP-19)

    When creating a token transaction (creation or resupply), it is also possible to specify a list of recipients that will receive all or some of the minted tokens. -In order to do so, a recipients field must specified in the transaction's content.

    Here's an example for a fungible token resupply:

    {
    "aeip": [8, 18, 19],
    "supply": 1000,
    "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2",
    "recipients": [
    {
    "to": "0000f1fd....",
    "amount": 100000000 // 1 token
    }
    ]
    }

    Here's another example for a non-fungible token creation:

    {
    "aeip": [2, 8, 19],
    "supply": 100000000, // 1 token
    "type": "non-fungible",
    "name": "My NFT",
    "symbol": "MNFT",
    "properties": {
    "image": "base64 of the image",
    "description": "This is a NFT with an image"
    },
    "recipients": [
    {
    "to": "0000f1fd....",
    "amount": 100000000 // 1 token
    }
    ]
    }

    Transfer

    Now that the tokens are created, there are few ways to move them around:

    1. Via a wallet (such as the Archethic Wallet)
    2. Via the send-transaction API
    3. Via a Smart Contract

    Example of a NFT transfer via the API:

    {
    "method": "send_transaction",
    "jsonrpc": "2.0",
    "id": 1,
    "params": {
    "transaction": {
    "version": 2,
    "type": "transfer",
    // [...]
    "data": {
    "ledger": {
    "token": {
    "transfers": [
    {
    "to": "0000ABCD...EF", // recipient's address
    "amount": 100000000, // 1 token
    "tokenAddress": "00001AC8...4F", // token definition address
    "tokenId": 1 // 1st token of the collection
    }
    ]
    }
    }
    }
    }
    }
    }

    Example of a transfer via a Smart Contract:

    Contract.add_token_transfer(token_address: 0x00001AC8...4F, to: 0x0000ABCD...EF, amount: 100000000)
    - +In order to do so, a recipients field must specified in the transaction's content.

    Here's an example for a fungible token resupply:

    {
    "aeip": [8, 18, 19],
    "supply": 1000,
    "token_reference": "0000C13373C96538B468CCDAB8F95FDC3744EBFA2CD36A81C3791B2A205705D9C3A2",
    "recipients": [
    {
    "to": "0000f1fd....",
    "amount": 100000000 // 1 token
    }
    ]
    }

    Here's another example for a non-fungible token creation:

    {
    "aeip": [2, 8, 19],
    "supply": 100000000, // 1 token
    "type": "non-fungible",
    "name": "My NFT",
    "symbol": "MNFT",
    "properties": {
    "image": "base64 of the image",
    "description": "This is a NFT with an image"
    },
    "recipients": [
    {
    "to": "0000f1fd....",
    "amount": 100000000 // 1 token
    }
    ]
    }

    Transfer

    Now that the tokens are created, there are few ways to move them around:

    1. Via a wallet (such as the Archethic Wallet)
    2. Via the send-transaction API
    3. Via a Smart Contract

    Example of a NFT transfer via the API:

    {
    "method": "send_transaction",
    "jsonrpc": "2.0",
    "id": 1,
    "params": {
    "transaction": {
    "version": 2,
    "type": "transfer",
    // [...]
    "data": {
    "ledger": {
    "token": {
    "transfers": [
    {
    "to": "0000ABCD...EF", // recipient's address
    "amount": 100000000, // 1 token
    "tokenAddress": "00001AC8...4F", // token definition address
    "tokenId": 1 // 1st token of the collection
    }
    ]
    }
    }
    }
    }
    }
    }

    Example of a transfer via a Smart Contract:

    Contract.add_token_transfer(token_address: 0x00001AC8...4F, to: 0x0000ABCD...EF, amount: 100000000)
    + \ No newline at end of file diff --git a/learn/transaction-chain/index.html b/learn/transaction-chain/index.html index 908f77bc0..afc0782f0 100644 --- a/learn/transaction-chain/index.html +++ b/learn/transaction-chain/index.html @@ -4,7 +4,7 @@ Transaction chains | Archethic - + @@ -17,8 +17,8 @@ all unspent outputs will be reintegrated directly into the last transaction.

    Transaction structure

    • Pending transaction

    A pending transaction is a transaction that does not have validation. Its structure is described as below:

    |-----------|------|------|---------------------|--------------------|------------------|
    | Address | Type | Data | Previous public key | Previous signature | Origin signature |
    | --------- | ------- | -------- | ------------------- | ------------------ | ---------------- |
    | |
    | |
    | --------- | ------ | -------- | ------------ | ------------ |
    | Content | Code | Ledger | Ownerships | Recipients |
    | --------- | ------ | -------- | ------------ | ------------ |
    | |
    | |
    | ----- | ------- | | ----------------- | -------- |
    | UCO | Token | | Authorized keys | Secret |
    | ----- | ------- | | ----------------- | -------- |


    • Address: Corresponds to the hash of the public key of the transaction

    • Type: Defines the functional role of the transaction

    • Data: Contains all the operations to be performed (transfers, smart contracts, key authorizations, etc.)

      • Content: Can contain any kind of data. It can be used to host some data (HTML page, text, image, code, etc.)
      • Code: Defines the smart contract code to be interpreted by the node. More details on Smart-Contracts section.
      • Ledger: Defines several types of ledger operations
        • UCO: for the cryptocurrency transfers
        • Token: for non-financial transactions (intended for P2P uses - as tokens, loyalties, etc.)
      • Ownerships: Define some cryptographic authorizations and delegations
        • Authorized keys: list of authorized keys to be able to decrypt secrets
        • Secrets: Encrypted contents which can be decrypted by the authorized keys
      • Recipients: Additional recipients to target smart contracts
    • Previous public key: Corresponds to the public key associated to the previous transaction

    • Previous signature: Corresponds to the signature of the private key associated with the mentioned previous public key

    • Origin signature: Corresponds to the signature of the device or software that generated the transaction. This is used on the Proof Of Work mechanism and is a necessary condition of its validation.

    • Validated transaction

    A validated transaction is a pending transaction completed with the validation proofs required by the Heuristic Algorithms. Those are defined by the given structure:

    |------------------|-------------------------|
    | Validation Stamp | Cross Validation Stamps |
    | ---------------- | ----------------------- |
    | |
    | | ----------------- | ----------- |
    | | Node public key | Signature |
    | | ----------------- | ----------- |
    | |
    | ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |
    | Timestamp | Proof of Work | Proof of Integrity | Proof of Election | Ledger Operations | Recipients | Errors | Signature |
    | ----------- | --------------- | -------------------- | ------------------- | ------------------- | ------------ | -------- | ----------- |
    | |
    | ----- | ----------------------- | ----------------- |
    | Fee | Transaction movements | Unspent outputs |
    | ----- | ----------------------- | ----------------- |

    • Validation Stamp: Stamp generated by the coordinator node
      • Proof of work: Corresponds to the public key matching the origin signature (More details on the Proof of Work section).
      • Proof of integrity: Proves the linkage of the previous transactions
      • Proof of election: Proves the validation node's rotating election and permit to reproduce it later (See Rotating Election)
      • Ledger operations: Contains all the ledger operations that will be taken into account by the network
        • fee: Transaction's fee
        • transaction movements: Issuer and resolved transaction movements
        • Unspent outputs: List of the remaining unspent outputs of the transaction chain after validation
      • Recipients: List of resolved addresses of the recipients
      • Errors: Any errors found in the validation (i.e. pending transaction error)
      • Signature: Cryptographic signature of the entire stamp by the coordinator's key
    • Cross validation stamps: To be considered as validated, the Validation Stamp must be joined as many Cross Validation Stamp as required by the Heuristic Algorithms. -They are signatures of the given validation stamp.
      • Node public key: Correspond to the node's public key which generate this Cross Validation Stamp's signature
      • Signature: Correspond to the signature of the Cross Validation Stamp for the mentioned public key
      • Inconsistencies: In case of inconsistencies or disagreement, it will contain a list of inconsistencies noted
    - +They are signatures of the given validation stamp.
    • Node public key: Correspond to the node's public key which generate this Cross Validation Stamp's signature
    • Signature: Correspond to the signature of the Cross Validation Stamp for the mentioned public key
    • Inconsistencies: In case of inconsistencies or disagreement, it will contain a list of inconsistencies noted
    + \ No newline at end of file diff --git a/learn/transaction-types/index.html b/learn/transaction-types/index.html index 11e70673a..a9c5595d5 100644 --- a/learn/transaction-types/index.html +++ b/learn/transaction-types/index.html @@ -4,13 +4,13 @@ Transaction types | Archethic - +
    -

    Transaction types

    The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions.

    There are 2 categories of transaction types, the network transactions and the others:

    • network transactions: every nodes in the network must replicate them
    • others: only elected nodes must replicate them

    node (network)

    Only nodes are allowed to create a node transaction. It contains the information about a running node. It is sent when a node joins or when it changes its network configuration.

    node_shared_secrets (network)

    This daily (11:30pm) transaction provides a shared secret to all the running nodes.

    node_rewards (network)

    This daily (02:00am) transaction rewards the nodes by sending them some MUCOs based on their uptime.

    mint_rewards (network)

    This daily (02:00am) transaction mints some MUCOs. The amount minted is the same as the amount of UCO burned previous day.

    oracle (network)

    This transaction fetch some off-chain data and provides it in the content. It is sent every minutes. Please note that the oracle content may not always contain the same information. For example the UCO price is only sent if it changes.

    oracle_summary (network)

    This daily (00:00am) transaction aggregates all oracles transaction of the previous day.

    code_proposal (network)

    This transaction contains a diff (code change) to be applied on the nodes. It then need to be approved before it is applied.

    code_approval (network)

    This transaction is used to approve a code_proposal. Once a threshold is passed, the diff is applied to all nodes.

    origin (network)

    TODO

    keychain

    This transaction is created when creating a wallet. It is used to be able to receive/send UCOs and Tokens.

    keychain_access

    This transaction defines the authorization of a keychain.

    transfer

    This transaction contains either at least, one uco_transfer, one token_transfer or one recipient.

    token

    This transaction defines a Token.

    hosting

    This transaction is a AEWeb transaction. Read How it works for the details.

    data

    This transaction contains either a content or at least one ownership.

    contract

    This transaction contains a contract in the code field.

    - +

    Transaction types

    The transaction's type is used to give a hint on what the transaction contains. Some types must respect some conditions.

    There are 2 categories of transaction types, the network transactions and the others:

    • network transactions: every nodes in the network must replicate them
    • others: only elected nodes must replicate them

    node (network)

    Only nodes are allowed to create a node transaction. It contains the information about a running node. It is sent when a node joins or when it changes its network configuration.

    node_shared_secrets (network)

    This daily (11:30pm) transaction provides a shared secret to all the running nodes.

    node_rewards (network)

    This daily (02:00am) transaction rewards the nodes by sending them some MUCOs based on their uptime.

    mint_rewards (network)

    This daily (02:00am) transaction mints some MUCOs. The amount minted is the same as the amount of UCO burned previous day.

    oracle (network)

    This transaction fetch some off-chain data and provides it in the content. It is sent every minutes. Please note that the oracle content may not always contain the same information. For example the UCO price is only sent if it changes.

    oracle_summary (network)

    This daily (00:00am) transaction aggregates all oracles transaction of the previous day.

    code_proposal (network)

    This transaction contains a diff (code change) to be applied on the nodes. It then need to be approved before it is applied.

    code_approval (network)

    This transaction is used to approve a code_proposal. Once a threshold is passed, the diff is applied to all nodes.

    origin (network)

    TODO

    keychain

    This transaction is created when creating a wallet. It is used to be able to receive/send UCOs and Tokens.

    keychain_access

    This transaction defines the authorization of a keychain.

    transfer

    This transaction contains either at least, one uco_transfer, one token_transfer or one recipient.

    token

    This transaction defines a Token.

    hosting

    This transaction is a AEWeb transaction. Read How it works for the details.

    data

    This transaction contains either a content or at least one ownership.

    contract

    This transaction contains a contract in the code field.

    + \ No newline at end of file diff --git a/learn/uco/index.html b/learn/uco/index.html index 5241ec9fd..fcbe17ce4 100644 --- a/learn/uco/index.html +++ b/learn/uco/index.html @@ -4,13 +4,13 @@ UCO token | Archethic - +
    -

    UCO token

    Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes’ performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.

    UCO is based on the principle of controlled supply and creating demand.

    Fibonacci Golden Token Economics

    To achieve the objective of a self-sustaining crypto economy, the token distribution has been redefined. The transactions growth, users growth ans developers growth based on the set of commissioned applications has been analysed. The cost of running the nodes has been calculated and the adoption and incentivization has been designed to ensure the sustenance of nodes.


    - +

    UCO token

    Archethic, an open-source public blockchain is an infrastructure that is fuelled by its native cryptocurrency and should ideally scale to the sum of its individual nodes’ performance. It needs to be designed in such a way that it is a self-sustaining economy run by the people, for the people.

    UCO is based on the principle of controlled supply and creating demand.

    Fibonacci Golden Token Economics

    To achieve the objective of a self-sustaining crypto economy, the token distribution has been redefined. The transactions growth, users growth ans developers growth based on the set of commissioned applications has been analysed. The cost of running the nodes has been calculated and the adoption and incentivization has been designed to ensure the sustenance of nodes.


    + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 3772abf2e..94d1700e3 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -4,13 +4,13 @@ Markdown page example | Archethic - +

    Markdown page example

    You don't need React to write simple standalone pages.

    - + \ No newline at end of file diff --git a/participate/aeweb/automation/index.html b/participate/aeweb/automation/index.html index b196fa916..2bae49299 100644 --- a/participate/aeweb/automation/index.html +++ b/participate/aeweb/automation/index.html @@ -4,14 +4,14 @@ Automate deployments | Archethic - +

    Automate deployments

    AEWeb's CLI is really simple to deploy websites from the command line and is handy on low-frequent deployment usage. -However, if you need to deploy often a website, the CLI might not be the great tool.

    To resolve this issue, we have planed a way to automate the deployment of your websites using Github's Actions.

    This is a simple automation that allow you to deploy to Archethic decentralized web hosting. Under the hood, it's running some part of the AEWeb CLI features.

    You can decide when your codebase will be deployed on Archethic, for instance foreach push or validated pull-request, or after each release.

    Check our Github Action to discover how to use it and leverage continuous deployment on Archethic.

    - +However, if you need to deploy often a website, the CLI might not be the great tool.

    To resolve this issue, we have planed a way to automate the deployment of your websites using Github's Actions.

    This is a simple automation that allow you to deploy to Archethic decentralized web hosting. Under the hood, it's running some part of the AEWeb CLI features.

    You can decide when your codebase will be deployed on Archethic, for instance foreach push or validated pull-request, or after each release.

    Check our Github Action to discover how to use it and leverage continuous deployment on Archethic.

    + \ No newline at end of file diff --git a/participate/aeweb/dns/index.html b/participate/aeweb/dns/index.html index 1472cd1fe..90b5f9c33 100644 --- a/participate/aeweb/dns/index.html +++ b/participate/aeweb/dns/index.html @@ -4,7 +4,7 @@ AEWeb - Domain names | Archethic - + @@ -17,8 +17,8 @@ and the key at: /etc/letsencrypt/live/example.com/privatekey.pem

    info

    We might notice the command gives the end of validity for the certificate. Before this date, you just have to reply the command to assert you still own the domain to get the new certificate and/or key.

    2. Add the certificate on chain

    You need to get the certificate and the private key associated.

    info

    The private key is necessary to sign/encrypt the webpages to match the certificates and be considered as valid. Only the nodes will have access to this key to allow the servers to use SSL communications.

    If you use the AEWeb CLI, we can perform this by running the command:

    aeweb deploy --seed XXX --path ./my_website --ssl-certificate ./cert.pem --ssl-key ./key.pem --endpoint https://mainnet.archethic.net 

    You're website transaction chain will then contains a Reference transaction with the ssl certificate in the content -and the private key end to end encrypted for the network.

    - +and the private key end to end encrypted for the network.

    + \ No newline at end of file diff --git a/participate/aeweb/how-it-works/index.html b/participate/aeweb/how-it-works/index.html index 8a83be5ee..bd08f8dcc 100644 --- a/participate/aeweb/how-it-works/index.html +++ b/participate/aeweb/how-it-works/index.html @@ -4,7 +4,7 @@ AEWeb - How it works | Archethic - + @@ -13,8 +13,8 @@ For example, you could have a website which contains: 5 files:

    • HTML page
    • Image
    • CSS

    3 transactions could be generated:

    1. Reference:
    {
    "aewebVersion": 1,
    "hashFunction": "sha-1",
    "metaData": {
    "index.html": {
    ...
    "addresses": ["0ac7fj..."]
    },
    "assets/app.css": {
    ...
    "addresses": ["0ac7fj..."]
    },
    "assets/image.jpg": {
    ...
    // image.jpg is too big to fit in a single data transaction
    "addresses": ["0ac7fj...", "1fb2ha..."]
    }
    }
    1. HTML + CSS + Image (chunked by 30%)
    // data transaction: "0ac7fj..."
    {
    "index.html": "...",
    "assets/app.css": "..."
    "assets/image.jpg": "..."
    }
    1. Image (remaining chunks)
    // data transaction: "1fb2ha..."
    {
    "assets/image.jpg": "..."
    }

    Content delivery

    On the other side, the transactions are validated and stored on the Archethic Blockchain. Any Archethic node expose an API dedicated for the web hosting by AEWeb.

    This API takes a reference address as a parameter, and then proceeds to take the path of the file, just like any web server would do.

    https://mainnet.archethic.net/api/web_hosting/0c19fd13......../image.jpg

    aeweb_CDN aeweb_CDN

    The welcome node will request the reference transaction download to its related shard. -It will parse the reference content and detect the transactions to download for the requested file.

    Once the file downloaded, the content will send back to the client and the browser will display the file.

    Because websites rendering is composed of multiple HTTP requests for each file, the browser will be able to understand the responses and display the website entirely - while leveraging a single reference on-chain.

    Good to know

    Once the website retrieved, the data will be cached locally. So, the next time the same person will visit the website, no data will be fetched again.

    This will be true until the website and the reference chain evolves.

    Website updates

    The first thing a node does when it receives an AEWeb request is to download the latest reference transaction from the chain. This behaviour allows a user to update its website and to keep the same URL.

    This means that updating a website is as simple as sending a new reference transaction!

    Website unpublication

    Introduced by AEIP-13, a website can be unpublished by sending the following reference transaction:

    {
    "aeip": [8, 13],
    "aewebVersion": 1,
    "publicationStatus": "UNPUBLISHED"
    }

    As long as this reference transaction is the latest, the nodes will not serve the website. An HTTP status code 410 is sent.

    Data is permanent

    The data from an unpublished website (and all previous version as a matter of fact) always remain in the blockchain. Here, we only disable the endpoint to access it.

    - +It will parse the reference content and detect the transactions to download for the requested file.

    Once the file downloaded, the content will send back to the client and the browser will display the file.

    Because websites rendering is composed of multiple HTTP requests for each file, the browser will be able to understand the responses and display the website entirely - while leveraging a single reference on-chain.

    Good to know

    Once the website retrieved, the data will be cached locally. So, the next time the same person will visit the website, no data will be fetched again.

    This will be true until the website and the reference chain evolves.

    Website updates

    The first thing a node does when it receives an AEWeb request is to download the latest reference transaction from the chain. This behaviour allows a user to update its website and to keep the same URL.

    This means that updating a website is as simple as sending a new reference transaction!

    Website unpublication

    Introduced by AEIP-13, a website can be unpublished by sending the following reference transaction:

    {
    "aeip": [8, 13],
    "aewebVersion": 1,
    "publicationStatus": "UNPUBLISHED"
    }

    As long as this reference transaction is the latest, the nodes will not serve the website. An HTTP status code 410 is sent.

    Data is permanent

    The data from an unpublished website (and all previous version as a matter of fact) always remain in the blockchain. Here, we only disable the endpoint to access it.

    + \ No newline at end of file diff --git a/participate/aeweb/index.html b/participate/aeweb/index.html index fd5286323..23576d38c 100644 --- a/participate/aeweb/index.html +++ b/participate/aeweb/index.html @@ -4,7 +4,7 @@ Archethic Web (AEWeb) | Archethic - + @@ -13,8 +13,8 @@ Existing solutions provides P2P and distributed hosting, but it can lack some important aspects such as ease-of-use, fully on-chain and trust.

    Easy

    Since its design, AEWeb motivation was to allow deployment of websites in just a few steps. No need to transform your website to match our solution. The website you developed and know will be the same one deployed.

    Your website will be transformed into transaction without additional work

    Security

    Web hosting solutions are either centralized and decentralized. The first doesn't provide security, as being centralized and subject to censorship. The latter would be quite often insecure because hosted out of the blockchain, like traditional P2P system (torrents, etc.)

    We wanted to make it completely secure and on-chain. Hence, each of the websites will first be validated across the Archethic network with the ARCH consensus capable to handle even 90% of maliciousness. While being validated, the websites will be stored and split geographically across the globe for highest data availability and security.

    Then each delivery of the websites will directly read the data on-chain to deliver to browsers and clients and provide a high confidence of the displayed website.

    Costly efficient

    There are rare situations when websites can be hosted on a blockchain due to its costs being based on virtual machine or high fee on a network.

    Transactions on Archethic are cost-efficient, so hosting websites on-chain will be a cheap solution regarding existing centralized and decentralized protocols.

    Because of the nature of Web3 and decentralized network, once a website is deployed there is no maintenance cost such as renting a VPS on a centralized system each month for a couple of bucks. As long as the website doesn't need to change, there will be not cost.

    info

    Example: a VPS can cost around $5/month to host any website. On Archethic a website of 1MB could cost around $2 (with UCO at: $1 and with 200 replicas).

    You might think it's more expensive, but the VPS was only a single instance. For the same data availability on centralized hosting you would have to pay around $500 + cost of maintenance

    Target

    Because of the Web is so wide, we have distinguished what AEWeb is capable to do or not.

    Website vs WebApp

    Website are usually not Web app.

    Websites are often simple static pages (HTML, stylesheets, images, scripts) to create beautiful frontend such a portal, showcase, corporate sites.

    On the other side Web app (Web Application) are far more complex and provide a complete suite of administration and back-office with authentication and databases.

    For now, AEWeb solution only provides website hosting. So any website which contains static files can be hosted on-chain.

    For more complex web applications, the front-end can still be hosted with AEWeb but the backend or business logic have to be managed in other ways, such as:

    • centralized servers and databases
    • blockchain dApp & smart contracts

    For instance, today a lot of web apps are leveraging SPA (Single Page Application) with front-end frameworks which are talking to external backend servers (fetching data, or authenticate users, etc.). -In that case, once the front-end page have been build from the SPA tooling, instead of being deployed on centralized servers, the generated static files could be hosted on Archethic through AEWeb tooling.

    Roadmap

    • Design
    • Blockchain integration
      • API
      • HTTPS & certificates
    • Command Line Interface (CLI)
      • File
      • Folder
      • Complete website
      • Keychain integration
    • User Interface
      • Web or Native application
    • Domain Name System (DNS)
      • DNSLink integration
      • Automation

    The development started few months ago, and we are now in the phase of testing as beta version.

    Currently we are targeting developers throught a CLI to help them to test and deploy existing websites.

    Next achievement is to produce a user interface to make webhosting no only for developers but for anyone which have static website to deploy.

    - +In that case, once the front-end page have been build from the SPA tooling, instead of being deployed on centralized servers, the generated static files could be hosted on Archethic through AEWeb tooling.

    Roadmap

    • Design
    • Blockchain integration
      • API
      • HTTPS & certificates
    • Command Line Interface (CLI)
      • File
      • Folder
      • Complete website
      • Keychain integration
    • User Interface
      • Web or Native application
    • Domain Name System (DNS)
      • DNSLink integration
      • Automation

    The development started few months ago, and we are now in the phase of testing as beta version.

    Currently we are targeting developers throught a CLI to help them to test and deploy existing websites.

    Next achievement is to produce a user interface to make webhosting no only for developers but for anyone which have static website to deploy.

    + \ No newline at end of file diff --git a/participate/aeweb/usage/aeweb-front/index.html b/participate/aeweb/usage/aeweb-front/index.html index 0ff132db0..d97135e3a 100644 --- a/participate/aeweb/usage/aeweb-front/index.html +++ b/participate/aeweb/usage/aeweb-front/index.html @@ -4,7 +4,7 @@ AEWeb - Application Front End | Archethic - + @@ -13,8 +13,8 @@ Source code: https://github.com/archethic-foundation/aeweb

    This web application, built with Flutter, can be used to deploy and manage static sites to the Archethic Blockchain.

    tip

    Before reading the following tutorials, understand how AEWeb works.

    Tutorials

    Deploy for the first time my static site

    When you want to deploy a new static website on the Archethic blockchain, simply click on "New static site" in the main menu or the "+" icon in the section reserved for the list of your already deployed sites.

    A form will then appear, providing you with the necessary information for deploying your site:

    • The name of the website. This name will be used to declare the site in your decentralized keychain. (mandatory)
    • The archive file (with .zip, .7z, or .rar extension) containing the content of your website. (mandatory)
    • You can specify whether you want to include or exclude files listed in a .gitignore file. (optional)
    • The public certificate for your domain and the private key associated with the certificate. (optional)

    Once the required information is provided and the publication rules are accepted, you can initiate the deployment of your site.

    AEWeb will then prompt you, via your Archethic wallet, to:

    • Confirm the creation of the site in your keychain.
    • Sign the transaction(s) that contain the content of your site.
    • Sign the reference transaction of your site in the blockchain.
    • Then sign the transaction that allows transferring funds from your current account to the transaction chains that enable your site to function.

    The associated fees for the creation will be provided, and once accepted, your site will be permanently published on the blockchain.

    info

    In the beta version currently being deployed, a limit of 3 MB for a site has been set.


    Update my static site

    You can update your site by comparing the latest version hosted on the blockchain with a new archive containing your modifications. To do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Sync from local folder".

    After selecting the archive, the application will present you with information about the differences between the blockchain data and your archive. If you are satisfied with the information and agree to the publication rules, you can proceed with the update.

    The application will then prompt you to:

    • Sign, using your Archethic Wallet, the transaction(s) that contain the content of your new site version.
    • Sign the transaction to update the reference transaction of your site in the blockchain.
    • Then sign the transaction that allows transferring funds from your current account to the transaction chains that power your site.

    The associated fees for the update will be provided, and once accepted, a new version of your site will be published on the blockchain.

    Update the SSL certificate

    You can add and update the SSL certificate associated with your site. To do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Update the certificate".

    After selecting the public certificate for your domain and the private key associated with the certificate, the application will prompt you to:

    • Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to include the certificate.
    • Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.

    The associated fees for the update will be provided, and once accepted, the certificate will be published in the content of the reference transaction, and the private key will be stored in a transaction secret.

    Unpublish my static site

    You can unpublish your static site to make it no longer accessible. -To do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Unpublish static site".

    After confirming your intention to unpublish your site, the application will prompt you to:

    • Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to declare the unpublishing.
    • Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.

    The associated fees for unpublishing will be provided, and once accepted, the site will be unpublished.

    See my static site's informations

    For each online version and for each previous version of your website, you can access the following information by clicking on the three dots at the end of each line:

    • The file structure of your website that has been deployed on the blockchain.
    • The transactions containing the content of your files.

    Regarding the SSL certificate content, you can view it by clicking on the shield icon if you have deployed one. If the icon is red, it means that no certificate is available.

    Disconnect AEWeb

    When you want to disconnect the AEWeb application from your Archethic Wallet, simply click on the red disconnect button in the section describing the connected account and environment, and then confirm to return to the home screen.

    Roadmap

    • Add session management to the wallet to avoid entering the user's authentication for each transaction signature.
    • Enable direct management of the site's content from AEWeb instead of uploading an archive with all the contents.
    - +To do this, go to the context menu of the currently deployed version (the first row in the site versions table) and click on "Unpublish static site".

    After confirming your intention to unpublish your site, the application will prompt you to:

    • Sign, using your Archethic Wallet, the transaction that will update the reference transaction of your site in the blockchain to declare the unpublishing.
    • Then sign the transaction that allows transferring funds from your current account to the transaction chain of your site to update the reference transaction.

    The associated fees for unpublishing will be provided, and once accepted, the site will be unpublished.

    See my static site's informations

    For each online version and for each previous version of your website, you can access the following information by clicking on the three dots at the end of each line:

    • The file structure of your website that has been deployed on the blockchain.
    • The transactions containing the content of your files.

    Regarding the SSL certificate content, you can view it by clicking on the shield icon if you have deployed one. If the icon is red, it means that no certificate is available.

    Disconnect AEWeb

    When you want to disconnect the AEWeb application from your Archethic Wallet, simply click on the red disconnect button in the section describing the connected account and environment, and then confirm to return to the home screen.

    Roadmap

    • Add session management to the wallet to avoid entering the user's authentication for each transaction signature.
    • Enable direct management of the site's content from AEWeb instead of uploading an archive with all the contents.
    + \ No newline at end of file diff --git a/participate/aeweb/usage/cli/index.html b/participate/aeweb/usage/cli/index.html index 954b010cf..f65860d54 100644 --- a/participate/aeweb/usage/cli/index.html +++ b/participate/aeweb/usage/cli/index.html @@ -4,14 +4,14 @@ AEWeb - CLI | Archethic - +

    AEWeb CLI (Command-Line Interface)

    Repository: https://github.com/archethic-foundation/aeweb-cli

    This tool, built with NodeJS, can be used to deploy files and websites to the Archethic blockchain. -Once installed, as instructed in the README, the aeweb command is available.

    aeweb generate-address

    This command is used to generate an address from a seed.

    Use case

    You might use this on TestNet for example, to determine an address to use the faucet on.

    $ aeweb generate-address --seed myseedphrase --index 0
    00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065

    aeweb deploy

    This command is used to deploy the content of a folder or a single file. It will create the transactions, estimate the fees and, after confirmation, will write the transactions on the network.

    Parameters:

    $ aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website
    Connecting to https://testnet.archethic.net
    Creating file structure and compress content...
    Creating transactions ...
    Estimating fees ...
    Total Fee Requirement would be : 2.58933391 UCO ( $ 0.23 | € 0.22), for 3 transactions.
    Do you want to continue. (yes/no) yes
    Sending 3 transactions...
    Transaction 1...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/000013c531...
    -----------
    Transaction 2...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000a78a35...
    -----------
    Transaction 3...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000f1126e...
    -----------
    Website is deployed at: https://testnet.archethic.net/api/web_hosting/00007d9167...
    There Can Be Only One

    There can only be a single deployment per seed. Which makes it possible to update it by running the exact same command. The endpoint of your deployment will not change.

    If you need to deploy another website, use another seed (and transfer funds to it via the Wallet app).

    - +Once installed, as instructed in the README, the aeweb command is available.

    aeweb generate-address

    This command is used to generate an address from a seed.

    Use case

    You might use this on TestNet for example, to determine an address to use the faucet on.

    $ aeweb generate-address --seed myseedphrase --index 0
    00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065

    aeweb deploy

    This command is used to deploy the content of a folder or a single file. It will create the transactions, estimate the fees and, after confirmation, will write the transactions on the network.

    Parameters:

    $ aeweb deploy --seed myseedphrase --endpoint https://testnet.archethic.net --path ./website
    Connecting to https://testnet.archethic.net
    Creating file structure and compress content...
    Creating transactions ...
    Estimating fees ...
    Total Fee Requirement would be : 2.58933391 UCO ( $ 0.23 | € 0.22), for 3 transactions.
    Do you want to continue. (yes/no) yes
    Sending 3 transactions...
    Transaction 1...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/000013c531...
    -----------
    Transaction 2...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000a78a35...
    -----------
    Transaction 3...
    Waiting transaction validation...
    Transaction confirmed !
    See transaction in explorer: https://testnet.archethic.net/explorer/transaction/0000f1126e...
    -----------
    Website is deployed at: https://testnet.archethic.net/api/web_hosting/00007d9167...
    There Can Be Only One

    There can only be a single deployment per seed. Which makes it possible to update it by running the exact same command. The endpoint of your deployment will not change.

    If you need to deploy another website, use another seed (and transfer funds to it via the Wallet app).

    + \ No newline at end of file diff --git a/participate/bridge/index.html b/participate/bridge/index.html index 07fd170fa..3cb59d1c7 100644 --- a/participate/bridge/index.html +++ b/participate/bridge/index.html @@ -4,7 +4,7 @@ Archethic's bridge | Archethic - + @@ -12,8 +12,8 @@

    Archethic's bridge

    Archethic has developed a decentralized and P2P bridge to facilitate the exchange of your UCO ERC20 tokens with other blockchains (e.g., Ethereum, Polygon, BSC) and to allow for a simple and secure exchange of assets in the most atomic way.

    Testnet's only

    The current version of Archethic's bridge is only available on the testnet. You can experiment and start bridging your assets by visiting bridge.testnet.archethic.net/

    Key concepts

    HTLC (Hash Time Lock Contract)

    Archethic's bridge relies on atomic swap technology to securely exchange assets in a peer-to-peer and cryptographic manner without intermediaries. It also allows for the reversal and refund of assets after a specified lock time period.

    This involves the use of specific contracts known as Hash Time Lock Contracts (HTLC), which lock your funds until a secret is revealed (similar to a secret box) or after a lock time period to provide refund capabilities. These contracts must be deployed on both chains involved in the swap.

    Both chains must be ready to transfer assets by revealing the private part of the secret encoded in the contracts, which enables the exchange. Once the secret is revealed on one chain, the other can proceed as the secret is now public.

    This atomic swap method ensures secure transfers between chains without a central pool holding all the assets. Instead, it relies on hard-coded recipients and rules within a one-time contract.

    Archethic's cross-chain verification

    While conventional atomic swaps rely on HTLC techniques for security through peer-to-peer and cryptographic approaches, Archethic enhances its atomic swap protocol by enabling data retrieval outside of the blockchain. This enhancement makes the process completely decentralized and strengthens the security model.

    Archethic's nodes can fetch transaction status on other chains, such as EVM blockchains, to establish the status of a swap with a strong consensus. Combining HTLC and Archethic's specific capabilities provides a high level of trust in the origin and reveal capabilities of any swap, relying on cryptography and cross-chain data retrieval.

    Safety Module

    To mitigate the risks associated with bridging assets, Archethic introduces a Safety Module, designed to address deficiencies that may occur when unexpected events disrupt the bridge's operation.

    The Safety Module serves as a reserve of tokens that can be used in case of token loss or variations in the locked amount between both chains.

    At the launch of any pool, the maximum amount of tokens held by the pool will match the amount in the Safety Module. Each pool has its dedicated Safety Module, which will grow over time, increasing liquidity in the bridge pool.

    Funding the Safety Module involves deducting a fee from each transfer originating from EVM to Archethic. This fee is deposited directly into the Safety Module to strengthen the reserve. The more tokens held in the Safety Module, the lower the fee rate becomes.

    The Safety Module is represented by a multisignature wallet managed by the bridge's governance.

    Usage

    TODO

    Specifics

    EVM to Archethic

    The process begins with a secret held by a client (in this case, the bridge's dApp) and its hash, which forms a lock upon revealing the secret.

    The user deploys an HTLC smart contract on the EVM blockchain through the bridge's EVM pool.

    This pool ensures the capacity of the swap's initiator, fee distribution (see see Safety Module), lock time period, and the recipient's address for the assets to be bridged.

    Similarly, the user must deploy a contract on Archethic under the same conditions while specifying the recipient wallet to receive the funds.

    Subsequently, a request is made to the Archethic's pool (which holds the wrapped tokens) to fill the HTLC.

    Because the tokens are wrapped on Archethic, the pool will mint new tokens after cross-chain verification (see Archethic's specific).

    The remaining step involves revealing the secret on EVM to transfer the funds to the bridge's recipient wallet (including the safety module), and replicating this process on Archethic, ensuring that the action is executed on EVM blockchains through off-chain requests.

    This results in both counterparties receiving their funds, achieving parity in the bridged assets.

    Archethic to EVM

    To exchange assets from Archethic to EVM, the process follows a similar pattern but in reverse order. -However, a new feature is introduced in the smart contracts. Since EVM cannot request information outside the blockchain, steps are taken to ensure that an action has been performed on Archethic's side. Cryptography is employed to assert the action through a signature and provide non-repudiation proof for the Archethic's pool.

    In this scenario, the user creates an HTLC contract on Archethic and funds it with tokens (wrapped or native), specifying the recipient's wallet provided by Archethic's pool, without initially revealing the secret and its lock.

    The user then requests the Archethic's pool to obtain a secret, its hash, and a signature confirming the action's completion on Archethic's side.

    During this process, the Archethic's pool contacts the HTLC to update its conditions for the secret's reveal by inserting the generated secret's hash from the pool.

    On the other side, the user can request the EVM pool to create and provision an HTLC contract based on the proof provided by Archethic's pool regarding an existing and funded HTLC.

    The EVM pool can now create and transfer funds to this new contract.

    The remaining step is to reveal the secret. The user asks the Archethic's pool to reveal the secret within the HTLC and provide a signature for this action. At this point, the locked tokens will be burnt.

    With the secret revealed, the user can also reveal the secret on the EVM HTLC and provide the signature from Archethic's pool, unlocking the assets to the user's wallet registered within the contract.

    This process ensures that both counterparties receive their funds, achieving parity in the bridged assets.

    - +However, a new feature is introduced in the smart contracts. Since EVM cannot request information outside the blockchain, steps are taken to ensure that an action has been performed on Archethic's side. Cryptography is employed to assert the action through a signature and provide non-repudiation proof for the Archethic's pool.

    In this scenario, the user creates an HTLC contract on Archethic and funds it with tokens (wrapped or native), specifying the recipient's wallet provided by Archethic's pool, without initially revealing the secret and its lock.

    The user then requests the Archethic's pool to obtain a secret, its hash, and a signature confirming the action's completion on Archethic's side.

    During this process, the Archethic's pool contacts the HTLC to update its conditions for the secret's reveal by inserting the generated secret's hash from the pool.

    On the other side, the user can request the EVM pool to create and provision an HTLC contract based on the proof provided by Archethic's pool regarding an existing and funded HTLC.

    The EVM pool can now create and transfer funds to this new contract.

    The remaining step is to reveal the secret. The user asks the Archethic's pool to reveal the secret within the HTLC and provide a signature for this action. At this point, the locked tokens will be burnt.

    With the secret revealed, the user can also reveal the secret on the EVM HTLC and provide the signature from Archethic's pool, unlocking the assets to the user's wallet registered within the contract.

    This process ensures that both counterparties receive their funds, achieving parity in the bridged assets.

    + \ No newline at end of file diff --git a/participate/bridge/usage/bridge-front/index.html b/participate/bridge/usage/bridge-front/index.html index 5fc46f0ff..a8d0b60d8 100644 --- a/participate/bridge/usage/bridge-front/index.html +++ b/participate/bridge/usage/bridge-front/index.html @@ -4,7 +4,7 @@ Bridge - Application Front End | Archethic - + @@ -12,8 +12,8 @@

    Bridge Front end - Tutorial

    info

    Currently, the two-way bridge is available exclusively on the testnet.

    info

    The Archethic Bridge application is exclusively available as a web application accessible through internet browsers.

    caution

    The application is compatible only with the desktop versions of the Archethic wallet, which include macOS, Linux, and Windows platforms.

    Ensure that you have the appropriate desktop version of the Archethic wallet installed on your system to interact with the application effectively. The Archethic wallet can be downloaded from here.

    tip

    For optimal performance, it is recommended to use the latest version of your internet browser and keep your desktop wallet updated.

    Access: https://bridge.testnet.archethic.net
    Source code: https://github.com/archethic-foundation/bridge

    This Flutter-built web application enables seamless asset deposits and withdrawals.

    tip

    Before proceeding, familiarize yourself with Archethic's Bridge Key Concepts.

    Prerequisites

    To bridge, you must first configure your EVM wallet for the testnet networks with which you wish to interact, as well as obtain funds. We recommend consulting the testnet-related information in the dedicated FAQ section.

    Welcome Screen

    Upon accessing the Archethic Bridge application, you are greeted with a welcome screen. To begin, click on the 'Bridge' button.

    Welcome Screen
    -Bridge Button

    Application Menu

    A right-hand header menu provides links to essential information and application documentation. It includes an option to send logs to Archethic for troubleshooting purposes.

    Menu

    Feature Access

    The left-side menu grants access to various bridge functionalities:

    • Bridging between Archethic and EVM blockchains
    • Viewing local history, resume or refund options, and transaction logs
    • Refunding

    Menu Features

    Bridging Your Assets

    The bridge process involves multiple steps:

    1. Inputting information to initiate the transfer
    2. Confirming the entered details
    3. Executing the transfer, with progress tracking and transaction signing in both EVM and Archethic wallets

    Step 1: Initiating Transfer

    info

    Transfer steps remain consistent across all blockchain types and directions.

    Firstly, select the originating and target blockchains.

    Blockchain Selection

    caution

    Ensure both Archethic and your chosen EVM wallets are connected before blockchain selection. Refer to the FAQ for connectivity issues.

    tip

    Choose a testnet blockchain for testing purposes.

    tip

    Select an EVM blockchain as the source automatically sets Archethic as the target.

    Post-selection, a field appears for token selection from available options.

    Token Selection

    Step 2: Confirming Details

    On the confirmation screen, review:

    • Entered information summary
    • Fee details
    • Post-fee token quantity

    Confirmation Screen

    Step 3: Executing Transfer

    A transfer tracking popup guides you through the process, prompting for transaction confirmations in your wallets.

    Transfer Tracking

    note

    Transaction signing methods vary per EVM wallet.

    In the Archethic wallet, confirmation prompts automatically appear when necessary.

    Archethic Wallet Confirmation

    caution

    The transfer process halts if a transaction is declined or due to insufficient funds. However, it can be resumed later.

    Transfer Resumption

    note

    HTLC contract addresses are provided for ongoing process tracking.

    HTLC Information

    Local History and Management

    View transfer history, successful or otherwise, through the application's local history feature.

    caution

    This history is local to your device. Access is not available on other devices.

    History List

    Options Include:

    • Deleting local history
    • Filtering history entries

    History Filters

    Transfer Status Actions:

    • Remove transfers from local history
    • Resume interrupted transfers
    • Refund for interrupted transfers
    • Access transfer technical details for Archethic team analysis

    History Options

    Refund Process

    Retrieve your funds through the refund feature.

    note

    Manual refunding is unavailable for Archethic-blocked funds, as it is automatic.

    Refund Form

    Upon wallet connection and address confirmation, refund eligibility and amount are displayed. Validate the refund to receive your funds, minus transaction fees.

    Refund Process


    - +Bridge Button

    Application Menu

    A right-hand header menu provides links to essential information and application documentation. It includes an option to send logs to Archethic for troubleshooting purposes.

    Menu

    Feature Access

    The left-side menu grants access to various bridge functionalities:

    • Bridging between Archethic and EVM blockchains
    • Viewing local history, resume or refund options, and transaction logs
    • Refunding

    Menu Features

    Bridging Your Assets

    The bridge process involves multiple steps:

    1. Inputting information to initiate the transfer
    2. Confirming the entered details
    3. Executing the transfer, with progress tracking and transaction signing in both EVM and Archethic wallets

    Step 1: Initiating Transfer

    info

    Transfer steps remain consistent across all blockchain types and directions.

    Firstly, select the originating and target blockchains.

    Blockchain Selection

    caution

    Ensure both Archethic and your chosen EVM wallets are connected before blockchain selection. Refer to the FAQ for connectivity issues.

    tip

    Choose a testnet blockchain for testing purposes.

    tip

    Select an EVM blockchain as the source automatically sets Archethic as the target.

    Post-selection, a field appears for token selection from available options.

    Token Selection

    Step 2: Confirming Details

    On the confirmation screen, review:

    • Entered information summary
    • Fee details
    • Post-fee token quantity

    Confirmation Screen

    Step 3: Executing Transfer

    A transfer tracking popup guides you through the process, prompting for transaction confirmations in your wallets.

    Transfer Tracking

    note

    Transaction signing methods vary per EVM wallet.

    In the Archethic wallet, confirmation prompts automatically appear when necessary.

    Archethic Wallet Confirmation

    caution

    The transfer process halts if a transaction is declined or due to insufficient funds. However, it can be resumed later.

    Transfer Resumption

    note

    HTLC contract addresses are provided for ongoing process tracking.

    HTLC Information

    Local History and Management

    View transfer history, successful or otherwise, through the application's local history feature.

    caution

    This history is local to your device. Access is not available on other devices.

    History List

    Options Include:

    • Deleting local history
    • Filtering history entries

    History Filters

    Transfer Status Actions:

    • Remove transfers from local history
    • Resume interrupted transfers
    • Refund for interrupted transfers
    • Access transfer technical details for Archethic team analysis

    History Options

    Refund Process

    Retrieve your funds through the refund feature.

    note

    Manual refunding is unavailable for Archethic-blocked funds, as it is automatic.

    Refund Form

    Upon wallet connection and address confirmation, refund eligibility and amount are displayed. Validate the refund to receive your funds, minus transaction fees.

    Refund Process


    + \ No newline at end of file diff --git a/participate/cli/index.html b/participate/cli/index.html index e3315c750..bda31ba62 100644 --- a/participate/cli/index.html +++ b/participate/cli/index.html @@ -4,7 +4,7 @@ Archethic's CLI | Archethic - + @@ -14,8 +14,8 @@ UCO transfer tab

    You will then have a list of configured UCO transfers. Using the up and down keys, you can highlight a configured transfer and delete it by typing d.

    UCO transfer tab 2

    Token transfers

    The same logic applies to the token transfers tab. But you need to specify a token address and an token id.

    Token transfers tab

    Recipients

    The same logic also applies to the recipients tab which targets smart contract executions.

    Recipients tab

    Ownerships

    The ownership tab contains the information about the access you give to execute your transaction.

    info

    This will be needed if you want to create a smart contract.

    You can define several ownerships. Each ownership has

    • a secret
    • a list of authorization keys that get access to the secret.

    At least one of the ownership must have the seed as a secret and the storage nouce public key as an authorization key.

    You can press the Load Storage Nounce Public Key to automatically set the authorization key with the value of the storage nonce public key. (ie. for smart contract's creation key delegation)

    info

    You must have selected an endpoint in the main tab in order to load the storage nounce public key of the network you target.

    Ownerships tab

    Ownerhips tab 2

    Pressing the Add authorization key allows you to add a new authorization key that will get access to the secret. Once added to the list of autorized keys, you can highlight a key and press d to delete it.

    Once you’re done with the configuration, you can press the Add button to add the ownership configuration to the transaction.

    Ownerships tab 3

    And here also, if you want to delete a configured ownership, you can highlight it and press d.

    Content

    The content tab allows you to set the content of the transaction. Start typing to enter the edit mode of this tab and press esc if you want to exit the edit mode and navigate to another tab.

    Content tab

    Smart contract

    The smart contract tab allows you to set the smart contract of the transaction. Start typing to enter the edit mode of this tab and press esc if you want to exit the edit mode and navigate to another tab.

    Smart contract tab

    Sending the transaction

    When you’re done configuring the transaction, go back to the main tab and press the Add button.

    Sending transaction

    Keychain management

    The keychain management menu allows you to

    • create a keychain with a given seed
    • access a keychain
    • add and remove services from a keychain
    • send a keychain transaction for a specific service

    In any cases you will need to start by selecting the endpoint you want, that will automatically feed the URL of the endpoint. Then specify your access seed.

    Keychain management

    Creating a keychain

    If you press the Create keychain button, a new keychain will be created. And the seed you provided will be used to access it.

    Create a keychain

    Accessing a keychain

    Pressing the Access keychain button will give you access to the list of services associated with your keychain (one default uco service has been created). -Access a keychain

    Adding / removing a service

    If you go down to the service name field you can type a new service name and a default derivation path will be created. If you then press the Create Service, your new service will be displayed in the list of services.

    Add a service

    If you highlight a service and press d the service will be deleted.

    Create a transaction for a service

    If you highlight a specific service and press enter the highlighted will be selected.

    Create a transaction for a service

    If you then press the Create Transaction for Service button, you will get a new menu to create a transaction for the selected service.

    Main tab of create keychain transaction

    The mechanism to configure a keychain transaction for a service is the same as the one for a transaction (described above). Only a few configuration are not possible (like the endpoint, the seed, the index and the elliptic curve).

    CLI - Archethic Command Line Interpreter

    It is also possible to call the archethic cli tool using the command line.

    For details of available commands, you can

    • consult the readme of the corresponding github project.
    • display help with the command --help.

    Help command

    Contribution

    If you like this product and wish to contribute to its development, please visit our Github Page

    We are welcoming contributions in any forms (code, issues, documentation, ideas, question, etc.)

    - +Access a keychain

    Adding / removing a service

    If you go down to the service name field you can type a new service name and a default derivation path will be created. If you then press the Create Service, your new service will be displayed in the list of services.

    Add a service

    If you highlight a service and press d the service will be deleted.

    Create a transaction for a service

    If you highlight a specific service and press enter the highlighted will be selected.

    Create a transaction for a service

    If you then press the Create Transaction for Service button, you will get a new menu to create a transaction for the selected service.

    Main tab of create keychain transaction

    The mechanism to configure a keychain transaction for a service is the same as the one for a transaction (described above). Only a few configuration are not possible (like the endpoint, the seed, the index and the elliptic curve).

    CLI - Archethic Command Line Interpreter

    It is also possible to call the archethic cli tool using the command line.

    For details of available commands, you can

    • consult the readme of the corresponding github project.
    • display help with the command --help.

    Help command

    Contribution

    If you like this product and wish to contribute to its development, please visit our Github Page

    We are welcoming contributions in any forms (code, issues, documentation, ideas, question, etc.)

    + \ No newline at end of file diff --git a/participate/wallet/dapps-communication/index.html b/participate/wallet/dapps-communication/index.html index 5e17a4ac7..2abfe5a1f 100644 --- a/participate/wallet/dapps-communication/index.html +++ b/participate/wallet/dapps-communication/index.html @@ -4,13 +4,13 @@ Communication with DApps | Archethic - +
    -

    Communication with DApps

    In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.

    Point of view on usage

    When a dApp wants to perform a transaction that requires the use of private keys, it must call on the user’s wallet to protect this information and avoid unauthorized exposure. There are several ways to do this:

    The dApp can solicit the wallet in a “covert” manner without requiring the user’s intervention. For example, it can retrieve information about the current account or services available in the decentralized wallet.

    1

    The dApp can also listen to the wallet and adapt itself according to the actions performed in it. For example, a change in the current account in the wallet may result in a change in the current account in the dApp.

    2

    Finally, the dApp can solicit the wallet and ask the user to confirm an action. For example, this could be the signing of a transaction.

    3

    Technical point of view

    In order not to limit the platforms, Archethic has implemented two protocols to allow an easy integration of its wallet with dApps:

    • For Desktop and Web Client platforms, Archethic uses the Local RPC server protocol. A WebSocket server is provided by Archethic Wallet, using the JSON-RPC 2.0 protocol. DApp developers can use the Dart or JS coded communication libraries provided by Archethic to easily integrate this functionality into their dApp.
    • For Mobile platforms, Archethic uses DeepLinks via an HTTPS URL to enable communication between the dApp and the Archethic wallet.

    For the Dart and Flutter part, these protocols have been implemented within the “Archethic Wallet Client” (AWC) communication library, which therefore allows Dapps to communicate with the Archethic wallet through a unified interface.

    4

    AWC supports several API methods, including signing and sending transactions to the Archethic blockchain, retrieving the wallet’s endpoint URL, retrieving accounts available on the wallet, adding services to the keychain, and more.

    Using AWC allows Dapps developers to focus on developing their application rather than managing communication with the wallet and blockchain. The solution is also cross-platform (macOS, iOS, Android, Web, Windows, Linux), which facilitates the interaction between users and the blockchain and avoids forcing developers to develop their Dapps on a specific platform.

    It is worth noting that for the JS part, developers can find the interfaces directly in the “libjs” library of Archethic. This greatly facilitates the integration of the wallet with dApps written in JavaScript.

    5

    Available commands

    The wallet context related commands that do not require user confirmation in the wallet are:

    • Endpoint retrieval,
    • Recovery of user accounts,
    • Recovery of the current account,
    • Recovery of the services contained in the decentralized wallet,
    • Derivation of a key pair for a given service and index and recovery of the public key,
    • Deriving an address for a given service and index.

    The information that can be listened to is:

    • The change of balance or last address of the current account,
    • The change of the current account.

    The commands related to the wallet context requiring the user’s confirmation in the wallet are:

    • Signing and sending a transaction to the blockchain,
    • Signature of a list of transactions,
    • Adding a service in the decentralized wallet.

    RPC Methods

    There are two kinds of methods :

    • one time call
    • subscriptions.

    Subscriptions won't be available on Deeplink channel because of technical limitations.

    get_endpoint

    Gets the endpoint URL used on AEWallet.

    Request

    // no payload in request

    Success Response

    {
    "endpointUrl": String // Endpoint URL
    }

    get_accounts

    Gets the accounts avalaible on AEWallet.

    Request

    // No payload

    Success Response

    {
    "accounts": [
    {
    "name": String, // Account name
    "genesisAddress": String, // Genesis address
    }
    ]
    }

    send_transaction

    Signs and sends a transaction.

    Request

    {
    "type": String, // Type of transaction
    "version": Number, // Version of the transaction (used for backward compatiblity)
    "data": Object, // Transaction data zone (identity, keychain, smart contract, etc.)
    }

    Success Response

    {
    "transactionAddress": String, // Sent transaction address.
    "nbConfirmations": Number, // Number of received confirmations.
    "maxConfirmations": Number, // Max number of confirmations.
    }

    add_service

    Add a service in the keychain

    Request

    {
    "name": String, // Name of the service
    }

    Success Response

    {
    "transactionAddress": String, // Transaction address.
    "nbConfirmations": Number, // Number of received confirmations.
    "maxConfirmations": Number, // Max number of confirmations.
    }

    get_services_from_keychain

    Gets keychain's services from the keychain connected to AEWallet.

    Request

    // No payload

    Success Response

    {
    "services": [
    {
    "derivationPath": String, // Derivation path
    "curve": String, // Curve
    "hashAlgo": String // Hash Algo
    }
    ]
    }

    keychain_derive_keypair

    Derive a keypair for the given service at the index given and get the public key

    Request

    {
    "serviceName": String, // Service name to identify the derivation path to use
    "index": Number, // Chain index to derive (optional - default to 0)
    "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)
    }

    Success Response

    {
    "publicKey": String // Public key of the service at the index given
    }

    keychain_derive_address

    Derive an address for the given service at the index given

    Request

    {
    "serviceName": String, // Service name to identify the derivation path to use
    "index": Number, // Chain index to derive (optional - default to 0)
    "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)
    }

    Success Response

    {
    "address": String // Address derived
    }

    get_current_account

    Gets the current account selected on AEWallet.

    Request

    // No payload

    Success Response

    {
    "name": String, // Account name
    "genesisAddress": String, // Genesis address
    }

    sign_transactions

    Signs many transactions.

    Request

    {
    "serviceName": String, // Service name to use to sign the tx
    "pathSuffix": String, // Additional information to add to a service derivation path (optional)
    "transactions": [
    {
    "type": String, // Type of transaction
    "version": Number, // Version of the transaction (used for backward compatiblity)
    "data": Object // Transaction data zone (identity, keychain, smart contract, etc.)
    }
    ]
    }

    Success Response

    {
    "signedTxs": [
    {
    "address": String, // Address: hash of the new generated public key for the given transaction
    "previousPublicKey": String, // Previous generated public key matching the previous signature
    "previousSignature": String, // Signature from the previous public key
    "originSignature": String // Signature from the device which originated the transaction (used in the Proof of work)
    }
    ]
    }

    In conclusion

    The communication protocol developed by Archethic allows an easy and secure interaction between dApps and the blockchain by delegating the communication to the user’s wallet. The integration methods proposed are simple and efficient, especially thanks to the “Archethic Wallet Client” (AWC) communication library which facilitates the use of the API. Developers can focus on developing their application without having to manage communication with the wallet and the blockchain. This cross-platform solution is therefore a wise choice for developers who want to write dApps that are compatible with different platforms. Finally, the availability of interfaces in the “libjs” library also facilitates integration for developers of applications written in JavaScript.

    Find more information at the following links.

    - +

    Communication with DApps

    In the blockchain ecosystem, decentralized applications (dApps) are becoming increasingly popular. To enable reliable and secure communication between these applications and the blockchain, Archethic has developed a communication protocol with its Archethic Wallet application. This protocol allows dApps to delegate secure communication with the blockchain to the wallet and to protect private information within the wallet (seed, private keys) without exposing it to the dApps.

    Point of view on usage

    When a dApp wants to perform a transaction that requires the use of private keys, it must call on the user’s wallet to protect this information and avoid unauthorized exposure. There are several ways to do this:

    The dApp can solicit the wallet in a “covert” manner without requiring the user’s intervention. For example, it can retrieve information about the current account or services available in the decentralized wallet.

    1

    The dApp can also listen to the wallet and adapt itself according to the actions performed in it. For example, a change in the current account in the wallet may result in a change in the current account in the dApp.

    2

    Finally, the dApp can solicit the wallet and ask the user to confirm an action. For example, this could be the signing of a transaction.

    3

    Technical point of view

    In order not to limit the platforms, Archethic has implemented two protocols to allow an easy integration of its wallet with dApps:

    • For Desktop and Web Client platforms, Archethic uses the Local RPC server protocol. A WebSocket server is provided by Archethic Wallet, using the JSON-RPC 2.0 protocol. DApp developers can use the Dart or JS coded communication libraries provided by Archethic to easily integrate this functionality into their dApp.
    • For Mobile platforms, Archethic uses DeepLinks via an HTTPS URL to enable communication between the dApp and the Archethic wallet.

    For the Dart and Flutter part, these protocols have been implemented within the “Archethic Wallet Client” (AWC) communication library, which therefore allows Dapps to communicate with the Archethic wallet through a unified interface.

    4

    AWC supports several API methods, including signing and sending transactions to the Archethic blockchain, retrieving the wallet’s endpoint URL, retrieving accounts available on the wallet, adding services to the keychain, and more.

    Using AWC allows Dapps developers to focus on developing their application rather than managing communication with the wallet and blockchain. The solution is also cross-platform (macOS, iOS, Android, Web, Windows, Linux), which facilitates the interaction between users and the blockchain and avoids forcing developers to develop their Dapps on a specific platform.

    It is worth noting that for the JS part, developers can find the interfaces directly in the “libjs” library of Archethic. This greatly facilitates the integration of the wallet with dApps written in JavaScript.

    5

    Available commands

    The wallet context related commands that do not require user confirmation in the wallet are:

    • Endpoint retrieval,
    • Recovery of user accounts,
    • Recovery of the current account,
    • Recovery of the services contained in the decentralized wallet,
    • Derivation of a key pair for a given service and index and recovery of the public key,
    • Deriving an address for a given service and index.

    The information that can be listened to is:

    • The change of balance or last address of the current account,
    • The change of the current account.

    The commands related to the wallet context requiring the user’s confirmation in the wallet are:

    • Signing and sending a transaction to the blockchain,
    • Signature of a list of transactions,
    • Adding a service in the decentralized wallet.

    RPC Methods

    There are two kinds of methods :

    • one time call
    • subscriptions.

    Subscriptions won't be available on Deeplink channel because of technical limitations.

    get_endpoint

    Gets the endpoint URL used on AEWallet.

    Request

    // no payload in request

    Success Response

    {
    "endpointUrl": String // Endpoint URL
    }

    get_accounts

    Gets the accounts avalaible on AEWallet.

    Request

    // No payload

    Success Response

    {
    "accounts": [
    {
    "name": String, // Account name
    "genesisAddress": String, // Genesis address
    }
    ]
    }

    send_transaction

    Signs and sends a transaction.

    Request

    {
    "type": String, // Type of transaction
    "version": Number, // Version of the transaction (used for backward compatiblity)
    "data": Object, // Transaction data zone (identity, keychain, smart contract, etc.)
    }

    Success Response

    {
    "transactionAddress": String, // Sent transaction address.
    "nbConfirmations": Number, // Number of received confirmations.
    "maxConfirmations": Number, // Max number of confirmations.
    }

    add_service

    Add a service in the keychain

    Request

    {
    "name": String, // Name of the service
    }

    Success Response

    {
    "transactionAddress": String, // Transaction address.
    "nbConfirmations": Number, // Number of received confirmations.
    "maxConfirmations": Number, // Max number of confirmations.
    }

    get_services_from_keychain

    Gets keychain's services from the keychain connected to AEWallet.

    Request

    // No payload

    Success Response

    {
    "services": [
    {
    "derivationPath": String, // Derivation path
    "curve": String, // Curve
    "hashAlgo": String // Hash Algo
    }
    ]
    }

    keychain_derive_keypair

    Derive a keypair for the given service at the index given and get the public key

    Request

    {
    "serviceName": String, // Service name to identify the derivation path to use
    "index": Number, // Chain index to derive (optional - default to 0)
    "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)
    }

    Success Response

    {
    "publicKey": String // Public key of the service at the index given
    }

    keychain_derive_address

    Derive an address for the given service at the index given

    Request

    {
    "serviceName": String, // Service name to identify the derivation path to use
    "index": Number, // Chain index to derive (optional - default to 0)
    "pathSuffix": String // Additional information to add to a service derivation path (optional - default to empty)
    }

    Success Response

    {
    "address": String // Address derived
    }

    get_current_account

    Gets the current account selected on AEWallet.

    Request

    // No payload

    Success Response

    {
    "name": String, // Account name
    "genesisAddress": String, // Genesis address
    }

    sign_transactions

    Signs many transactions.

    Request

    {
    "serviceName": String, // Service name to use to sign the tx
    "pathSuffix": String, // Additional information to add to a service derivation path (optional)
    "transactions": [
    {
    "type": String, // Type of transaction
    "version": Number, // Version of the transaction (used for backward compatiblity)
    "data": Object // Transaction data zone (identity, keychain, smart contract, etc.)
    }
    ]
    }

    Success Response

    {
    "signedTxs": [
    {
    "address": String, // Address: hash of the new generated public key for the given transaction
    "previousPublicKey": String, // Previous generated public key matching the previous signature
    "previousSignature": String, // Signature from the previous public key
    "originSignature": String // Signature from the device which originated the transaction (used in the Proof of work)
    }
    ]
    }

    In conclusion

    The communication protocol developed by Archethic allows an easy and secure interaction between dApps and the blockchain by delegating the communication to the user’s wallet. The integration methods proposed are simple and efficient, especially thanks to the “Archethic Wallet Client” (AWC) communication library which facilitates the use of the API. Developers can focus on developing their application without having to manage communication with the wallet and the blockchain. This cross-platform solution is therefore a wise choice for developers who want to write dApps that are compatible with different platforms. Finally, the availability of interfaces in the “libjs” library also facilitates integration for developers of applications written in JavaScript.

    Find more information at the following links.

    + \ No newline at end of file diff --git a/participate/wallet/index.html b/participate/wallet/index.html index fa791ce1f..f45c313c8 100644 --- a/participate/wallet/index.html +++ b/participate/wallet/index.html @@ -4,7 +4,7 @@ Archethic Wallet | Archethic - + @@ -16,8 +16,8 @@ Finally, for OTP via Yubicloud: Yubico OTP is a simple yet strong authentication mechanism that is supported by all YubiKeys out of the box. Yubico OTP can be used as the second factor in a 2-factor authentication scheme or on its own, providing 1-factor authentication. YubiCloud is the name of Yubico’s web service for verifying OTPs. Before using YubiCloud, you need to get an API key from here - it is quick, free and helps us in preventing misuse of YubiCloud.

    Data store

    Archethic Wallet stores a set of information so that the application is functional in both online and offline mode.

    The first group of information represents the globally available user preferences:

    • First Launch: Allows to know if this is the first launch of the application in order to clear the keystore for iOS. Indeed, iOS key store is persistent, so if this is first launch then we will clear the keystore.
    • Authentification Method: Allows to know which authentication mode is used (PIN, password, YubiKey, biometrics).
    • Current Currency: Allows you to know what currency is used in the application.
    • Current Language: Allows you to know which language is used in the application.
    • Current Primary Setting: Allows to know if the currency displayed in priority is Fiat or Crypto.
    • Current Network: Allows to know if the wallet is connected to mainnet, testnet or to a local node whose endpoint is recorded in the following information.
    • Current Network Endpoint: Allows to know the address of the local node.
    • Current Theme: Allows to know which theme is used in the application.
    • Lock: Allows to know if it is necessary to authenticate at the launching of the application.
    • Lock Timeout: Allows to know after how long the application requires authentication at its launch if the user has left the application open to browse for another one for example.
    • Auto Lock Date: Contains the timestamp of the last autolock.
    • Pin Pad Shuffle: Allows you to determine whether the PIN code keyboard should be shuffled when entering.
    • Show Balances: Allows you to determine if the financial information should be displayed.
    • Show Blog: Allows you to know which blog articles should be displayed.
    • Show Price Chart: Allows you to determine whether the graph and indicators of the UCO price chart should be displayed.
    • Price Chart Scale: Current scale of the price chart.
    • Active Vibrations: Allows to know if at each action, a small vibration is emitted on the mobiles.
    • Active Notifications: Allows to know if the notifications of reception of UCO are active or not.
    • Active RPC Server: Allows DApps connect to the wallet to get informations or send/sign transactions.
    • Language Seed: Allows to know if the seed phrase is composed of French or English words.
    • Current Version: Current version of the wallet app installed.
    • Main Screen Current Page: Current page selected on the main screen.

    The second group of information represents the sensitive elements related to security:

    • Seed: Allows to store the wallet seed needed to perform transactions on the Archethic blockchain.
    • PIN: Allows to store the PIN code in case this authentication method has been chosen.
    • Password: Allows to keep the password in case this authentication method has been chosen.
    • Yubicloud ID and API Key: Allows to keep the authentication information for the management of the OTP with the YubiKey in case this authentication method has been chosen. This information is stored securely.
    • Keychain secured informations: Keychain's informations like keychain's seed, keychain's version and the associated list of services.
    • And finally, a secure 256-bit (32 bytes) encryption key to secure data on the disk.
    info

    Remember that Archethic will never pass on your data to a third party or use your data in any other way than that offered by the application

    In the case of user preference data, we made the choice to store it in a local database Hive rather than the Flutter object SharedPreferences for performance reasons. All the information is available in this medium article. These data are stored in clear text because they are not sensitive.

    On the other hand, the information related to security management must be protected. Here again, Hive is used but the stored values are encrypted. Hive provides a helper function to generate a secure encryption key using the Fortuna random number generator. -The key is stored base64 encoded in a secure space via the FlutterSecureStorage library.

    Interactions with the Archethic blockchain

    Based on the Archethic JS SDK, a SDK has been developed in dart and is maintained by the Archethic teams in order to offer internal or community-developed Flutter DApps to interact with the Archethic Blockchain.

    This open-source SDK "archethic_lib_dart", available on GitHub, can be added as dependencies in Dart or Flutter projects via the Flutter libraries and packages sharing site Pub.dev.

    Setup

    Pre-requisites

    • Flutter 3.10+
    • Dart 3.0+

    Instructions

    • Download the repo into a folder
    • Goto the folder and from terminal run flutter pub get to get the packages
    • Once packages are installed
      • You can build and run the program for emulator from VSCode Flutter SDK Tools
      • You can build for android emulator if already installed.
    • Once the packages and installed and application is built
    • Run the program with flutter run
    - +The key is stored base64 encoded in a secure space via the FlutterSecureStorage library.

    Interactions with the Archethic blockchain

    Based on the Archethic JS SDK, a SDK has been developed in dart and is maintained by the Archethic teams in order to offer internal or community-developed Flutter DApps to interact with the Archethic Blockchain.

    This open-source SDK "archethic_lib_dart", available on GitHub, can be added as dependencies in Dart or Flutter projects via the Flutter libraries and packages sharing site Pub.dev.

    Setup

    Pre-requisites

    • Flutter 3.10+
    • Dart 3.0+

    Instructions

    • Download the repo into a folder
    • Goto the folder and from terminal run flutter pub get to get the packages
    • Once packages are installed
      • You can build and run the program for emulator from VSCode Flutter SDK Tools
      • You can build for android emulator if already installed.
    • Once the packages and installed and application is built
    • Run the program with flutter run
    + \ No newline at end of file diff --git a/schema/index.html b/schema/index.html index ee4b1d949..939dbfcd8 100644 --- a/schema/index.html +++ b/schema/index.html @@ -4,13 +4,13 @@ Schema Documentation | Archethic - +
    -

    Schema Documentation

    This documentation has been automatically generated from the GraphQL schema.

    Use the docs in the sidebar to find out how to use the schema:

    • Allowed operations: queries and mutations.
    • Schema-defined types: scalars, objects, enums, interfaces, unions, and input objects.
    Generated on 09/06/2023 13:56:15.
    - +

    Schema Documentation

    This documentation has been automatically generated from the GraphQL schema.

    Use the docs in the sidebar to find out how to use the schema:

    • Allowed operations: queries and mutations.
    • Schema-defined types: scalars, objects, enums, interfaces, unions, and input objects.
    Generated on 09/06/2023 13:56:15.
    + \ No newline at end of file diff --git a/search-index-default.json b/search-index-default.json index 9e2a906d9..e45b7c2ed 100644 --- a/search-index-default.json +++ b/search-index-default.json @@ -1 +1 @@ -{"documents":[{"id":1,"pageTitle":"","sectionTitle":"Markdown page example","sectionRoute":"/markdown-page","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content"],"fieldVectors":[["title/1",[0,0.288,1,0.288,2,0.288]],["content/1",[]]],"invertedIndex":[["exampl",{"_index":2,"title":{"1":{}},"content":{}}],["markdown",{"_index":0,"title":{"1":{}},"content":{}}],["page",{"_index":1,"title":{"1":{}},"content":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file +{"documents":[{"id":24,"pageTitle":"","sectionTitle":"Markdown page example","sectionRoute":"/markdown-page","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content"],"fieldVectors":[["title/24",[0,0.288,1,0.288,2,0.288]],["content/24",[]]],"invertedIndex":[["exampl",{"_index":2,"title":{"24":{}},"content":{}}],["markdown",{"_index":0,"title":{"24":{}},"content":{}}],["page",{"_index":1,"title":{"24":{}},"content":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file diff --git a/search-index-docs-default-current.json b/search-index-docs-default-current.json index 8127b4718..ebadfa108 100644 --- a/search-index-docs-default-current.json +++ b/search-index-docs-default-current.json @@ -1 +1 @@ -{"documents":[{"id":2,"pageTitle":"include","sectionTitle":"include","sectionRoute":"/build/api/schema/directives/include","type":"docs"},{"id":3,"pageTitle":"include","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/directives/include#arguments","type":"docs"},{"id":4,"pageTitle":"skip","sectionTitle":"skip","sectionRoute":"/build/api/schema/directives/skip","type":"docs"},{"id":5,"pageTitle":"skip","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/directives/skip#arguments","type":"docs"},{"id":6,"pageTitle":"ErrorContext","sectionTitle":"ErrorContext","sectionRoute":"/build/api/schema/enums/error-context","type":"docs"},{"id":7,"pageTitle":"ErrorContext","sectionTitle":"Values","sectionRoute":"/build/api/schema/enums/error-context#values","type":"docs"},{"id":8,"pageTitle":"ErrorContext","sectionTitle":"Member of","sectionRoute":"/build/api/schema/enums/error-context#member-of","type":"docs"},{"id":9,"pageTitle":"SortOrder","sectionTitle":"SortOrder","sectionRoute":"/build/api/schema/enums/sort-order","type":"docs"},{"id":10,"pageTitle":"SortOrder","sectionTitle":"Values","sectionRoute":"/build/api/schema/enums/sort-order#values","type":"docs"},{"id":11,"pageTitle":"SortOrder","sectionTitle":"Member of","sectionRoute":"/build/api/schema/enums/sort-order#member-of","type":"docs"},{"id":12,"pageTitle":"AuthorizedKey","sectionTitle":"AuthorizedKey","sectionRoute":"/build/api/schema/objects/authorized-key","type":"docs"},{"id":13,"pageTitle":"AuthorizedKey","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/authorized-key#fields","type":"docs"},{"id":14,"pageTitle":"AuthorizedKey","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/authorized-key#member-of","type":"docs"},{"id":15,"pageTitle":"Balance","sectionTitle":"Balance","sectionRoute":"/build/api/schema/objects/balance","type":"docs"},{"id":16,"pageTitle":"Balance","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/balance#fields","type":"docs"},{"id":17,"pageTitle":"Balance","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/balance#returned-by","type":"docs"},{"id":18,"pageTitle":"Balance","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/balance#member-of","type":"docs"},{"id":19,"pageTitle":"BeaconChainSummary","sectionTitle":"BeaconChainSummary","sectionRoute":"/build/api/schema/objects/beacon-chain-summary","type":"docs"},{"id":20,"pageTitle":"BeaconChainSummary","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/beacon-chain-summary#fields","type":"docs"},{"id":21,"pageTitle":"BeaconChainSummary","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/beacon-chain-summary#returned-by","type":"docs"},{"id":22,"pageTitle":"CrossValidationStamp","sectionTitle":"CrossValidationStamp","sectionRoute":"/build/api/schema/objects/cross-validation-stamp","type":"docs"},{"id":23,"pageTitle":"CrossValidationStamp","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/cross-validation-stamp#fields","type":"docs"},{"id":24,"pageTitle":"CrossValidationStamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/cross-validation-stamp#member-of","type":"docs"},{"id":25,"pageTitle":"Data","sectionTitle":"Data","sectionRoute":"/build/api/schema/objects/data","type":"docs"},{"id":26,"pageTitle":"Data","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/data#fields","type":"docs"},{"id":27,"pageTitle":"Data","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/data#member-of","type":"docs"},{"id":28,"pageTitle":"Endpoint","sectionTitle":"Endpoint","sectionRoute":"/build/api/schema/objects/endpoint","type":"docs"},{"id":29,"pageTitle":"Endpoint","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/endpoint#fields","type":"docs"},{"id":30,"pageTitle":"Endpoint","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/endpoint#returned-by","type":"docs"},{"id":34,"pageTitle":"Ledger","sectionTitle":"Ledger","sectionRoute":"/build/api/schema/objects/ledger","type":"docs"},{"id":35,"pageTitle":"Ledger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ledger#fields","type":"docs"},{"id":36,"pageTitle":"Ledger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ledger#member-of","type":"docs"},{"id":31,"pageTitle":"LedgerOperations","sectionTitle":"LedgerOperations","sectionRoute":"/build/api/schema/objects/ledger-operations","type":"docs"},{"id":32,"pageTitle":"LedgerOperations","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ledger-operations#fields","type":"docs"},{"id":33,"pageTitle":"LedgerOperations","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ledger-operations#member-of","type":"docs"},{"id":37,"pageTitle":"Node","sectionTitle":"Node","sectionRoute":"/build/api/schema/objects/node","type":"docs"},{"id":38,"pageTitle":"Node","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/node#fields","type":"docs"},{"id":39,"pageTitle":"Node","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/node#returned-by","type":"docs"},{"id":40,"pageTitle":"OracleData","sectionTitle":"OracleData","sectionRoute":"/build/api/schema/objects/oracle-data","type":"docs"},{"id":41,"pageTitle":"OracleData","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/oracle-data#fields","type":"docs"},{"id":42,"pageTitle":"OracleData","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/oracle-data#returned-by","type":"docs"},{"id":43,"pageTitle":"OracleServices","sectionTitle":"OracleServices","sectionRoute":"/build/api/schema/objects/oracle-services","type":"docs"},{"id":44,"pageTitle":"OracleServices","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/oracle-services#fields","type":"docs"},{"id":45,"pageTitle":"OracleServices","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/oracle-services#member-of","type":"docs"},{"id":46,"pageTitle":"Ownership","sectionTitle":"Ownership","sectionRoute":"/build/api/schema/objects/ownership","type":"docs"},{"id":47,"pageTitle":"Ownership","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ownership#fields","type":"docs"},{"id":48,"pageTitle":"Ownership","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ownership#member-of","type":"docs"},{"id":49,"pageTitle":"SharedSecrets","sectionTitle":"SharedSecrets","sectionRoute":"/build/api/schema/objects/shared-secrets","type":"docs"},{"id":50,"pageTitle":"SharedSecrets","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/shared-secrets#fields","type":"docs"},{"id":51,"pageTitle":"SharedSecrets","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/shared-secrets#returned-by","type":"docs"},{"id":55,"pageTitle":"Token","sectionTitle":"Token","sectionRoute":"/build/api/schema/objects/token","type":"docs"},{"id":56,"pageTitle":"Token","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token#fields","type":"docs"},{"id":57,"pageTitle":"Token","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/token#returned-by","type":"docs"},{"id":52,"pageTitle":"TokenBalance","sectionTitle":"TokenBalance","sectionRoute":"/build/api/schema/objects/token-balance","type":"docs"},{"id":53,"pageTitle":"TokenBalance","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-balance#fields","type":"docs"},{"id":54,"pageTitle":"TokenBalance","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-balance#member-of","type":"docs"},{"id":61,"pageTitle":"TokenLedger","sectionTitle":"TokenLedger","sectionRoute":"/build/api/schema/objects/token-ledger","type":"docs"},{"id":62,"pageTitle":"TokenLedger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-ledger#fields","type":"docs"},{"id":63,"pageTitle":"TokenLedger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-ledger#member-of","type":"docs"},{"id":58,"pageTitle":"TokenTransfer","sectionTitle":"TokenTransfer","sectionRoute":"/build/api/schema/objects/token-transfer","type":"docs"},{"id":59,"pageTitle":"TokenTransfer","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-transfer#fields","type":"docs"},{"id":60,"pageTitle":"TokenTransfer","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-transfer#member-of","type":"docs"},{"id":70,"pageTitle":"Transaction","sectionTitle":"Transaction","sectionRoute":"/build/api/schema/objects/transaction","type":"docs"},{"id":71,"pageTitle":"Transaction","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction#fields","type":"docs"},{"id":72,"pageTitle":"Transaction","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction#returned-by","type":"docs"},{"id":67,"pageTitle":"TransactionAttestation","sectionTitle":"TransactionAttestation","sectionRoute":"/build/api/schema/objects/transaction-attestation","type":"docs"},{"id":68,"pageTitle":"TransactionAttestation","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-attestation#fields","type":"docs"},{"id":69,"pageTitle":"TransactionAttestation","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-attestation#returned-by","type":"docs"},{"id":64,"pageTitle":"TransactionError","sectionTitle":"TransactionError","sectionRoute":"/build/api/schema/objects/transaction-error","type":"docs"},{"id":65,"pageTitle":"TransactionError","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-error#fields","type":"docs"},{"id":66,"pageTitle":"TransactionError","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-error#returned-by","type":"docs"},{"id":73,"pageTitle":"TransactionInput","sectionTitle":"TransactionInput","sectionRoute":"/build/api/schema/objects/transaction-input","type":"docs"},{"id":74,"pageTitle":"TransactionInput","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-input#fields","type":"docs"},{"id":75,"pageTitle":"TransactionInput","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-input#returned-by","type":"docs"},{"id":76,"pageTitle":"TransactionInput","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-input#member-of","type":"docs"},{"id":83,"pageTitle":"TransactionMovement","sectionTitle":"TransactionMovement","sectionRoute":"/build/api/schema/objects/transaction-movement","type":"docs"},{"id":84,"pageTitle":"TransactionMovement","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-movement#fields","type":"docs"},{"id":85,"pageTitle":"TransactionMovement","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-movement#member-of","type":"docs"},{"id":77,"pageTitle":"TransactionSummary","sectionTitle":"TransactionSummary","sectionRoute":"/build/api/schema/objects/transaction-summary","type":"docs"},{"id":78,"pageTitle":"TransactionSummary","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-summary#fields","type":"docs"},{"id":79,"pageTitle":"TransactionSummary","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-summary#member-of","type":"docs"},{"id":80,"pageTitle":"UcoData","sectionTitle":"UcoData","sectionRoute":"/build/api/schema/objects/uco-data","type":"docs"},{"id":81,"pageTitle":"UcoData","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-data#fields","type":"docs"},{"id":82,"pageTitle":"UcoData","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-data#member-of","type":"docs"},{"id":89,"pageTitle":"UcoLedger","sectionTitle":"UcoLedger","sectionRoute":"/build/api/schema/objects/uco-ledger","type":"docs"},{"id":90,"pageTitle":"UcoLedger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-ledger#fields","type":"docs"},{"id":91,"pageTitle":"UcoLedger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-ledger#member-of","type":"docs"},{"id":86,"pageTitle":"UcoTransfer","sectionTitle":"UcoTransfer","sectionRoute":"/build/api/schema/objects/uco-transfer","type":"docs"},{"id":87,"pageTitle":"UcoTransfer","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-transfer#fields","type":"docs"},{"id":88,"pageTitle":"UcoTransfer","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-transfer#member-of","type":"docs"},{"id":92,"pageTitle":"UnspentOutput","sectionTitle":"UnspentOutput","sectionRoute":"/build/api/schema/objects/unspent-output","type":"docs"},{"id":93,"pageTitle":"UnspentOutput","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/unspent-output#fields","type":"docs"},{"id":94,"pageTitle":"UnspentOutput","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/unspent-output#member-of","type":"docs"},{"id":95,"pageTitle":"ValidationStamp","sectionTitle":"ValidationStamp","sectionRoute":"/build/api/schema/objects/validation-stamp","type":"docs"},{"id":96,"pageTitle":"ValidationStamp","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/validation-stamp#fields","type":"docs"},{"id":97,"pageTitle":"ValidationStamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/validation-stamp#member-of","type":"docs"},{"id":98,"pageTitle":"Version","sectionTitle":"Version","sectionRoute":"/build/api/schema/objects/version","type":"docs"},{"id":99,"pageTitle":"Version","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/version#fields","type":"docs"},{"id":100,"pageTitle":"Version","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/version#returned-by","type":"docs"},{"id":101,"pageTitle":"balance","sectionTitle":"balance","sectionRoute":"/build/api/schema/queries/balance","type":"docs"},{"id":102,"pageTitle":"balance","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/balance#arguments","type":"docs"},{"id":103,"pageTitle":"balance","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/balance#type","type":"docs"},{"id":104,"pageTitle":"beaconChainSummary","sectionTitle":"beaconChainSummary","sectionRoute":"/build/api/schema/queries/beacon-chain-summary","type":"docs"},{"id":105,"pageTitle":"beaconChainSummary","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/beacon-chain-summary#arguments","type":"docs"},{"id":106,"pageTitle":"beaconChainSummary","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/beacon-chain-summary#type","type":"docs"},{"id":107,"pageTitle":"genesisAddress","sectionTitle":"genesisAddress","sectionRoute":"/build/api/schema/queries/genesis-address","type":"docs"},{"id":108,"pageTitle":"genesisAddress","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/genesis-address#arguments","type":"docs"},{"id":109,"pageTitle":"genesisAddress","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/genesis-address#type","type":"docs"},{"id":112,"pageTitle":"lastTransaction","sectionTitle":"lastTransaction","sectionRoute":"/build/api/schema/queries/last-transaction","type":"docs"},{"id":113,"pageTitle":"lastTransaction","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/last-transaction#arguments","type":"docs"},{"id":114,"pageTitle":"lastTransaction","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/last-transaction#type","type":"docs"},{"id":110,"pageTitle":"nearestEndpoints","sectionTitle":"nearestEndpoints","sectionRoute":"/build/api/schema/queries/nearest-endpoints","type":"docs"},{"id":111,"pageTitle":"nearestEndpoints","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/nearest-endpoints#type","type":"docs"},{"id":115,"pageTitle":"networkTransactions","sectionTitle":"networkTransactions","sectionRoute":"/build/api/schema/queries/network-transactions","type":"docs"},{"id":116,"pageTitle":"networkTransactions","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/network-transactions#arguments","type":"docs"},{"id":117,"pageTitle":"networkTransactions","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/network-transactions#type","type":"docs"},{"id":118,"pageTitle":"nodes","sectionTitle":"nodes","sectionRoute":"/build/api/schema/queries/nodes","type":"docs"},{"id":119,"pageTitle":"nodes","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/nodes#type","type":"docs"},{"id":120,"pageTitle":"oracleData","sectionTitle":"oracleData","sectionRoute":"/build/api/schema/queries/oracle-data","type":"docs"},{"id":121,"pageTitle":"oracleData","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/oracle-data#arguments","type":"docs"},{"id":122,"pageTitle":"oracleData","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/oracle-data#type","type":"docs"},{"id":129,"pageTitle":"sharedSecrets","sectionTitle":"sharedSecrets","sectionRoute":"/build/api/schema/queries/shared-secrets","type":"docs"},{"id":130,"pageTitle":"sharedSecrets","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/shared-secrets#type","type":"docs"},{"id":123,"pageTitle":"token","sectionTitle":"token","sectionRoute":"/build/api/schema/queries/token","type":"docs"},{"id":124,"pageTitle":"token","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/token#arguments","type":"docs"},{"id":125,"pageTitle":"token","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/token#type","type":"docs"},{"id":126,"pageTitle":"transaction","sectionTitle":"transaction","sectionRoute":"/build/api/schema/queries/transaction","type":"docs"},{"id":127,"pageTitle":"transaction","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction#arguments","type":"docs"},{"id":128,"pageTitle":"transaction","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction#type","type":"docs"},{"id":131,"pageTitle":"transactionChain","sectionTitle":"transactionChain","sectionRoute":"/build/api/schema/queries/transaction-chain","type":"docs"},{"id":132,"pageTitle":"transactionChain","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction-chain#arguments","type":"docs"},{"id":133,"pageTitle":"transactionChain","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction-chain#type","type":"docs"},{"id":134,"pageTitle":"transactionInputs","sectionTitle":"transactionInputs","sectionRoute":"/build/api/schema/queries/transaction-inputs","type":"docs"},{"id":135,"pageTitle":"transactionInputs","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction-inputs#arguments","type":"docs"},{"id":136,"pageTitle":"transactionInputs","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction-inputs#type","type":"docs"},{"id":137,"pageTitle":"transactions","sectionTitle":"transactions","sectionRoute":"/build/api/schema/queries/transactions","type":"docs"},{"id":138,"pageTitle":"transactions","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transactions#arguments","type":"docs"},{"id":139,"pageTitle":"transactions","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transactions#type","type":"docs"},{"id":149,"pageTitle":"version","sectionTitle":"version","sectionRoute":"/build/api/schema/queries/version","type":"docs"},{"id":150,"pageTitle":"version","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/version#type","type":"docs"},{"id":144,"pageTitle":"Address","sectionTitle":"Address","sectionRoute":"/build/api/schema/scalars/address","type":"docs"},{"id":145,"pageTitle":"Address","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/scalars/address#returned-by","type":"docs"},{"id":146,"pageTitle":"Address","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/address#member-of","type":"docs"},{"id":140,"pageTitle":"Boolean","sectionTitle":"Boolean","sectionRoute":"/build/api/schema/scalars/boolean","type":"docs"},{"id":141,"pageTitle":"Boolean","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/boolean#member-of","type":"docs"},{"id":142,"pageTitle":"Content","sectionTitle":"Content","sectionRoute":"/build/api/schema/scalars/content","type":"docs"},{"id":143,"pageTitle":"Content","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/content#member-of","type":"docs"},{"id":151,"pageTitle":"Float","sectionTitle":"Float","sectionRoute":"/build/api/schema/scalars/float","type":"docs"},{"id":152,"pageTitle":"Float","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/float#member-of","type":"docs"},{"id":147,"pageTitle":"Hash","sectionTitle":"Hash","sectionRoute":"/build/api/schema/scalars/hash","type":"docs"},{"id":148,"pageTitle":"Hash","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/hash#member-of","type":"docs"},{"id":153,"pageTitle":"Hex","sectionTitle":"Hex","sectionRoute":"/build/api/schema/scalars/hex","type":"docs"},{"id":154,"pageTitle":"Hex","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/hex#member-of","type":"docs"},{"id":157,"pageTitle":"Int","sectionTitle":"Int","sectionRoute":"/build/api/schema/scalars/int","type":"docs"},{"id":158,"pageTitle":"Int","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/int#member-of","type":"docs"},{"id":155,"pageTitle":"NonNegInteger","sectionTitle":"NonNegInteger","sectionRoute":"/build/api/schema/scalars/non-neg-integer","type":"docs"},{"id":156,"pageTitle":"NonNegInteger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/non-neg-integer#member-of","type":"docs"},{"id":161,"pageTitle":"P2pAvailabilities","sectionTitle":"P2pAvailabilities","sectionRoute":"/build/api/schema/scalars/p2-p-availabilities","type":"docs"},{"id":162,"pageTitle":"P2pAvailabilities","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/p2-p-availabilities#member-of","type":"docs"},{"id":159,"pageTitle":"PosInteger","sectionTitle":"PosInteger","sectionRoute":"/build/api/schema/scalars/pos-integer","type":"docs"},{"id":160,"pageTitle":"PosInteger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/pos-integer#member-of","type":"docs"},{"id":163,"pageTitle":"PublicKey","sectionTitle":"PublicKey","sectionRoute":"/build/api/schema/scalars/public-key","type":"docs"},{"id":164,"pageTitle":"PublicKey","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/public-key#member-of","type":"docs"},{"id":165,"pageTitle":"String","sectionTitle":"String","sectionRoute":"/build/api/schema/scalars/string","type":"docs"},{"id":166,"pageTitle":"String","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/string#member-of","type":"docs"},{"id":167,"pageTitle":"Timestamp","sectionTitle":"Timestamp","sectionRoute":"/build/api/schema/scalars/timestamp","type":"docs"},{"id":168,"pageTitle":"Timestamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/timestamp#member-of","type":"docs"},{"id":169,"pageTitle":"TokenProperties","sectionTitle":"TokenProperties","sectionRoute":"/build/api/schema/scalars/token-properties","type":"docs"},{"id":170,"pageTitle":"TokenProperties","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/token-properties#member-of","type":"docs"},{"id":171,"pageTitle":"TransactionType","sectionTitle":"TransactionType","sectionRoute":"/build/api/schema/scalars/transaction-type","type":"docs"},{"id":172,"pageTitle":"TransactionType","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/transaction-type#member-of","type":"docs"},{"id":173,"pageTitle":"oracleUpdate","sectionTitle":"oracleUpdate","sectionRoute":"/build/api/schema/subscriptions/oracle-update","type":"docs"},{"id":174,"pageTitle":"oracleUpdate","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/oracle-update#type","type":"docs"},{"id":178,"pageTitle":"transactionConfirmed","sectionTitle":"transactionConfirmed","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed","type":"docs"},{"id":179,"pageTitle":"transactionConfirmed","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed#arguments","type":"docs"},{"id":180,"pageTitle":"transactionConfirmed","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed#type","type":"docs"},{"id":175,"pageTitle":"transactionError","sectionTitle":"transactionError","sectionRoute":"/build/api/schema/subscriptions/transaction-error","type":"docs"},{"id":176,"pageTitle":"transactionError","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/subscriptions/transaction-error#arguments","type":"docs"},{"id":177,"pageTitle":"transactionError","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/transaction-error#type","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Introduction","sectionRoute":"/build/clients/ledger-wallet/","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/build/clients/ledger-wallet/#synopsis","type":"docs"},{"id":183,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/build/clients/ledger-wallet/#prerequisites","type":"docs"},{"id":184,"pageTitle":"","sectionTitle":"Installation Instructions","sectionRoute":"/build/clients/ledger-wallet/#installation-instructions","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"Testing","sectionRoute":"/build/clients/ledger-wallet/#testing","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"Demo","sectionRoute":"/build/clients/ledger-wallet/#demo","type":"docs"},{"id":187,"pageTitle":"Ledger Application API","sectionTitle":"Ledger Application API","sectionRoute":"/build/clients/ledger-wallet/api","type":"docs"},{"id":188,"pageTitle":"Ledger Application API","sectionTitle":"GET VERSION","sectionRoute":"/build/clients/ledger-wallet/api#get-version","type":"docs"},{"id":189,"pageTitle":"Ledger Application API","sectionTitle":"GET DEVICE ORIGIN PUBLIC KEY","sectionRoute":"/build/clients/ledger-wallet/api#get-device-origin-public-key","type":"docs"},{"id":190,"pageTitle":"Ledger Application API","sectionTitle":"GET ARCHETHIC ADDRESS","sectionRoute":"/build/clients/ledger-wallet/api#get-archethic-address","type":"docs"},{"id":191,"pageTitle":"Ledger Application API","sectionTitle":"SIGN TRANSACTION","sectionRoute":"/build/clients/ledger-wallet/api#sign-transaction","type":"docs"},{"id":192,"pageTitle":"ADPU commands","sectionTitle":"ADPU commands","sectionRoute":"/build/clients/ledger-wallet/commands","type":"docs"},{"id":193,"pageTitle":"ADPU commands","sectionTitle":"APDU commands","sectionRoute":"/build/clients/ledger-wallet/commands#apdu-commands","type":"docs"},{"id":194,"pageTitle":"ADPU commands","sectionTitle":"Get Origin Public Key","sectionRoute":"/build/clients/ledger-wallet/commands#get-origin-public-key","type":"docs"},{"id":195,"pageTitle":"ADPU commands","sectionTitle":"Get Archethic Account Address","sectionRoute":"/build/clients/ledger-wallet/commands#get-archethic-account-address","type":"docs"},{"id":196,"pageTitle":"ADPU commands","sectionTitle":"Get Signature","sectionRoute":"/build/clients/ledger-wallet/commands#get-signature","type":"docs"},{"id":211,"pageTitle":"Archethic's wallet access","sectionTitle":"Archethic's wallet access","sectionRoute":"/build/clients/wallet-access","type":"docs"},{"id":212,"pageTitle":"Archethic's wallet access","sectionTitle":"Access enrollment","sectionRoute":"/build/clients/wallet-access#access-enrollment","type":"docs"},{"id":213,"pageTitle":"Archethic's wallet access","sectionTitle":"Keychain retrieval","sectionRoute":"/build/clients/wallet-access#keychain-retrieval","type":"docs"},{"id":197,"pageTitle":"Archethic's wallet specification","sectionTitle":"Archethic's wallet specification","sectionRoute":"/build/clients/wallet-spec","type":"docs"},{"id":198,"pageTitle":"Archethic's wallet specification","sectionTitle":"Glossary","sectionRoute":"/build/clients/wallet-spec#glossary","type":"docs"},{"id":199,"pageTitle":"Archethic's wallet specification","sectionTitle":"Cryptography","sectionRoute":"/build/clients/wallet-spec#cryptography","type":"docs"},{"id":200,"pageTitle":"Archethic's wallet specification","sectionTitle":"Derivation path","sectionRoute":"/build/clients/wallet-spec#derivation-path","type":"docs"},{"id":201,"pageTitle":"Archethic's wallet specification","sectionTitle":"Key derivation","sectionRoute":"/build/clients/wallet-spec#key-derivation","type":"docs"},{"id":202,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encryption","sectionRoute":"/build/clients/wallet-spec#encryption","type":"docs"},{"id":203,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding","sectionRoute":"/build/clients/wallet-spec#encoding","type":"docs"},{"id":204,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of wallet","sectionRoute":"/build/clients/wallet-spec#encoding-of-wallet","type":"docs"},{"id":205,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of Curve Types","sectionRoute":"/build/clients/wallet-spec#encoding-of-curve-types","type":"docs"},{"id":206,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of Hash Types","sectionRoute":"/build/clients/wallet-spec#encoding-of-hash-types","type":"docs"},{"id":207,"pageTitle":"Archethic's wallet specification","sectionTitle":"Transaction representation","sectionRoute":"/build/clients/wallet-spec#transaction-representation","type":"docs"},{"id":208,"pageTitle":"Archethic's wallet specification","sectionTitle":"Format","sectionRoute":"/build/clients/wallet-spec#format","type":"docs"},{"id":209,"pageTitle":"Archethic's wallet specification","sectionTitle":"Public Key Format","sectionRoute":"/build/clients/wallet-spec#public-key-format","type":"docs"},{"id":210,"pageTitle":"Archethic's wallet specification","sectionTitle":"Account Address Format","sectionRoute":"/build/clients/wallet-spec#account-address-format","type":"docs"},{"id":214,"pageTitle":"Core development","sectionTitle":"Core development","sectionRoute":"/build/core/","type":"docs"},{"id":215,"pageTitle":"Core development","sectionTitle":"Technology Stack","sectionRoute":"/build/core/#technology-stack","type":"docs"},{"id":216,"pageTitle":"Core development","sectionTitle":"Why Elixir ?","sectionRoute":"/build/core/#why-elixir-","type":"docs"},{"id":217,"pageTitle":"Core development","sectionTitle":"Why C ?","sectionRoute":"/build/core/#why-c-","type":"docs"},{"id":218,"pageTitle":"Core development","sectionTitle":"Structure","sectionRoute":"/build/core/#structure","type":"docs"},{"id":219,"pageTitle":"Account","sectionTitle":"Account","sectionRoute":"/build/core/account","type":"docs"},{"id":220,"pageTitle":"Account","sectionTitle":"UCO","sectionRoute":"/build/core/account#uco","type":"docs"},{"id":221,"pageTitle":"Account","sectionTitle":"Ledger","sectionRoute":"/build/core/account#ledger","type":"docs"},{"id":222,"pageTitle":"Account","sectionTitle":"Index","sectionRoute":"/build/core/account#index","type":"docs"},{"id":223,"pageTitle":"Account","sectionTitle":"Token","sectionRoute":"/build/core/account#token","type":"docs"},{"id":224,"pageTitle":"Account","sectionTitle":"Ledger","sectionRoute":"/build/core/account#ledger-1","type":"docs"},{"id":225,"pageTitle":"Account","sectionTitle":"Index","sectionRoute":"/build/core/account#index-1","type":"docs"},{"id":226,"pageTitle":"Account","sectionTitle":"Loading","sectionRoute":"/build/core/account#loading","type":"docs"},{"id":227,"pageTitle":"BeaconChain","sectionTitle":"BeaconChain","sectionRoute":"/build/core/beacon-chain/","type":"docs"},{"id":228,"pageTitle":"BeaconChain","sectionTitle":"Subsets","sectionRoute":"/build/core/beacon-chain/#subsets","type":"docs"},{"id":229,"pageTitle":"BeaconChain","sectionTitle":"Timers and schedulers","sectionRoute":"/build/core/beacon-chain/#timers-and-schedulers","type":"docs"},{"id":230,"pageTitle":"BeaconChain","sectionTitle":"Transaction loading","sectionRoute":"/build/core/beacon-chain/#transaction-loading","type":"docs"},{"id":231,"pageTitle":"BeaconChain","sectionTitle":"Supervisor","sectionRoute":"/build/core/beacon-chain/#supervisor","type":"docs"},{"id":236,"pageTitle":"P2P availability sampling","sectionTitle":"P2P availability sampling","sectionRoute":"/build/core/beacon-chain/p2p-sampling","type":"docs"},{"id":237,"pageTitle":"P2P availability sampling","sectionTitle":"Heartbeat","sectionRoute":"/build/core/beacon-chain/p2p-sampling#heartbeat","type":"docs"},{"id":238,"pageTitle":"P2P availability sampling","sectionTitle":"Aggregation","sectionRoute":"/build/core/beacon-chain/p2p-sampling#aggregation","type":"docs"},{"id":232,"pageTitle":"Bootstrap","sectionTitle":"Bootstrap","sectionRoute":"/build/core/bootstrap","type":"docs"},{"id":233,"pageTitle":"Bootstrap","sectionTitle":"Network initizialiation","sectionRoute":"/build/core/bootstrap#network-initizialiation","type":"docs"},{"id":234,"pageTitle":"Bootstrap","sectionTitle":"First node bootstrapping","sectionRoute":"/build/core/bootstrap#first-node-bootstrapping","type":"docs"},{"id":235,"pageTitle":"Bootstrap","sectionTitle":"Next time bootstraps","sectionRoute":"/build/core/bootstrap#next-time-bootstraps","type":"docs"},{"id":239,"pageTitle":"Cryptography","sectionTitle":"Cryptography","sectionRoute":"/build/core/cryptography/","type":"docs"},{"id":240,"pageTitle":"Cryptography","sectionTitle":"Node Keystore","sectionRoute":"/build/core/cryptography/#node-keystore","type":"docs"},{"id":241,"pageTitle":"Cryptography","sectionTitle":"Node Shared Secrets Keystore","sectionRoute":"/build/core/cryptography/#node-shared-secrets-keystore","type":"docs"},{"id":242,"pageTitle":"TPM Implementation","sectionTitle":"TPM Implementation","sectionRoute":"/build/core/cryptography/tpm","type":"docs"},{"id":243,"pageTitle":"TPM Implementation","sectionTitle":"Global Variables","sectionRoute":"/build/core/cryptography/tpm#global-variables","type":"docs"},{"id":244,"pageTitle":"TPM Implementation","sectionTitle":"void keyToASN():","sectionRoute":"/build/core/cryptography/tpm#void-keytoasn","type":"docs"},{"id":245,"pageTitle":"TPM Implementation","sectionTitle":"void signToASN(BYTE r, INT sizeR, BYTE s, INT sizeS, INT *asnSignSize)","sectionRoute":"/build/core/cryptography/tpm#void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize","type":"docs"},{"id":246,"pageTitle":"TPM Implementation","sectionTitle":"void generatePublicKey(INT keyIndex)","sectionRoute":"/build/core/cryptography/tpm#void-generatepublickeyint-keyindex","type":"docs"},{"id":247,"pageTitle":"TPM Implementation","sectionTitle":"setRootKey()","sectionRoute":"/build/core/cryptography/tpm#setrootkey","type":"docs"},{"id":248,"pageTitle":"TPM Implementation","sectionTitle":"updateHandlesIndexes()","sectionRoute":"/build/core/cryptography/tpm#updatehandlesindexes","type":"docs"},{"id":249,"pageTitle":"TPM Implementation","sectionTitle":"initializeTPM(INT keyIndex):","sectionRoute":"/build/core/cryptography/tpm#initializetpmint-keyindex","type":"docs"},{"id":250,"pageTitle":"TPM Implementation","sectionTitle":"getKeyIndex():","sectionRoute":"/build/core/cryptography/tpm#getkeyindex","type":"docs"},{"id":251,"pageTitle":"TPM Implementation","sectionTitle":"setKeyIndex(INT keyIndex):","sectionRoute":"/build/core/cryptography/tpm#setkeyindexint-keyindex","type":"docs"},{"id":252,"pageTitle":"TPM Implementation","sectionTitle":"getPublicKey(INT keyIndex, INT *publicKeySize):","sectionRoute":"/build/core/cryptography/tpm#getpublickeyint-keyindex-int-publickeysize","type":"docs"},{"id":253,"pageTitle":"TPM Implementation","sectionTitle":"signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):","sectionRoute":"/build/core/cryptography/tpm#signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment","type":"docs"},{"id":254,"pageTitle":"TPM Implementation","sectionTitle":"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):","sectionRoute":"/build/core/cryptography/tpm#getecdhpointint-keyindex-byte-euphemeralkey","type":"docs"},{"id":267,"pageTitle":"Yubikey implementation","sectionTitle":"Yubikey implementation","sectionRoute":"/build/core/cryptography/yubikey","type":"docs"},{"id":268,"pageTitle":"Yubikey implementation","sectionTitle":"initializeYK() :","sectionRoute":"/build/core/cryptography/yubikey#initializeyk-","type":"docs"},{"id":269,"pageTitle":"Yubikey implementation","sectionTitle":"bool checkYK():","sectionRoute":"/build/core/cryptography/yubikey#bool-checkyk","type":"docs"},{"id":270,"pageTitle":"Yubikey implementation","sectionTitle":"verifyPinYK():","sectionRoute":"/build/core/cryptography/yubikey#verifypinyk","type":"docs"},{"id":271,"pageTitle":"Yubikey implementation","sectionTitle":"authenticateYK():","sectionRoute":"/build/core/cryptography/yubikey#authenticateyk","type":"docs"},{"id":272,"pageTitle":"Yubikey implementation","sectionTitle":"fetchKey(keyIndex):","sectionRoute":"/build/core/cryptography/yubikey#fetchkeykeyindex","type":"docs"},{"id":273,"pageTitle":"Yubikey implementation","sectionTitle":"generateKey(ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#generatekeyykindex","type":"docs"},{"id":274,"pageTitle":"Yubikey implementation","sectionTitle":"generateCertificate(ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#generatecertificateykindex","type":"docs"},{"id":275,"pageTitle":"Yubikey implementation","sectionTitle":"getYKIndex():","sectionRoute":"/build/core/cryptography/yubikey#getykindex","type":"docs"},{"id":276,"pageTitle":"Yubikey implementation","sectionTitle":"saveIndex(ykIndex, archethicIndex):","sectionRoute":"/build/core/cryptography/yubikey#saveindexykindex-archethicindex","type":"docs"},{"id":277,"pageTitle":"Yubikey implementation","sectionTitle":"signECDSA(hashtoSign, ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#signecdsahashtosign-ykindex","type":"docs"},{"id":278,"pageTitle":"Yubikey implementation","sectionTitle":"getECDHPoint(ykIndex, euphermerakley) :","sectionRoute":"/build/core/cryptography/yubikey#getecdhpointykindex-euphermerakley-","type":"docs"},{"id":279,"pageTitle":"Yubikey implementation","sectionTitle":"getArchEthicIndex():","sectionRoute":"/build/core/cryptography/yubikey#getarchethicindex","type":"docs"},{"id":280,"pageTitle":"Yubikey implementation","sectionTitle":"incrementIndex():","sectionRoute":"/build/core/cryptography/yubikey#incrementindex","type":"docs"},{"id":281,"pageTitle":"Yubikey implementation","sectionTitle":"getRootKey():","sectionRoute":"/build/core/cryptography/yubikey#getrootkey","type":"docs"},{"id":282,"pageTitle":"Yubikey implementation","sectionTitle":"getCurrentKey(publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getcurrentkeypublickeysize","type":"docs"},{"id":283,"pageTitle":"Yubikey implementation","sectionTitle":"getNextKey( publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getnextkey-publickeysize","type":"docs"},{"id":284,"pageTitle":"Yubikey implementation","sectionTitle":"getPastKey(archEthicIndex, publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getpastkeyarchethicindex-publickeysize","type":"docs"},{"id":285,"pageTitle":"Yubikey implementation","sectionTitle":"getRootCertificate( certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getrootcertificate-certificatesize","type":"docs"},{"id":286,"pageTitle":"Yubikey implementation","sectionTitle":"getCurrentCertificate(certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getcurrentcertificatecertificatesize","type":"docs"},{"id":287,"pageTitle":"Yubikey implementation","sectionTitle":"getNextCertificate(certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getnextcertificatecertificatesize","type":"docs"},{"id":288,"pageTitle":"Yubikey implementation","sectionTitle":"getPastCertificate(archEthicIndex, certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getpastcertificatearchethicindex-certificatesize","type":"docs"},{"id":289,"pageTitle":"Yubikey implementation","sectionTitle":"signCurrentKey(hashToSign, eccSignSize):","sectionRoute":"/build/core/cryptography/yubikey#signcurrentkeyhashtosign-eccsignsize","type":"docs"},{"id":290,"pageTitle":"Yubikey implementation","sectionTitle":"signPastKey(archEthicIndex, hashToSign, eccSignSize):","sectionRoute":"/build/core/cryptography/yubikey#signpastkeyarchethicindex-hashtosign-eccsignsize","type":"docs"},{"id":291,"pageTitle":"Yubikey implementation","sectionTitle":"ecdhCurrentKey(euphemeralKey, eccPointSize):","sectionRoute":"/build/core/cryptography/yubikey#ecdhcurrentkeyeuphemeralkey-eccpointsize","type":"docs"},{"id":292,"pageTitle":"Yubikey implementation","sectionTitle":"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):","sectionRoute":"/build/core/cryptography/yubikey#ecdhpastkey-archethicindex-euphemeralkey-eccpointsize","type":"docs"},{"id":255,"pageTitle":"Archethic's database","sectionTitle":"Archethic's database","sectionRoute":"/build/core/database","type":"docs"},{"id":256,"pageTitle":"Archethic's database","sectionTitle":"Rationale","sectionRoute":"/build/core/database#rationale","type":"docs"},{"id":257,"pageTitle":"Archethic's database","sectionTitle":"Log Structured Merge","sectionRoute":"/build/core/database#log-structured-merge","type":"docs"},{"id":258,"pageTitle":"Archethic's database","sectionTitle":"Log Structured Hash Tables","sectionRoute":"/build/core/database#log-structured-hash-tables","type":"docs"},{"id":259,"pageTitle":"Archethic's database","sectionTitle":"Our approach","sectionRoute":"/build/core/database#our-approach","type":"docs"},{"id":260,"pageTitle":"Archethic's database","sectionTitle":"Design","sectionRoute":"/build/core/database#design","type":"docs"},{"id":261,"pageTitle":"Archethic's database","sectionTitle":"Chains storage","sectionRoute":"/build/core/database#chains-storage","type":"docs"},{"id":262,"pageTitle":"Archethic's database","sectionTitle":"Chain indexing","sectionRoute":"/build/core/database#chain-indexing","type":"docs"},{"id":263,"pageTitle":"Archethic's database","sectionTitle":"Chain reader","sectionRoute":"/build/core/database#chain-reader","type":"docs"},{"id":264,"pageTitle":"Archethic's database","sectionTitle":"Write path","sectionRoute":"/build/core/database#write-path","type":"docs"},{"id":265,"pageTitle":"Archethic's database","sectionTitle":"Read path","sectionRoute":"/build/core/database#read-path","type":"docs"},{"id":266,"pageTitle":"Archethic's database","sectionTitle":"Additional of-chain storage","sectionRoute":"/build/core/database#additional-of-chain-storage","type":"docs"},{"id":293,"pageTitle":"Election","sectionTitle":"Election","sectionRoute":"/build/core/election","type":"docs"},{"id":294,"pageTitle":"Election","sectionTitle":"Heuristic constraints","sectionRoute":"/build/core/election#heuristic-constraints","type":"docs"},{"id":295,"pageTitle":"Election","sectionTitle":"Low-Level integrations","sectionRoute":"/build/core/election#low-level-integrations","type":"docs"},{"id":296,"pageTitle":"Election","sectionTitle":"Hypergeomtric distribution","sectionRoute":"/build/core/election#hypergeomtric-distribution","type":"docs"},{"id":297,"pageTitle":"Code Proposals","sectionTitle":"Code Proposals","sectionRoute":"/build/core/governance/code-proposals","type":"docs"},{"id":298,"pageTitle":"CD","sectionTitle":"CD","sectionRoute":"/build/core/governance/code-proposals-cd","type":"docs"},{"id":304,"pageTitle":"CI","sectionTitle":"CI","sectionRoute":"/build/core/governance/code-proposals-ci","type":"docs"},{"id":299,"pageTitle":"Mining","sectionTitle":"Mining","sectionRoute":"/build/core/mining/","type":"docs"},{"id":300,"pageTitle":"Mining","sectionTitle":"Standalone validation workflow","sectionRoute":"/build/core/mining/#standalone-validation-workflow","type":"docs"},{"id":301,"pageTitle":"Mining","sectionTitle":"Distributed validation","sectionRoute":"/build/core/mining/#distributed-validation","type":"docs"},{"id":302,"pageTitle":"Mining","sectionTitle":"Worflow","sectionRoute":"/build/core/mining/#worflow","type":"docs"},{"id":303,"pageTitle":"Mining","sectionTitle":"FSM","sectionRoute":"/build/core/mining/#fsm","type":"docs"},{"id":305,"pageTitle":"Proof of Work algorithm","sectionTitle":"Proof of Work algorithm","sectionRoute":"/build/core/mining/proof-of-work","type":"docs"},{"id":306,"pageTitle":"Proof of Work algorithm","sectionTitle":"Origin public key candidates","sectionRoute":"/build/core/mining/proof-of-work#origin-public-key-candidates","type":"docs"},{"id":307,"pageTitle":"Proof of Work algorithm","sectionTitle":"Lookup","sectionRoute":"/build/core/mining/proof-of-work#lookup","type":"docs"},{"id":308,"pageTitle":"Transaction context retrieval","sectionTitle":"Transaction context retrieval","sectionRoute":"/build/core/mining/transaction-context","type":"docs"},{"id":309,"pageTitle":"Transaction context retrieval","sectionTitle":"Retrieval","sectionRoute":"/build/core/mining/transaction-context#retrieval","type":"docs"},{"id":310,"pageTitle":"Transaction context retrieval","sectionTitle":"Node distribution","sectionRoute":"/build/core/mining/transaction-context#node-distribution","type":"docs"},{"id":312,"pageTitle":"Pending transaction validation","sectionTitle":"Pending transaction validation","sectionRoute":"/build/core/mining/transaction-validation","type":"docs"},{"id":313,"pageTitle":"Pending transaction validation","sectionTitle":"Smart contract verification","sectionRoute":"/build/core/mining/transaction-validation#smart-contract-verification","type":"docs"},{"id":314,"pageTitle":"Pending transaction validation","sectionTitle":"Transaction type verification","sectionRoute":"/build/core/mining/transaction-validation#transaction-type-verification","type":"docs"},{"id":315,"pageTitle":"Pending transaction validation","sectionTitle":"Node transaction verification","sectionRoute":"/build/core/mining/transaction-validation#node-transaction-verification","type":"docs"},{"id":316,"pageTitle":"Pending transaction validation","sectionTitle":"Node shared secrets transaction verification","sectionRoute":"/build/core/mining/transaction-validation#node-shared-secrets-transaction-verification","type":"docs"},{"id":317,"pageTitle":"Pending transaction validation","sectionTitle":"Token transaction verification","sectionRoute":"/build/core/mining/transaction-validation#token-transaction-verification","type":"docs"},{"id":318,"pageTitle":"Pending transaction validation","sectionTitle":"Oracle transaction verification","sectionRoute":"/build/core/mining/transaction-validation#oracle-transaction-verification","type":"docs"},{"id":319,"pageTitle":"Pending transaction validation","sectionTitle":"OracleSummary transaction verification","sectionRoute":"/build/core/mining/transaction-validation#oraclesummary-transaction-verification","type":"docs"},{"id":320,"pageTitle":"Pending transaction validation","sectionTitle":"Code proposal transaction verification","sectionRoute":"/build/core/mining/transaction-validation#code-proposal-transaction-verification","type":"docs"},{"id":321,"pageTitle":"Pending transaction validation","sectionTitle":"Code approval transaction verification","sectionRoute":"/build/core/mining/transaction-validation#code-approval-transaction-verification","type":"docs"},{"id":311,"pageTitle":"OracleChain","sectionTitle":"OracleChain","sectionRoute":"/build/core/oracle-chain/","type":"docs"},{"id":322,"pageTitle":"OracleChain Memory Tables","sectionTitle":"OracleChain Memory Tables","sectionRoute":"/build/core/oracle-chain/memory-table","type":"docs"},{"id":328,"pageTitle":"OracleChain Scheduler","sectionTitle":"OracleChain Scheduler","sectionRoute":"/build/core/oracle-chain/scheduler","type":"docs"},{"id":324,"pageTitle":"Oracle Chain Service","sectionTitle":"Oracle Chain Service","sectionRoute":"/build/core/oracle-chain/service","type":"docs"},{"id":325,"pageTitle":"Oracle Chain Service","sectionTitle":"Behavior","sectionRoute":"/build/core/oracle-chain/service#behavior","type":"docs"},{"id":326,"pageTitle":"Oracle Chain Service","sectionTitle":"Example","sectionRoute":"/build/core/oracle-chain/service#example","type":"docs"},{"id":327,"pageTitle":"Oracle Chain Service","sectionTitle":"Configuration","sectionRoute":"/build/core/oracle-chain/service#configuration","type":"docs"},{"id":323,"pageTitle":"P2P","sectionTitle":"P2P","sectionRoute":"/build/core/p2p/","type":"docs"},{"id":329,"pageTitle":"Messaging","sectionTitle":"Messaging","sectionRoute":"/build/core/p2p/messaging","type":"docs"},{"id":330,"pageTitle":"Messaging","sectionTitle":"Stream Multiplexer","sectionRoute":"/build/core/p2p/messaging#stream-multiplexer","type":"docs"},{"id":331,"pageTitle":"Messaging","sectionTitle":"Binary Protocol","sectionRoute":"/build/core/p2p/messaging#binary-protocol","type":"docs"},{"id":332,"pageTitle":"Messaging","sectionTitle":"Message envelop","sectionRoute":"/build/core/p2p/messaging#message-envelop","type":"docs"},{"id":333,"pageTitle":"Node","sectionTitle":"Node","sectionRoute":"/build/core/p2p/node","type":"docs"},{"id":334,"pageTitle":"Node","sectionTitle":"Data structure","sectionRoute":"/build/core/p2p/node#data-structure","type":"docs"},{"id":335,"pageTitle":"Node","sectionTitle":"P2P tables view","sectionRoute":"/build/core/p2p/node#p2p-tables-view","type":"docs"},{"id":336,"pageTitle":"Node","sectionTitle":"Discovery table","sectionRoute":"/build/core/p2p/node#discovery-table","type":"docs"},{"id":337,"pageTitle":"Node","sectionTitle":"Availability lookup table","sectionRoute":"/build/core/p2p/node#availability-lookup-table","type":"docs"},{"id":338,"pageTitle":"Node","sectionTitle":"Authorized nodes table","sectionRoute":"/build/core/p2p/node#authorized-nodes-table","type":"docs"},{"id":339,"pageTitle":"Node","sectionTitle":"Nodes key lookup table","sectionRoute":"/build/core/p2p/node#nodes-key-lookup-table","type":"docs"},{"id":340,"pageTitle":"SDK","sectionTitle":"SDK","sectionRoute":"/build/sdk/","type":"docs"},{"id":343,"pageTitle":"Dart SDK","sectionTitle":"Dart SDK","sectionRoute":"/build/sdk/dart","type":"docs"},{"id":341,"pageTitle":"Go SDK","sectionTitle":"Go SDK","sectionRoute":"/build/sdk/go","type":"docs"},{"id":342,"pageTitle":"Javascript SDK","sectionTitle":"Javascript SDK","sectionRoute":"/build/sdk/js","type":"docs"},{"id":345,"pageTitle":"Smart Contracts","sectionTitle":"Smart Contracts","sectionRoute":"/build/smart-contracts/","type":"docs"},{"id":346,"pageTitle":"Smart Contracts","sectionTitle":"Autonomous","sectionRoute":"/build/smart-contracts/#autonomous","type":"docs"},{"id":347,"pageTitle":"Smart Contracts","sectionTitle":"Modifiable:","sectionRoute":"/build/smart-contracts/#modifiable","type":"docs"},{"id":348,"pageTitle":"Smart Contracts","sectionTitle":"Interpreted","sectionRoute":"/build/smart-contracts/#interpreted","type":"docs"},{"id":349,"pageTitle":"Smart Contracts","sectionTitle":"Stateless","sectionRoute":"/build/smart-contracts/#stateless","type":"docs"},{"id":344,"pageTitle":"Smart Contracts - Fees","sectionTitle":"Smart Contracts - Fees","sectionRoute":"/build/smart-contracts/fees","type":"docs"},{"id":356,"pageTitle":"Smart Contracts - Language","sectionTitle":"Smart Contracts - Language","sectionRoute":"/build/smart-contracts/language/","type":"docs"},{"id":357,"pageTitle":"Smart Contracts - Language","sectionTitle":"Version attribute","sectionRoute":"/build/smart-contracts/language/#version-attribute","type":"docs"},{"id":358,"pageTitle":"Smart Contracts - Language","sectionTitle":"Basic Types","sectionRoute":"/build/smart-contracts/language/#basic-types","type":"docs"},{"id":359,"pageTitle":"Smart Contracts - Language","sectionTitle":"Hexadecimals","sectionRoute":"/build/smart-contracts/language/#hexadecimals","type":"docs"},{"id":360,"pageTitle":"Smart Contracts - Language","sectionTitle":"ASCII character in string","sectionRoute":"/build/smart-contracts/language/#ascii-character-in-string","type":"docs"},{"id":361,"pageTitle":"Smart Contracts - Language","sectionTitle":"Comparaison","sectionRoute":"/build/smart-contracts/language/#comparaison","type":"docs"},{"id":362,"pageTitle":"Smart Contracts - Language","sectionTitle":"Arithmetic","sectionRoute":"/build/smart-contracts/language/#arithmetic","type":"docs"},{"id":363,"pageTitle":"Smart Contracts - Language","sectionTitle":"Ranges","sectionRoute":"/build/smart-contracts/language/#ranges","type":"docs"},{"id":364,"pageTitle":"Smart Contracts - Language","sectionTitle":"Loop","sectionRoute":"/build/smart-contracts/language/#loop","type":"docs"},{"id":365,"pageTitle":"Smart Contracts - Language","sectionTitle":"Variables & Scopes","sectionRoute":"/build/smart-contracts/language/#variables--scopes","type":"docs"},{"id":366,"pageTitle":"Smart Contracts - Language","sectionTitle":"Lists","sectionRoute":"/build/smart-contracts/language/#lists","type":"docs"},{"id":367,"pageTitle":"Smart Contracts - Language","sectionTitle":"Maps","sectionRoute":"/build/smart-contracts/language/#maps","type":"docs"},{"id":368,"pageTitle":"Smart Contracts - Language","sectionTitle":"Functions","sectionRoute":"/build/smart-contracts/language/#functions","type":"docs"},{"id":369,"pageTitle":"Smart Contracts - Language","sectionTitle":"Internal Functions","sectionRoute":"/build/smart-contracts/language/#internal-functions","type":"docs"},{"id":370,"pageTitle":"Smart Contracts - Language","sectionTitle":"Exported Functions","sectionRoute":"/build/smart-contracts/language/#exported-functions","type":"docs"},{"id":371,"pageTitle":"Smart Contracts - Language","sectionTitle":"Library","sectionRoute":"/build/smart-contracts/language/#library","type":"docs"},{"id":372,"pageTitle":"Smart Contracts - Language","sectionTitle":"Reserved keywords","sectionRoute":"/build/smart-contracts/language/#reserved-keywords","type":"docs"},{"id":350,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Smart Contracts - Actions block","sectionRoute":"/build/smart-contracts/language/actions","type":"docs"},{"id":351,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Global variables","sectionRoute":"/build/smart-contracts/language/actions#global-variables","type":"docs"},{"id":352,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Named action arguments","sectionRoute":"/build/smart-contracts/language/actions#named-action-arguments","type":"docs"},{"id":353,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Generating the next transaction","sectionRoute":"/build/smart-contracts/language/actions#generating-the-next-transaction","type":"docs"},{"id":354,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Appendix 1: The transaction map","sectionRoute":"/build/smart-contracts/language/actions#appendix-1-the-transaction-map","type":"docs"},{"id":373,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Smart Contracts - Condition block","sectionRoute":"/build/smart-contracts/language/condition","type":"docs"},{"id":374,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Rules","sectionRoute":"/build/smart-contracts/language/condition#rules","type":"docs"},{"id":375,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition inherit","sectionRoute":"/build/smart-contracts/language/condition#condition-inherit","type":"docs"},{"id":376,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples","type":"docs"},{"id":377,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition transaction","sectionRoute":"/build/smart-contracts/language/condition#condition-transaction","type":"docs"},{"id":378,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples-1","type":"docs"},{"id":379,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition oracle","sectionRoute":"/build/smart-contracts/language/condition#condition-oracle","type":"docs"},{"id":380,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples-2","type":"docs"},{"id":381,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Legacy syntax","sectionRoute":"/build/smart-contracts/language/condition#legacy-syntax","type":"docs"},{"id":382,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Smart Contracts - Examples","sectionRoute":"/build/smart-contracts/language/examples","type":"docs"},{"id":383,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Hello World","sectionRoute":"/build/smart-contracts/language/examples#hello-world","type":"docs"},{"id":384,"pageTitle":"Smart Contracts - Examples","sectionTitle":"ICO (Initial Coin Offering)","sectionRoute":"/build/smart-contracts/language/examples#ico-initial-coin-offering","type":"docs"},{"id":385,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Recurring ICO","sectionRoute":"/build/smart-contracts/language/examples#recurring-ico","type":"docs"},{"id":386,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Vote system","sectionRoute":"/build/smart-contracts/language/examples#vote-system","type":"docs"},{"id":355,"pageTitle":"Smart Contracts (Legacy)","sectionTitle":"Smart Contracts (Legacy)","sectionRoute":"/build/smart-contracts/language/legacy/","type":"docs"},{"id":387,"pageTitle":"Smart Contract examples","sectionTitle":"Smart Contract examples","sectionRoute":"/build/smart-contracts/language/legacy/examples","type":"docs"},{"id":388,"pageTitle":"Smart Contract examples","sectionTitle":"Recurrent transfer","sectionRoute":"/build/smart-contracts/language/legacy/examples#recurrent-transfer","type":"docs"},{"id":389,"pageTitle":"Smart Contract examples","sectionTitle":"ICO / Crowdfunding","sectionRoute":"/build/smart-contracts/language/legacy/examples#ico--crowdfunding","type":"docs"},{"id":390,"pageTitle":"Smart Contract Language","sectionTitle":"Smart Contract Language","sectionRoute":"/build/smart-contracts/language/legacy/language","type":"docs"},{"id":391,"pageTitle":"Smart Contract Language","sectionTitle":"Triggers/Actions","sectionRoute":"/build/smart-contracts/language/legacy/language#triggersactions","type":"docs"},{"id":392,"pageTitle":"Smart Contract Language","sectionTitle":"Conditions","sectionRoute":"/build/smart-contracts/language/legacy/language#conditions","type":"docs"},{"id":393,"pageTitle":"Smart Contract Language","sectionTitle":"Global variables","sectionRoute":"/build/smart-contracts/language/legacy/language#global-variables","type":"docs"},{"id":394,"pageTitle":"Smart Contract Language","sectionTitle":"Functions","sectionRoute":"/build/smart-contracts/language/legacy/language#functions","type":"docs"},{"id":395,"pageTitle":"Smart Contract Language","sectionTitle":"Utilities","sectionRoute":"/build/smart-contracts/language/legacy/language#utilities","type":"docs"},{"id":396,"pageTitle":"Smart Contract Language","sectionTitle":"Statements","sectionRoute":"/build/smart-contracts/language/legacy/language#statements","type":"docs"},{"id":404,"pageTitle":"Smart Contracts - Library","sectionTitle":"Smart Contracts - Library","sectionRoute":"/build/smart-contracts/language/library","type":"docs"},{"id":405,"pageTitle":"Smart Contracts - Library","sectionTitle":"String","sectionRoute":"/build/smart-contracts/language/library#string","type":"docs"},{"id":406,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1","type":"docs"},{"id":407,"pageTitle":"Smart Contracts - Library","sectionTitle":"in?/2","sectionRoute":"/build/smart-contracts/language/library#in2","type":"docs"},{"id":408,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_number/1","sectionRoute":"/build/smart-contracts/language/library#to_number1","type":"docs"},{"id":409,"pageTitle":"Smart Contracts - Library","sectionTitle":"from_number/1","sectionRoute":"/build/smart-contracts/language/library#from_number1","type":"docs"},{"id":410,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_hex/1","sectionRoute":"/build/smart-contracts/language/library#to_hex1","type":"docs"},{"id":411,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_uppercase/1","sectionRoute":"/build/smart-contracts/language/library#to_uppercase1","type":"docs"},{"id":412,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_lowercase/1","sectionRoute":"/build/smart-contracts/language/library#to_lowercase1","type":"docs"},{"id":413,"pageTitle":"Smart Contracts - Library","sectionTitle":"Map","sectionRoute":"/build/smart-contracts/language/library#map","type":"docs"},{"id":414,"pageTitle":"Smart Contracts - Library","sectionTitle":"new/0","sectionRoute":"/build/smart-contracts/language/library#new0","type":"docs"},{"id":415,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1-1","type":"docs"},{"id":416,"pageTitle":"Smart Contracts - Library","sectionTitle":"get/2","sectionRoute":"/build/smart-contracts/language/library#get2","type":"docs"},{"id":417,"pageTitle":"Smart Contracts - Library","sectionTitle":"get/3","sectionRoute":"/build/smart-contracts/language/library#get3","type":"docs"},{"id":418,"pageTitle":"Smart Contracts - Library","sectionTitle":"set/3","sectionRoute":"/build/smart-contracts/language/library#set3","type":"docs"},{"id":419,"pageTitle":"Smart Contracts - Library","sectionTitle":"keys/1","sectionRoute":"/build/smart-contracts/language/library#keys1","type":"docs"},{"id":420,"pageTitle":"Smart Contracts - Library","sectionTitle":"values/1","sectionRoute":"/build/smart-contracts/language/library#values1","type":"docs"},{"id":421,"pageTitle":"Smart Contracts - Library","sectionTitle":"delete/2","sectionRoute":"/build/smart-contracts/language/library#delete2","type":"docs"},{"id":422,"pageTitle":"Smart Contracts - Library","sectionTitle":"List","sectionRoute":"/build/smart-contracts/language/library#list","type":"docs"},{"id":423,"pageTitle":"Smart Contracts - Library","sectionTitle":"at/2","sectionRoute":"/build/smart-contracts/language/library#at2","type":"docs"},{"id":424,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1-2","type":"docs"},{"id":425,"pageTitle":"Smart Contracts - Library","sectionTitle":"in?/2","sectionRoute":"/build/smart-contracts/language/library#in2-1","type":"docs"},{"id":426,"pageTitle":"Smart Contracts - Library","sectionTitle":"empty?/1","sectionRoute":"/build/smart-contracts/language/library#empty1","type":"docs"},{"id":427,"pageTitle":"Smart Contracts - Library","sectionTitle":"concat/2","sectionRoute":"/build/smart-contracts/language/library#concat2","type":"docs"},{"id":428,"pageTitle":"Smart Contracts - Library","sectionTitle":"append/2","sectionRoute":"/build/smart-contracts/language/library#append2","type":"docs"},{"id":429,"pageTitle":"Smart Contracts - Library","sectionTitle":"prepend/2","sectionRoute":"/build/smart-contracts/language/library#prepend2","type":"docs"},{"id":430,"pageTitle":"Smart Contracts - Library","sectionTitle":"join/2","sectionRoute":"/build/smart-contracts/language/library#join2","type":"docs"},{"id":431,"pageTitle":"Smart Contracts - Library","sectionTitle":"Regex","sectionRoute":"/build/smart-contracts/language/library#regex","type":"docs"},{"id":432,"pageTitle":"Smart Contracts - Library","sectionTitle":"extract/2","sectionRoute":"/build/smart-contracts/language/library#extract2","type":"docs"},{"id":433,"pageTitle":"Smart Contracts - Library","sectionTitle":"match?/2","sectionRoute":"/build/smart-contracts/language/library#match2","type":"docs"},{"id":434,"pageTitle":"Smart Contracts - Library","sectionTitle":"scan/2","sectionRoute":"/build/smart-contracts/language/library#scan2","type":"docs"},{"id":435,"pageTitle":"Smart Contracts - Library","sectionTitle":"Json","sectionRoute":"/build/smart-contracts/language/library#json","type":"docs"},{"id":436,"pageTitle":"Smart Contracts - Library","sectionTitle":"path_extract/2","sectionRoute":"/build/smart-contracts/language/library#path_extract2","type":"docs"},{"id":437,"pageTitle":"Smart Contracts - Library","sectionTitle":"path_match?/2","sectionRoute":"/build/smart-contracts/language/library#path_match2","type":"docs"},{"id":438,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_string/1","sectionRoute":"/build/smart-contracts/language/library#to_string1","type":"docs"},{"id":439,"pageTitle":"Smart Contracts - Library","sectionTitle":"parse/1","sectionRoute":"/build/smart-contracts/language/library#parse1","type":"docs"},{"id":440,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_valid?/1","sectionRoute":"/build/smart-contracts/language/library#is_valid1","type":"docs"},{"id":441,"pageTitle":"Smart Contracts - Library","sectionTitle":"Time","sectionRoute":"/build/smart-contracts/language/library#time","type":"docs"},{"id":442,"pageTitle":"Smart Contracts - Library","sectionTitle":"now/0","sectionRoute":"/build/smart-contracts/language/library#now0","type":"docs"},{"id":443,"pageTitle":"Smart Contracts - Library","sectionTitle":"Chain","sectionRoute":"/build/smart-contracts/language/library#chain","type":"docs"},{"id":444,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_genesis_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_genesis_address1-io","type":"docs"},{"id":445,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_first_transaction_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_first_transaction_address1-io","type":"docs"},{"id":446,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_genesis_public_key/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_genesis_public_key1-io","type":"docs"},{"id":447,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_burn_address/0","sectionRoute":"/build/smart-contracts/language/library#get_burn_address0","type":"docs"},{"id":448,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_transaction/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_transaction1--io","type":"docs"},{"id":449,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_last_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_last_address1-io","type":"docs"},{"id":450,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_last_transaction/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_last_transaction1-io","type":"docs"},{"id":451,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_previous_address/1","sectionRoute":"/build/smart-contracts/language/library#get_previous_address1","type":"docs"},{"id":452,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_balance1-io","type":"docs"},{"id":453,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_uco_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_uco_balance1-io","type":"docs"},{"id":454,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_token_balance/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_token_balance2-io","type":"docs"},{"id":455,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_token_balance/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_token_balance3-io","type":"docs"},{"id":456,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_tokens_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_tokens_balance1-io","type":"docs"},{"id":457,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_tokens_balance/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_tokens_balance2-io","type":"docs"},{"id":458,"pageTitle":"Smart Contracts - Library","sectionTitle":"Crypto","sectionRoute":"/build/smart-contracts/language/library#crypto","type":"docs"},{"id":459,"pageTitle":"Smart Contracts - Library","sectionTitle":"hash/1","sectionRoute":"/build/smart-contracts/language/library#hash1","type":"docs"},{"id":460,"pageTitle":"Smart Contracts - Library","sectionTitle":"hash/2","sectionRoute":"/build/smart-contracts/language/library#hash2","type":"docs"},{"id":461,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/1","sectionRoute":"/build/smart-contracts/language/library#hmac1","type":"docs"},{"id":462,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/2","sectionRoute":"/build/smart-contracts/language/library#hmac2","type":"docs"},{"id":463,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/3","sectionRoute":"/build/smart-contracts/language/library#hmac3","type":"docs"},{"id":464,"pageTitle":"Smart Contracts - Library","sectionTitle":"sign_with_recovery/1","sectionRoute":"/build/smart-contracts/language/library#sign_with_recovery1","type":"docs"},{"id":465,"pageTitle":"Smart Contracts - Library","sectionTitle":"Token","sectionRoute":"/build/smart-contracts/language/library#token","type":"docs"},{"id":466,"pageTitle":"Smart Contracts - Library","sectionTitle":"fetch_id_from_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#fetch_id_from_address1-io","type":"docs"},{"id":467,"pageTitle":"Smart Contracts - Library","sectionTitle":"Code","sectionRoute":"/build/smart-contracts/language/library#code","type":"docs"},{"id":468,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_same?/2","sectionRoute":"/build/smart-contracts/language/library#is_same2","type":"docs"},{"id":469,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_valid?/1","sectionRoute":"/build/smart-contracts/language/library#is_valid1-1","type":"docs"},{"id":470,"pageTitle":"Smart Contracts - Library","sectionTitle":"Math","sectionRoute":"/build/smart-contracts/language/library#math","type":"docs"},{"id":471,"pageTitle":"Smart Contracts - Library","sectionTitle":"pow/2","sectionRoute":"/build/smart-contracts/language/library#pow2","type":"docs"},{"id":472,"pageTitle":"Smart Contracts - Library","sectionTitle":"trunc/1","sectionRoute":"/build/smart-contracts/language/library#trunc1","type":"docs"},{"id":473,"pageTitle":"Smart Contracts - Library","sectionTitle":"sqrt/1","sectionRoute":"/build/smart-contracts/language/library#sqrt1","type":"docs"},{"id":474,"pageTitle":"Smart Contracts - Library","sectionTitle":"rem/2","sectionRoute":"/build/smart-contracts/language/library#rem2","type":"docs"},{"id":475,"pageTitle":"Smart Contracts - Library","sectionTitle":"Http","sectionRoute":"/build/smart-contracts/language/library#http","type":"docs"},{"id":476,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request1-io","type":"docs"},{"id":477,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request2-io","type":"docs"},{"id":478,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request3-io","type":"docs"},{"id":479,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/4 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request4-io","type":"docs"},{"id":480,"pageTitle":"Smart Contracts - Library","sectionTitle":"request_many/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request_many1-io","type":"docs"},{"id":481,"pageTitle":"Smart Contracts - Library","sectionTitle":"Contract","sectionRoute":"/build/smart-contracts/language/library#contract","type":"docs"},{"id":482,"pageTitle":"Smart Contracts - Library","sectionTitle":"call_function/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#call_function3-io","type":"docs"},{"id":483,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_type/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_type1-transaction","type":"docs"},{"id":484,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_content/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_content1-transaction","type":"docs"},{"id":485,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_code/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_code1-transaction","type":"docs"},{"id":486,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_uco_transfer/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_uco_transfer1-transaction","type":"docs"},{"id":487,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_uco_transfers/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_uco_transfers1-transaction","type":"docs"},{"id":488,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_token_transfer/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_token_transfer1-transaction","type":"docs"},{"id":489,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_token_transfers/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_token_transfers1-transaction","type":"docs"},{"id":490,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_ownership/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_ownership1-transaction","type":"docs"},{"id":491,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_ownerships/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_ownerships1-transaction","type":"docs"},{"id":492,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_recipient/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_recipient1-transaction","type":"docs"},{"id":493,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_recipients/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_recipients1-transaction","type":"docs"},{"id":494,"pageTitle":"Smart Contracts - Library","sectionTitle":"Evm","sectionRoute":"/build/smart-contracts/language/library#evm","type":"docs"},{"id":495,"pageTitle":"Smart Contracts - Library","sectionTitle":"abi_encode/2","sectionRoute":"/build/smart-contracts/language/library#abi_encode2","type":"docs"},{"id":496,"pageTitle":"Smart Contracts - Library","sectionTitle":"abi_decode/2","sectionRoute":"/build/smart-contracts/language/library#abi_decode2","type":"docs"},{"id":397,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Smart Contracts - Triggers","sectionRoute":"/build/smart-contracts/language/triggers","type":"docs"},{"id":398,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered by a transaction","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-by-a-transaction","type":"docs"},{"id":399,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered by a transaction with a named action","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-by-a-transaction-with-a-named-action","type":"docs"},{"id":400,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered at a specific date and time","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-at-a-specific-date-and-time","type":"docs"},{"id":401,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered at a specific interval","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-at-a-specific-interval","type":"docs"},{"id":402,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered on every Oracle transaction","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-on-every-oracle-transaction","type":"docs"},{"id":403,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Multiple triggers","sectionRoute":"/build/smart-contracts/language/triggers#multiple-triggers","type":"docs"},{"id":504,"pageTitle":"Smart Contracts Playground","sectionTitle":"Smart Contracts Playground","sectionRoute":"/build/smart-contracts/playground/","type":"docs"},{"id":497,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Smart Contracts Playground - Build","sectionRoute":"/build/smart-contracts/playground/build","type":"docs"},{"id":498,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"I. Write the contract","sectionRoute":"/build/smart-contracts/playground/build#i-write-the-contract","type":"docs"},{"id":499,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"II. Test the triggers","sectionRoute":"/build/smart-contracts/playground/build#ii-test-the-triggers","type":"docs"},{"id":500,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'interval'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-interval","type":"docs"},{"id":501,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'transaction'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-transaction","type":"docs"},{"id":502,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'datetime'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-datetime","type":"docs"},{"id":503,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'oracle'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-oracle","type":"docs"},{"id":505,"pageTitle":"Smart Contracts Playground - Deploy","sectionTitle":"Smart Contracts Playground - Deploy","sectionRoute":"/build/smart-contracts/playground/deploy","type":"docs"},{"id":509,"pageTitle":"Smart Contracts Playground - Functions","sectionTitle":"Smart Contracts Playground - Functions","sectionRoute":"/build/smart-contracts/playground/functions","type":"docs"},{"id":506,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Smart Contracts Playground - Mock form","sectionRoute":"/build/smart-contracts/playground/mock-form","type":"docs"},{"id":507,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Example: Time.now/0","sectionRoute":"/build/smart-contracts/playground/mock-form#example-timenow0","type":"docs"},{"id":508,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Example: Chain.get_genesis_address/1","sectionRoute":"/build/smart-contracts/playground/mock-form#example-chainget_genesis_address1","type":"docs"},{"id":510,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"Smart Contracts Playground - Transaction form","sectionRoute":"/build/smart-contracts/playground/transaction-form","type":"docs"},{"id":511,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"type","sectionRoute":"/build/smart-contracts/playground/transaction-form#type","type":"docs"},{"id":512,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"code","sectionRoute":"/build/smart-contracts/playground/transaction-form#code","type":"docs"},{"id":513,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"content","sectionRoute":"/build/smart-contracts/playground/transaction-form#content","type":"docs"},{"id":514,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"validation timestamp (not used in deployment)","sectionRoute":"/build/smart-contracts/playground/transaction-form#validation-timestamp-not-used-in-deployment","type":"docs"},{"id":515,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"address (not used in deployment)","sectionRoute":"/build/smart-contracts/playground/transaction-form#address-not-used-in-deployment","type":"docs"},{"id":516,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"uco transfers","sectionRoute":"/build/smart-contracts/playground/transaction-form#uco-transfers","type":"docs"},{"id":517,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"token transfers","sectionRoute":"/build/smart-contracts/playground/transaction-form#token-transfers","type":"docs"},{"id":518,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"recipients","sectionRoute":"/build/smart-contracts/playground/transaction-form#recipients","type":"docs"},{"id":519,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"ownerships","sectionRoute":"/build/smart-contracts/playground/transaction-form#ownerships","type":"docs"},{"id":520,"pageTitle":"Testnet","sectionTitle":"Testnet","sectionRoute":"/build/testnet","type":"docs"},{"id":521,"pageTitle":"Testnet","sectionTitle":"Local","sectionRoute":"/build/testnet#local","type":"docs"},{"id":522,"pageTitle":"Testnet","sectionTitle":"Installation","sectionRoute":"/build/testnet#installation","type":"docs"},{"id":523,"pageTitle":"Testnet","sectionTitle":"Get some funds","sectionRoute":"/build/testnet#get-some-funds","type":"docs"},{"id":524,"pageTitle":"Testnet","sectionTitle":"Public","sectionRoute":"/build/testnet#public","type":"docs"},{"id":525,"pageTitle":"Testnet","sectionTitle":"Get some funds","sectionRoute":"/build/testnet#get-some-funds-1","type":"docs"},{"id":526,"pageTitle":"","sectionTitle":"🗃️ GraphQL","sectionRoute":"/category/api","type":"docs"},{"id":527,"pageTitle":"","sectionTitle":"🗃️ Clients","sectionRoute":"/category/build","type":"docs"},{"id":528,"pageTitle":"","sectionTitle":"🗃️ API","sectionRoute":"/category/build","type":"docs"},{"id":529,"pageTitle":"","sectionTitle":"🗃️ Core development","sectionRoute":"/category/build","type":"docs"},{"id":530,"pageTitle":"","sectionTitle":"🗃️ SDK","sectionRoute":"/category/build","type":"docs"},{"id":531,"pageTitle":"","sectionTitle":"🗃️ Smart Contracts","sectionRoute":"/category/build","type":"docs"},{"id":532,"pageTitle":"","sectionTitle":"📄️ Testnet","sectionRoute":"/category/build","type":"docs"},{"id":533,"pageTitle":"","sectionTitle":"🗃️ Ledger wallet","sectionRoute":"/category/clients","type":"docs"},{"id":534,"pageTitle":"","sectionTitle":"📄️ Archethic's wallet access","sectionRoute":"/category/clients","type":"docs"},{"id":535,"pageTitle":"","sectionTitle":"📄️ Archethic's wallet specification","sectionRoute":"/category/clients","type":"docs"},{"id":536,"pageTitle":"","sectionTitle":"📄️ AEWeb","sectionRoute":"/category/faq","type":"docs"},{"id":537,"pageTitle":"","sectionTitle":"📄️ Archethic Bridge 2-ways","sectionRoute":"/category/faq","type":"docs"},{"id":538,"pageTitle":"","sectionTitle":"📄️ Archethic Bridge $UCO one-way","sectionRoute":"/category/faq","type":"docs"},{"id":539,"pageTitle":"","sectionTitle":"📄️ Wallet","sectionRoute":"/category/faq","type":"docs"},{"id":544,"pageTitle":"","sectionTitle":"📄️ Schema Documentation","sectionRoute":"/category/graphql","type":"docs"},{"id":545,"pageTitle":"","sectionTitle":"🗃️ Directives","sectionRoute":"/category/graphql","type":"docs"},{"id":546,"pageTitle":"","sectionTitle":"🗃️ Enums","sectionRoute":"/category/graphql","type":"docs"},{"id":547,"pageTitle":"","sectionTitle":"🗃️ Objects","sectionRoute":"/category/graphql","type":"docs"},{"id":548,"pageTitle":"","sectionTitle":"🗃️ Queries","sectionRoute":"/category/graphql","type":"docs"},{"id":549,"pageTitle":"","sectionTitle":"🗃️ Scalars","sectionRoute":"/category/graphql","type":"docs"},{"id":550,"pageTitle":"","sectionTitle":"🗃️ Subscriptions","sectionRoute":"/category/graphql","type":"docs"},{"id":540,"pageTitle":"","sectionTitle":"🗃️ Archethic Web (AEWeb)","sectionRoute":"/category/participate","type":"docs"},{"id":541,"pageTitle":"","sectionTitle":"🗃️ Archethic's bridge","sectionRoute":"/category/participate","type":"docs"},{"id":542,"pageTitle":"","sectionTitle":"📄️ Archethic's CLI","sectionRoute":"/category/participate","type":"docs"},{"id":543,"pageTitle":"","sectionTitle":"🗃️ Archethic Wallet","sectionRoute":"/category/participate","type":"docs"},{"id":551,"pageTitle":"","sectionTitle":"📄️ CLI","sectionRoute":"/category/usage","type":"docs"},{"id":552,"pageTitle":"","sectionTitle":"📄️ AEWeb Front End","sectionRoute":"/category/usage","type":"docs"},{"id":553,"pageTitle":"","sectionTitle":"📄️ Bridge Front End","sectionRoute":"/category/usage-1","type":"docs"},{"id":581,"pageTitle":"Contributing","sectionTitle":"Contributing","sectionRoute":"/contributing","type":"docs"},{"id":582,"pageTitle":"Contributing","sectionTitle":"How to contribute","sectionRoute":"/contributing#how-to-contribute","type":"docs"},{"id":583,"pageTitle":"Contributing","sectionTitle":"Guidelines","sectionRoute":"/contributing#guidelines","type":"docs"},{"id":584,"pageTitle":"Contributing","sectionTitle":"Diagrams","sectionRoute":"/contributing#diagrams","type":"docs"},{"id":554,"pageTitle":"AEWeb","sectionTitle":"AEWeb","sectionRoute":"/FAQ/aeweb","type":"docs"},{"id":555,"pageTitle":"AEWeb","sectionTitle":"General","sectionRoute":"/FAQ/aeweb#general","type":"docs"},{"id":556,"pageTitle":"AEWeb","sectionTitle":" How do I redirect my domain names to my websites deployed on the Archethic Blockchain?","sectionRoute":"/FAQ/aeweb#-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain","type":"docs"},{"id":557,"pageTitle":"AEWeb","sectionTitle":"What is the purpose of a .gitignore file?","sectionRoute":"/FAQ/aeweb#what-is-the-purpose-of-a-gitignore-file","type":"docs"},{"id":558,"pageTitle":"AEWeb","sectionTitle":"When using the Archethic wallet's \"link to a file hosted on AEWeb\" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?","sectionRoute":"/FAQ/aeweb#when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli","type":"docs"},{"id":559,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Archethic Bridge $UCO one-way","sectionRoute":"/FAQ/bridge","type":"docs"},{"id":560,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"General","sectionRoute":"/FAQ/bridge#general","type":"docs"},{"id":561,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What is Archethic Bridge $UCO one-way?","sectionRoute":"/FAQ/bridge#what-is-archethic-bridge-uco-one-way","type":"docs"},{"id":562,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"how to access the Archethic Bridge $UCO one-way?","sectionRoute":"/FAQ/bridge#how-to-access-the-archethic-bridge-uco-one-way","type":"docs"},{"id":563,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How long is the predetermined time?","sectionRoute":"/FAQ/bridge#how-long-is-the-predetermined-time","type":"docs"},{"id":564,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Which blockchain is better to bridge my UCOs?","sectionRoute":"/FAQ/bridge#which-blockchain-is-better-to-bridge-my-ucos","type":"docs"},{"id":565,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":566,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What types of assets can be moved across the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":567,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What are the fees associated with using the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":568,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?","sectionRoute":"/FAQ/bridge#i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address","type":"docs"},{"id":569,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Metamask","sectionRoute":"/FAQ/bridge#metamask","type":"docs"},{"id":570,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Will the Archethic Network be available on Metamask?","sectionRoute":"/FAQ/bridge#will-the-archethic-network-be-available-on-metamask","type":"docs"},{"id":571,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How can I add a network on Metamask?","sectionRoute":"/FAQ/bridge#how-can-i-add-a-network-on-metamask","type":"docs"},{"id":572,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How to install Metamask?","sectionRoute":"/FAQ/bridge#how-to-install-metamask","type":"docs"},{"id":573,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Issues management","sectionRoute":"/FAQ/bridge#issues-management","type":"docs"},{"id":574,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What happens if a problem occurs, or I refuse a transaction during the transfer?","sectionRoute":"/FAQ/bridge#what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer","type":"docs"},{"id":575,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"If I sent the tokens to a wrong Mainnet address, what to do?","sectionRoute":"/FAQ/bridge#if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do","type":"docs"},{"id":576,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What if I want to reset the process?","sectionRoute":"/FAQ/bridge#what-if-i-want-to-reset-the-process","type":"docs"},{"id":577,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Can I help the developers analyze the problems?","sectionRoute":"/FAQ/bridge#can-i-help-the-developers-analyze-the-problems","type":"docs"},{"id":578,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Dev","sectionRoute":"/FAQ/bridge#dev","type":"docs"},{"id":579,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How can developers use Archethic bridge to create new decentralized applications?","sectionRoute":"/FAQ/bridge#how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications","type":"docs"},{"id":580,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?","sectionRoute":"/FAQ/bridge#im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet","type":"docs"},{"id":591,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Archethic Bridge 2-ways","sectionRoute":"/FAQ/bridge-2-ways","type":"docs"},{"id":592,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"General","sectionRoute":"/FAQ/bridge-2-ways#general","type":"docs"},{"id":593,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is Archethic Bridge two-ways?","sectionRoute":"/FAQ/bridge-2-ways#what-is-archethic-bridge-two-ways","type":"docs"},{"id":594,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How to access the Archethic Bridge ?","sectionRoute":"/FAQ/bridge-2-ways#how-to-access-the-archethic-bridge-","type":"docs"},{"id":595,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Which blockchain is better to bridge my UCOs?","sectionRoute":"/FAQ/bridge-2-ways#which-blockchain-is-better-to-bridge-my-ucos","type":"docs"},{"id":596,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What blockchains does the Archethic Bridge support?","sectionRoute":"/FAQ/bridge-2-ways#what-blockchains-does-the-archethic-bridge-support","type":"docs"},{"id":597,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Is the Archethic Bridge available on mobile devices?","sectionRoute":"/FAQ/bridge-2-ways#is-the-archethic-bridge-available-on-mobile-devices","type":"docs"},{"id":598,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is an EVM wallet?","sectionRoute":"/FAQ/bridge-2-ways#what-is-an-evm-wallet","type":"docs"},{"id":599,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How is the price of $UCO estimated?","sectionRoute":"/FAQ/bridge-2-ways#how-is-the-price-of-uco-estimated","type":"docs"},{"id":600,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How long is the predetermined time?","sectionRoute":"/FAQ/bridge-2-ways#how-long-is-the-predetermined-time","type":"docs"},{"id":601,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Key Concepts","sectionRoute":"/FAQ/bridge-2-ways#key-concepts","type":"docs"},{"id":602,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?","sectionRoute":"/FAQ/bridge-2-ways#what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge","type":"docs"},{"id":603,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How does Archethic's cross-chain verification work?","sectionRoute":"/FAQ/bridge-2-ways#how-does-archethics-cross-chain-verification-work","type":"docs"},{"id":604,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is the Safety Module in Archethic's bridge?","sectionRoute":"/FAQ/bridge-2-ways#what-is-the-safety-module-in-archethics-bridge","type":"docs"},{"id":605,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Specifics of Bridging","sectionRoute":"/FAQ/bridge-2-ways#specifics-of-bridging","type":"docs"},{"id":606,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How does the process of bridging from EVM to Archethic work?","sectionRoute":"/FAQ/bridge-2-ways#how-does-the-process-of-bridging-from-evm-to-archethic-work","type":"docs"},{"id":607,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is the process for bridging from Archethic to EVM?","sectionRoute":"/FAQ/bridge-2-ways#what-is-the-process-for-bridging-from-archethic-to-evm","type":"docs"},{"id":608,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Wallet","sectionRoute":"/FAQ/bridge-2-ways#wallet","type":"docs"},{"id":609,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?","sectionRoute":"/FAQ/bridge-2-ways#im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet","type":"docs"},{"id":610,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Why can't I connect to the Archethic wallet with my Brave browser?","sectionRoute":"/FAQ/bridge-2-ways#why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser","type":"docs"},{"id":611,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Testnet","sectionRoute":"/FAQ/bridge-2-ways#testnet","type":"docs"},{"id":612,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?","sectionRoute":"/FAQ/bridge-2-ways#how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet","type":"docs"},{"id":613,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?","sectionRoute":"/FAQ/bridge-2-ways#how-can-i-buy-uco-after-receiving-eth-matic-or-bnb","type":"docs"},{"id":614,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Issues management","sectionRoute":"/FAQ/bridge-2-ways#issues-management","type":"docs"},{"id":615,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What happens if a problem occurs, or I refuse a transaction during the transfer?","sectionRoute":"/FAQ/bridge-2-ways#what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer","type":"docs"},{"id":616,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"If I sent the tokens to a wrong Mainnet address, what to do?","sectionRoute":"/FAQ/bridge-2-ways#if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do","type":"docs"},{"id":617,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Can I help the developers analyze the problems?","sectionRoute":"/FAQ/bridge-2-ways#can-i-help-the-developers-analyze-the-problems","type":"docs"},{"id":585,"pageTitle":"Wallet","sectionTitle":"Wallet","sectionRoute":"/FAQ/wallet","type":"docs"},{"id":586,"pageTitle":"Wallet","sectionTitle":"General","sectionRoute":"/FAQ/wallet#general","type":"docs"},{"id":587,"pageTitle":"Wallet","sectionTitle":" How to retrieve the address of my Archethic wallet?","sectionRoute":"/FAQ/wallet#-how-to-retrieve-the-address-of-my-archethic-wallet","type":"docs"},{"id":588,"pageTitle":"Wallet","sectionTitle":" How to create a wallet on the Archethic blockchain?","sectionRoute":"/FAQ/wallet#-how-to-create-a-wallet-on-the-archethic-blockchain","type":"docs"},{"id":589,"pageTitle":"Wallet","sectionTitle":" How to create a fungible token on the Archethic Wallet?","sectionRoute":"/FAQ/wallet#-how-to-create-a-fungible-token-on-the-archethic-wallet","type":"docs"},{"id":590,"pageTitle":"Wallet","sectionTitle":" How to create a NFT on the Archethic Wallet?","sectionRoute":"/FAQ/wallet#-how-to-create-a-nft-on-the-archethic-wallet","type":"docs"},{"id":618,"pageTitle":"Archethic introduction","sectionTitle":"Archethic introduction","sectionRoute":"/learn/","type":"docs"},{"id":619,"pageTitle":"Archethic introduction","sectionTitle":"Motivations","sectionRoute":"/learn/#motivations","type":"docs"},{"id":620,"pageTitle":"Archethic introduction","sectionTitle":"Innovations","sectionRoute":"/learn/#innovations","type":"docs"},{"id":622,"pageTitle":"ARCH consensus","sectionTitle":"ARCH consensus","sectionRoute":"/learn/arch-consensus/","type":"docs"},{"id":623,"pageTitle":"ARCH consensus","sectionTitle":"Atomic Commitment","sectionRoute":"/learn/arch-consensus/#atomic-commitment","type":"docs"},{"id":624,"pageTitle":"ARCH consensus","sectionTitle":"Rotating Election","sectionRoute":"/learn/arch-consensus/#rotating-election","type":"docs"},{"id":625,"pageTitle":"ARCH consensus","sectionTitle":"Workflow","sectionRoute":"/learn/arch-consensus/#workflow","type":"docs"},{"id":621,"pageTitle":"Proof of Work","sectionTitle":"Proof of Work","sectionRoute":"/learn/arch-consensus/proof-of-work","type":"docs"},{"id":631,"pageTitle":"Cryptography","sectionTitle":"Cryptography","sectionRoute":"/learn/cryptography/","type":"docs"},{"id":632,"pageTitle":"Cryptography","sectionTitle":"Quantum-Safe","sectionRoute":"/learn/cryptography/#quantum-safe","type":"docs"},{"id":633,"pageTitle":"Cryptography","sectionTitle":"Non-Discolure of public keys","sectionRoute":"/learn/cryptography/#non-discolure-of-public-keys","type":"docs"},{"id":634,"pageTitle":"Cryptography","sectionTitle":"Origin Devices","sectionRoute":"/learn/cryptography/#origin-devices","type":"docs"},{"id":635,"pageTitle":"Cryptography","sectionTitle":"Adaptative","sectionRoute":"/learn/cryptography/#adaptative","type":"docs"},{"id":636,"pageTitle":"Cryptography","sectionTitle":"Public keys","sectionRoute":"/learn/cryptography/#public-keys","type":"docs"},{"id":637,"pageTitle":"Cryptography","sectionTitle":"Hashes","sectionRoute":"/learn/cryptography/#hashes","type":"docs"},{"id":638,"pageTitle":"Cryptography","sectionTitle":"Transaction addresses","sectionRoute":"/learn/cryptography/#transaction-addresses","type":"docs"},{"id":639,"pageTitle":"Cryptography","sectionTitle":"Default algorithms","sectionRoute":"/learn/cryptography/#default-algorithms","type":"docs"},{"id":626,"pageTitle":"Harware Root of Trust","sectionTitle":"Harware Root of Trust","sectionRoute":"/learn/cryptography/hardware-root-of-trust","type":"docs"},{"id":627,"pageTitle":"Harware Root of Trust","sectionTitle":"What is hardware root of trust?","sectionRoute":"/learn/cryptography/hardware-root-of-trust#what-is-hardware-root-of-trust","type":"docs"},{"id":628,"pageTitle":"Harware Root of Trust","sectionTitle":"Why hardware root of trust for Archethic?","sectionRoute":"/learn/cryptography/hardware-root-of-trust#why-hardware-root-of-trust-for-archethic","type":"docs"},{"id":629,"pageTitle":"Harware Root of Trust","sectionTitle":"Implementation of Hardware Root of Trust (HRT)","sectionRoute":"/learn/cryptography/hardware-root-of-trust#implementation-of-hardware-root-of-trust-hrt","type":"docs"},{"id":630,"pageTitle":"Harware Root of Trust","sectionTitle":"Placement of HRT in Archethic Blockchain/Ecosystem","sectionRoute":"/learn/cryptography/hardware-root-of-trust#placement-of-hrt-in-archethic-blockchainecosystem","type":"docs"},{"id":640,"pageTitle":"Decentralized Identity","sectionTitle":"Decentralized Identity","sectionRoute":"/learn/decentralized-id/","type":"docs"},{"id":641,"pageTitle":"Decentralized Identity","sectionTitle":"Identity","sectionRoute":"/learn/decentralized-id/#identity","type":"docs"},{"id":642,"pageTitle":"Decentralized Identity","sectionTitle":"Password-less","sectionRoute":"/learn/decentralized-id/#password-less","type":"docs"},{"id":649,"pageTitle":"Keychain","sectionTitle":"Keychain","sectionRoute":"/learn/decentralized-id/keychain","type":"docs"},{"id":650,"pageTitle":"Keychain","sectionTitle":"Key generation","sectionRoute":"/learn/decentralized-id/keychain#key-generation","type":"docs"},{"id":651,"pageTitle":"Keychain","sectionTitle":"End to end encryption","sectionRoute":"/learn/decentralized-id/keychain#end-to-end-encryption","type":"docs"},{"id":652,"pageTitle":"Keychain","sectionTitle":"Standard compliance","sectionRoute":"/learn/decentralized-id/keychain#standard-compliance","type":"docs"},{"id":653,"pageTitle":"Keychain","sectionTitle":"Customization","sectionRoute":"/learn/decentralized-id/keychain#customization","type":"docs"},{"id":643,"pageTitle":"Ecosystem","sectionTitle":"Ecosystem","sectionRoute":"/learn/ecosystem","type":"docs"},{"id":644,"pageTitle":"Ecosystem","sectionTitle":"Limitless network","sectionRoute":"/learn/ecosystem#limitless-network","type":"docs"},{"id":645,"pageTitle":"Ecosystem","sectionTitle":"Unlimited applications","sectionRoute":"/learn/ecosystem#unlimited-applications","type":"docs"},{"id":646,"pageTitle":"Ecosystem","sectionTitle":"Decentralized Identity","sectionRoute":"/learn/ecosystem#decentralized-identity","type":"docs"},{"id":647,"pageTitle":"Ecosystem","sectionTitle":"Governance","sectionRoute":"/learn/ecosystem#governance","type":"docs"},{"id":648,"pageTitle":"Ecosystem","sectionTitle":"Open enhancements","sectionRoute":"/learn/ecosystem#open-enhancements","type":"docs"},{"id":660,"pageTitle":"Transaction fees","sectionTitle":"Transaction fees","sectionRoute":"/learn/fee","type":"docs"},{"id":661,"pageTitle":"Transaction fees","sectionTitle":"Calculation","sectionRoute":"/learn/fee#calculation","type":"docs"},{"id":662,"pageTitle":"Transaction fees","sectionTitle":"Transaction's type particularities","sectionRoute":"/learn/fee#transactions-type-particularities","type":"docs"},{"id":663,"pageTitle":"Transaction fees","sectionTitle":"Network","sectionRoute":"/learn/fee#network","type":"docs"},{"id":664,"pageTitle":"Transaction fees","sectionTitle":"Keychain","sectionRoute":"/learn/fee#keychain","type":"docs"},{"id":665,"pageTitle":"Transaction fees","sectionTitle":"Token","sectionRoute":"/learn/fee#token","type":"docs"},{"id":654,"pageTitle":"Governance","sectionTitle":"Governance","sectionRoute":"/learn/governance/","type":"docs"},{"id":655,"pageTitle":"Governance","sectionTitle":"Decentralized Identity & Proof of Identity","sectionRoute":"/learn/governance/#decentralized-identity--proof-of-identity","type":"docs"},{"id":656,"pageTitle":"Governance","sectionTitle":"Code «On-Chain»","sectionRoute":"/learn/governance/#code-on-chain","type":"docs"},{"id":657,"pageTitle":"Governance","sectionTitle":"Introduction","sectionRoute":"/learn/governance/#introduction","type":"docs"},{"id":658,"pageTitle":"Governance","sectionTitle":"Details","sectionRoute":"/learn/governance/#details","type":"docs"},{"id":659,"pageTitle":"Governance","sectionTitle":"Incentives","sectionRoute":"/learn/governance/#incentives","type":"docs"},{"id":666,"pageTitle":"OracleChain","sectionTitle":"OracleChain","sectionRoute":"/learn/oracle-chain","type":"docs"},{"id":667,"pageTitle":"OracleChain","sectionTitle":"How is it work ?","sectionRoute":"/learn/oracle-chain#how-is-it-work-","type":"docs"},{"id":668,"pageTitle":"OracleChain","sectionTitle":"Services","sectionRoute":"/learn/oracle-chain#services","type":"docs"},{"id":669,"pageTitle":"P2P","sectionTitle":"P2P","sectionRoute":"/learn/p2p/","type":"docs"},{"id":670,"pageTitle":"P2P","sectionTitle":"Existing solutions","sectionRoute":"/learn/p2p/#existing-solutions","type":"docs"},{"id":671,"pageTitle":"P2P","sectionTitle":"Gossip","sectionRoute":"/learn/p2p/#gossip","type":"docs"},{"id":672,"pageTitle":"P2P","sectionTitle":"Broadcast","sectionRoute":"/learn/p2p/#broadcast","type":"docs"},{"id":673,"pageTitle":"P2P","sectionTitle":"Archethic's way","sectionRoute":"/learn/p2p/#archethics-way","type":"docs"},{"id":674,"pageTitle":"P2P","sectionTitle":"Transaction Validation Process","sectionRoute":"/learn/p2p/#transaction-validation-process","type":"docs"},{"id":675,"pageTitle":"P2P","sectionTitle":"Network transaction chains","sectionRoute":"/learn/p2p/#network-transaction-chains","type":"docs"},{"id":676,"pageTitle":"P2P","sectionTitle":"Beacons Chains","sectionRoute":"/learn/p2p/#beacons-chains","type":"docs"},{"id":677,"pageTitle":"P2P","sectionTitle":"Data propagation","sectionRoute":"/learn/p2p/#data-propagation","type":"docs"},{"id":678,"pageTitle":"Bootstrapping","sectionTitle":"Bootstrapping","sectionRoute":"/learn/p2p/bootstrapping","type":"docs"},{"id":679,"pageTitle":"Bootstrapping","sectionTitle":"Joining","sectionRoute":"/learn/p2p/bootstrapping#joining","type":"docs"},{"id":680,"pageTitle":"Bootstrapping","sectionTitle":"Updates","sectionRoute":"/learn/p2p/bootstrapping#updates","type":"docs"},{"id":681,"pageTitle":"Bootstrapping","sectionTitle":"Synchronization","sectionRoute":"/learn/p2p/bootstrapping#synchronization","type":"docs"},{"id":682,"pageTitle":"Self Repair","sectionTitle":"Self Repair","sectionRoute":"/learn/p2p/self-repair","type":"docs"},{"id":683,"pageTitle":"Self Repair","sectionTitle":"Identification","sectionRoute":"/learn/p2p/self-repair#identification","type":"docs"},{"id":684,"pageTitle":"Self Repair","sectionTitle":"Synchronization","sectionRoute":"/learn/p2p/self-repair#synchronization","type":"docs"},{"id":694,"pageTitle":"Patents","sectionTitle":"Patents","sectionRoute":"/learn/patents","type":"docs"},{"id":695,"pageTitle":"Patents","sectionTitle":"12 patents to build a new ecosystem","sectionRoute":"/learn/patents#12-patents-to-build-a-new-ecosystem","type":"docs"},{"id":696,"pageTitle":"Patents","sectionTitle":"Archethic, a Humanitarian and Community Project","sectionRoute":"/learn/patents#archethic-a-humanitarian-and-community-project","type":"docs"},{"id":697,"pageTitle":"Patents","sectionTitle":"List of patents","sectionRoute":"/learn/patents#list-of-patents","type":"docs"},{"id":698,"pageTitle":"Patents","sectionTitle":"Blockchain","sectionRoute":"/learn/patents#blockchain","type":"docs"},{"id":699,"pageTitle":"Patents","sectionTitle":"Biometrics","sectionRoute":"/learn/patents#biometrics","type":"docs"},{"id":700,"pageTitle":"Patents","sectionTitle":"Hardware","sectionRoute":"/learn/patents#hardware","type":"docs"},{"id":685,"pageTitle":"Sharding","sectionTitle":"Sharding","sectionRoute":"/learn/sharding/","type":"docs"},{"id":686,"pageTitle":"Sharding","sectionTitle":"Validation","sectionRoute":"/learn/sharding/#validation","type":"docs"},{"id":687,"pageTitle":"Sharding","sectionTitle":"Storage","sectionRoute":"/learn/sharding/#storage","type":"docs"},{"id":688,"pageTitle":"Sharding","sectionTitle":"Rotating Election","sectionRoute":"/learn/sharding/#rotating-election","type":"docs"},{"id":689,"pageTitle":"Beacon Chain","sectionTitle":"Beacon Chain","sectionRoute":"/learn/sharding/beacon-chain/","type":"docs"},{"id":690,"pageTitle":"Beacon Chain","sectionTitle":"Concepts","sectionRoute":"/learn/sharding/beacon-chain/#concepts","type":"docs"},{"id":691,"pageTitle":"Beacon Chain","sectionTitle":"Transaction tracking and timestamping","sectionRoute":"/learn/sharding/beacon-chain/#transaction-tracking-and-timestamping","type":"docs"},{"id":692,"pageTitle":"Beacon Chain","sectionTitle":"Status and Network Coordinates of nodes","sectionRoute":"/learn/sharding/beacon-chain/#status-and-network-coordinates-of-nodes","type":"docs"},{"id":693,"pageTitle":"Beacon Chain","sectionTitle":"Slot","sectionRoute":"/learn/sharding/beacon-chain/#slot","type":"docs"},{"id":701,"pageTitle":"Beacon Explorer","sectionTitle":"Beacon Explorer","sectionRoute":"/learn/sharding/beacon-chain/explorer","type":"docs"},{"id":702,"pageTitle":"Beacon Explorer","sectionTitle":"Concepts","sectionRoute":"/learn/sharding/beacon-chain/explorer#concepts","type":"docs"},{"id":703,"pageTitle":"Beacon Explorer","sectionTitle":"Slot","sectionRoute":"/learn/sharding/beacon-chain/explorer#slot","type":"docs"},{"id":704,"pageTitle":"Beacon Explorer","sectionTitle":"Epoch","sectionRoute":"/learn/sharding/beacon-chain/explorer#epoch","type":"docs"},{"id":705,"pageTitle":"Beacon Explorer","sectionTitle":"Subset","sectionRoute":"/learn/sharding/beacon-chain/explorer#subset","type":"docs"},{"id":706,"pageTitle":"Beacon Explorer","sectionTitle":"Process to get transaction notifications","sectionRoute":"/learn/sharding/beacon-chain/explorer#process-to-get-transaction-notifications","type":"docs"},{"id":707,"pageTitle":"Beacon Explorer","sectionTitle":"How to get transactions in realtime","sectionRoute":"/learn/sharding/beacon-chain/explorer#how-to-get-transactions-in-realtime","type":"docs"},{"id":708,"pageTitle":"Replication attestation","sectionTitle":"Replication attestation","sectionRoute":"/learn/sharding/replication-attestation","type":"docs"},{"id":709,"pageTitle":"Replication attestation","sectionTitle":"Heuristic solution","sectionRoute":"/learn/sharding/replication-attestation#heuristic-solution","type":"docs"},{"id":710,"pageTitle":"Replication attestation","sectionTitle":"Nested replications","sectionRoute":"/learn/sharding/replication-attestation#nested-replications","type":"docs"},{"id":711,"pageTitle":"Replication attestation","sectionTitle":"Client notifications","sectionRoute":"/learn/sharding/replication-attestation#client-notifications","type":"docs"},{"id":712,"pageTitle":"Replication attestation","sectionTitle":"Further improvements","sectionRoute":"/learn/sharding/replication-attestation#further-improvements","type":"docs"},{"id":718,"pageTitle":"Tokens","sectionTitle":"Tokens","sectionRoute":"/learn/token","type":"docs"},{"id":719,"pageTitle":"Tokens","sectionTitle":"Native","sectionRoute":"/learn/token#native","type":"docs"},{"id":720,"pageTitle":"Tokens","sectionTitle":"Standardized","sectionRoute":"/learn/token#standardized","type":"docs"},{"id":721,"pageTitle":"Tokens","sectionTitle":"Creation","sectionRoute":"/learn/token#creation","type":"docs"},{"id":722,"pageTitle":"Tokens","sectionTitle":"Fungible","sectionRoute":"/learn/token#fungible","type":"docs"},{"id":723,"pageTitle":"Tokens","sectionTitle":"Non-fungible","sectionRoute":"/learn/token#non-fungible","type":"docs"},{"id":724,"pageTitle":"Tokens","sectionTitle":"Resupply fungible tokens (AEIP-18)","sectionRoute":"/learn/token#resupply-fungible-tokens-aeip-18","type":"docs"},{"id":725,"pageTitle":"Tokens","sectionTitle":"Recipients (AEIP-19)","sectionRoute":"/learn/token#recipients-aeip-19","type":"docs"},{"id":726,"pageTitle":"Tokens","sectionTitle":"Transfer","sectionRoute":"/learn/token#transfer","type":"docs"},{"id":713,"pageTitle":"Transaction chains","sectionTitle":"Transaction chains","sectionRoute":"/learn/transaction-chain","type":"docs"},{"id":714,"pageTitle":"Transaction chains","sectionTitle":"Principles","sectionRoute":"/learn/transaction-chain#principles","type":"docs"},{"id":715,"pageTitle":"Transaction chains","sectionTitle":"Transaction structure","sectionRoute":"/learn/transaction-chain#transaction-structure","type":"docs"},{"id":716,"pageTitle":"Transaction chains","sectionTitle":"Pending transaction","sectionRoute":"/learn/transaction-chain#pending-transaction","type":"docs"},{"id":717,"pageTitle":"Transaction chains","sectionTitle":"Validated transaction","sectionRoute":"/learn/transaction-chain#validated-transaction","type":"docs"},{"id":727,"pageTitle":"Transaction types","sectionTitle":"Transaction types","sectionRoute":"/learn/transaction-types","type":"docs"},{"id":728,"pageTitle":"Transaction types","sectionTitle":"node (network)","sectionRoute":"/learn/transaction-types#node-network","type":"docs"},{"id":729,"pageTitle":"Transaction types","sectionTitle":"node_shared_secrets (network)","sectionRoute":"/learn/transaction-types#node_shared_secrets-network","type":"docs"},{"id":730,"pageTitle":"Transaction types","sectionTitle":"node_rewards (network)","sectionRoute":"/learn/transaction-types#node_rewards-network","type":"docs"},{"id":731,"pageTitle":"Transaction types","sectionTitle":"mint_rewards (network)","sectionRoute":"/learn/transaction-types#mint_rewards-network","type":"docs"},{"id":732,"pageTitle":"Transaction types","sectionTitle":"oracle (network)","sectionRoute":"/learn/transaction-types#oracle-network","type":"docs"},{"id":733,"pageTitle":"Transaction types","sectionTitle":"oracle_summary (network)","sectionRoute":"/learn/transaction-types#oracle_summary-network","type":"docs"},{"id":734,"pageTitle":"Transaction types","sectionTitle":"code_proposal (network)","sectionRoute":"/learn/transaction-types#code_proposal-network","type":"docs"},{"id":735,"pageTitle":"Transaction types","sectionTitle":"code_approval (network)","sectionRoute":"/learn/transaction-types#code_approval-network","type":"docs"},{"id":736,"pageTitle":"Transaction types","sectionTitle":"origin (network)","sectionRoute":"/learn/transaction-types#origin-network","type":"docs"},{"id":737,"pageTitle":"Transaction types","sectionTitle":"keychain","sectionRoute":"/learn/transaction-types#keychain","type":"docs"},{"id":738,"pageTitle":"Transaction types","sectionTitle":"keychain_access","sectionRoute":"/learn/transaction-types#keychain_access","type":"docs"},{"id":739,"pageTitle":"Transaction types","sectionTitle":"transfer","sectionRoute":"/learn/transaction-types#transfer","type":"docs"},{"id":740,"pageTitle":"Transaction types","sectionTitle":"token","sectionRoute":"/learn/transaction-types#token","type":"docs"},{"id":741,"pageTitle":"Transaction types","sectionTitle":"hosting","sectionRoute":"/learn/transaction-types#hosting","type":"docs"},{"id":742,"pageTitle":"Transaction types","sectionTitle":"data","sectionRoute":"/learn/transaction-types#data","type":"docs"},{"id":743,"pageTitle":"Transaction types","sectionTitle":"contract","sectionRoute":"/learn/transaction-types#contract","type":"docs"},{"id":744,"pageTitle":"UCO token","sectionTitle":"UCO token","sectionRoute":"/learn/uco","type":"docs"},{"id":745,"pageTitle":"UCO token","sectionTitle":"Fibonacci Golden Token Economics","sectionRoute":"/learn/uco#fibonacci-golden-token-economics","type":"docs"},{"id":746,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Archethic Web (AEWeb)","sectionRoute":"/participate/aeweb/","type":"docs"},{"id":747,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Motivations","sectionRoute":"/participate/aeweb/#motivations","type":"docs"},{"id":748,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Easy","sectionRoute":"/participate/aeweb/#easy","type":"docs"},{"id":749,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Security","sectionRoute":"/participate/aeweb/#security","type":"docs"},{"id":750,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Costly efficient","sectionRoute":"/participate/aeweb/#costly-efficient","type":"docs"},{"id":751,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Target","sectionRoute":"/participate/aeweb/#target","type":"docs"},{"id":752,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Roadmap","sectionRoute":"/participate/aeweb/#roadmap","type":"docs"},{"id":759,"pageTitle":"Automate deployments","sectionTitle":"Automate deployments","sectionRoute":"/participate/aeweb/automation","type":"docs"},{"id":753,"pageTitle":"AEWeb - Domain names","sectionTitle":"AEWeb - Domain names","sectionRoute":"/participate/aeweb/dns","type":"docs"},{"id":754,"pageTitle":"AEWeb - Domain names","sectionTitle":"DNSLink","sectionRoute":"/participate/aeweb/dns#dnslink","type":"docs"},{"id":755,"pageTitle":"AEWeb - Domain names","sectionTitle":"Hosting provider integration","sectionRoute":"/participate/aeweb/dns#hosting-provider-integration","type":"docs"},{"id":756,"pageTitle":"AEWeb - Domain names","sectionTitle":"SSL","sectionRoute":"/participate/aeweb/dns#ssl","type":"docs"},{"id":757,"pageTitle":"AEWeb - Domain names","sectionTitle":"1. Get the certificate","sectionRoute":"/participate/aeweb/dns#1-get-the-certificate","type":"docs"},{"id":758,"pageTitle":"AEWeb - Domain names","sectionTitle":"2. Add the certificate on chain","sectionRoute":"/participate/aeweb/dns#2-add-the-certificate-on-chain","type":"docs"},{"id":760,"pageTitle":"AEWeb - How it works","sectionTitle":"AEWeb - How it works","sectionRoute":"/participate/aeweb/how-it-works","type":"docs"},{"id":761,"pageTitle":"AEWeb - How it works","sectionTitle":"Transaction building","sectionRoute":"/participate/aeweb/how-it-works#transaction-building","type":"docs"},{"id":762,"pageTitle":"AEWeb - How it works","sectionTitle":"Content delivery","sectionRoute":"/participate/aeweb/how-it-works#content-delivery","type":"docs"},{"id":763,"pageTitle":"AEWeb - How it works","sectionTitle":"Website updates","sectionRoute":"/participate/aeweb/how-it-works#website-updates","type":"docs"},{"id":764,"pageTitle":"AEWeb - How it works","sectionTitle":"Website unpublication","sectionRoute":"/participate/aeweb/how-it-works#website-unpublication","type":"docs"},{"id":768,"pageTitle":"","sectionTitle":"AEWeb Front end","sectionRoute":"/participate/aeweb/usage/aeweb-front","type":"docs"},{"id":769,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/participate/aeweb/usage/aeweb-front#tutorials","type":"docs"},{"id":770,"pageTitle":"","sectionTitle":"Deploy for the first time my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#deploy-for-the-first-time-my-static-site","type":"docs"},{"id":771,"pageTitle":"","sectionTitle":"Update my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#update-my-static-site","type":"docs"},{"id":772,"pageTitle":"","sectionTitle":"Update the SSL certificate","sectionRoute":"/participate/aeweb/usage/aeweb-front#update-the-ssl-certificate","type":"docs"},{"id":773,"pageTitle":"","sectionTitle":"Unpublish my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#unpublish-my-static-site","type":"docs"},{"id":774,"pageTitle":"","sectionTitle":"See my static site's informations","sectionRoute":"/participate/aeweb/usage/aeweb-front#see-my-static-sites-informations","type":"docs"},{"id":775,"pageTitle":"","sectionTitle":"Disconnect AEWeb","sectionRoute":"/participate/aeweb/usage/aeweb-front#disconnect-aeweb","type":"docs"},{"id":776,"pageTitle":"","sectionTitle":"Roadmap","sectionRoute":"/participate/aeweb/usage/aeweb-front#roadmap","type":"docs"},{"id":765,"pageTitle":"","sectionTitle":"AEWeb CLI (Command-Line Interface)","sectionRoute":"/participate/aeweb/usage/cli","type":"docs"},{"id":766,"pageTitle":"","sectionTitle":"aeweb generate-address","sectionRoute":"/participate/aeweb/usage/cli#aeweb-generate-address","type":"docs"},{"id":767,"pageTitle":"","sectionTitle":"aeweb deploy","sectionRoute":"/participate/aeweb/usage/cli#aeweb-deploy","type":"docs"},{"id":777,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic's bridge","sectionRoute":"/participate/bridge/","type":"docs"},{"id":778,"pageTitle":"Archethic's bridge","sectionTitle":"Key concepts","sectionRoute":"/participate/bridge/#key-concepts","type":"docs"},{"id":779,"pageTitle":"Archethic's bridge","sectionTitle":"HTLC (Hash Time Lock Contract)","sectionRoute":"/participate/bridge/#htlc-hash-time-lock-contract","type":"docs"},{"id":780,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic's cross-chain verification","sectionRoute":"/participate/bridge/#archethics-cross-chain-verification","type":"docs"},{"id":781,"pageTitle":"Archethic's bridge","sectionTitle":"Safety Module","sectionRoute":"/participate/bridge/#safety-module","type":"docs"},{"id":782,"pageTitle":"Archethic's bridge","sectionTitle":"Usage","sectionRoute":"/participate/bridge/#usage","type":"docs"},{"id":783,"pageTitle":"Archethic's bridge","sectionTitle":"Specifics","sectionRoute":"/participate/bridge/#specifics","type":"docs"},{"id":784,"pageTitle":"Archethic's bridge","sectionTitle":"EVM to Archethic","sectionRoute":"/participate/bridge/#evm-to-archethic","type":"docs"},{"id":785,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic to EVM","sectionRoute":"/participate/bridge/#archethic-to-evm","type":"docs"},{"id":786,"pageTitle":"","sectionTitle":"Bridge Front end - Tutorial","sectionRoute":"/participate/bridge/usage/bridge-front","type":"docs"},{"id":787,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/participate/bridge/usage/bridge-front#prerequisites","type":"docs"},{"id":788,"pageTitle":"","sectionTitle":"Welcome Screen","sectionRoute":"/participate/bridge/usage/bridge-front#welcome-screen","type":"docs"},{"id":789,"pageTitle":"","sectionTitle":"Application Menu","sectionRoute":"/participate/bridge/usage/bridge-front#application-menu","type":"docs"},{"id":790,"pageTitle":"","sectionTitle":"Feature Access","sectionRoute":"/participate/bridge/usage/bridge-front#feature-access","type":"docs"},{"id":791,"pageTitle":"","sectionTitle":"Bridging Your Assets","sectionRoute":"/participate/bridge/usage/bridge-front#bridging-your-assets","type":"docs"},{"id":792,"pageTitle":"","sectionTitle":"Step 1: Initiating Transfer","sectionRoute":"/participate/bridge/usage/bridge-front#step-1-initiating-transfer","type":"docs"},{"id":793,"pageTitle":"","sectionTitle":"Step 2: Confirming Details","sectionRoute":"/participate/bridge/usage/bridge-front#step-2-confirming-details","type":"docs"},{"id":794,"pageTitle":"","sectionTitle":"Step 3: Executing Transfer","sectionRoute":"/participate/bridge/usage/bridge-front#step-3-executing-transfer","type":"docs"},{"id":795,"pageTitle":"","sectionTitle":"Local History and Management","sectionRoute":"/participate/bridge/usage/bridge-front#local-history-and-management","type":"docs"},{"id":796,"pageTitle":"","sectionTitle":"Options Include:","sectionRoute":"/participate/bridge/usage/bridge-front#options-include","type":"docs"},{"id":797,"pageTitle":"","sectionTitle":"Transfer Status Actions:","sectionRoute":"/participate/bridge/usage/bridge-front#transfer-status-actions","type":"docs"},{"id":798,"pageTitle":"","sectionTitle":"Refund Process","sectionRoute":"/participate/bridge/usage/bridge-front#refund-process","type":"docs"},{"id":799,"pageTitle":"Archethic's CLI","sectionTitle":"Archethic's CLI","sectionRoute":"/participate/cli/","type":"docs"},{"id":800,"pageTitle":"Archethic's CLI","sectionTitle":"Installation","sectionRoute":"/participate/cli/#installation","type":"docs"},{"id":801,"pageTitle":"Archethic's CLI","sectionTitle":"Generate address","sectionRoute":"/participate/cli/#generate-address","type":"docs"},{"id":802,"pageTitle":"Archethic's CLI","sectionTitle":"Build and send transaction","sectionRoute":"/participate/cli/#build-and-send-transaction","type":"docs"},{"id":803,"pageTitle":"Archethic's CLI","sectionTitle":"UCO transfers","sectionRoute":"/participate/cli/#uco-transfers","type":"docs"},{"id":804,"pageTitle":"Archethic's CLI","sectionTitle":"Token transfers","sectionRoute":"/participate/cli/#token-transfers","type":"docs"},{"id":805,"pageTitle":"Archethic's CLI","sectionTitle":"Recipients","sectionRoute":"/participate/cli/#recipients","type":"docs"},{"id":806,"pageTitle":"Archethic's CLI","sectionTitle":"Content","sectionRoute":"/participate/cli/#content","type":"docs"},{"id":807,"pageTitle":"Archethic's CLI","sectionTitle":"Smart contract","sectionRoute":"/participate/cli/#smart-contract","type":"docs"},{"id":808,"pageTitle":"Archethic's CLI","sectionTitle":"Sending the transaction","sectionRoute":"/participate/cli/#sending-the-transaction","type":"docs"},{"id":809,"pageTitle":"Archethic's CLI","sectionTitle":"Keychain management","sectionRoute":"/participate/cli/#keychain-management","type":"docs"},{"id":810,"pageTitle":"Archethic's CLI","sectionTitle":"Creating a keychain","sectionRoute":"/participate/cli/#creating-a-keychain","type":"docs"},{"id":811,"pageTitle":"Archethic's CLI","sectionTitle":"Accessing a keychain","sectionRoute":"/participate/cli/#accessing-a-keychain","type":"docs"},{"id":812,"pageTitle":"Archethic's CLI","sectionTitle":"Adding / removing a service","sectionRoute":"/participate/cli/#adding--removing-a-service","type":"docs"},{"id":813,"pageTitle":"Archethic's CLI","sectionTitle":"Create a transaction for a service","sectionRoute":"/participate/cli/#create-a-transaction-for-a-service","type":"docs"},{"id":814,"pageTitle":"Archethic's CLI","sectionTitle":"CLI - Archethic Command Line Interpreter","sectionRoute":"/participate/cli/#cli---archethic-command-line-interpreter","type":"docs"},{"id":815,"pageTitle":"Archethic's CLI","sectionTitle":"Contribution","sectionRoute":"/participate/cli/#contribution","type":"docs"},{"id":817,"pageTitle":"Archethic Wallet","sectionTitle":"Archethic Wallet","sectionRoute":"/participate/wallet/","type":"docs"},{"id":818,"pageTitle":"Archethic Wallet","sectionTitle":"Features","sectionRoute":"/participate/wallet/#features","type":"docs"},{"id":819,"pageTitle":"Archethic Wallet","sectionTitle":"Framework","sectionRoute":"/participate/wallet/#framework","type":"docs"},{"id":820,"pageTitle":"Archethic Wallet","sectionTitle":"Seed","sectionRoute":"/participate/wallet/#seed","type":"docs"},{"id":821,"pageTitle":"Archethic Wallet","sectionTitle":"Securing the application","sectionRoute":"/participate/wallet/#securing-the-application","type":"docs"},{"id":822,"pageTitle":"Archethic Wallet","sectionTitle":"Data store","sectionRoute":"/participate/wallet/#data-store","type":"docs"},{"id":823,"pageTitle":"Archethic Wallet","sectionTitle":"Interactions with the Archethic blockchain","sectionRoute":"/participate/wallet/#interactions-with-the-archethic-blockchain","type":"docs"},{"id":824,"pageTitle":"Archethic Wallet","sectionTitle":"Setup","sectionRoute":"/participate/wallet/#setup","type":"docs"},{"id":825,"pageTitle":"Archethic Wallet","sectionTitle":"Pre-requisites","sectionRoute":"/participate/wallet/#pre-requisites","type":"docs"},{"id":826,"pageTitle":"Archethic Wallet","sectionTitle":"Instructions","sectionRoute":"/participate/wallet/#instructions","type":"docs"},{"id":827,"pageTitle":"Communication with DApps","sectionTitle":"Communication with DApps","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":828,"pageTitle":"Communication with DApps","sectionTitle":"Point of view on usage","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":829,"pageTitle":"Communication with DApps","sectionTitle":"Technical point of view","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":830,"pageTitle":"Communication with DApps","sectionTitle":"Available commands","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":831,"pageTitle":"Communication with DApps","sectionTitle":"RPC Methods","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":832,"pageTitle":"Communication with DApps","sectionTitle":"get_endpoint","sectionRoute":"/participate/wallet/dapps-communication#get_endpoint","type":"docs"},{"id":833,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request","type":"docs"},{"id":834,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response","type":"docs"},{"id":835,"pageTitle":"Communication with DApps","sectionTitle":"get_accounts","sectionRoute":"/participate/wallet/dapps-communication#get_accounts","type":"docs"},{"id":836,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-1","type":"docs"},{"id":837,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-1","type":"docs"},{"id":838,"pageTitle":"Communication with DApps","sectionTitle":"send_transaction","sectionRoute":"/participate/wallet/dapps-communication#send_transaction","type":"docs"},{"id":839,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-2","type":"docs"},{"id":840,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-2","type":"docs"},{"id":841,"pageTitle":"Communication with DApps","sectionTitle":"add_service","sectionRoute":"/participate/wallet/dapps-communication#add_service","type":"docs"},{"id":842,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-3","type":"docs"},{"id":843,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-3","type":"docs"},{"id":844,"pageTitle":"Communication with DApps","sectionTitle":"get_services_from_keychain","sectionRoute":"/participate/wallet/dapps-communication#get_services_from_keychain","type":"docs"},{"id":845,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-4","type":"docs"},{"id":846,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-4","type":"docs"},{"id":847,"pageTitle":"Communication with DApps","sectionTitle":"keychain_derive_keypair","sectionRoute":"/participate/wallet/dapps-communication#keychain_derive_keypair","type":"docs"},{"id":848,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-5","type":"docs"},{"id":849,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-5","type":"docs"},{"id":850,"pageTitle":"Communication with DApps","sectionTitle":"keychain_derive_address","sectionRoute":"/participate/wallet/dapps-communication#keychain_derive_address","type":"docs"},{"id":851,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-6","type":"docs"},{"id":852,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-6","type":"docs"},{"id":853,"pageTitle":"Communication with DApps","sectionTitle":"get_current_account","sectionRoute":"/participate/wallet/dapps-communication#get_current_account","type":"docs"},{"id":854,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-7","type":"docs"},{"id":855,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-7","type":"docs"},{"id":856,"pageTitle":"Communication with DApps","sectionTitle":"sign_transactions","sectionRoute":"/participate/wallet/dapps-communication#sign_transactions","type":"docs"},{"id":857,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-8","type":"docs"},{"id":858,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-8","type":"docs"},{"id":859,"pageTitle":"Communication with DApps","sectionTitle":"In conclusion","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":816,"pageTitle":"Schema Documentation","sectionTitle":"Schema Documentation","sectionRoute":"/schema","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content"],"fieldVectors":[["title/2",[0,3.831]],["content/2",[0,5.228,1,7.051,2,8.071,3,3.786,4,8.071,5,4.708,6,4.974,7,5.74,8,1.235]],["title/3",[5,4.237]],["content/3",[0,4.48,6,5.236,7,6.042,8,1.3,9,9.239,10,4.677,11,5.75,12,3.745]],["title/4",[13,6.534]],["content/4",[1,7.051,2,8.071,3,3.786,4,8.071,5,4.708,6,4.974,7,5.74,8,1.235,13,8.916]],["title/5",[5,4.237]],["content/5",[6,5.236,7,6.042,8,1.3,10,4.677,11,5.75,12,3.745,13,7.641,14,9.239]],["title/6",[15,6.534]],["content/6",[8,1.549,15,7.509,16,1.261,17,6.441,18,5.651,19,5.938,20,9.08,21,9.08]],["title/7",[22,3.343]],["content/7",[16,1.33,23,9.575,24,7.148,25,9.575,26,2.796,27,7.364]],["title/8",[28,3.8]],["content/8",[29,7.324,30,3.733]],["title/9",[31,6.534]],["content/9",[8,1.472,19,5.467,22,3.537,31,8.651,32,3.329,33,4.158,34,5.203,35,4.352,36,10.46,37,10.46]],["title/10",[22,3.343]],["content/10",[33,5.651,38,9.575,39,9.575,40,9.575,41,9.575]],["title/11",[28,3.8]],["content/11",[42,7.161,43,4.742]],["title/12",[44,6.076]],["content/12",[8,1.304,32,2.76,44,7.125,45,4.493,46,3.22,47,3.125,48,3.574,49,5.02,50,3.03,51,5.955,52,4.707,53,2.108,54,6.93,55,3.975,56,5.45]],["title/13",[3,3.408]],["content/13",[8,1.565,12,4.508,55,5.299,56,5.435,57,9.239,58,9.239]],["title/14",[28,3.8]],["content/14",[30,3.733,59,5.784]],["title/15",[60,4.376]],["content/15",[0,3.756,8,1.402,32,3.084,53,2.356,60,6.666,61,3.957,62,4.196,63,3.943,64,5.957,65,3.667]],["title/16",[3,3.408]],["content/16",[8,1.549,12,3.68,30,3.282,64,6.983,65,4.298,66,9.08,67,3.054,68,8.349]],["title/17",[69,2.645]],["content/17",[43,4.742,60,5.719]],["title/18",[28,3.8]],["content/18",[16,1.435,30,3.733]],["title/19",[70,5.48]],["content/19",[8,1.459,32,2.724,53,2.08,65,4.348,70,4.744,71,4.926,72,2.629,73,3.831,74,4.473,75,4.852,76,3.788,77,6.84,78,7.595,79,6.84,80,3.463,81,6.514,82,4.556,83,4.556,84,5.927,85,4.972,86,2.823]],["title/20",[3,3.408]],["content/20",[8,1.705,12,4.806,30,2.441,65,4.31,67,2.271,78,5.584,80,3.418,81,4.79,83,4.498,85,4.908,87,6.752,88,6.752,89,6.752,90,6.752,91,6.752,92,6.752,93,6.752]],["title/21",[69,2.645]],["content/21",[43,4.742,70,7.161]],["title/22",[94,6.076]],["content/22",[0,3.275,8,1.281,32,2.689,46,3.164,47,2.45,53,2.054,55,3.873,56,3.972,94,7.002,95,4.79,96,4.026,97,7.242,98,5.503,99,2.507,100,5.168,101,5.193,102,6.752]],["title/23",[3,3.408]],["content/23",[8,1.565,12,4.508,55,5.299,56,5.435,103,9.239,104,9.239]],["title/24",[28,3.8]],["content/24",[16,1.435,30,3.733]],["title/25",[105,2.54]],["content/25",[0,2.433,8,1.039,10,2.54,16,1.026,32,1.998,45,2.433,46,1.744,47,1.35,49,2.413,53,1.526,59,5.411,61,4.475,67,2.483,105,2.816,106,5.017,107,3.407,108,3.919,109,2.906,110,3.488,111,2.578,112,2.173,113,4.917,114,3.909,115,3.99,116,4.347,117,2.748,118,2.94,119,4.347,120,2.164,121,3.032,122,4.604,123,4.347,124,3.076,125,1.301]],["title/26",[3,3.408]],["content/26",[8,1.671,12,4.374,30,3.503,59,4.155,61,3.79,67,3.259,114,3.31,118,2.954,125,1.924,126,7.418,127,7.418,128,7.418,129,7.418,130,7.418]],["title/27",[28,3.8]],["content/27",[16,1.435,30,3.733]],["title/28",[131,4.647]],["content/28",[8,1.487,26,2.48,32,3.383,53,2.584,65,4.021,101,6.533,118,3.383,131,6.764,132,6.025,133,6.174]],["title/29",[3,3.408]],["content/29",[8,1.565,12,4.508,65,4.374,118,3.679,134,9.239,135,9.239]],["title/30",[69,2.645]],["content/30",[43,4.742,136,8.948]],["title/34",[61,4.036]],["content/34",[8,1.487,32,3.383,53,2.584,61,5.875,62,3.235,63,3.04,137,4.933,138,3.617,139,6.756,140,6.756]],["title/35",[3,3.408]],["content/35",[8,1.565,30,4.021,139,7.349,140,7.349,141,9.239,142,9.239]],["title/36",[28,3.8]],["content/36",[30,3.733,105,3.32]],["title/31",[143,5.898]],["content/31",[0,3.275,8,1.281,16,1.431,32,2.689,53,2.054,61,3.45,65,3.197,108,3.585,109,2.659,137,3.921,138,2.875,143,6.797,144,4.79,145,6.184,146,5.667,147,4.587,148,5.362,149,6.797,150,6.618]],["title/32",[3,3.408]],["content/32",[8,1.606,12,3.388,30,3.781,65,3.957,67,3.518,149,6.241,150,6.076,151,8.36,152,8.36,153,8.36]],["title/33",[28,3.8]],["content/33",[30,3.733,154,7.161]],["title/37",[99,2.175]],["content/37",[7,5.708,8,1.228,26,1.853,32,2.527,45,3.077,53,1.93,56,5.868,65,3.004,80,4.418,99,2.747,118,3.973,125,1.646,132,4.501,133,4.612,155,6.346,156,2.498,157,6.346,158,3.891,159,6.346,160,6.346,161,5.835,162,6.346,163,5.835,164,6.346,165,6.346]],["title/38",[3,3.408]],["content/38",[7,4.967,8,1.741,12,5.015,56,5.269,65,2.469,80,3.845,118,3.567,125,1.352,158,3.198,166,5.215,167,5.215,168,5.215,169,5.215,170,5.215,171,5.215,172,5.215,173,5.215,174,5.215,175,5.215,176,5.215,177,5.215,178,5.215]],["title/39",[69,2.645]],["content/39",[43,4.742,99,2.843]],["title/40",[179,5.48]],["content/40",[8,1.502,32,3.438,53,2.626,80,5.403,105,2.776,179,7.402,180,4.411,181,3.853,182,6.867]],["title/41",[3,3.408]],["content/41",[8,1.565,12,3.745,30,3.34,80,4.677,182,7.349,183,9.239,184,8.496]],["title/42",[69,2.645]],["content/42",[8,1.372,43,4.479,179,6.764,185,8.451,186,6.378]],["title/43",[182,6.284]],["content/43",[8,1.582,53,2.86,62,3.581,182,7.48,187,6.835,188,7.48]],["title/44",[3,3.408]],["content/44",[8,1.398,30,3.592,188,7.903,189,9.936]],["title/45",[28,3.8]],["content/45",[30,3.733,179,7.161]],["title/46",[59,4.426]],["content/46",[8,1.416,32,3.13,44,6.046,45,3.812,46,2.732,47,2.116,49,5.337,51,5.052,53,2.391,55,4.509,59,5.635,190,3.979,191,4.016,192,7.861]],["title/47",[3,3.408]],["content/47",[8,1.549,12,3.68,30,3.282,44,6.983,55,5.208,67,3.054,193,9.08,194,9.08]],["title/48",[28,3.8]],["content/48",[8,1.372,30,4.152,63,3.49,105,3.135]],["title/49",[195,5.898]],["content/49",[0,3.317,8,1.292,32,2.724,45,3.317,46,3.604,47,2.79,48,3.527,49,3.29,51,4.396,53,2.08,56,4.023,99,1.883,105,2.199,111,2.389,112,2.013,195,6.856,196,4.023,197,2.693,198,3.165,199,4.396,200,5.927,201,6.84]],["title/50",[3,3.408]],["content/50",[8,1.398,12,4.027,56,5.845,202,9.936]],["title/51",[69,2.645]],["content/51",[43,4.742,195,7.709]],["title/55",[63,2.828]],["content/55",[0,2.129,8,0.94,32,1.748,45,2.129,46,1.526,47,1.181,49,2.111,53,2.749,59,5.063,63,4.172,65,3.162,67,2.247,72,1.256,118,3.6,119,3.804,120,1.894,121,2.653,125,1.732,203,3.376,204,5.113,205,3.922,206,5.878,207,5.609,208,6.22,209,2.016,210,5.463,211,5.736,212,4.037,213,2.821,214,3.114,215,5.525]],["title/56",[3,3.408]],["content/56",[8,1.722,12,4.894,30,2.092,59,3.242,65,3.875,67,2.753,118,4.111,125,1.501,215,6.769,216,5.788,217,5.788,218,5.788,219,5.788,220,5.788,221,5.788,222,5.788,223,5.788,224,5.788,225,5.788]],["title/57",[69,2.645]],["content/57",[43,4.742,63,3.695]],["title/52",[64,6.076]],["content/52",[0,3.405,8,1.315,32,2.797,53,2.136,60,3.889,61,3.588,63,4.292,64,7.189,65,4.425,125,2.724,212,5.649,226,5.367,227,5.401]],["title/53",[3,3.408]],["content/53",[8,1.63,12,4.695,65,5.052,125,2.239,228,8.634,229,8.634,230,8.634]],["title/54",[28,3.8]],["content/54",[30,3.733,60,5.719]],["title/61",[139,6.284]],["content/61",[8,1.502,32,3.438,53,2.626,61,4.411,62,3.288,109,4.202,138,3.676,139,8.488,231,6.64]],["title/62",[3,3.408]],["content/62",[8,1.372,30,3.525,67,3.28,231,7.5,232,9.752]],["title/63",[28,3.8]],["content/63",[30,3.733,61,5.275]],["title/58",[231,6.076]],["content/58",[8,1.457,32,3.277,53,2.503,65,4.903,108,4.369,109,3.24,125,2.686,226,4.204,227,6.329,231,7.966,233,6.545]],["title/59",[3,3.408]],["content/59",[8,1.664,12,4.794,65,4.855,125,2.66,234,8.102,235,8.102,236,8.102,237,8.102]],["title/60",[28,3.8]],["content/60",[30,3.733,139,8.213]],["title/70",[16,1.098]],["content/70",[8,1.344,16,1.327,26,1.709,32,2.331,53,2.509,55,4.731,56,3.442,60,4.569,65,3.905,82,3.898,83,3.898,84,5.072,85,4.254,86,2.415,94,6.344,105,2.652,118,2.331,125,2.477,154,5.721,238,4.369,239,1.279,240,5.852,241,3.442,242,3.7,243,5.382,244,5.852,245,5.382,246,5.382]],["title/71",[3,3.408]],["content/71",[8,1.74,12,4.741,30,3.637,55,4.063,56,2.791,60,2.628,65,3.354,67,2.383,83,3.161,85,3.449,94,3.65,105,1.526,118,1.89,125,1.837,154,3.291,242,3,247,3.925,248,4.745,249,4.745,250,4.745,251,4.745,252,4.745,253,4.745,254,4.745,255,4.745,256,4.745,257,4.745,258,4.745,259,4.745,260,4.745,261,4.745]],["title/72",[69,2.645]],["content/72",[8,1.683,16,1.453,42,5.798,43,5.657,262,6.913,263,6.649]],["title/67",[264,6.076]],["content/67",[8,1.315,16,0.976,32,2.797,53,2.136,65,4.425,96,2.564,125,2.424,264,7.189,265,6.794,266,5.401,267,3.07,268,4.514,269,3.806,270,3.806,271,3.806,272,3.274,273,4.678,274,2.99,275,3.806,276,6.086,277,6.086]],["title/68",[3,3.408]],["content/68",[8,1.63,12,4.695,65,5.052,125,2.239,278,8.634,279,8.634,280,8.634]],["title/69",[69,2.645]],["content/69",[186,6.753,281,8.539]],["title/64",[29,5.604]],["content/64",[8,1.487,15,7.025,17,6.025,18,5.287,29,7.494,32,3.383,53,2.584,118,3.383,125,2.74,282,6.025]],["title/65",[3,3.408]],["content/65",[8,1.63,12,4.325,15,7.14,19,5.646,118,3.438,125,2.239,283,7.939,284,8.634,285,8.634]],["title/66",[69,2.645]],["content/66",[29,7.324,186,6.753]],["title/73",[242,4.995]],["content/73",[0,2.504,7,3.377,8,1.061,16,1.048,32,2.057,53,2.979,63,3.893,65,3.57,76,2.86,80,4.509,108,4.003,118,2.057,125,2.54,212,4.558,226,5.004,227,3.972,233,4.108,241,5.239,242,4.768,286,2.464,287,4.749,288,6.851,289,2.962,290,2.081,291,1.876,292,4.108,293,3.377]],["title/74",[3,3.408]],["content/74",[7,4.473,8,1.711,12,4.928,65,4.348,80,3.463,118,2.724,125,2.382,294,6.84,295,6.84,296,6.84,297,6.84,298,6.84,299,6.84,300,6.84]],["title/75",[69,2.645]],["content/75",[43,4.742,242,6.528]],["title/76",[28,3.8]],["content/76",[16,1.435,30,3.733]],["title/83",[149,5.898]],["content/83",[0,2.87,8,1.17,16,0.822,32,2.357,53,3.171,61,3.023,63,4.076,65,3.936,108,4.414,109,2.33,118,2.357,122,3.111,125,2.703,144,4.198,149,6.207,212,5.025,226,4.91,227,4.552,233,4.707,292,4.707,293,3.87,301,5.442]],["title/84",[3,3.408]],["content/84",[8,1.686,12,4.856,65,4.674,118,3.04,125,2.56,302,7.633,303,7.633,304,7.633,305,7.633,306,7.633]],["title/85",[28,3.8]],["content/85",[30,3.733,143,7.709]],["title/77",[81,5.604]],["content/77",[8,1.351,16,1.334,32,2.913,53,2.921,65,3.463,73,4.097,80,4.861,81,5.189,118,2.913,125,2.78,148,3.808,307,5.626,308,5.317,309,6.339,310,7.315,311,7.315,312,3.359]],["title/78",[3,3.408]],["content/78",[8,1.694,12,4.879,65,3.369,67,2.394,80,3.603,118,2.834,125,2.446,312,3.269,313,7.117,314,7.117,315,7.117,316,7.117,317,7.117,318,7.117]],["title/79",[28,3.8]],["content/79",[30,3.733,70,7.161]],["title/80",[188,6.284]],["content/80",[8,1.549,53,2.762,158,6.748,187,6.6,188,7.222,319,8.349,320,8.349]],["title/81",[3,3.408]],["content/81",[8,1.565,12,4.508,158,6.82,321,9.239,322,9.239]],["title/82",[28,3.8]],["content/82",[30,3.733,182,8.213]],["title/89",[140,6.284]],["content/89",[8,1.502,32,3.438,53,2.626,61,4.411,62,3.288,109,4.202,138,3.676,140,8.488,323,6.64]],["title/90",[3,3.408]],["content/90",[8,1.372,30,3.525,67,3.28,323,7.5,324,9.752]],["title/91",[28,3.8]],["content/91",[30,3.733,61,5.275]],["title/86",[323,6.076]],["content/86",[8,1.517,32,3.495,53,2.67,65,4.155,108,4.66,109,3.456,125,2.276,226,4.484,323,8.292]],["title/87",[3,3.408]],["content/87",[8,1.565,12,4.508,65,4.374,125,2.396,325,9.239,326,9.239]],["title/88",[28,3.8]],["content/88",[30,3.733,140,8.213]],["title/92",[150,5.743]],["content/92",[0,2.433,8,1.039,16,1.026,32,1.998,53,2.938,63,3.854,65,4.147,76,2.778,80,4.434,86,3.615,105,1.613,108,3.919,118,1.998,125,2.505,145,3.407,146,3.122,147,3.407,150,5.366,212,4.462,226,4.935,227,3.858,233,3.99,286,2.394,290,2.021,292,3.99,293,3.281,301,4.613,327,4.401,328,5.017,329,2.663]],["title/93",[3,3.408]],["content/93",[8,1.711,12,4.928,65,4.908,80,3.463,118,2.724,125,2.382,330,6.84,331,6.84,332,6.84,333,6.84,334,6.84,335,6.84,336,6.84]],["title/94",[28,3.8]],["content/94",[30,3.733,143,7.709]],["title/95",[154,5.48]],["content/95",[0,2.554,8,1.076,16,1.252,32,2.098,46,1.831,47,1.418,53,1.602,55,3.021,56,3.098,61,2.691,65,2.494,80,3.873,86,3.157,96,2.794,97,4.19,100,4.961,121,5.445,137,4.443,138,3.258,143,5.711,154,5.306,312,3.513,337,5.561,338,2.742,339,3.386,340,2.917,341,4.624,342,2.643,343,4.5,344,5.267,345,5.267,346,5.267]],["title/96",[3,3.408]],["content/96",[8,1.7,12,4.769,30,2.608,55,4.138,56,4.244,65,3.416,80,3.652,143,5.386,312,3.313,347,7.215,348,7.215,349,7.215,350,7.215,351,7.215,352,7.215]],["title/97",[28,3.8]],["content/97",[16,1.435,30,3.733]],["title/98",[86,3.26]],["content/98",[8,1.443,16,1.425,32,3.227,53,2.464,86,4.644,110,4.085,118,4.482,343,6.033]],["title/99",[3,3.408]],["content/99",[8,1.63,12,4.695,118,4.613,353,8.634,354,8.634,355,8.634]],["title/100",[69,2.645]],["content/100",[43,4.742,86,4.261]],["title/101",[60,4.376]],["content/101",[8,1.176,16,1.161,26,2.441,43,3.839,60,6.323,72,2.393,125,2.961,356,4.983,357,5.798,358,5.373]],["title/102",[5,4.237]],["content/102",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,359,9.575]],["title/103",[53,2.403]],["content/103",[0,4.119,30,3.071,32,3.383,60,6.854,61,4.34,62,4.024,63,3.781]],["title/104",[70,5.48]],["content/104",[8,1.158,22,4.382,26,2.403,43,3.779,70,7.184,71,4.413,72,2.355,73,4.609,80,5.243,290,3.315,360,3.807,361,4.413]],["title/105",[5,4.237]],["content/105",[8,1.398,12,4.027,80,5.03,362,9.936]],["title/106",[53,2.403]],["content/106",[30,3.173,32,3.495,70,6.088,71,5.782,72,3.086,73,4.917,74,5.74,75,6.226,76,4.861]],["title/107",[363,6.076]],["content/107",[8,1.235,16,1.219,26,2.563,43,4.031,125,3.156,204,5.549,356,5.232,363,6.751]],["title/108",[5,4.237]],["content/108",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,364,9.575]],["title/109",[53,2.403]],["content/109",[12,3.788,24,7.843,32,2.797,53,2.136,118,2.797,125,3.11,365,3.493,366,4.981,367,4.131,368,3.691,369,5.808,370,3.934,371,4.981,372,4.371,373,4.678,374,3.434,375,4.028,376,5.808]],["title/112",[262,6.534]],["content/112",[8,1.235,16,1.498,26,2.563,43,4.031,125,3.026,262,7.259,356,5.232,361,4.708]],["title/113",[5,4.237]],["content/113",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,377,9.575]],["title/114",[53,2.403]],["content/114",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/110",[136,6.847]],["content/110",[67,3.107,99,2.544,131,6.542,132,6.554,136,8.006,378,8.496,379,9.239]],["title/111",[53,2.403]],["content/111",[26,2.746,30,3.4,32,3.745,101,7.233,131,7.073]],["title/115",[263,6.284]],["content/115",[8,1.215,16,1.483,26,2.521,43,3.965,53,3.246,67,2.904,83,5.751,263,6.867,380,5.458,381,7.14]],["title/116",[5,4.237]],["content/116",[8,1.533,10,4.519,11,5.556,12,4.415,83,5.946,381,7.382,382,8.926,383,8.926]],["title/117",[53,2.403]],["content/117",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/118",[99,2.175]],["content/118",[26,2.796,67,3.22,99,3.336,384,8.805]],["title/119",[53,2.403]],["content/119",[26,2.796,30,3.461,32,3.813,99,3.336]],["title/120",[179,5.48]],["content/120",[8,1.195,22,4.47,26,2.48,43,3.901,80,5.348,179,7.328,180,4.34,290,3.422,360,3.93,361,4.556]],["title/121",[5,4.237]],["content/121",[8,1.398,12,4.027,80,5.03,184,9.137]],["title/122",[53,2.403]],["content/122",[30,3.461,32,3.813,105,3.079,179,7.881,180,4.892]],["title/129",[195,5.898]],["content/129",[26,2.698,43,4.243,46,3.211,47,2.487,195,8.304,198,4.275,199,5.938]],["title/130",[53,2.403]],["content/130",[0,3.499,30,2.608,32,2.873,45,3.499,46,3.701,47,2.866,48,3.72,49,3.47,51,4.637,99,1.987,105,2.32,111,2.52,112,2.124,195,7.104,196,4.244,197,2.841,198,3.338,199,4.637,200,6.252]],["title/123",[63,2.828]],["content/123",[8,1.256,26,2.606,43,4.099,63,3.898,105,2.87,125,2.825,356,5.321,385,7.1]],["title/124",[5,4.237]],["content/124",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,386,9.575]],["title/125",[53,2.403]],["content/125",[0,2.606,30,1.943,32,2.14,45,2.606,46,1.868,47,1.447,49,2.585,53,2.361,59,4.348,63,4.365,67,2.611,72,1.538,119,4.658,120,2.319,121,3.248,125,1.394,203,4.134,204,4.908,205,3.765,206,5.643,207,5.384,208,5.97,209,2.468,210,5.508,211,5.507,212,3.248,213,3.455,214,3.813]],["title/126",[16,1.098]],["content/126",[8,1.278,16,1.645,26,2.651,43,4.17,125,2.854,356,5.412]],["title/127",[5,4.237]],["content/127",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,247,7.918]],["title/128",[53,2.403]],["content/128",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/131",[42,5.48]],["content/131",[8,1.176,16,1.453,26,2.441,31,6.913,33,4.158,42,5.798,43,3.839,72,2.393,125,2.961,356,4.983,387,8.36]],["title/132",[5,4.237]],["content/132",[8,1.606,10,4.232,11,5.203,12,4.239,19,5.467,31,6.913,125,2.713,388,8.36,389,8.36,390,8.36]],["title/133",[53,2.403]],["content/133",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/134",[242,4.995]],["content/134",[8,1.158,16,1.143,26,2.403,43,3.779,67,2.768,82,5.481,83,5.481,84,7.131,85,5.981,125,2.939,241,4.84,242,6.548]],["title/135",[5,4.237]],["content/135",[8,1.606,10,4.232,11,5.203,12,4.627,83,5.568,85,6.076,125,2.168,391,8.36,392,8.36,393,8.36]],["title/136",[53,2.403]],["content/136",[0,2.936,16,1.174,30,2.189,32,2.411,53,2.569,63,4.105,76,3.353,80,3.065,108,4.485,125,2.191,212,5.106,226,4.971,241,5.723,242,5.341,286,2.889,287,5.567,288,6.497,289,3.472,290,2.439,291,2.2,292,4.815,293,3.959]],["title/137",[16,1.098]],["content/137",[8,1.235,16,1.621,26,2.563,43,4.031,83,5.847,267,3.837,356,5.232,380,5.549,394,4.757]],["title/138",[5,4.237]],["content/138",[8,1.398,12,4.027,83,6.619,395,9.936]],["title/139",[53,2.403]],["content/139",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/149",[86,3.26]],["content/149",[16,1.306,67,3.163,86,4.962,110,3.745,343,5.532]],["title/150",[53,2.403]],["content/150",[16,1.284,30,3.34,32,3.679,86,4.925,110,3.679,343,5.435]],["title/144",[125,2.049]],["content/144",[12,3.788,24,7.843,32,2.797,53,2.136,118,2.797,125,3.11,365,3.493,366,4.981,367,4.131,368,3.691,369,5.808,370,3.934,371,4.981,372,4.371,373,4.678,374,3.434,375,4.028,376,5.808]],["title/145",[69,2.645]],["content/145",[43,4.742,363,7.941]],["title/146",[28,3.8]],["content/146",[8,1.793,16,0.965,29,4.926,30,4.37,42,3.205,43,4.977,60,2.559,63,2.485,64,3.554,81,3.278,99,1.272,105,1.486,149,3.45,150,3.358,186,4.542,231,3.554,242,4.391,262,3.821,264,3.554,281,3.821,323,3.554,363,3.554]],["title/140",[7,5.167]],["content/140",[6,5.236,7,7.274,12,4.508,32,3.679,53,2.81,396,6.042]],["title/141",[28,3.8]],["content/141",[0,4.256,1,7.051,8,1.642,13,7.259,30,3.897,99,2.417,242,5.549]],["title/142",[114,3.526]],["content/142",[12,4.157,16,1.126,32,3.227,53,2.464,113,5.397,114,5.279,397,4.83,398,4.897,399,6.445,400,7.451,401,4.897,402,5.747]],["title/143",[28,3.8]],["content/143",[30,3.733,105,3.32]],["title/151",[158,4.844]],["content/151",[12,4.239,22,3.537,32,3.329,53,2.543,158,6.413,403,4.483,404,6.649,405,7.244,406,7.244,407,4.579,408,8.36,409,8.36]],["title/152",[28,3.8]],["content/152",[8,1.372,30,4.152,99,2.685,188,7.757]],["title/147",[312,3.628]],["content/147",[12,3.508,24,7.4,26,1.831,32,2.497,53,1.907,118,2.497,214,4.448,239,1.37,291,2.278,312,5.458,366,4.448,367,3.688,368,3.296,369,5.186,370,3.512,371,4.448,372,3.903,373,4.177,374,4.232,375,3.596,376,5.186,407,3.435,410,3.964,411,1.356,412,3.329]],["title/148",[28,3.8]],["content/148",[8,1.372,30,4.152,81,6.917,154,6.764]],["title/153",[55,4.531]],["content/153",[12,4.556,32,3.745,53,2.86,55,6.447,113,6.264]],["title/154",[28,3.8]],["content/154",[8,1.683,16,1.161,30,4.453,44,6.429,59,4.683,94,6.429,154,5.798]],["title/157",[65,3.74]],["content/157",[10,3.921,12,4.039,22,4.216,32,3.969,53,2.356,65,5.216,403,4.154,406,6.712,413,7.745,414,7.745,415,4.198,416,9.966,417,2.718]],["title/158",[28,3.8]],["content/158",[8,1.782,16,0.762,30,4.605,60,3.039,63,1.964,64,4.22,70,3.805,81,3.892,99,1.511,131,3.227,143,4.096,149,4.096,150,3.988,154,3.805,231,4.22,242,3.469,264,4.22,323,4.22]],["title/155",[85,5.743]],["content/155",[10,5.458,12,4.37,32,3.495,53,2.67,85,6.38,209,4.031,418,10.781,419,6.088]],["title/156",[28,3.8]],["content/156",[43,4.742,242,6.528]],["title/161",[78,6.534]],["content/161",[12,4.104,78,8.375,187,7.361]],["title/162",[28,3.8]],["content/162",[30,3.733,70,7.161]],["title/159",[83,5.263]],["content/159",[12,4.461,32,3.616,53,2.762,83,6.048,209,4.17,419,6.298,420,7.807]],["title/160",[28,3.8]],["content/160",[8,1.565,16,1.284,43,5.48,242,5.841,263,7.349]],["title/163",[56,4.647]],["content/163",[12,3.755,24,7.791,32,2.76,46,3.22,47,2.493,53,2.108,56,6.139,118,2.76,125,1.797,366,4.916,367,4.076,368,3.643,369,5.731,370,3.882,371,4.916,372,4.313,373,4.616,374,3.389,375,3.975,376,5.731]],["title/164",[28,3.8]],["content/164",[8,1.709,16,1.109,30,4.489,44,6.137,94,6.137,99,2.197,154,5.535,195,5.957]],["title/165",[118,3.146]],["content/165",[12,3.892,32,4.269,53,2.921,105,2.352,115,5.818,118,4.269,401,4.421,411,1.582,421,7.315,422,7.315,423,4.485,424,5.461,425,6.049,426,4.873,427,3.884,428,6.049,429,6.727]],["title/166",[28,3.8]],["content/166",[8,1.763,16,0.903,29,4.612,30,4.573,63,2.327,81,4.612,86,2.683,99,1.79,105,2.091,131,3.825,149,4.854,150,4.726,242,4.111]],["title/167",[80,4]],["content/167",[12,4.461,32,3.616,53,2.762,80,5.996,430,7.868,431,5.567]],["title/168",[28,3.8]],["content/168",[8,1.749,30,4.425,43,4.292,70,6.483,81,4.981,99,1.934,150,5.104,154,4.871,179,6.483,242,4.44]],["title/169",[215,6.534]],["content/169",[12,3.881,32,3.813,210,5.787,215,9.397,385,7.616]],["title/170",[28,3.8]],["content/170",[30,3.733,63,3.695]],["title/171",[381,6.534]],["content/171",[12,4.508,16,1.284,32,3.679,53,3.383,381,9.198]],["title/172",[28,3.8]],["content/172",[43,4.742,263,8.213]],["title/173",[185,6.847]],["content/173",[105,2.971,179,6.408,180,4.72,185,8.006,267,4.039,432,7.106,433,6.154,434,3.258]],["title/174",[53,2.403]],["content/174",[30,3.461,32,3.813,105,3.079,179,7.881,180,4.892]],["title/178",[281,6.534]],["content/178",[8,1.215,16,1.199,99,2.377,125,2.768,264,6.64,267,3.774,281,7.14,432,6.64,433,5.751,435,6.867,436,5.988]],["title/179",[5,4.237]],["content/179",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,437,9.575]],["title/180",[53,2.403]],["content/180",[16,1.092,30,2.842,32,3.13,96,2.871,264,7.738,265,7.313,266,6.046,267,3.436,268,5.052,269,4.26,270,4.26,271,4.26,272,3.664,273,5.236,274,3.347,275,4.26]],["title/175",[29,5.604]],["content/175",[8,1.278,16,1.261,17,6.441,29,7.807,125,2.854,432,6.983,433,6.048]],["title/176",[5,4.237]],["content/176",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,283,8.805]],["title/177",[53,2.403]],["content/177",[17,6.917,29,8.148,30,3.525,32,3.884]],["title/181",[438,6.847]],["content/181",[0,2.022,16,0.579,33,2.074,47,0.659,50,1.823,53,1.268,61,3.678,62,0.933,99,1.148,105,1.341,108,2.213,124,1.502,198,1.134,239,0.535,267,1.071,274,2.317,291,0.89,360,1.134,403,1.314,411,0.902,415,1.328,435,1.949,439,3.073,440,4.278,441,3.315,442,1.787,443,1.252,444,1.829,445,1.357,446,2.123,447,1.781,448,3.113,449,2.518,450,1.071,451,1.664,452,1.314,453,2.026,454,2.777,455,3.828,456,1.389,457,1.575,458,1.738,459,1.781,460,3.834,461,3.944,462,1.064,463,3.316,464,1.405,465,2.026,466,1.949,467,1.24,468,2.253,469,1.829,470,2.13,471,1.405,472,1.549,473,1.502,474,1.057,475,2.45,476,2.391,477,1.423,478,1.179,479,2.026,480,1.632,481,1.198,482,2.45,483,1.179,484,1.699,485,1.884,486,1.151,487,3.613,488,2.735,489,1.738,490,1.829,491,2.45,492,3.04,493,3.207,494,1.664,495,1.057,496,1.423,497,3.559,498,2.026,499,2.123,500,1.738,501,4.169,502,1.005,503,1.389,504,2.45,505,3.207,506,2.636,507,2.123,508,1.389,509,1.632,510,2.026,511,2.253,512,2.253,513,1.602,514,1.179,515,1.829,516,1.357,517,2.45]],["title/182",[518,7.901]],["content/182",[10,2.64,46,1.813,61,5.027,62,1.986,239,1.957,269,2.826,286,2.488,291,1.895,441,1.722,449,2.413,461,4.161,465,7.408,470,3.88,481,2.55,492,3.596,497,3.411,507,7.763,508,4.304,510,4.313,519,2.797,520,2.955,521,3.893,522,3.068,523,3.411,524,3.411,525,4.657,526,4.148,527,4.313,528,4.148,529,5.215,530,4.313,531,3.029,532,2.413,533,4.796,534,4.519,535,4.796,536,3.893,537,3.474]],["title/183",[538,6.534]],["content/183",[8,0.734,46,1.813,61,5.027,86,2.152,239,1.139,274,2.221,291,1.895,358,4.882,441,1.722,458,3.699,459,3.791,461,4.161,465,4.313,467,2.64,468,6.984,469,5.67,478,2.508,486,2.45,487,4.519,492,2.469,497,3.411,507,4.519,510,4.313,514,2.508,526,4.148,532,2.413,539,2.45,540,2.617,541,6.041,542,4.519,543,3.198,544,3.411,545,2.311,546,2.888,547,2.888,548,4.011,549,5.215,550,2.991,551,5.215,552,4.727,553,3.542,554,4.519,555,5.215]],["title/184",[552,3.888,556,4.804]],["content/184",[411,1.753,471,4.647,494,5.504,500,5.747,522,4.766,552,5.043,557,7.021,558,6.199,559,8.102,560,9.431,561,6.049,562,5.747,563,5.208,564,7.451]],["title/185",[467,4]],["content/185",[8,1.713,411,1.899,564,8.071,565,6.38,566,8.777,567,8.777,568,8.777,569,8.777]],["title/186",[570,7.265]],["content/186",[16,1.002,46,2.508,47,1.942,62,2.748,100,3.62,109,2.841,125,1.871,138,3.072,290,2.907,340,3.996,415,3.91,441,2.383,481,3.528,570,6.634,571,6.634,572,5.386,573,5.386,574,6.634,575,4.901,576,5.004,577,4.637,578,4.424,579,2.977,580,5.549]],["title/187",[61,2.639,488,2.199,581,3.079]],["content/187",[239,2.055,487,8.149,497,6.15,500,6.671,531,5.461,582,5.461,583,9.404]],["title/188",[86,3.26]],["content/188",[8,1.383,11,2.2,18,3.512,61,2.883,65,1.674,69,1.184,86,3.317,100,1.774,105,1.137,110,1.408,146,2.2,241,2.08,291,1.285,419,2.452,461,1.937,464,2.028,483,2.714,488,1.505,495,1.525,539,1.661,562,2.508,575,2.401,579,1.459,584,1.896,585,3.535,586,3.535,587,4.213,588,4.667,589,4.213,590,5.824,591,2.924,592,4.667,593,2.924,594,2.924,595,5.189,596,4.34,597,2.161,598,4.89,599,1.758,600,4.003,601,2.508,602,3.064,603,3.535,604,1.701,605,3.535,606,7.265,607,5.189,608,2.812,609,2.137,610,2.272,611,2.355,612,5.643,613,2.554,614,5.643,615,1.459,616,3.535,617,1.589,618,3.535,619,2.004,620,3.535,621,3.535,622,2.759,623,3.759,624,2.287,625,3.251,626,3.535]],["title/189",[46,1.53,47,1.185,340,2.438,461,2.412]],["content/189",[8,1.086,11,2.752,22,0.79,46,2.115,47,2.366,53,2.207,56,3.137,61,2.259,62,0.711,63,0.669,65,0.884,69,1.48,100,1.654,125,0.484,137,1.085,138,0.795,191,2.259,267,0.817,291,0.679,329,0.992,340,2.954,360,0.864,368,0.982,370,1.046,372,1.163,397,1.965,411,0.404,412,0.992,431,1.145,455,2.636,461,2.921,464,1.072,477,1.914,481,0.913,495,2.898,531,1.085,539,1.548,543,1.145,544,1.222,545,0.828,575,1.269,584,1.002,587,1.395,588,4.411,589,1.395,590,1.545,591,1.545,592,1.545,593,1.545,594,1.545,600,1.325,601,1.325,613,2.001,615,2.201,617,1.481,627,1.868,628,1.868,629,3.641,630,2.831,631,1.868,632,1.868,633,1.868,634,1.868,635,1.868,636,1.868,637,1.56,638,1.619,639,1.868,640,1.619,641,5.333,642,1.181,643,1.536,644,7.099,645,3.097,646,2.856,647,1.846,648,1.718,649,1.718,650,3.932,651,1.718,652,1.868,653,4.422,654,2.155,655,1.868,656,1.868,657,0.79,658,1.868,659,4.422,660,2.726,661,1.868,662,1.868,663,1.868,664,3.832,665,1.868,666,1.486,667,1.868,668,1.868,669,3.832,670,1.718,671,1.699,672,1.868,673,1.573,674,1.545,675,1.868,676,3.296,677,1.868,678,1.325,679,0.727,680,1.358,681,3.296,682,1.545,683,1.868,684,1.619,685,1.545,686,2.726,687,1.545,688,1.358,689,1.868,690,1.395,691,1.868,692,1.395,693,1.868,694,1.358]],["title/190",[125,1.62,239,1.365]],["content/190",[0,0.84,8,0.815,11,1.079,33,0.862,34,1.079,47,0.83,48,0.894,49,0.834,51,1.982,53,0.527,56,2.972,61,0.885,65,0.82,69,1.939,100,3.22,105,0.991,125,1.664,138,0.738,191,0.885,207,2.139,239,1.104,267,0.758,291,1.12,312,1.416,329,0.92,356,1.033,372,1.079,397,1.033,404,2.453,412,3.94,441,2.45,464,0.994,483,0.834,486,0.814,495,2.179,506,1.096,539,0.814,547,0.96,575,1.177,584,0.929,587,1.294,588,6.474,589,1.294,590,4.789,591,1.433,592,2.55,593,1.433,594,1.433,599,0.862,600,1.229,606,1.433,617,0.779,619,2.361,629,1.671,638,1.502,643,2.355,645,1.791,650,0.939,657,1.305,664,2.672,666,4.018,669,1.502,670,1.594,682,1.433,686,1.433,694,1.26,695,1.733,696,1.378,697,1.433,698,1.378,699,1.733,700,1.733,701,1.594,702,1.229,703,2.483,704,1.594,705,1.594,706,2.835,707,1.594,708,1.594,709,2.835,710,2.835,711,5.326,712,2.55,713,2.835,714,1.294,715,1.594,716,1.047,717,1.594,718,1.594,719,1.378,720,4.205,721,3.83,722,1.594,723,1.594,724,2.835,725,2.835,726,1.229,727,1.502,728,4.378,729,3.61,730,1.594,731,1.594,732,1.079,733,1.594,734,1.378,735,1.594,736,1.033,737,1.502,738,1.594,739,1.594,740,1.502,741,2.835,742,2.672,743,2.187,744,1.502,745,1.594,746,1.594,747,1.433,748,1.502,749,1.202,750,1.26,751,1.502,752,1.202,753,1.594,754,1.594,755,2.767,756,2.835,757,1.594,758,1.594,759,1.594,760,1.594,761,1.502,762,1.594,763,1.594,764,2.453,765,2.835,766,2.835,767,2.835,768,1.594,769,1.733,770,1.733,771,1.733,772,1.733]],["title/191",[16,0.868,403,3.35]],["content/191",[8,1.306,16,0.428,33,0.598,34,0.749,46,0.418,47,0.324,49,0.579,51,1.424,56,2.249,65,0.569,69,1.859,95,1.571,100,3.4,105,0.387,114,0.537,122,0.632,125,1.44,138,0.943,158,0.737,191,1.573,207,0.834,226,1.573,239,0.484,267,0.526,291,0.437,312,2.054,342,0.604,356,0.717,368,0.632,370,0.674,372,1.916,398,1.339,403,0.645,404,1.762,412,3.598,417,0.422,423,0.737,441,1.983,464,0.69,481,0.588,483,0.579,486,0.565,495,1.328,506,0.76,510,0.995,514,1.065,539,0.565,575,1.505,576,0.834,579,1.27,584,0.645,587,0.898,588,7.675,589,0.898,590,3.162,591,0.995,592,1.832,593,0.995,594,0.995,596,1.704,599,0.598,600,3.173,606,3.162,607,2.037,611,2.98,617,1.383,619,1.745,625,1.106,629,0.652,638,1.042,643,1.782,657,0.937,664,2.668,666,3.041,669,1.042,671,0.62,673,1.057,682,0.995,694,0.874,696,0.957,698,0.957,701,1.106,702,0.853,703,1.835,704,1.106,705,2.037,706,2.037,707,1.106,708,1.106,709,2.037,710,2.037,711,4.639,712,0.995,713,2.037,714,0.898,715,1.106,716,0.727,717,1.106,718,1.106,720,3.403,721,2.037,722,1.106,723,1.106,724,2.037,725,2.037,726,0.853,727,1.042,728,3.314,729,2.668,730,1.106,731,1.106,732,0.749,733,1.106,734,1.762,735,1.106,736,0.717,737,1.042,738,1.106,739,1.106,740,1.042,741,2.037,742,1.919,743,2.184,744,1.042,745,1.106,746,1.106,747,0.995,748,1.042,749,0.834,750,0.874,751,1.042,752,0.834,753,1.106,754,1.106,755,1.686,756,2.037,757,1.106,758,1.106,759,1.106,760,1.106,761,1.042,762,1.106,763,1.106,764,1.762,765,2.037,766,2.037,767,2.037,768,1.106,773,1.203,774,1.203,775,0.749,776,1.106,777,1.203,778,1.203,779,2.215,780,0.995,781,1.203,782,0.995,783,1.106,784,1.203,785,1.203,786,0.727,787,1.203,788,0.957,789,1.203,790,1.203,791,1.203,792,2.215,793,1.203,794,2.215,795,1.203,796,1.203,797,1.203,798,3.078,799,2.215,800,1.203,801,1.203,802,1.203,803,1.203,804,1.203,805,1.203,806,1.203,807,1.203,808,0.76,809,1.203,810,0.925,811,1.203,812,1.203,813,3.824,814,2.215,815,1.203,816,0.834,817,0.76,818,0.898,819,1.106,820,3.078,821,1.203,822,0.853,823,0.834,824,1.203,825,1.203,826,0.957,827,1.203]],["title/192",[522,3.674,828,6.246]],["content/192",[]],["title/193",[522,3.674,596,4.804]],["content/193",[]],["title/194",[46,1.795,47,1.39,340,2.861]],["content/194",[8,1.681,46,2.409,47,1.865,340,3.838,368,3.643,412,3.679,522,4.076,587,5.174,589,5.174,596,7.125,685,5.731,696,5.512,697,5.731,755,3.796,829,6.005,830,6.005,831,9.597,832,5.037,833,6.373]],["title/195",[125,1.339,239,1.128,650,2.799]],["content/195",[8,1.646,125,1.535,239,1.293,368,3.111,412,6.046,417,2.918,522,3.481,587,4.418,589,4.418,596,6.394,619,3.354,650,3.207,666,4.707,686,4.894,696,4.707,697,4.894,698,4.707,755,3.242,764,4.707,829,5.129,830,5.129,832,4.302,834,5.918,835,5.918,836,5.129,837,5.129,838,5.442]],["title/196",[100,3.964]],["content/196",[8,1.615,46,1.927,47,2.137,100,3.983,368,2.914,412,5.918,417,2.786,477,3.22,587,4.139,589,4.139,596,4.264,619,3.142,666,4.41,680,4.03,696,4.41,697,4.585,698,4.41,764,4.41,776,5.098,829,4.805,830,4.805,832,4.03,836,4.805,837,4.805,839,7.938,840,5.544,841,4.264,842,4.41,843,4.585,844,4.41,845,5.098]],["title/211",[441,1.706,462,2.243,492,2.445]],["content/211",[16,1.183,45,4.13,48,4.391,197,2.411,239,1.338,267,2.677,274,2.608,411,1.325,427,3.252,439,2.139,441,3.233,462,4.251,486,2.877,576,4.248,624,3.451,645,3.557,702,4.344,846,4.344,847,3.97,848,2.559,849,3.471,850,4.615,851,3.755,852,4.572,853,4.16,854,3.603,855,3.471]],["title/212",[462,2.712,856,5.413]],["content/212",[16,1.252,45,3.71,46,3.131,47,2.661,48,5.098,49,2.534,67,1.771,72,1.508,105,1.694,107,3.578,125,1.984,267,2.303,365,3.805,434,3.177,441,2.526,461,4.191,462,3.322,488,3.258,643,2.455,847,3.566,857,4.103,858,3.932,859,2.978,860,5.267,861,5.884,862,4.19,863,3.736,864,3.653]],["title/213",[847,2.912,865,3.283]],["content/213",[16,1.103,26,1.619,33,2.758,45,2.689,47,2.725,48,2.859,51,6.507,125,1.438,138,2.361,269,3.005,291,2.884,365,2.758,441,1.831,461,5.08,462,2.408,477,3.22,488,3.949,514,2.667,629,3.005,630,2.944,847,4.72,850,3.005,855,3.142,861,4.264,865,4.173,866,5.098,867,3.933,868,3.505,869,5.098,870,4.805]],["title/197",[360,2.39,441,1.706,492,2.445]],["content/197",[8,0.772,16,0.762,45,2.661,46,1.907,47,2.121,48,4.063,67,2.65,72,2.255,181,2.448,214,5.589,239,1.721,267,3.444,411,1.187,427,2.913,439,1.916,440,3.655,441,3.044,442,2.351,462,2.383,481,2.683,486,3.701,576,3.805,629,4.27,630,2.913,660,4.538,846,3.892,847,4.298,871,3.988,872,3.271,873,3.039,874,5.487,875,2.618,876,3.147,877,3.147]],["title/198",[878,7.901]],["content/198",[8,1.657,46,2.859,47,2.87,48,4.242,125,0.955,239,0.805,340,4.007,411,1.78,441,1.216,461,3.964,477,3.386,576,2.555,650,1.996,684,5.052,692,4.353,755,5.222,833,3.387,836,3.192,837,3.192,838,3.387,845,3.387,879,6.654,880,7.565,881,7.129,882,5.361,883,5.361,884,5.361,885,5.361,886,5.361,887,3.387,888,3.387,889,3.684,890,6.654,891,2.833,892,3.387,893,3.684]],["title/199",[854,4.647]],["content/199",[]],["title/200",[629,3.385,876,3.583]],["content/200",[16,1.289,47,2.245,62,1.76,72,2.656,125,1.801,209,2.122,239,1.823,270,2.504,291,1.679,360,2.138,411,2.007,439,1.614,442,1.98,492,2.187,540,2.318,613,2.091,617,2.076,629,5.028,640,4.004,650,2.504,657,1.955,847,3.237,854,2.718,859,1.799,876,2.65,877,3.983,894,4.621,895,5.341,896,4.004,897,4.249,898,4.249,899,3.821,900,4.621,901,3.45,902,3.139,903,6.944,904,4.621,905,2.876,906,4.621,907,3.358,908,2.97,909,3.139,910,4.249,911,2.683]],["title/201",[47,1.681,629,3.385]],["content/201",[8,1.291,33,1.68,34,2.102,46,1.89,47,2.596,50,2.985,56,1.986,72,1.557,125,0.876,181,1.507,209,1.551,308,3.953,312,2.498,361,1.811,365,2.705,375,1.937,407,1.85,411,1.176,412,1.793,449,1.562,477,4.547,505,2.597,506,2.135,514,1.624,527,4.498,629,5.763,630,1.793,643,1.574,645,3.159,657,3.313,660,2.793,679,1.315,694,3.953,716,2.041,720,1.914,743,2.395,747,4.498,817,3.439,862,2.686,875,1.611,876,4.924,895,2.597,896,2.926,897,3.105,912,1.87,913,2.793,914,2.597,915,3.105,916,1.725,917,1.986,918,3.377,919,3.377,920,2.686,921,3.377,922,5.439,923,3.377,924,3.377,925,3.377,926,3.377,927,3.377,928,3.377,929,2.395,930,3.377]],["title/202",[48,4.074]],["content/202",[8,1.455,33,0.996,45,2.717,46,1.947,47,2.51,48,5.665,51,2.252,105,1.502,138,0.853,239,0.766,267,1.532,270,1.086,274,0.853,341,2.823,370,1.963,374,0.979,404,1.593,411,1.514,412,4.806,439,1.224,441,2.888,486,0.941,506,2.215,539,0.941,576,2.43,629,1.086,637,0.948,645,3.254,684,1.736,694,2.547,714,2.616,728,3.036,729,6.532,740,4.855,742,1.736,744,3.036,749,2.43,755,2.558,823,1.389,847,0.934,853,3.172,854,1.178,861,2.695,879,4.294,880,7.354,881,3.036,882,1.842,883,4.294,884,5.152,885,1.842,886,5.152,887,1.842,888,1.842,890,3.222,892,1.842,895,4.309,931,3.222,932,2.003,933,1.593,934,2.003,935,1.842,936,2.303,937,3.504,938,2.003,939,2.003,940,1.842,941,1.334,942,1.842,943,1.736,944,2.003,945,2.003,946,2.003,947,2.003,948,2.003,949,2.003,950,2.003,951,2.003]],["title/203",[755,4.328]],["content/203",[48,4.937,370,5.363,373,6.378,441,3.162,546,5.303,755,5.245]],["title/204",[441,2.063,755,3.422]],["content/204",[8,1.152,53,2.49,86,2.389,181,4.238,205,3.969,312,2.658,375,4.695,412,6.498,417,3.968,600,4.106,619,3.28,629,4.436,630,4.345,645,3.361,876,4.695,952,4.787,953,7.553]],["title/205",[53,1.571,645,2.999,755,2.829]],["content/205",[3,3.442,55,4.577,412,4.236,417,3.565,486,3.748,545,3.536,579,3.293,617,3.586,645,4.634,682,6.599,755,4.371,936,3.935,954,5.219,955,6.599,956,7.98,957,6.915]],["title/206",[53,1.571,312,2.372,755,2.829]],["content/206",[3,3.07,55,4.082,312,3.269,412,3.779,417,3.309,483,3.423,486,3.343,545,3.154,579,2.937,617,3.199,619,4.033,734,5.661,743,5.049,755,3.899,764,5.661,780,5.886,782,5.886,936,3.51,954,4.655,958,9.43,959,9.43,960,6.168]],["title/207",[16,0.868,961,4.431]],["content/207",[8,1.001,16,0.989,45,4.573,46,3.676,47,3.24,48,5.454,49,4.536,59,3.987,105,2.288,340,3.942,441,2.35,461,3.899,861,5.474,962,4.834]],["title/208",[370,4.426]],["content/208",[]],["title/209",[46,1.795,47,1.39,370,2.893]],["content/209",[3,2.066,46,1.664,47,2.294,53,2.169,55,2.747,61,2.446,99,2.347,212,4.311,214,3.397,340,4.72,412,5.361,417,3.314,441,3.119,454,3.19,455,4.252,458,3.397,459,3.481,483,2.303,497,3.132,545,2.122,546,2.652,576,3.321,579,1.976,613,2.167,617,2.152,619,2.714,645,4.142,755,2.623,855,2.714,936,2.361,953,3.809,954,3.132,963,3.397,964,3.809,965,6.181,966,2.98,967,4.789,968,2.682,969,3.253,970,2.854]],["title/210",[125,1.339,370,2.893,650,2.799]],["content/210",[53,2.136,86,2.898,125,1.821,239,1.534,312,4.292,360,3.249,370,3.934,374,4.57,411,1.519,412,5.578,415,3.806,417,3.28,519,3.766,645,5.428,929,4.981,936,3.463,953,5.586,971,5.808,972,5.808,973,7.022]],["title/214",[532,2.89,974,4.54]],["content/214",[99,2.685,239,2.131,493,7.5,500,6.917,975,5.593]],["title/215",[976,4.015,977,6.246]],["content/215",[8,1.158,26,2.403,99,2.266,239,1.798,411,1.78,439,2.874,490,6.143,978,6.805,979,6.329,980,6.329,981,5.122,982,5.59,983,5.481,984,6.805,985,3.896]],["title/216",[8,0.879,979,4.804]],["content/216",[26,0.765,34,1.631,72,0.75,99,0.722,105,1.419,110,2.671,197,1.032,266,2.016,272,1.222,273,1.746,338,1.364,339,1.685,411,0.567,439,0.915,454,2.94,456,1.485,457,1.685,488,1.116,495,1.904,519,2.367,532,2.042,540,1.315,550,1.503,558,3.456,580,2.016,584,1.406,599,1.304,604,3.227,615,1.082,637,1.241,647,2.472,650,1.42,679,2.612,716,1.584,736,1.562,818,1.957,850,3.099,857,1.406,902,1.78,933,2.085,976,1.685,979,5.758,980,2.016,981,1.631,982,1.78,983,1.746,986,2.41,987,2.887,988,2.998,989,1.607,990,3.825,991,4.414,992,2.998,993,3.295,994,3.061,995,1.436,996,3.825,997,3.825,998,4.243,999,2.085,1000,2.621,1001,2.621,1002,2.085,1003,2.271,1004,2.167,1005,1.351,1006,2.41,1007,2.621,1008,1.522,1009,2.016,1010,2.621,1011,2.621,1012,1.452,1013,4.059,1014,1.607,1015,1.607,1016,1.746,1017,2.085,1018,2.621,1019,2.41,1020,1.905,1021,3.208,1022,3.559,1023,2.271,1024,1.657,1025,2.016,1026,1.957,1027,2.41,1028,5.718,1029,2.621,1030,1.562,1031,1.503,1032,2.271,1033,1.485,1034,2.085,1035,2.271,1036,2.41,1037,2.271,1038,1.542,1039,2.41,1040,2.621,1041,1.957,1042,2.271,1043,1.607,1044,2.271,1045,2.41,1046,2.016,1047,2.085,1048,1.685,1049,1.391]],["title/217",[8,0.879,490,4.663]],["content/217",[124,4.485,138,3.115,411,1.582,455,4.36,485,5.626,490,7.169,503,4.145,604,3.518,615,3.019,864,5.073,911,4.248,969,4.969,981,4.553,1008,4.248,1046,5.626,1050,7.315,1051,5.626,1052,7.315,1053,5.461,1054,5.189,1055,4.784,1056,5.189]],["title/218",[329,4.194]],["content/218",[18,5.651,110,3.616,273,6.048,368,4.773,449,4.201,578,5.567,1057,6.983,1058,6.167,1059,7.222]],["title/219",[650,4.282]],["content/219",[60,4.051,99,2.014,105,2.352,108,3.884,239,1.598,327,4.36,411,1.582,462,3.176,553,4.969,650,3.964,679,2.848,817,4.625,865,3.845,911,4.248,983,4.873,1016,4.873,1060,5.073,1061,7.315,1062,4.702,1063,4.051,1064,6.049,1065,5.626,1066,4.702]],["title/220",[62,3.009]],["content/220",[33,3.447,43,3.183,50,3.03,60,3.838,62,3.975,67,2.331,125,1.797,145,4.707,156,2.728,241,4.076,268,4.454,288,5.33,327,6.221,434,2.444,495,2.99,613,3.137,622,3.389,679,2.698,826,5.512,1062,4.454,1063,5.131,1067,6.373]],["title/221",[61,4.036]],["content/221",[8,1.176,76,4.63,122,4.394,213,5.373,226,4.271,288,6.429,327,4.983,657,3.537,873,4.63,1068,3.167,1069,6.429,1070,6.913,1071,8.36,1072,6.429]],["title/222",[657,3.343]],["content/222",[50,3.902,122,5.726,327,5.321,657,3.777,679,3.475,865,4.692,1063,4.944,1072,8.377]],["title/223",[63,2.828]],["content/223",[33,3.358,43,3.101,50,2.952,60,3.74,63,3.687,67,2.271,125,1.751,145,4.587,156,2.659,241,3.972,268,4.34,288,5.193,327,6.14,434,2.381,469,5.041,495,2.913,613,3.056,622,3.302,679,2.629,826,5.371,1062,4.34,1063,5.042,1067,6.209,1073,6.752]],["title/224",[61,4.036]],["content/224",[8,1.14,63,2.9,76,4.487,122,4.259,125,2.101,213,5.208,226,4.139,288,6.232,327,4.83,657,3.428,873,4.487,1068,3.069,1069,6.232,1070,6.701,1072,6.232,1074,8.102]],["title/225",[657,3.343]],["content/225",[50,3.774,63,3.09,122,5.61,125,2.239,327,5.146,657,3.653,679,3.361,865,4.538,1063,4.782,1072,8.208]],["title/226",[553,5.367]],["content/226",[16,1.508,72,1.861,99,2.443,122,3.418,198,3.008,267,2.843,275,3.524,327,3.876,434,2.293,553,6.862,604,3.128,657,2.751,850,3.524,1008,5.154,1062,4.179,1063,4.915,1075,4.612,1076,7.339,1077,3.93,1078,3.031,1079,5.635,1080,4.179,1081,4.253]],["title/227",[1082,5.078]],["content/227",[26,2.33,35,4.154,239,1.743,268,5.129,443,4.077,478,3.838,495,3.442,519,4.28,615,3.293,679,3.107,998,4.522,1077,4.823,1082,5.129,1083,4.634,1084,5.8,1085,4.757,1086,4.757]],["title/228",[1087,4.647]],["content/228",[16,1.295,46,1.62,47,1.255,55,2.674,71,3.749,73,4.698,96,1.702,99,2.309,113,4.657,156,1.835,191,2.381,271,2.526,275,2.526,368,2.45,433,4.657,434,1.644,449,2.157,474,2.011,486,2.19,545,3.717,547,2.582,604,3.362,617,2.095,622,2.279,671,2.404,859,2.721,873,2.582,988,3.166,1005,2.404,1057,3.585,1068,1.766,1082,5.989,1083,4.06,1087,5.481,1088,3.585,1089,3.855,1090,4.662,1091,2.674,1092,3.48,1093,2.642,1094,4.848,1095,2.404]],["title/229",[1096,5.413,1097,4.431]],["content/229",[71,4.495,73,4.694,76,3.315,99,1.648,289,3.433,290,2.412,291,2.175,342,3.003,443,4.281,452,3.21,545,2.652,615,2.47,673,2.856,679,2.33,916,3.058,1008,4.867,1068,3.174,1082,3.847,1087,4.929,1091,4.807,1096,9.079,1097,4.246,1098,4.246,1099,3.987,1100,4.995,1101,5.481,1102,5.504]],["title/230",[16,0.868,553,4.243]],["content/230",[16,0.882,73,3.555,74,4.15,96,2.317,99,1.747,100,3.184,125,1.646,138,2.702,265,4.612,271,3.439,272,2.958,275,3.439,365,4.341,474,2.737,540,3.184,546,3.515,553,5.928,911,3.685,968,3.555,1065,4.881,1066,5.61,1082,4.079,1091,3.64,1103,4.881,1104,5.047,1105,3.783,1106,3.685,1107,3.835,1108,6.346,1109,6.346,1110,4.881]],["title/231",[1027,7.265]],["content/231",[443,4.72,604,4.444,613,4.182,1008,5.365,1013,8.496,1084,6.715,1111,8.496,1112,7.349]],["title/236",[156,2.034,1005,2.663,1113,4.108]],["content/236",[71,4.787,99,2.458,138,3.801,368,4.692,1068,3.381,1075,6.332,1087,5.25,1114,7.382,1115,5.12,1116,8.208]],["title/237",[1117,7.901]],["content/237",[16,1.128,50,4.491,71,3.071,72,1.639,99,2.236,138,2.438,156,3.198,271,3.103,289,3.284,342,2.873,394,3.103,402,4.061,411,1.238,463,4.554,473,3.51,539,2.689,546,3.171,602,4.961,615,2.363,1005,2.952,1087,4.778,1091,3.284,1101,3.744,1113,7.508,1118,4.274,1119,4.274,1120,3.171,1121,4.961,1122,4.961,1123,5.725,1124,5.725,1125,4.554,1126,5.265,1127,5.725]],["title/238",[74,5.167]],["content/238",[16,0.892,73,4.929,74,6.565,99,1.769,105,2.065,156,3.465,289,5.758,291,2.334,329,3.41,411,1.389,473,3.938,673,3.065,1005,3.312,1008,3.73,1082,4.128,1091,3.684,1113,5.109,1120,3.557,1128,4.672,1129,5.566,1130,6.423,1131,6.423,1132,5.312,1133,4.128,1134,4.556,1135,6.423]],["title/232",[1080,5.078]],["content/232",[26,2.527,76,3.473,99,2.729,125,1.626,132,4.448,133,4.558,138,2.67,197,2.469,239,1.37,289,3.596,361,3.363,520,3.553,550,3.596,613,2.838,630,3.329,643,2.923,673,2.992,1030,3.738,1053,4.681,1080,7.454,1136,4.349,1137,4.177,1138,4.558,1139,5.186,1140,4.558,1141,4.349,1142,5.766]],["title/233",[26,1.824,1143,6.246]],["content/233",[16,1.265,26,2.658,49,3.248,62,2.572,63,2.417,72,2.606,99,2.507,196,3.972,199,4.34,204,4.269,268,4.34,292,5.371,441,2.23,550,5.222,613,3.056,643,4.244,703,4.025,859,3.544,995,3.699,1075,4.79,1137,4.498,1144,6.752]],["title/234",[99,1.422,643,2.408,1080,3.32]],["content/234",[16,1.311,45,3.939,99,3.102,197,2.254,198,2.649,199,3.68,411,1.238,434,2.019,440,3.814,514,2.754,515,4.274,520,3.245,547,3.171,550,4.658,630,3.04,643,2.669,673,2.732,775,3.563,859,2.229,1005,2.952,1080,3.68,1128,3.04,1133,5.22,1134,5.761,1137,3.814,1145,5.265,1146,5.725,1147,3.009,1148,3.62,1149,5.725,1150,4.961,1151,4.274]],["title/235",[290,2.081,673,2.465,1080,3.32]],["content/235",[16,1.334,72,2.094,96,2.671,99,2.014,197,2.88,289,4.196,449,3.384,514,3.518,599,3.638,916,3.737,1053,5.461,1080,6.172,1133,4.702,1134,5.189,1152,6.049,1153,3.845,1154,7.315,1155,6.049,1156,3.359,1157,7.315,1158,5.626]],["title/239",[854,4.647]],["content/239",[99,2.685,854,5.736,875,4.653,988,6.624,1159,7.5]],["title/240",[99,1.72,1159,4.804]],["content/240",[16,0.871,46,2.179,47,1.688,99,2.729,267,2.741,411,1.356,454,4.177,455,3.738,467,3.174,470,3.203,540,3.146,582,3.641,601,4.448,613,2.838,657,2.653,854,3.688,872,3.738,875,2.992,912,5.49,929,4.448,970,3.738,975,3.596,988,4.259,1107,3.79,1159,7.624,1160,4.558,1161,4.177,1162,5.434,1163,6.27]],["title/241",[49,2.118,99,1.212,196,2.59,1159,3.386]],["content/241",[16,0.851,49,4.709,96,2.237,99,2.345,196,5.009,198,2.834,199,5.474,267,2.677,374,2.995,411,1.325,454,4.08,486,2.877,540,3.073,581,3.651,679,3.315,720,3.471,912,4.716,968,3.431,975,3.513,989,3.755,1105,3.651,1106,3.557,1107,3.702,1159,7.529,1160,4.452,1161,4.08,1164,4.344,1165,4.572]],["title/242",[912,3.46,969,4.243]],["content/242",[107,5.77,466,6.756,531,4.933,582,4.933,584,4.556,912,4.705,969,5.77,1166,6.756,1167,5.063,1168,8.737,1169,8.494,1170,8.494]],["title/243",[917,3.674,1085,3.723]],["content/243",[105,2.605,462,3.518,613,3.667,917,6.62,988,5.504,1085,6.114,1171,5.747,1172,6.708,1173,7.451,1174,6.049,1175,7.451,1176,5.397]],["title/244",[1177,5.413,1178,5.744]],["content/244",[0,1.703,8,1.127,46,3.406,47,2.897,53,1.707,56,2.066,120,3.455,197,2.21,291,2.039,307,4.317,329,4.957,337,5.821,370,1.967,372,2.186,375,2.014,431,2.153,495,2.421,539,1.65,579,1.449,599,1.747,622,1.717,643,1.637,645,4.071,687,2.904,688,4.08,690,4.19,692,5.979,755,3.075,822,2.491,841,5.392,842,6.37,853,3.812,854,2.066,936,1.732,969,3.812,1142,3.229,1153,1.846,1171,2.491,1178,3.229,1179,3.512,1180,3.512,1181,7.011,1182,2.904,1183,3.512,1184,3.512,1185,3.512,1186,3.512,1187,2.701,1188,3.512,1189,2.066]],["title/245",[65,2.348,375,1.242,412,1.15,469,1.617,1177,1.877,1190,2.166,1191,1.791,1192,2.166,1193,2.166]],["content/245",[8,1.275,22,3.833,100,3.867,291,1.933,370,4.317,372,4.796,375,3.052,402,3.774,412,2.825,417,1.867,419,3.69,425,4.4,427,2.825,469,5.753,506,3.364,531,3.09,617,2.391,643,2.48,657,2.251,671,2.744,687,4.4,692,5.753,726,3.774,823,3.69,841,7.64,842,6.13,964,6.13,969,3.614,1191,8.215,1194,5.321,1195,5.321,1196,3.13,1197,4.611]],["title/246",[1177,4.476,1198,5.165,1199,3.664]],["content/246",[8,1.617,22,0.51,30,2.174,45,0.585,46,2.09,47,2.941,48,0.622,51,0.775,69,0.404,95,1.574,105,0.714,120,0.958,137,1.289,213,1.427,241,0.709,291,2.697,312,1.019,329,2.683,370,1.243,372,0.75,374,1.085,375,1.769,403,1.19,411,1.093,412,1.178,445,0.668,471,1.769,474,0.52,477,2.225,481,0.589,495,0.52,539,0.566,543,0.739,595,1.109,597,1.467,598,1.045,606,3.168,613,2.517,617,1.721,647,0.675,657,1.305,688,0.876,690,0.9,694,2.784,702,0.855,716,0.729,819,2.041,841,0.927,842,0.959,854,1.306,859,0.864,895,2.372,916,1.134,935,2.041,936,1.521,962,1.508,969,2.095,992,0.819,1068,0.457,1078,1.035,1107,1.342,1128,0.64,1171,0.855,1189,0.709,1200,6.786,1201,3.831,1202,0.959,1203,5.56,1204,3.084,1205,1.791,1206,2.551,1207,0.9,1208,4.019,1209,1.109,1210,1.206,1211,2.041,1212,0.9,1213,0.927,1214,2.242,1215,1.206,1216,2.22,1217,0.997,1218,1.273,1219,3.084,1220,1.206,1221,0.997,1222,1.109,1223,1.109,1224,2.22,1225,1.206,1226,3.084,1227,1.206,1228,3.084,1229,2.139,1230,1.206,1231,1.206,1232,1.109,1233,3.084,1234,1.109,1235,1.206,1236,2.22,1237,2.22,1238,2.22,1239,1.206,1240,0.836,1241,0.997,1242,1.206,1243,1.206,1244,2.22,1245,1.206,1246,1.206,1247,1.206,1248,1.206,1249,1.206,1250,1.206,1251,1.206,1252,1.206,1253,1.206,1254,1.206,1255,1.206,1256,1.206,1257,1.206,1258,1.206,1259,1.206,1260,1.206,1261,1.206,1262,2.22,1263,1.206,1264,1.206,1265,2.22,1266,1.206,1267,1.206,1268,1.206,1269,1.206,1270,1.206,1271,1.206,1272,1.206,1273,1.206,1274,1.206,1275,1.206,1276,1.206,1277,1.206,1278,1.206,1279,1.206,1280,1.206,1281,1.206,1282,1.206,1283,1.206,1284,2.22,1285,1.206,1286,1.206,1287,1.206,1288,1.206,1289,1.206,1290,1.206,1291,1.452,1292,1.206,1293,1.206,1294,1.045,1295,1.206,1296,1.206,1297,1.206,1298,1.206]],["title/247",[1299,7.901]],["content/247",[47,3.032,191,2.925,213,3.68,267,2.503,291,2.08,312,4.335,329,3.04,434,2.019,471,5.892,484,3.971,550,3.284,597,3.11,617,2.573,637,2.71,657,3.436,688,4.161,690,4.274,692,4.274,732,3.563,736,4.841,1171,4.061,1172,3.744,1291,5.312,1294,4.961,1300,5.725,1301,5.265,1302,5.265,1303,5.725,1304,5.725]],["title/248",[1305,7.901]],["content/248",[8,0.882,22,2.653,46,2.179,47,2.668,267,2.741,286,2.992,291,2.278,342,3.146,417,3.038,434,2.211,531,3.641,545,2.779,597,2.401,657,4.194,673,2.992,680,4.558,1153,3.296,1189,3.688,1196,3.688,1306,6.657,1307,5.186,1308,6.003,1309,6.27,1310,8.656,1311,5.186,1312,6.27,1313,5.186]],["title/249",[1199,4.431,1314,6.246]],["content/249",[11,4.821,18,4.821,47,2.966,191,5.091,342,3.886,471,4.442,495,3.341,550,4.442,637,3.667,657,3.277,969,5.261,1171,5.494,1308,6.912,1313,6.405,1315,7.745]],["title/250",[1316,7.901]],["content/250",[47,2.902,69,2.938,100,4.404,138,3.737,342,4.404,411,1.899,539,4.123,545,3.89,657,4.561]],["title/251",[1199,4.431,1317,6.246]],["content/251",[22,2.422,46,1.99,47,3.241,191,4.149,267,2.503,291,3.43,342,4.736,545,3.599,550,3.284,597,2.192,643,2.669,657,3.994,673,2.732,1171,4.061,1196,3.368,1199,4.061,1291,3.744,1307,4.735,1308,7.125,1313,6.717,1318,8.122,1319,5.265]],["title/252",[65,2.084,1199,3.123,1320,4.403,1321,3.815]],["content/252",[46,1.76,47,3.198,50,2.214,69,2.949,82,3.374,291,1.84,339,5.661,342,3.73,471,5.052,483,2.436,531,2.941,611,3.374,617,2.276,657,4.106,673,2.417,680,3.681,716,3.061,969,5.05,1189,2.979,1199,7.332,1212,3.781,1307,6.148,1308,3.513,1313,4.189,1322,5.065,1323,4.389,1324,5.065,1325,7.434,1326,5.065]],["title/253",[65,1.311,412,1.47,1199,1.964,1306,2.129,1327,2.769,1328,2.29,1329,2.399,1330,2.546]],["content/253",[8,0.734,30,1.885,47,3.033,50,3.32,69,1.746,100,2.617,191,2.664,312,4.114,342,3.811,370,2.921,372,4.727,402,3.699,403,5.278,411,1.643,412,2.769,471,2.991,495,3.276,582,3.029,637,2.469,657,3.79,671,2.689,841,4.011,842,4.148,1171,3.699,1189,3.068,1199,3.699,1308,5.268,1311,6.281,1331,5.215,1332,5.215,1333,5.215,1334,4.796]],["title/254",[412,2.337,1199,3.123,1335,4.403,1336,4.049]],["content/254",[46,1.453,47,3.186,49,2.011,50,1.828,69,2.154,138,1.78,196,2.459,267,1.828,291,2.338,329,2.22,342,2.098,370,3.605,411,1.697,434,1.474,457,2.687,471,3.691,474,1.803,477,2.428,495,2.776,539,1.964,582,2.428,629,2.266,645,2.428,657,3.32,671,2.156,673,3.071,686,5.322,687,3.457,688,4.678,690,4.804,714,5.858,716,2.527,736,2.492,853,2.84,1093,3.647,1196,3.785,1308,4.463,1311,3.457,1337,3.457,1338,4.181,1339,6.436,1340,2.965,1341,2.84,1342,4.181,1343,4.181,1344,4.181]],["title/267",[912,3.46,970,3.723]],["content/267",[107,5.77,466,6.756,531,4.933,582,4.933,584,4.556,912,4.705,970,5.063,1166,6.756,1167,5.063,1168,8.737,1345,8.494,1346,8.494]],["title/268",[8,0.879,1347,6.246]],["content/268",[18,4.821,47,2.682,239,1.692,455,4.617,461,5.459,488,3.298,520,4.389,550,4.442,575,5.261,657,4.216,775,4.821,917,4.556,966,4.821,970,5.94,1348,7.745]],["title/269",[1330,5.744,1349,6.246]],["content/269",[6,4.893,67,2.904,69,2.89,120,3.724,398,5.218,411,1.867,461,5.846,970,6.361,1350,5.864,1351,7.482]],["title/270",[1352,7.265]],["content/270",[110,3.616,411,1.964,462,3.943,516,5.029,524,5.938,599,4.516,1353,6.298,1354,9.08,1355,7.868]],["title/271",[1356,7.901]],["content/271",[47,2.815,55,4.795,69,2.799,443,5.344,599,4.158,617,3.757,643,3.897,1217,3.757,1357,7.244,1358,5.93,1359,5.467,1360,8.36]],["title/272",[1361,7.901]],["content/272",[30,3.412,46,1.99,47,2.54,105,2.611,120,2.47,212,3.46,241,3.368,267,2.503,308,4.161,411,1.757,611,3.814,657,3.436,716,3.46,873,3.171,970,3.413,1147,3.009,1205,5.482,1355,4.961,1358,4.061,1362,5.265,1363,4.403,1364,5.725,1365,4.735,1366,8.122,1367,4.909,1368,4.061,1369,5.725,1370,3.971,1371,5.725,1372,5.725,1373,5.725,1374,5.265]],["title/273",[1375,7.901]],["content/273",[47,2.76,291,3.726,411,1.753,474,3.495,716,4.897,1091,4.647,1196,4.766,1370,7.114,1376,7.021,1377,8.102,1378,8.102,1379,8.102,1380,7.021]],["title/274",[1381,7.901]],["content/274",[30,2.8,47,2.682,69,2.593,241,4.556,265,7.243,411,1.675,600,5.494,657,3.277,716,4.681,875,3.696,1091,5.716,1196,4.556,1370,5.372,1382,7.745,1383,6.712,1384,7.745]],["title/275",[1385,7.901]],["content/275",[47,2.286,69,2.844,291,3.086,411,1.837,970,5.063,1147,4.465,1386,9.715,1387,5.46,1388,7.811,1389,7.811,1390,8.494,1391,7.811]],["title/276",[1392,6.246,1393,4.54]],["content/276",[239,1.886,241,5.078,291,3.137,657,4.515,716,5.218,978,7.14,1370,7.402,1387,5.549,1393,6.275,1394,8.634]],["title/277",[1370,4.332,1395,6.246]],["content/277",[47,2.362,403,4.708,411,2.332,875,4.188,1196,5.163,1328,7.259,1370,6.088,1380,7.606,1396,8.777,1397,8.777]],["title/278",[8,0.727,1398,5.165,1399,5.165]],["content/278",[291,3.299,411,1.964,714,6.779,1091,5.208,1196,6.474,1370,6.298,1380,7.868,1400,9.08]],["title/279",[1401,7.901]],["content/279",[30,3.282,47,2.444,629,4.921,1147,4.773,1383,7.868,1386,8.349,1391,8.349,1393,6.6,1402,6.298]],["title/280",[1403,7.901]],["content/280",[6,3.109,8,1.297,30,1.983,47,2.481,69,1.837,105,1.764,239,1.199,267,3.444,291,3.35,411,1.704,434,1.935,514,2.639,545,3.492,657,3.9,751,6.828,970,3.271,1091,3.147,1189,3.227,1196,3.227,1205,4.576,1306,4.22,1370,3.805,1383,4.755,1393,3.988,1404,9.219,1405,5.487,1406,10.076,1407,5.487,1408,5.487]],["title/281",[1409,7.901]],["content/281",[46,2.86,47,3.051,69,2.755,471,4.72,611,5.481,849,4.663,1091,4.72,1147,4.326,1189,4.84,1205,6.015,1410,8.229,1411,8.229]],["title/282",[1412,7.901]],["content/282",[47,3.238,69,2.844,291,3.086,342,5.301,657,4.47,1147,4.465,1376,7.361,1413,6.756]],["title/283",[1321,5.413,1414,6.246]],["content/283",[47,2.531,69,3.148,657,3.979,1147,4.943,1370,6.522,1374,8.648,1413,7.48]],["title/284",[1321,5.413,1415,6.246]],["content/284",[47,2.815,69,2.799,267,3.654,420,7.42,643,3.897,732,5.203,1091,6.548,1147,5.498,1416,8.36]],["title/285",[1417,6.246,1418,5.744]],["content/285",[69,3.093,611,6.154,849,5.236,1091,5.299,1205,5.365,1302,8.496,1419,9.239,1420,9.239]],["title/286",[1421,7.901]],["content/286",[30,3.173,47,2.902,545,3.89,657,4.561,732,5.463,1147,4.614,1196,5.163,1205,5.097,1422,8.777]],["title/287",[1423,7.901]],["content/287",[47,2.577,69,3.205,1147,5.033,1196,5.632,1205,5.56,1370,6.641]],["title/288",[1418,5.744,1424,6.246]],["content/288",[30,3.022,69,2.799,411,1.808,420,5.93,703,4.983,732,5.203,1091,5.999,1147,4.394,1205,4.855,1393,6.076,1425,8.36,1426,6.649,1427,8.36]],["title/289",[1329,5.413,1428,6.246]],["content/289",[47,2.734,403,5.448,411,2.197,516,4.42,545,3.536,657,3.376,732,4.967,970,4.757,1328,6.599,1334,9.341,1352,7.338,1353,5.535,1429,7.98]],["title/290",[1328,4.271,1329,4.476,1430,5.165]],["content/290",[47,2.215,403,4.413,411,1.78,420,5.837,516,4.558,643,3.836,732,6.446,970,4.905,1091,4.72,1196,4.84,1353,5.707,1393,5.981,1426,6.545,1431,7.567]],["title/291",[1432,6.246,1433,5.744]],["content/291",[47,2.25,69,2.799,516,4.63,545,3.705,657,3.537,714,6.241,732,5.203,875,3.989,970,4.983,1189,4.917,1196,4.917,1353,5.798,1389,7.687,1434,8.36]],["title/292",[1336,4.049,1393,3.2,1433,4.049,1435,4.403]],["content/292",[47,2.215,69,2.755,411,1.78,516,4.558,575,5.59,714,6.143,732,5.122,970,4.905,1196,6.092,1353,5.707,1393,5.981,1426,6.545,1431,7.567,1436,8.229]],["title/255",[492,2.957,1081,4.085]],["content/255",[35,4.032,105,2.49,198,3.583,239,1.692,486,4.681,849,4.389,851,4.749,909,5.261,1038,4.556,1081,5.065,1437,7.122,1438,6.405,1439,5.63,1440,7.122,1441,4.681,1442,6.405,1443,7.122,1444,4.198]],["title/256",[1445,7.901]],["content/256",[198,2.487,270,2.913,411,1.163,540,2.697,599,2.673,615,3.761,624,2.178,679,2.092,849,3.046,857,2.883,872,3.204,912,4.3,968,3.011,1038,4.566,1081,3.515,1112,4.275,1120,2.977,1438,4.445,1441,4.692,1446,4.832,1447,4.445,1448,4.942,1449,3.651,1450,4.942,1451,4.658,1452,5.375,1453,5.375,1454,5.375,1455,5.375,1456,5.375,1457,5.375,1458,4.658,1459,5.375,1460,3.813,1461,5.375,1462,4.275,1463,3.651,1464,5.375,1465,4.445,1466,3.515,1467,4.658,1468,5.375,1469,4.275]],["title/257",[329,2.742,1463,3.508,1470,4.271]],["content/257",[47,1.143,75,3.013,105,2.548,137,2.467,197,1.672,290,2.625,329,3.459,357,2.946,361,2.278,411,1.409,434,1.498,443,2.17,486,1.996,577,2.73,578,2.605,584,3.494,615,1.753,624,1.722,679,2.536,716,2.567,822,5.621,1008,2.467,1038,4.661,1054,3.013,1069,3.267,1077,2.567,1081,4.261,1098,3.013,1120,2.353,1153,3.425,1307,3.513,1387,2.73,1437,3.906,1441,2.567,1444,2.302,1460,4.621,1463,4.425,1470,5.388,1471,5.991,1472,6.554,1473,4.248,1474,2.83,1475,3.681,1476,3.513,1477,3.906,1478,3.681,1479,3.088,1480,3.906,1481,5.646,1482,4.248,1483,4.248,1484,4.248,1485,3.267,1486,3.906,1487,3.906]],["title/258",[312,2.022,329,2.337,1063,2.438,1463,2.991]],["content/258",[22,2.504,47,2.238,105,2.673,190,2.996,290,2.384,312,2.718,329,3.142,402,4.198,411,1.28,599,2.944,615,2.442,657,2.504,822,4.198,849,4.712,851,3.629,877,3.394,983,3.942,1038,3.481,1054,4.198,1062,5.344,1063,3.278,1093,3.354,1441,3.577,1463,4.02,1470,4.894,1472,6.876,1487,5.442,1488,5.918,1489,4.105,1490,4.894,1491,4.418,1492,4.105,1493,5.442,1494,5.442,1495,5.129]],["title/259",[1492,5.48]],["content/259",[16,0.59,22,1.797,47,1.143,105,2.095,198,1.965,267,1.857,270,2.302,273,2.83,329,2.255,360,1.965,361,3.494,411,1.714,443,2.17,473,2.605,486,1.996,488,1.809,540,2.131,584,3.494,599,2.113,615,1.753,647,3.649,657,3.76,679,1.654,822,3.013,851,2.605,863,3.013,866,3.906,911,2.467,916,2.17,941,2.83,968,2.38,1002,3.379,1008,2.467,1035,3.681,1062,5.094,1077,2.567,1081,4.261,1085,2.532,1099,2.83,1153,2.233,1387,2.73,1441,2.567,1444,2.302,1460,3.013,1471,3.906,1472,3.513,1474,2.83,1478,3.681,1481,3.681,1495,3.681,1496,3.513,1497,3.513,1498,3.513,1499,2.946,1500,3.681,1501,4.248,1502,4.248,1503,4.248,1504,2.83,1505,3.513,1506,4.248,1507,3.681,1508,3.681]],["title/260",[1509,4.917]],["content/260",[33,3.402,105,2.199,138,2.913,198,3.165,329,3.631,434,2.412,486,4.314,599,3.402,615,2.823,859,2.663,1002,5.441,1008,3.972,1440,6.29,1441,4.134,1463,4.646,1489,4.744,1496,7.595,1510,6.84,1511,5.441,1512,4.556,1513,6.29,1514,6.84,1515,4.325,1516,6.84,1517,5.927,1518,5.261]],["title/261",[72,1.788,198,2.89]],["content/261",[16,1.331,22,2.66,33,1.489,46,1.04,47,1.327,72,2.086,86,1.235,110,1.192,125,1.89,187,2.176,204,1.892,205,2.391,213,1.924,290,1.206,342,1.502,360,2.281,370,1.677,373,3.284,375,3.605,411,0.647,412,3.337,417,1.05,434,1.056,442,2.694,462,1.3,489,2.123,539,1.406,544,1.958,546,1.658,584,3.909,599,1.489,600,2.123,613,1.355,619,1.696,624,1.998,654,3.224,694,2.176,755,3.443,822,2.123,846,2.123,849,1.696,851,1.835,873,1.658,877,1.717,891,2.302,964,2.381,998,1.696,1035,2.594,1038,2.9,1043,1.835,1068,3.284,1133,1.924,1358,3.497,1444,1.622,1460,3.497,1474,1.994,1475,2.594,1481,2.594,1492,2.076,1495,2.594,1496,5.198,1515,3.117,1519,2.993,1520,2.993,1521,2.993,1522,2.302,1523,3.792,1524,2.993,1525,2.381,1526,2.993,1527,1.835,1528,2.381,1529,1.924,1530,2.381,1531,2.993,1532,2.475,1533,2.993,1534,2.993,1535,2.993,1536,2.993,1537,1.994,1538,2.993,1539,1.835]],["title/262",[72,1.788,657,2.643]],["content/262",[16,1.395,26,0.671,27,0.962,33,0.622,35,0.651,46,0.435,47,1.062,50,2.267,53,1.577,67,1.327,72,2.695,73,1.783,80,1.163,96,1.682,99,0.877,105,0.739,110,0.498,111,0.437,112,0.368,120,1.373,122,1.674,125,2.402,138,0.533,197,1.254,198,1.063,203,0.962,204,4.381,209,0.575,214,0.888,269,0.678,270,0.678,275,0.678,290,0.925,312,1.055,329,0.664,338,0.651,342,0.628,356,0.746,357,0.868,358,1.476,360,1.063,361,3.716,365,0.622,374,0.612,375,1.826,397,0.746,411,0.996,412,0.664,420,0.888,433,0.834,434,0.81,442,0.536,474,0.991,478,1.105,480,0.834,484,0.868,486,0.588,505,0.962,514,0.602,519,1.232,544,0.818,547,0.693,548,0.962,581,0.746,584,4.057,610,0.804,615,1.628,629,0.678,643,1.484,645,0.727,657,3.851,679,0.894,726,0.888,808,0.791,817,0.791,822,0.888,849,2.236,857,1.708,864,0.868,868,0.791,873,3.634,905,1.43,912,0.693,914,1.767,929,2.258,936,0.617,954,1.502,966,0.779,971,1.035,975,1.317,983,0.834,989,0.767,994,0.868,1031,0.718,1038,0.736,1049,1.69,1054,0.888,1059,0.995,1062,2.961,1063,1.763,1068,1.206,1082,0.804,1083,1.334,1087,1.873,1099,0.834,1105,0.746,1110,1.767,1114,1.035,1122,2.759,1128,2.095,1148,0.791,1217,0.562,1387,2.046,1426,3.664,1439,0.91,1446,0.779,1460,0.888,1463,0.85,1474,1.53,1478,1.991,1490,1.035,1515,0.791,1527,0.767,1537,2.121,1539,0.767,1540,1.251,1541,1.151,1542,2.759,1543,1.251,1544,1.151,1545,1.251,1546,1.53,1547,0.934,1548,1.151,1549,1.151,1550,1.084,1551,2.633,1552,0.934,1553,0.868,1554,1.084,1555,0.934,1556,0.834,1557,1.715,1558,1.035,1559,0.995,1560,1.251,1561,1.67,1562,1.251,1563,1.151,1564,1.251,1565,1.084,1566,0.91]],["title/263",[72,1.788,534,5.413]],["content/263",[16,1.143,22,3.481,47,1.569,50,1.61,67,1.239,72,1.669,105,1.184,197,2.849,198,1.704,205,1.786,308,2.678,329,1.956,372,2.293,375,2.113,420,2.613,452,1.976,474,1.589,478,1.772,488,1.569,543,2.259,553,2.502,584,4.412,624,1.493,657,2.467,679,1.434,755,2.018,816,2.555,849,2.088,851,2.259,857,1.976,865,1.936,868,2.329,873,2.04,891,2.833,920,4.637,975,2.113,982,2.502,1002,2.93,1008,2.139,1033,2.088,1038,2.167,1043,2.259,1062,2.368,1128,1.956,1209,3.387,1426,4.637,1441,2.226,1460,2.613,1475,3.192,1492,2.555,1496,7.413,1518,4.484,1546,3.884,1557,2.75,1567,4.822,1568,3.192,1569,3.684,1570,5.83,1571,3.684,1572,5.361,1573,3.387,1574,2.678,1575,3.046,1576,3.684,1577,3.684,1578,3.387,1579,2.678,1580,3.046,1581,3.684]],["title/264",[876,3.583,1038,3.674]],["content/264",[16,1.377,33,2.278,46,2.398,47,1.857,53,2.098,72,2.376,73,2.566,125,1.789,138,1.95,204,2.896,209,2.104,361,2.457,365,4.128,478,2.203,489,6.552,519,2.457,584,4.954,657,4.705,849,2.596,872,2.73,876,2.627,936,2.259,966,2.851,1038,4.058,1062,6.945,1087,2.694,1114,3.788,1306,3.523,1441,2.768,1460,4.894,1518,3.523,1563,4.212,1582,4.212]],["title/265",[849,3.54,876,3.583]],["content/265",[3,2.582,16,1.455,73,3.353,138,2.549,197,3.299,402,5.944,420,6.859,478,2.879,534,5.187,584,3.21,657,2.532,671,4.321,703,3.568,849,5.937,865,4.405,873,3.315,876,3.433,1079,5.187,1087,3.521,1148,3.784,1441,3.617,1518,4.603,1561,4.35,1582,5.504,1583,7.706,1584,2.977]],["title/266",[72,1.478,198,2.39,1504,3.441]],["content/266",[16,0.704,22,2.143,26,1.479,47,1.363,71,2.716,72,2.521,74,4.862,76,2.805,99,2.047,105,1.628,156,1.994,197,1.994,198,4.49,199,3.255,361,3.987,484,3.513,553,3.44,615,2.09,630,2.689,654,3.312,657,2.143,720,2.87,865,2.662,868,3.202,952,4.189,966,3.152,989,3.105,1005,3.834,1008,2.941,1012,2.805,1017,4.029,1054,3.593,1062,3.255,1077,3.061,1080,4.778,1099,3.374,1151,3.781,1460,3.593,1522,3.895,1585,4.657,1586,6.442,1587,4.029,1588,4.189,1589,4.657]],["title/293",[1106,4.588]],["content/293",[67,2.605,96,3.639,99,2.133,198,4.611,239,1.692,374,4.873,679,3.88,1106,6.399,1590,4.978,1591,5.261,1592,5.494,1593,7.122,1594,7.745]],["title/294",[1591,4.243,1592,4.431]],["content/294",[16,0.832,22,2.532,50,2.617,96,3.826,99,1.648,198,4.474,209,3.849,267,2.617,361,3.21,411,1.295,449,2.769,613,3.793,995,3.279,1063,3.315,1064,4.95,1065,4.603,1132,4.95,1574,4.35,1592,6.859,1595,8.333,1596,7.692,1597,7.997,1598,5.985]],["title/295",[341,3.122,993,3.856,1060,3.582]],["content/295",[138,4.591,490,6.553,911,5.097,980,6.751,983,5.847,989,5.382,993,6.553,1060,6.088,1554,7.606,1599,5.097]],["title/296",[995,3.422,1600,6.246]],["content/296",[22,2.476,50,2.558,99,2.271,133,4.254,137,3.399,158,3.588,209,3.788,273,3.898,361,3.139,411,1.266,450,2.558,478,2.815,490,6.159,503,3.317,604,2.815,679,2.278,788,4.655,911,4.79,916,2.99,980,4.501,990,5.072,995,4.519,1110,4.501,1156,2.688,1441,3.537,1491,4.369,1528,4.655,1574,4.254,1601,7.586,1602,6.561,1603,5.382,1604,5.852,1605,5.852,1606,5.852]],["title/297",[110,2.488,1607,4.085]],["content/297",[3,1.578,28,1.76,46,1.271,47,0.985,80,1.852,86,3.687,95,5.109,96,2.63,107,2.485,110,4.505,120,2.501,125,1.504,187,4.214,239,0.799,342,1.835,403,1.962,411,0.791,415,1.983,439,2.025,442,2.485,467,1.852,474,1.578,481,1.789,483,1.76,488,1.558,540,1.835,545,3.632,584,3.863,604,1.76,615,2.972,916,3.68,936,1.804,1048,2.351,1136,2.537,1337,3.025,1546,2.437,1558,3.025,1607,7.273,1608,2.659,1609,2.813,1610,2.731,1611,1.76,1612,3.658,1613,3.658,1614,2.91,1615,3.658,1616,3.17,1617,2.485,1618,3.364,1619,3.658,1620,2.098,1621,3.658]],["title/298",[1622,6.534]],["content/298",[30,1.341,86,1.531,96,3.016,99,1.614,110,1.477,120,4.125,239,0.811,272,1.729,368,3.082,417,2.057,431,2.275,434,1.308,467,1.878,470,1.895,541,4.663,546,2.055,547,4.026,558,4.992,561,2.769,579,1.531,611,2.471,643,1.729,647,2.078,673,1.77,736,2.211,786,2.242,808,3.707,859,2.83,952,3.068,963,2.631,1015,2.275,1024,2.345,1032,3.215,1043,2.275,1103,2.853,1120,2.055,1125,2.951,1138,2.696,1189,2.182,1448,6.684,1463,2.52,1486,5.391,1546,2.471,1607,2.426,1608,5.283,1622,6.83,1623,4.066,1624,3.411,1625,2.951,1626,2.345,1627,3.215,1628,2.769,1629,5.863,1630,4.663,1631,3.215,1632,3.411,1633,3.71,1634,2.384,1635,3.411,1636,3.71,1637,3.71,1638,2.769]],["title/304",[1631,6.847]],["content/304",[26,0.967,96,1.956,99,0.912,110,3.084,120,2.31,125,0.859,205,1.607,211,2.35,239,1.17,269,1.796,370,1.856,397,1.975,464,3.072,467,2.711,488,1.411,522,1.949,541,6.159,550,1.9,558,4.075,562,3.799,584,1.777,604,1.594,611,2.207,622,1.62,624,1.343,671,3.476,673,1.581,736,1.975,786,2.002,808,2.095,850,1.796,859,2.625,916,2.736,963,3.799,978,2.74,1012,1.835,1049,1.759,1120,1.835,1189,1.949,1291,2.167,1463,5.774,1494,3.047,1546,2.207,1607,3.503,1608,4.9,1614,4.26,1623,2.298,1624,4.925,1631,5.842,1632,3.047,1639,2.408,1640,2.635,1641,4.429,1642,2.548,1643,3.313,1644,4.925,1645,3.047,1646,3.313,1647,3.313,1648,2.635,1649,5.356,1650,3.313,1651,3.313,1652,3.313,1653,3.047,1654,3.313,1655,2.129,1656,3.313,1657,2.871,1658,3.313,1659,3.313,1660,3.313,1661,2.871,1662,3.313,1663,3.313,1664,3.313]],["title/299",[1665,5.743]],["content/299",[16,1.36,18,3.812,50,2.677,96,4.313,99,2.345,209,2.813,374,2.995,397,3.651,495,2.642,514,2.946,521,4.572,604,4.709,613,4.431,846,4.344,872,3.651,912,3.392,1016,4.08,1060,4.248,1066,3.937,1106,3.557,1164,4.344,1214,4.452,1665,4.452,1666,4.71]],["title/300",[96,1.886,1666,3.972,1667,5.165]],["content/300",[16,1.161,26,2.441,96,3.82,99,2.302,443,4.271,550,4.795,558,5.052,578,5.125,604,4.021,1053,6.241,1128,4.438,1627,7.244,1668,8.36]],["title/301",[96,2.281,995,3.422]],["content/301",[]],["title/302",[1669,7.901]],["content/302",[]],["title/303",[1670,7.265]],["content/303",[16,0.892,96,3.943,99,2.423,374,3.141,604,5.194,613,2.907,988,4.363,995,3.519,1005,3.312,1015,3.938,1030,3.829,1068,2.433,1105,3.829,1120,3.557,1610,4.795,1627,5.566,1666,4.94,1670,8.092,1671,6.423,1672,4.279,1673,3.998,1674,6.423,1675,3.938,1676,6.423,1677,5.312]],["title/305",[121,3.122,338,2.689,374,2.526]],["content/305",[46,3.278,47,2.538,67,2.394,96,2.599,100,4.732,121,4.302,338,3.705,340,5.858,374,3.48,442,3.05,452,3.817,485,5.474,492,3.369,516,3.942,613,4.268,877,4.082,1051,5.474,1066,4.575,1574,5.173]],["title/306",[46,1.53,47,1.185,340,2.438,1051,3.386]],["content/306",[16,1.254,26,1.947,46,3.137,47,2.429,50,3.946,67,3.036,99,2.485,100,3.345,111,2.328,112,1.962,196,3.922,308,4.846,340,5.668,407,3.652,415,3.613,442,2.857,855,3.778,875,3.181,992,4.529,1033,3.778,1066,4.285,1465,5.514]],["title/307",[1574,5.743]],["content/307",[16,0.822,24,4.418,46,3.623,47,2.806,50,2.587,67,1.99,100,2.969,121,5.025,209,2.718,290,2.384,338,4.328,340,3.278,374,4.7,410,3.742,411,1.28,493,6.394,514,2.847,516,3.278,539,2.78,613,2.679,654,3.87,858,4.418,966,3.683,983,3.942,1033,3.354,1051,4.552,1229,4.105,1678,5.918,1679,5.918]],["title/308",[16,0.718,18,3.215,865,2.715]],["content/308",[16,1.633,18,5.556,96,3.978,99,2.458,1147,4.692,1214,6.488,1610,6.664]],["title/309",[865,4.153]],["content/309",[0,2.281,16,0.978,43,3.872,71,2.522,72,1.346,74,3.076,96,3.079,99,3.002,105,1.512,138,2.003,145,3.195,146,2.927,198,2.176,269,2.549,272,2.192,275,3.814,342,2.36,374,2.3,463,3.741,473,2.884,478,2.262,548,3.617,602,6.098,643,2.192,679,1.831,716,2.842,752,3.262,865,2.472,875,2.244,1005,3.629,1008,2.731,1065,3.617,1077,4.253,1101,3.076,1112,3.741,1120,2.605,1128,2.497,1147,2.472,1441,4.253,1442,3.889,1546,3.133,1584,2.339,1630,3.741,1680,3.741,1681,4.076,1682,4.325,1683,4.703]],["title/310",[99,1.72,995,3.422]],["content/310",[16,1.071,43,2.443,50,2.326,60,2.947,72,1.523,96,1.943,99,2.903,145,3.614,146,3.311,198,2.462,209,4.161,272,3.592,342,3.867,368,2.797,374,3.768,442,2.28,532,2.462,548,5.927,579,2.196,613,2.408,865,2.797,872,3.172,995,2.915,1008,3.09,1046,4.092,1049,2.825,1068,2.015,1078,2.48,1088,4.092,1493,4.893,1655,3.42,1684,4.893,1685,7.478,1686,2.98,1687,5.321]],["title/312",[16,0.718,96,1.886,1610,3.856]],["content/312",[16,1.427,53,2.47,96,3.447,100,2.873,111,2,112,1.685,114,2.555,138,2.438,342,2.873,375,3.284,449,3.758,535,5.265,543,3.51,547,3.171,604,2.754,613,2.591,671,4.867,679,2.229,703,3.413,872,3.413,912,3.171,1115,3.284,1214,4.161,1666,6.247,1672,3.814,1673,3.563,1688,4.403,1689,4.735,1690,5.725,1691,4.961,1692,5.725,1693,4.961,1694,3.62]],["title/313",[111,1.804,112,1.52,1115,2.962]],["content/313",[16,1.223,46,2.233,47,1.729,49,3.09,59,3.598,72,1.839,75,4.556,96,3.214,99,2.423,111,3.073,112,3.179,120,2.771,196,3.778,198,2.972,199,4.128,289,3.684,371,4.556,434,2.265,450,2.808,516,3.557,548,4.94,615,2.651,755,3.519,859,2.501,1021,4.669,1695,4.455]],["title/314",[16,0.718,53,1.571,1115,2.962]],["content/314",[]],["title/315",[16,0.718,99,1.422,1115,2.962]],["content/315",[16,0.892,26,1.875,45,3.115,46,2.233,47,2.369,53,1.954,99,2.764,114,2.866,132,4.556,133,4.669,138,2.735,340,3.557,365,3.195,455,3.829,471,3.684,472,4.061,546,3.557,608,5.109,671,4.538,936,3.167,1066,4.128,1078,2.994,1095,3.312,1137,4.279,1148,4.061,1164,4.556,1205,3.73,1358,4.556,1696,4.455]],["title/316",[16,0.533,49,1.845,99,1.056,196,2.257,1115,2.201]],["content/316",[16,1.045,45,3.649,49,3.619,99,2.992,114,3.358,138,3.204,156,2.962,196,4.426,434,2.653,671,5.043,875,3.59,936,3.71,1118,5.617,1358,5.337,1607,4.921,1696,5.218,1697,6.222,1698,7.524]],["title/317",[16,0.718,63,1.849,1115,2.962]],["content/317",[16,1.372,26,2.229,53,2.322,63,4.141,99,2.718,108,4.052,114,3.406,293,4.992,370,4.276,434,2.692,859,2.972,1066,4.906,1368,5.414,1695,5.294,1696,5.294]],["title/318",[16,0.718,180,2.639,1115,2.962]],["content/318",[16,1.045,99,2.072,105,3.145,114,3.358,181,4.849,434,2.653,850,4.078,916,3.844,1066,4.836,1095,3.88,1104,5.985,1176,5.012,1607,4.921,1699,6.286,1700,6.222,1701,5.218,1702,7.524]],["title/319",[16,0.718,1115,2.962,1703,5.165]],["content/319",[16,1.243,72,3.123,73,3.688,74,4.306,99,2.464,105,2.878,114,2.938,180,5.574,309,5.705,339,4.232,875,3.141,916,3.363,1033,5.072,1066,5.752,1092,6.682,1118,4.915,1147,3.461,1696,4.566,1704,6.584]],["title/320",[16,0.612,110,1.753,1115,2.525,1607,2.879]],["content/320",[16,0.95,26,2.682,72,1.958,96,2.498,138,2.913,358,4.396,370,3.831,434,2.412,671,3.527,916,5.297,936,3.373,1048,4.396,1066,4.396,1095,3.527,1358,4.852,1597,5.657,1607,6.006,1608,4.972,1655,4.396,1705,5.261,1706,4.325,1707,6.856,1708,6.84]],["title/321",[16,0.612,95,3.123,110,1.753,1115,2.525]],["content/321",[16,0.938,28,4.379,72,1.933,95,6.458,138,2.875,403,3.622,671,5.685,936,3.33,1048,4.34,1095,3.482,1148,4.269,1153,3.549,1607,7.21,1617,6.184,1706,4.269,1709,9.104,1710,5.041,1711,6.752,1712,6.752]],["title/311",[1699,5.078]],["content/311",[16,0.976,67,2.362,72,2.01,99,1.934,105,2.258,181,3.134,239,1.534,454,4.678,478,3.378,485,5.401,679,2.734,877,4.028,999,5.586,1009,5.401,1081,4.593,1093,3.98,1097,4.981,1147,3.691,1176,4.678,1439,5.104,1477,6.458,1527,4.306,1699,4.514,1713,4.678,1714,5.808,1715,5.586]],["title/322",[1062,3.32,1063,2.861,1699,3.32]],["content/322",[8,1.138,16,0.928,32,1.748,62,2.544,72,1.256,73,2.459,76,2.431,80,3.382,105,2.6,148,2.285,180,3.413,181,4.34,197,3.184,273,2.924,319,4.037,341,2.653,365,2.183,374,2.146,411,1.445,442,2.863,450,1.919,462,1.906,485,3.376,539,2.062,553,2.982,615,1.811,679,2.601,703,2.617,905,2.732,911,4.696,988,4.538,994,3.045,1062,2.821,1063,3.7,1064,3.63,1065,3.376,1068,1.663,1080,2.821,1097,3.114,1110,3.376,1122,5.789,1128,2.33,1491,3.277,1699,4.294,1716,3.114,1717,3.191,1718,4.39,1719,4.39]],["title/328",[1097,4.431,1699,4.015]],["content/328",[8,0.452,16,1.162,22,1.359,32,2.08,50,1.404,52,2.182,73,4.259,74,2.101,99,0.884,105,1.679,120,1.386,180,1.641,181,1.433,197,1.265,270,1.741,289,1.842,356,1.915,374,1.571,434,1.842,449,3.054,450,1.404,464,1.842,470,2.668,539,1.509,545,1.423,558,1.941,604,4.312,642,2.031,851,1.969,865,1.688,873,1.779,877,1.842,917,1.889,1030,4.533,1033,1.82,1068,3.579,1075,3.705,1086,1.915,1093,1.82,1097,2.278,1100,3.114,1106,1.865,1147,3.47,1155,4.32,1156,3.031,1176,2.14,1212,2.398,1217,1.444,1350,2.182,1529,2.065,1602,2.555,1625,2.555,1638,2.398,1696,2.228,1699,2.065,1700,6.288,1701,2.228,1715,2.555,1720,5.223,1721,4.155,1722,3.212,1723,3.212,1724,3.416,1725,3.212,1726,4.155,1727,4.155,1728,2.14,1729,3.212,1730,2.954,1731,2.065,1732,3.212,1733,2.954,1734,2.555]],["title/324",[72,1.478,180,2.639,181,2.305]],["content/324",[181,4.123,442,3.96,540,4.636,622,4.518,679,3.597,1097,6.554,1699,5.938,1735,8.496]],["title/325",[1160,5.743]],["content/325",[16,1.386,69,2.124,96,2.317,99,1.747,105,3.454,138,2.702,180,4.459,181,2.832,197,2.498,371,6.191,434,3.078,486,2.981,495,2.737,516,3.515,613,2.872,671,3.272,679,2.47,1066,4.079,1147,4.588,1160,4.612,1523,4.881,1735,5.835,1736,3.336,1737,4.31,1738,6.346]],["title/326",[450,3.454]],["content/326",[62,2.28,63,2.999,105,2.694,158,3.67,181,2.671,226,3.058,239,1.308,272,2.79,371,4.246,411,1.295,442,2.565,445,3.315,495,2.582,516,3.315,750,4.35,755,3.279,891,6.445,912,3.315,1125,4.761,1138,4.35,1147,5.083,1160,4.35,1584,2.977,1693,5.187,1736,3.146,1739,7.262,1740,7.706,1741,5.692,1742,4.151,1743,5.985,1744,4.95]],["title/327",[1694,4.995]],["content/327",[8,1.469,62,2.639,181,4.972,197,2.728,239,1.514,434,2.444,523,4.532,544,4.532,615,3.823,622,4.53,1097,4.916,1164,4.916,1694,4.382,1745,5.174,1746,6.93,1747,6.93,1748,6.93,1749,6.93,1750,6.93,1751,6.93]],["title/323",[1005,4.074]],["content/323",[]],["title/329",[1015,4.844]],["content/329",[35,3.427,105,2.117,239,1.438,272,3.069,343,3.873,373,4.386,411,1.936,434,2.322,439,2.299,452,4.8,519,3.531,982,4.472,993,4.915,994,4.566,1005,4.615,1008,3.823,1015,4.037,1031,3.776,1046,5.063,1084,4.785,1492,4.566,1512,4.386,1525,5.237,1752,6.584,1753,5.063,1754,6.584,1755,5.705,1756,5.445]],["title/330",[1525,4.968,1756,5.166]],["content/330",[8,1.803,10,1.533,75,2.148,99,0.834,131,1.781,181,3.275,190,1.533,196,1.781,212,4.436,226,1.547,415,1.641,417,1.746,442,1.298,480,2.017,503,1.716,511,2.784,519,1.624,520,4.159,545,1.342,579,2.054,637,2.356,818,2.26,848,1.265,855,1.716,872,1.805,875,1.445,912,1.677,941,2.017,943,2.624,989,1.856,1015,4.972,1024,1.914,1068,1.147,1119,2.26,1120,2.756,1129,2.624,1139,4.116,1187,2.328,1308,2.1,1442,2.504,1523,3.827,1525,6.45,1706,1.914,1756,4.116,1757,5.827,1758,3.028,1759,3.028,1760,4.116,1761,2.784,1762,7.339,1763,2.784,1764,3.028,1765,3.028,1766,3.028,1767,3.028,1768,3.028]],["title/331",[343,3.674,373,4.161]],["content/331",[26,2.001,67,1.527,105,1.46,239,0.992,270,2.461,286,2.167,343,4.856,373,6.126,375,2.605,411,1.483,412,4.383,417,1.594,423,2.784,450,1.985,484,4.754,486,2.133,519,2.435,624,1.84,857,2.435,875,2.167,909,4.656,914,3.492,941,5.499,968,2.544,987,2.97,994,3.149,1015,2.784,1054,3.221,1099,3.025,1139,3.755,1148,4.333,1441,2.744,1446,5.138,1497,3.755,1511,3.612,1512,3.025,1523,6.35,1579,3.301,1634,2.919,1769,3.492,1770,3.612,1771,3.612,1772,4.541,1773,4.541,1774,4.541,1775,4.541,1776,4.176,1777,4.541,1778,4.541]],["title/332",[1015,3.83,1779,5.744]],["content/332",[26,1.788,46,2.96,47,2.292,48,3.158,99,1.686,122,4.476,212,3.702,274,2.608,286,2.922,289,3.513,343,3.603,411,2.118,486,2.877,854,3.603,931,5.632,992,4.16,1005,3.158,1015,6.003,1068,2.32,1072,4.71,1077,3.702,1213,4.71,1525,4.871,1528,4.871,1539,3.755,1756,5.065,1779,5.632,1780,6.125,1781,6.125,1782,5.632]],["title/333",[99,2.175]],["content/333",[]],["title/334",[105,2.008,329,3.316]],["content/334",[0,2.241,26,1.349,45,3.368,46,2.414,47,1.869,67,1.554,76,2.559,99,1.272,125,1.801,132,4.926,133,5.048,156,3.285,161,4.249,163,4.249,197,1.819,210,2.793,239,1.01,329,2.453,343,2.718,361,2.478,368,2.429,394,2.504,411,0.999,445,2.559,449,3.86,456,2.619,643,2.154,832,3.358,994,3.205,995,2.531,1005,5.128,1082,4.464,1084,3.358,1085,2.754,1094,3.205,1132,3.821,1140,5.048,1512,3.078,1579,3.358,1596,3.675,1665,3.358,1706,2.921,1753,3.554,1763,4.249,1783,2.97,1784,3.278,1785,4.621,1786,6.944]],["title/335",[1005,2.663,1063,2.861,1077,3.122]],["content/335",[6,3.431,26,1.768,43,2.78,49,2.912,99,2.679,105,1.947,196,3.561,197,2.384,198,2.801,267,2.647,411,1.31,486,2.844,488,2.578,553,4.112,637,2.866,983,4.033,990,5.246,998,3.431,1005,3.122,1009,4.656,1062,3.891,1063,4.679,1064,5.007,1077,3.659,1080,3.891,1086,3.609,1110,4.656,1128,3.214,1147,3.182,1319,5.567,1474,4.033,1557,4.52,1634,3.891,1787,6.054,1788,6.054]],["title/336",[1063,3.46,1789,4.804]],["content/336",[26,1.853,46,3.467,47,2.685,50,2.774,76,3.515,99,1.747,120,2.737,132,4.501,133,6.344,156,3.436,197,2.498,361,3.403,643,4.068,657,2.685,856,5.499,1005,4.5,1063,3.515,1132,5.248,1139,5.248,1140,4.612,1402,4.401,1597,7.218,1784,4.501,1790,5.835,1791,6.346]],["title/337",[156,2.034,1063,2.861,1574,3.754]],["content/337",[46,3.399,47,2.632,99,2.072,156,3.851,289,4.315,462,3.267,643,4.559,679,2.929,905,4.683,983,5.012,1039,6.919,1054,5.337,1063,6.019,1229,5.218,1561,5.469]],["title/338",[45,2.505,99,1.422,1063,2.861]],["content/338",[33,4.168,45,5.542,46,2.913,47,2.256,67,2.013,76,4.641,99,3.036,105,1.924,138,2.549,197,2.356,289,3.433,473,3.67,643,2.79,983,3.987,1063,5.356,1078,2.79,1147,3.146,1164,4.246,1561,4.35,1574,6.091,1701,4.151,1789,4.603,1792,5.985]],["title/339",[47,1.185,99,1.212,1063,2.438,1574,3.2]],["content/339",[33,3.689,46,3.977,47,3.08,99,2.042,361,5.197,462,3.221,643,4.517,1033,4.204,1049,3.938,1063,5.367,1789,5.705,1793,5.9,1794,7.418]],["title/340",[609,4.775]],["content/340",[]],["title/343",[609,3.775,1795,4.54]],["content/343",[16,0.926,156,2.625,239,2.236,291,2.422,411,1.952,439,3.152,441,2.202,494,4.529,498,7.465,509,4.441,515,4.977,519,3.576,539,3.132,609,6.185,1489,4.624,1795,6.561,1796,5.303,1797,6.131,1798,5.303,1799,5.777,1800,4.977,1801,5.777]],["title/341",[609,3.775,1022,3.888]],["content/341",[16,1.161,156,3.291,239,2.285,291,3.037,439,3.653,494,5.678,498,6.913,519,4.483,609,6.322,1022,5.203,1798,6.649]],["title/342",[609,3.775,1802,4.968]],["content/342",[16,1.265,108,3.585,117,3.699,156,2.659,239,2.251,291,2.453,411,1.461,439,3.597,456,3.827,494,4.587,498,5.584,519,3.622,539,3.172,609,6.225,850,3.66,1020,4.908,1798,5.371,1800,5.041,1801,5.852,1802,5.371,1803,3.148,1804,3.418]],["title/345",[111,2.182,112,1.839]],["content/345",[16,1.01,42,2.573,72,1.062,76,2.055,96,1.355,110,1.477,111,2.539,112,2.431,137,2.154,138,2.496,239,1.281,291,1.348,327,3.495,397,2.211,434,2.067,439,2.047,449,1.716,478,2.82,488,1.58,513,2.426,516,2.055,532,1.716,613,2.653,637,1.756,673,1.77,703,2.211,911,2.154,976,2.384,985,1.756,989,2.275,1012,2.055,1030,3.495,1031,2.128,1033,3.322,1049,1.969,1058,2.52,1081,2.426,1136,2.573,1153,3.082,1156,3.338,1176,2.471,1207,2.769,1217,3.267,1350,2.52,1508,3.215,1541,3.411,1611,2.82,1620,2.128,1686,2.078,1695,4.066,1699,2.384,1713,3.905,1716,4.159,1726,4.663,1805,3.71,1806,5.863,1807,3.215,1808,3.411,1809,2.853,1810,2.631,1811,2.853,1812,3.068,1813,2.769,1814,3.215,1815,2.52,1816,3.71]],["title/346",[1811,6.076]],["content/346",[8,0.46,16,1.256,33,1.627,45,1.587,47,1.799,72,0.937,76,2.937,80,1.656,96,1.195,99,1.46,100,1.642,105,1.052,110,2.662,111,1.143,112,1.968,180,1.672,239,0.715,241,1.925,269,1.773,270,1.773,272,1.525,274,1.393,291,1.926,327,1.95,339,3.408,410,2.069,411,0.708,429,3.009,434,1.154,442,1.402,449,1.514,477,3.079,478,1.574,481,1.6,505,2.516,532,1.514,539,1.537,543,2.006,545,2.35,613,2.4,629,1.773,673,1.561,859,1.274,933,2.603,1043,3.251,1097,2.321,1099,2.18,1100,3.161,1114,5.528,1115,1.877,1128,1.737,1156,1.503,1160,2.378,1211,3.009,1212,2.443,1240,2.269,1350,2.222,1368,2.321,1592,2.321,1611,2.55,1655,2.103,1672,2.18,1673,2.036,1686,1.833,1699,2.103,1811,2.516,1817,2.443,1818,3.009,1819,2.706,1820,3.272,1821,4.742,1822,5.528,1823,3.272,1824,2.706,1825,4.453,1826,3.272,1827,2.443,1828,2.706,1829,4.078,1830,2.516,1831,2.835,1832,1.95]],["title/347",[1207,5.898]],["content/347",[16,1.346,42,3.019,72,2.576,98,2.631,105,1.4,110,2.644,111,2.81,112,2.649,124,2.669,125,2.086,210,2.631,239,0.951,286,2.077,327,2.595,361,3.56,397,2.595,434,1.535,450,1.903,473,2.669,474,1.878,539,2.045,582,2.528,615,2.739,622,2.129,646,3.773,679,1.695,855,2.467,857,2.335,912,2.411,1012,2.411,1030,2.595,1031,2.497,1056,4.709,1068,1.649,1078,2.029,1081,2.847,1083,2.528,1141,3.019,1153,2.288,1556,4.422,1565,3.773,1599,2.528,1626,2.752,1713,2.9,1804,2.204,1833,3.088,1834,4.353,1835,4.353,1836,6.638,1837,3.25,1838,4.003,1839,2.288]],["title/348",[1695,5.48]],["content/348",[110,4.249,111,2.752,112,2.714,239,1.199,273,3.655,274,2.336,282,3.892,428,4.538,464,3.147,478,3.79,516,3.039,542,4.755,556,4.22,615,2.264,671,2.829,679,2.136,786,4.762,851,3.364,911,3.186,975,3.147,1012,3.039,1115,3.147,1466,5.153,1479,3.988,1599,3.186,1641,6.516,1695,6.394,1807,4.755,1813,4.096,1828,4.538,1840,5.727,1841,5.487,1842,5.487]],["title/349",[1843,7.265]],["content/349",[16,1.263,33,1.885,43,1.74,50,1.657,72,1.085,96,2.177,105,2.37,111,2.919,112,2.972,124,2.324,137,2.201,239,0.828,241,2.229,267,1.657,286,1.808,290,1.527,327,2.259,397,2.259,411,1.29,434,1.336,450,2.606,464,2.174,478,1.823,488,1.614,506,2.396,516,2.099,599,1.885,604,1.823,613,1.715,623,2.524,673,1.808,702,2.688,732,2.359,752,2.628,848,1.583,849,2.148,859,1.475,875,1.808,909,2.574,929,2.688,1019,3.485,1030,4.982,1056,2.688,1065,2.915,1068,1.436,1077,2.29,1078,1.767,1081,2.478,1128,2.012,1153,1.992,1491,2.829,1523,2.915,1539,2.324,1573,3.485,1599,2.201,1713,2.524,1741,2.574,1844,3.79,1845,3.485,1846,3.79,1847,2.915,1848,3.79,1849,3.79,1850,3.79,1851,3.485,1852,3.134,1853,3.284,1854,3.79,1855,3.485]],["title/344",[111,1.804,112,1.52,148,2.689]],["content/344",[1856,8.377]],["title/356",[111,1.804,112,1.52,981,3.215]],["content/356",[16,1.428,34,2.755,86,1.827,110,1.763,111,1.546,112,2.393,120,1.91,180,4.638,190,5.706,360,2.048,411,1.758,417,3.186,474,1.91,613,2.003,617,3.653,671,4.192,678,3.14,936,2.183,953,5.347,1012,2.452,1156,4.169,1208,3.521,1217,3.653,1611,5.137,1726,3.521,1737,4.567,1825,4.478,1857,3.404,1858,3.836]],["title/357",[86,2.578,1208,4.968]],["content/357",[8,1.09,86,4.547,110,3.969,407,4.243,411,1.675,417,2.718,523,5.065,643,3.61,647,4.338,748,6.712,916,3.957,1105,4.617,1160,5.63,1208,6.16,1695,5.372,1859,7.122]],["title/358",[53,1.9,453,5.166]],["content/358",[6,3.176,7,3.665,8,1.431,22,2.371,118,3.715,158,4.904,205,2.717,370,3.139,396,3.665,404,4.457,411,1.73,419,3.886,449,2.593,478,2.695,495,2.417,523,3.665,544,3.665,547,3.103,979,4.31,981,4.978,1860,5.603,1861,5.603,1862,5.603,1863,5.603,1864,5.153,1865,5.603,1866,3.886,1867,5.603,1868,5.153,1869,5.603,1870,5.603,1871,5.603,1872,5.603,1873,4.634,1874,3.806,1875,5.603,1876,3.975]],["title/359",[113,5.263]],["content/359",[8,1.552,17,3.46,22,3.059,35,2.539,46,1.695,47,1.313,111,1.703,112,1.436,113,5.739,125,1.265,239,1.066,247,5.979,312,2.24,372,3.036,411,1.055,434,1.72,439,1.703,474,2.104,481,2.385,524,4.729,750,3.545,941,3.249,1024,3.084,1038,2.869,1078,2.274,1093,2.764,1556,3.249,1640,3.879,1810,3.46,1864,4.485,1874,4.911,1877,3.641,1878,3.751,1879,7.23,1880,3.545,1881,7.23,1882,3.751,1883,4.485,1884,7.23,1885,4.877,1886,4.877,1887,4.877,1888,3.879,1889,4.485]],["title/360",[118,2.057,424,3.856,1890,5.165]],["content/360",[6,4.592,8,1.443,113,6.832,118,3.227,360,3.749,411,2.218,424,6.049,615,3.344,688,5.889,961,5.747,1866,5.62,1889,7.451,1891,8.102]],["title/361",[1883,7.265]],["content/361",[6,3.778,8,1.7,22,2.821,205,4.377,338,3.471,396,4.36,417,2.34,624,3.658,750,6.561,907,4.846,1443,6.131,1626,4.215,1892,6.131,1893,4.977,1894,5.514,1895,8.3,1896,7.822,1897,8.3]],["title/362",[1898,7.265]],["content/362",[8,1.68,112,1.742,158,3.629,208,6.394,272,2.759,405,5.129,417,3.854,423,3.629,483,2.847,539,2.78,543,3.629,579,3.431,617,2.66,1021,4.302,1032,5.129,1167,3.528,1196,3.481,1387,3.804,1599,3.437,1894,4.894,1898,5.442,1899,6.876,1900,5.442,1901,5.918,1902,5.442,1903,5.442]],["title/363",[1003,6.847]],["content/363",[1904,10.127,1905,7.024,1906,10.127]],["title/364",[1907,7.265]],["content/364",[8,1.582,205,5.451,624,4.556,1908,9.404]],["title/365",[8,0.727,917,3.038,1586,4.476]],["content/365",[8,1.732,22,2.313,53,1.034,190,1.721,205,4.69,290,1.369,401,4.145,417,2.407,434,1.928,450,1.486,462,1.476,467,1.721,506,2.149,617,1.527,624,2.78,859,1.323,917,5.412,953,2.703,975,3.136,1112,2.703,1148,3.457,1153,2.874,1232,5.027,1311,2.811,1586,9.906,1900,6.307,1909,3.125,1910,4.205,1911,4.659,1912,3.399,1913,3.399,1914,3.399,1915,3.399,1916,3.399,1917,7.859,1918,3.399,1919,4.521,1920,3.399,1921,2.614]],["title/366",[67,2.657]],["content/366",[8,1.059,67,4.111,105,2.419,211,5.337,329,3.994,338,3.917,417,2.64,539,3.534,563,4.836,579,3.105,1086,4.485,1167,4.485,1241,6.222,1874,5.111,1880,5.469,1922,5.337]],["title/367",[1736,4.153]],["content/367",[22,2.69,35,2.142,47,2.091,67,2.138,105,1.323,111,1.437,112,1.211,118,1.639,200,3.566,209,1.89,210,3.843,282,2.919,329,2.185,338,2.142,411,1.68,417,2.726,442,1.764,483,1.979,495,1.775,531,2.39,547,2.279,579,2.624,637,1.948,642,2.602,649,3.784,859,1.602,865,2.163,920,3.273,966,2.561,981,2.561,986,3.784,1086,3.79,1167,2.453,1241,3.403,1367,2.487,1497,3.403,1517,3.566,1572,3.784,1736,5.472,1769,3.165,1874,5.277,1922,5.511,1923,4.89,1924,4.621,1925,4.115,1926,4.115,1927,4.115,1928,4.115,1929,3.273,1930,3.273,1931,3.784,1932,3.784,1933,4.115,1934,3.165,1935,4.115,1936,4.115]],["title/368",[495,3.408]],["content/368",[53,2.356,111,2.705,112,2.28,239,1.692,495,4.753,579,3.196,981,4.821,1713,5.159,1910,8.474,1937,7.664,1938,8.241,1939,7.243]],["title/369",[495,2.695,1713,4.161]],["content/369",[5,2.297,8,1.353,67,1.44,100,2.149,111,1.496,112,1.261,156,1.686,190,2.168,205,2.077,270,2.321,411,0.926,474,1.847,495,4.698,539,2.012,540,2.149,617,2.946,624,3.898,637,3.771,1078,1.996,1086,2.553,1167,2.553,1217,1.925,1444,2.321,1467,7.733,1611,2.06,1713,5.305,1717,3.113,1866,4.547,1910,3.294,1937,7.398,1938,3.542,1939,3.113,1940,3.938,1941,3.197,1942,6.556,1943,4.283,1944,8.924,1945,3.938,1946,2.909,1947,5.681,1948,4.283]],["title/370",[495,2.695,1939,4.54]],["content/370",[16,0.832,110,2.384,111,2.09,112,1.762,190,3.03,367,3.521,411,1.295,495,4.757,539,2.812,581,3.568,624,2.426,637,2.834,875,2.856,1014,3.67,1086,3.568,1167,3.568,1176,3.987,1444,3.244,1713,5.582,1874,4.066,1910,4.603,1937,6.445,1939,7.029,1940,5.504,1941,4.468,1947,5.187,1949,4.603,1950,5.985,1951,5.504,1952,5.187,1953,5.504]],["title/371",[1167,4.71]],["content/371",[67,2.394,111,2.486,112,2.095,156,2.802,338,3.705,380,4.5,411,1.539,495,4.068,531,4.133,671,3.67,966,4.43,981,4.43,1095,3.67,1167,5.621,1367,4.302,1874,4.834,1880,5.173,1954,7.117,1955,9.43,1956,6.168,1957,7.117,1958,7.117]],["title/372",[749,4.332,1938,5.166]],["content/372",[8,1.425,624,4.104,1959,6.509]],["title/350",[111,1.538,112,1.296,190,2.229,1217,1.979]],["content/350",[110,3.745,190,4.761,1012,5.208,1156,5.162,1217,4.226,1218,5.394]],["title/351",[917,3.674,1085,3.723]],["content/351",[16,1.585,112,2.634,156,2.592,180,3.363,190,3.333,270,3.568,397,3.925,417,3.141,462,2.859,545,2.918,917,5.981,1085,3.925,1095,4.615,1156,4.67,1217,2.959,1736,4.704,1821,4.67,1960,6.505]],["title/352",[5,2.77,205,2.505,1217,2.321]],["content/352",[5,5.522,8,1.039,16,0.697,22,3.123,190,2.54,205,2.433,411,1.085,442,2.15,464,2.877,495,3.185,597,3.699,624,2.033,647,2.81,679,1.953,702,3.558,749,3.479,917,4.342,1128,2.663,1156,2.304,1217,3.936,1291,3.281,1476,4.149,1557,3.745,1706,3.172,1745,3.745,1853,4.347,1938,4.149,1961,4.613,1962,5.017,1963,5.017,1964,6.788,1965,5.017,1966,5.017,1967,5.017,1968,4.347,1969,5.017,1970,5.017,1971,5.017,1972,6.397,1973,5.017,1974,5.017]],["title/353",[16,0.718,291,1.877,673,2.465]],["content/353",[3,2.846,8,1.261,16,1.112,22,1.827,53,2.006,59,4.484,62,1.644,72,1.236,110,3.569,111,1.508,112,2.842,114,1.927,180,2.206,190,2.186,191,5.2,290,1.74,291,2.397,342,3.31,411,0.934,434,2.326,483,2.077,539,2.028,546,2.391,615,1.782,624,2.674,642,2.73,848,1.804,877,2.476,908,2.775,1012,2.391,1068,1.636,1086,2.574,1217,3.597,1556,2.876,1640,3.434,1975,4.318,1976,2.365,1977,6.597,1978,3.97,1979,6.597,1980,4.318,1981,3.742,1982,4.318,1983,4.318]],["title/354",[16,0.612,417,1.545,1736,2.314,1960,3.2]],["content/354",[8,1.395,16,1.067,53,1.229,62,2.017,63,1.446,67,1.359,72,1.516,80,2.046,96,0.863,109,3.902,110,1.609,111,0.825,112,0.695,114,1.803,118,0.941,120,1.743,125,2.729,144,4.447,204,2.555,226,3.203,270,2.87,327,1.408,358,2.598,365,3.505,407,1.294,411,0.511,415,1.28,417,3.287,450,1.767,528,1.879,543,1.448,579,1.668,619,2.29,647,1.323,692,3.954,857,1.267,859,0.92,907,1.717,975,2.318,1021,1.717,1030,1.408,1078,1.101,1093,1.339,1365,1.954,1466,1.545,1547,4.68,1685,4.447,1736,3.295,1840,1.717,1880,1.717,1921,1.817,1984,2.362,1985,6.269,1986,4.041,1987,2.362,1988,4.258,1989,6.269,1990,4.447,1991,1.518,1992,1.764,1993,2.362,1994,3.017,1995,2.362,1996,4.041,1997,4.041,1998,2.362,1999,2.362,2000,1.879]],["title/373",[111,1.538,112,1.296,190,2.229,1611,2.118]],["content/373",[6,1.456,7,5.877,8,1.623,16,1.188,22,3.802,47,0.692,53,2.015,69,2.863,96,0.938,110,2.638,112,0.756,114,1.937,156,1.012,180,2.879,190,3.747,210,4.003,270,1.393,411,1.219,417,0.902,450,1.123,483,1.236,523,1.681,531,1.492,617,1.155,624,1.042,637,1.217,642,1.625,671,1.325,905,1.599,914,1.976,1055,2.839,1095,1.325,1156,1.18,1187,1.976,1218,1.474,1365,2.125,1367,1.553,1611,4.789,1645,2.363,1736,2.282,1825,5.35,1829,1.976,1874,1.746,1897,7.863,1956,2.227,1960,1.868,1976,1.408,1991,1.652,2001,5.269,2002,2.363,2003,4.341,2004,4.341,2005,4.341,2006,4.341,2007,2.363,2008,2.125,2009,2.044,2010,2.57,2011,2.227,2012,2.57,2013,2.363,2014,2.227]],["title/374",[1815,5.367]],["content/374",[5,2.943,6,3.109,7,6.59,8,1.109,16,0.762,22,3.334,69,3.086,96,2.004,190,2.778,210,4.762,365,2.729,396,3.588,450,2.399,495,2.367,539,2.577,617,3.541,622,2.683,637,2.597,1078,2.558,1291,6.029,1620,4.519,1681,4.755,1991,5.064,2001,9.102,2014,4.755,2015,5.487,2016,5.045,2017,5.487]],["title/375",[1611,3.005,1825,4.161]],["content/375",[3,1.863,8,1.126,16,1.517,22,1.827,72,1.888,110,2.627,111,2.304,112,2.356,190,2.186,272,2.013,291,1.569,342,3.31,360,3.052,407,2.365,417,1.515,513,2.824,533,3.97,545,1.913,579,1.782,671,2.226,673,4.276,808,2.73,905,2.687,917,2.54,1012,2.391,1078,2.013,1085,2.574,1095,2.226,1107,2.61,1368,3.063,1451,3.742,1611,4.644,1626,2.73,1736,3.468,1815,4.481,1825,5.332,1829,3.321,1922,3.063,1930,3.434,1960,3.138,2013,3.97,2018,4.318,2019,4.679,2020,4.318,2021,4.318]],["title/376",[450,3.454]],["content/376",[8,1.705,16,0.46,47,0.892,53,1.629,62,1.262,72,0.948,80,2.711,109,2.654,110,3.084,114,2.39,125,0.859,190,1.677,290,1.335,342,1.662,396,2.167,397,1.975,474,2.31,546,1.835,579,2.782,617,2.407,624,2.171,642,2.095,657,2.266,736,1.975,859,1.29,917,1.949,1009,2.548,1012,1.835,1049,1.759,1055,2.167,1291,5.064,1611,4.375,1705,2.548,1825,5.663,1930,2.635,1956,2.871,1991,4.333,1992,3.999,2011,2.871,2014,4.641,2022,3.313,2023,3.313,2024,3.313,2025,3.313,2026,3.313,2027,2.871,2028,3.313,2029,3.313,2030,2.871,2031,7.743,2032,3.313,2033,5.356,2034,3.313,2035,5.356,2036,3.313]],["title/377",[16,0.868,1611,3.005]],["content/377",[8,1.143,16,1.673,112,3.316,122,3.009,125,1.485,190,2.898,417,2.009,545,2.537,579,2.363,671,2.952,905,3.563,917,3.368,1085,3.413,1095,2.952,1107,3.46,1156,4.335,1611,4.54,1626,3.62,1736,4.269,1829,4.403,1922,4.061,1960,4.161,1976,3.136,2019,4.061]],["title/378",[450,3.454]],["content/378",[3,2.011,8,1.573,16,1.387,62,1.775,67,1.568,72,2.001,112,2.058,114,3.119,125,1.813,204,2.947,357,3.233,360,2.157,411,1.008,434,1.644,526,3.708,851,2.858,873,2.582,1051,5.376,1093,2.642,1156,3.21,1291,5.485,1611,4.034,1706,2.947,1731,4.493,1810,3.307,1874,3.166,1976,4.595,1991,2.996,2001,3.708,2037,4.662,2038,4.662,2039,4.662,2040,4.287,2041,4.662,2042,4.662,2043,4.662,2044,4.287,2045,4.662,2046,3.855,2047,4.662]],["title/379",[180,3.191,1611,3.005]],["content/379",[8,1.161,16,1.576,112,3.219,180,5.299,190,2.963,417,2.054,545,2.594,579,2.415,671,3.018,905,3.643,917,3.442,1085,3.489,1095,3.018,1107,3.537,1156,4.387,1611,4.595,1626,3.7,1736,4.336,1829,4.501,1922,4.151,1960,4.254,1976,3.206,2019,4.151]],["title/380",[450,3.454]],["content/380",[0,3.87,8,1.429,62,3.039,114,4.533,118,3.178,180,4.077,320,7.338,365,3.969,367,4.694,1291,5.219,1611,3.838,1741,5.42,1976,4.371,1981,6.915,2048,7.98]],["title/381",[1874,4.243,2049,5.744]],["content/381",[8,1.508,16,1.334,180,4.906,338,3.808,411,2.077,434,2.58,1078,3.41,1611,5.156,1825,4.873,1874,7.281,2050,6.727,2051,4.873,2052,7.315,2053,7.315]],["title/382",[111,1.804,112,1.52,450,2.258]],["content/382",[]],["title/383",[1717,4.54,1866,4.332]],["content/383",[16,1.031,80,3.755,86,3.061,112,2.183,114,3.31,407,4.063,417,2.603,430,6.428,434,2.616,514,3.568,624,3.006,654,4.851,859,2.888,1156,3.407,1217,3.334,1717,7.044,1817,5.538,1866,5.145,1976,4.063,2054,7.418,2055,6.821]],["title/384",[550,2.525,648,4.049,2056,3.502,2057,3.2]],["content/384",[8,1.571,16,0.737,35,1.703,62,2.928,63,3.023,72,0.937,86,1.35,109,1.288,111,1.143,112,2.263,125,1.375,209,1.503,226,3.415,269,2.874,270,2.874,286,2.53,290,1.318,372,2.036,407,1.792,417,1.148,481,3.269,613,2.4,617,1.47,624,3.665,1068,1.239,1217,1.47,1611,1.574,1706,2.069,1821,2.321,1876,2.321,1937,6.496,1976,2.904,1988,4.541,1991,2.103,2056,2.603,2058,3.272,2059,6.147,2060,5.302,2061,3.272,2062,5.302,2063,3.009,2064,5.302,2065,3.009,2066,2.835,2067,4.876,2068,3.272,2069,2.835,2070,3.272,2071,3.009,2072,3.272,2073,3.272,2074,3.272,2075,6.147,2076,3.272,2077,3.272,2078,6.685,2079,3.272,2080,3.272]],["title/385",[2056,4.968,2081,6.246]],["content/385",[8,1.565,62,2.333,63,2.192,72,1.753,86,2.527,109,2.411,112,2.507,125,1.588,270,3.319,417,2.149,579,3.514,617,2.752,624,2.482,637,2.899,1100,3.651,1217,3.827,1620,3.513,1976,3.355,2056,4.871,2069,5.307,2082,5.065,2083,9.79,2084,6.125,2085,6.125,2086,6.125,2087,5.632,2088,6.125,2089,6.125]],["title/386",[998,3.54,1710,4.663]],["content/386",[3,1.438,8,1.601,16,1.08,43,1.531,46,1.159,50,1.458,67,1.121,86,1.376,112,0.981,114,2.402,156,1.313,209,3.109,367,1.961,417,2.376,434,1.898,495,1.438,496,1.936,539,1.566,617,2.419,624,3.457,688,5.649,690,6.367,859,1.298,929,2.365,998,1.889,1030,1.987,1041,2.489,1051,7.381,1068,1.263,1217,1.498,1306,2.564,1388,3.066,1584,1.658,1611,1.604,1710,7.456,1937,4.14,1939,2.423,1952,2.889,1976,2.949,2040,4.95,2090,3.334,2091,3.334,2092,3.334,2093,3.334,2094,5.383,2095,5.383,2096,3.334,2097,5.383,2098,3.334,2099,3.334,2100,5.383,2101,5.383,2102,5.383]],["title/355",[111,1.804,112,1.52,2049,4.75]],["content/355",[86,3.563,96,3.153,156,3.399,360,3.994,434,3.045,546,4.782,975,4.952,2050,7.939,2051,5.751,2103,7.939,2104,7.482,2105,8.634]],["title/387",[111,1.804,112,1.52,450,2.258]],["content/387",[]],["title/388",[109,2.459,2106,6.246]],["content/388",[8,1.704,50,2.741,53,1.907,109,3.408,125,1.626,226,3.203,286,2.992,417,2.2,617,3.89,624,2.541,1068,3.279,1100,3.738,1217,2.818,1611,3.016,1825,4.177,1894,5.186,1976,3.435,1991,4.03,2107,5.186,2108,8.656,2109,7.158,2110,5.434,2111,5.766]],["title/389",[8,0.727,2056,4.108,2112,5.165]],["content/389",[8,1.69,16,1.353,53,1.845,62,2.847,63,2.171,109,3.33,112,1.14,125,1.004,209,1.779,226,3.099,241,2.278,247,3.203,272,1.806,274,1.649,286,2.894,342,1.943,372,2.411,375,3.479,417,1.359,434,1.366,513,2.533,540,1.943,613,1.753,617,2.726,624,2.458,671,1.997,673,1.848,679,1.508,1068,1.467,1217,1.741,1539,2.375,1611,3.595,1737,2.631,1825,2.58,1837,2.892,1856,3.081,1976,2.122,1988,2.631,1991,2.49,1992,2.892,2059,5.577,2063,6.874,2065,3.562,2066,3.357,2067,5.577,2075,3.562,2110,3.357,2113,3.873,2114,3.562]],["title/390",[111,1.804,112,1.52,981,3.215]],["content/390",[111,3.621,112,3.052,239,2.007,274,2.913,434,3.656,439,2.389,613,4.157,909,4.646,913,5.657,981,5.716,1031,3.923,1156,3.141,1164,4.852,1217,3.074,1509,4.257,1547,5.107,1599,3.972,1611,3.29,2001,5.441]],["title/391",[2115,7.901]],["content/391",[8,1.545,16,1.335,53,1.8,190,2.996,269,3.207,290,2.384,407,3.242,423,3.629,449,3.847,450,2.587,597,2.266,613,2.679,615,2.442,617,2.66,624,3.37,936,2.918,1068,2.242,1100,4.956,1156,3.818,1217,4.319,1561,4.302,1728,3.942,1737,4.02,1976,4.554,2116,6.394,2117,5.442]],["title/392",[1611,3.8]],["content/392",[3,2.443,8,1.438,16,1.304,49,2.724,53,1.723,67,1.905,72,1.621,110,2.256,114,4.187,120,2.443,190,2.867,291,2.058,407,3.103,450,2.476,461,3.103,613,2.563,615,2.337,1611,5.196,1737,3.847,1825,3.773,1833,4.017,1866,5.59,1893,6.017,1991,3.64,1992,4.228,2007,7.412,2118,4.908,2119,4.908,2120,5.271]],["title/393",[917,3.674,1085,3.723]],["content/393",[3,1.748,8,1.32,16,1.204,32,1.614,46,1.408,47,1.091,48,2.089,49,3.022,53,1.232,55,4.971,62,1.543,63,1.45,67,2.587,72,1.798,109,2.473,110,1.614,111,2.194,112,2.551,114,1.808,118,2.502,120,1.748,122,3.302,125,1.629,190,2.051,226,3.93,270,2.196,342,3.152,411,0.876,673,2.998,917,3.695,936,1.998,1068,1.535,1085,2.415,1611,3.022,1736,4.044,1737,2.752,1825,4.185,1880,2.945,1988,2.752,1990,4.456,1991,2.604,1992,3.025,2071,5.777,2118,3.511,2119,3.511,2121,4.052,2122,4.052,2123,4.052]],["title/394",[495,3.408]],["content/394",[16,1.126,111,2.83,112,2.385,190,4.102,239,1.77,291,2.944,411,1.753,452,4.346,495,4.424,1056,5.747,1217,3.641,1611,3.897,2030,7.021,2124,7.021,2125,6.445]],["title/395",[2125,6.284]],["content/395",[3,2.029,8,1.613,16,0.978,22,1.99,50,2.056,105,2.711,114,4.177,138,2.003,180,3.595,190,2.381,308,5.115,312,2.16,339,3.023,365,2.339,410,2.974,474,2.029,516,3.898,539,2.209,597,1.801,643,2.192,1611,4.82,2001,7.445,2126,4.703,2127,4.703,2128,4.703,2129,6.485,2130,6.471,2131,4.703,2132,4.703,2133,4.703,2134,6.471,2135,4.703,2136,4.703,2137,4.703,2138,4.325]],["title/396",[2030,6.847]],["content/396",[8,1.14,16,1.425,45,1.738,46,1.246,47,0.964,49,2.744,53,1.09,59,2.007,62,1.365,63,1.283,109,2.797,110,1.427,112,1.055,114,1.599,125,0.929,191,3.63,226,3.63,434,3.119,622,3.961,624,4.156,1217,4.609,1579,2.605,1817,2.675,1866,2.485,1894,4.717,1899,2.964,1976,5.618,1988,2.434,2110,4.943,2111,6.534,2114,5.245,2139,3.584,2140,3.584,2141,8.101,2142,5.704,2143,5.704,2144,5.704,2145,3.295,2146,3.295,2147,5.704,2148,3.584]],["title/404",[111,1.804,112,1.52,1167,3.079]],["content/404",[5,4.106,8,1.315,16,1.064,22,1.701,26,1.174,105,1.293,109,1.583,111,1.404,112,1.838,156,1.583,190,2.036,209,2.868,239,0.879,375,2.306,380,2.542,417,1.411,450,1.758,478,1.934,480,4.16,489,2.852,495,4.453,519,2.157,545,1.782,550,2.306,611,2.679,637,1.904,673,2.98,1030,2.397,1068,1.523,1086,2.397,1147,2.114,1167,2.397,1217,1.807,1229,2.789,1444,2.179,1499,4.331,1556,2.679,1584,3.106,1626,2.542,1713,2.679,1717,2.923,1941,3.002,1947,6.635,2149,3.093,2150,3.698,2151,4.021,2152,7.656,2153,5.412,2154,6.245,2155,6.245,2156,4.021,2157,4.021,2158,4.021,2159,3.325,2160,3.698]],["title/405",[118,3.146]],["content/405",[]],["title/406",[2159,6.534]],["content/406",[8,1.487,69,2.844,118,3.383,209,3.901,424,6.341,579,3.505,597,3.253,1628,6.341,2161,8.494,2162,8.494,2163,7.679]],["title/407",[2164,7.265]],["content/407",[6,4.522,8,1.429,69,2.671,396,5.219,597,3.056,1340,5.66,2165,10.158,2166,6.599,2167,7.338,2168,7.98,2169,9.341,2170,7.98,2171,9.341]],["title/408",[2172,7.901]],["content/408",[8,1.561,69,2.632,118,3.13,209,3.61,401,4.751,597,3.01,961,5.576,1951,7.228,2163,7.313,2173,7.861,2174,8.826,2175,7.861,2176,7.861]],["title/409",[2177,7.901]],["content/409",[8,1.487,69,2.844,209,5.281,401,5.134,597,3.253,961,6.025,2178,8.494,2179,7.811,2180,8.494,2181,8.494]],["title/410",[2182,7.901]],["content/410",[8,1.529,55,4.315,69,2.519,113,5.012,118,2.996,401,4.547,597,2.881,608,5.985,961,5.337,2163,7.899,2183,9.781,2184,9.781,2185,7.524,2186,7.524,2187,6.919]],["title/411",[2188,7.901]],["content/411",[8,1.235,69,2.938,118,3.495,597,3.361,2163,7.836,2187,8.071,2189,8.777,2190,10.781,2191,8.777]],["title/412",[2192,7.901]],["content/412",[8,1.235,69,2.938,118,3.495,597,3.361,2163,7.836,2193,8.777,2194,10.781,2195,8.777,2196,8.777]],["title/413",[1736,4.153]],["content/413",[]],["title/414",[2197,7.901]],["content/414",[8,1.278,69,3.04,1736,5.786,1922,7.807,1934,6.983,2198,8.349,2199,8.349]],["title/415",[2159,6.534]],["content/415",[8,1.195,22,3.594,47,2.286,69,2.844,209,3.901,579,3.505,597,3.253,1736,6.045,1924,6.174,2200,8.494,2201,6.341]],["title/416",[2202,7.901]],["content/416",[8,1.249,22,4.592,47,3.058,69,2.177,531,3.776,597,2.49,917,3.825,1736,5.705,1876,6.295,1923,5.001,1924,6.45,2198,5.979,2199,5.979,2201,6.625,2203,7.69,2204,5.635,2205,6.502]],["title/417",[2206,7.901]],["content/417",[8,1.259,22,4.828,47,2.936,69,2.204,597,2.521,908,6.535,1736,6.329,1923,5.063,1924,6.505,2201,6.682,2203,7.756,2204,5.705]],["title/418",[2207,7.901]],["content/418",[8,1.189,22,4.98,47,2.619,69,2.027,191,3.093,597,2.318,611,4.033,1736,5.114,1923,7.483,1924,7.653,2201,7.86,2203,5.246,2204,7.32,2208,6.054,2209,8.448,2210,8.448]],["title/419",[2211,7.901]],["content/419",[8,1.568,22,3.92,47,2.493,67,2.331,69,2.32,411,1.499,531,4.024,597,2.654,624,2.809,1736,5.856,1907,6.373,1923,5.33,1924,6.734,2201,5.174,2212,6.93,2213,6.93,2214,6.93,2215,6.93]],["title/420",[2216,7.901]],["content/420",[8,1.176,22,4.83,67,2.811,69,2.799,597,3.201,1736,6.001,1924,6.076,2201,7.809,2217,8.36]],["title/421",[2218,7.901]],["content/421",[8,1.059,22,4.598,47,2.925,50,3.289,69,2.519,597,2.881,611,5.012,1049,3.994,1341,5.111,1736,5.712,1923,5.787,1924,7.109,2201,5.617,2219,7.524]],["title/422",[67,2.657]],["content/422",[67,3.906,563,6.386,1880,7.222]],["title/423",[2220,7.901]],["content/423",[8,1.527,67,3.398,69,2.177,417,2.282,449,3.008,490,8.103,579,2.683,597,2.49,617,3.988,657,4.274,1467,9.406,1876,4.612,2221,10.103,2222,6.502,2223,6.502,2224,3.825]],["title/424",[2159,6.534]],["content/424",[8,1.487,47,2.286,67,3.867,69,2.844,209,3.901,597,3.253,617,3.817,619,4.814,2225,8.494,2226,8.494]],["title/425",[2164,7.265]],["content/425",[6,4.389,8,1.402,67,2.605,69,2.593,396,5.065,597,2.966,1340,5.494,2166,9.112,2167,7.122,2169,9.164,2171,9.164,2224,4.556,2227,9.966]],["title/426",[2228,7.901]],["content/426",[6,4.814,8,1.487,67,3.867,69,2.844,396,5.555,597,3.253,1340,6.025,1922,6.025,2229,8.494,2230,8.494]],["title/427",[2231,7.901]],["content/427",[8,1.628,67,3.68,69,2.555,434,2.692,597,2.923,1301,7.019,1946,5.185,2232,7.633,2233,7.633,2234,7.633,2235,7.633,2236,9.872,2237,9.872]],["title/428",[2238,7.901]],["content/428",[8,1.249,33,3.234,67,3.65,69,2.177,411,1.406,417,3.114,434,2.293,531,3.776,579,2.683,597,2.49,624,2.635,752,4.51,822,4.612,1055,4.253,1466,5.804,1895,5.979,1929,5.172,2224,5.943,2239,6.502,2240,6.502,2241,5.635,2242,5.979,2243,6.502,2244,6.502]],["title/429",[2242,7.265]],["content/429",[8,1.389,67,3.891,69,2.555,417,3.465,434,2.692,547,4.227,597,2.923,617,3.43,822,5.414,2224,6.436,2245,7.633,2246,7.633,2247,7.633]],["title/430",[2248,7.901]],["content/430",[8,1.717,67,3.116,69,2.32,118,3.69,597,2.654,1137,4.616,2224,4.076,2249,6.93,2250,6.93,2251,9.265,2252,9.265,2253,6.93,2254,10.245,2255,6.93]],["title/431",[2256,6.847]],["content/431",[]],["title/432",[2257,7.901]],["content/432",[8,1.529,67,2.53,69,2.519,105,2.419,308,5.469,401,5.911,597,2.881,617,3.381,1014,4.613,2129,7.522,2224,4.426,2256,6.52,2258,7.524,2259,5.617,2260,7.524,2261,7.524,2262,7.524]],["title/433",[2263,7.901]],["content/433",[6,4.326,8,1.389,67,2.567,69,2.555,339,4.906,396,4.992,401,5.967,597,2.923,617,4.436,1340,5.414,2129,7.593,2224,4.49,2259,7.37,2264,7.633,2265,7.633]],["title/434",[2266,7.901]],["content/434",[8,1.539,67,1.968,69,1.959,105,1.882,308,4.254,401,4.986,495,2.525,597,2.241,599,2.911,642,3.7,1014,3.588,1240,4.059,1685,4.151,2129,6.344,2224,3.442,2256,5.072,2259,6.159,2267,5.852,2268,5.072,2269,8.249,2270,5.852,2271,9.553,2272,5.852,2273,8.249,2274,5.852,2275,5.852,2276,5.852,2277,5.852,2278,5.852,2279,5.852]],["title/435",[367,4.647]],["content/435",[118,3.679,367,5.435,411,1.998,495,3.986,496,5.365,1026,6.898,1241,7.641,2134,8.496]],["title/436",[2280,7.901]],["content/436",[8,1.106,69,2.632,105,2.527,118,3.13,367,6.527,597,3.01,876,6.364,1896,8.718,1972,6.812,2281,7.861,2282,10.061,2283,7.861]],["title/437",[2284,7.901]],["content/437",[6,4.455,8,1.416,22,3.326,69,2.632,118,3.13,367,6.527,396,5.141,597,3.01,876,6.364,1981,6.812,2285,10.061,2286,7.861]],["title/438",[2287,7.901]],["content/438",[8,1.646,69,2.632,367,4.624,417,2.759,597,3.01,907,5.714,961,5.576,2153,6.812,2163,5.714,2268,6.812,2288,7.861,2289,7.861,2290,7.861,2291,7.861,2292,7.861]],["title/439",[2293,7.901]],["content/439",[8,1.619,22,3.183,32,2.996,69,2.519,118,2.996,367,6.392,417,2.64,597,2.881,2153,6.52,2163,5.469,2268,6.52,2294,7.524,2295,7.524,2296,7.524,2297,7.524,2298,7.524]],["title/440",[2299,7.265]],["content/440",[6,4.663,8,1.457,69,2.755,96,3.005,118,4.125,367,6.667,396,5.382,597,3.151,1340,5.837,2300,8.229,2301,8.229]],["title/441",[290,3.183]],["content/441",[]],["title/442",[2302,7.901]],["content/442",[8,0.95,16,0.938,22,2.857,69,3.048,96,2.466,99,1.859,111,2.358,112,2.68,290,2.721,431,4.14,480,4.498,545,2.992,558,4.081,615,2.787,963,4.79,1012,3.74,1078,4.244,1092,5.041,1539,4.14,1821,4.79,2011,5.852,2303,6.752,2304,9.104,2305,5.041,2306,5.584]],["title/443",[72,2.261]],["content/443",[]],["title/444",[1444,3.385,2307,6.246]],["content/444",[8,1.364,16,1.59,69,3.244,72,2.123,120,3.2,125,3.158,204,4.69,597,2.84,2308,9.691,2309,6.821,2310,6.428]],["title/445",[1444,3.385,2311,6.246]],["content/445",[8,1.074,16,1.665,69,2.555,72,2.185,120,3.293,125,3,545,3.383,597,2.923,643,3.558,1171,5.414,2309,7.019,2312,7.633,2313,7.633]],["title/446",[1444,3.385,2314,6.246]],["content/446",[8,1.215,46,3.709,47,2.872,69,2.89,204,5.458,597,3.306,2315,8.634,2316,8.634,2317,9.814]],["title/447",[2318,7.901]],["content/447",[8,1.347,69,3.205,125,2.483,2319,9.575,2320,9.575,2321,8.297]],["title/448",[1444,3.385,2322,6.246]],["content/448",[8,1.602,16,1.489,69,3.215,114,3.264,125,3.065,417,2.567,597,2.801,1095,3.772,1876,5.189,1960,5.317,1991,4.702,2323,7.315,2324,6.727]],["title/449",[1444,3.385,2325,6.246]],["content/449",[8,1.176,16,1.453,69,2.799,72,2.393,120,3.606,125,3.102,358,5.373,597,3.201,2326,8.36,2327,7.244]],["title/450",[1444,3.385,2328,6.246]],["content/450",[8,1.613,16,1.422,69,3.022,72,1.908,114,2.975,120,2.876,125,2.972,358,4.285,417,2.34,597,2.553,1095,3.438,1148,4.215,1876,6.403,1960,4.846,1991,4.285,2327,5.777,2329,6.667,2330,6.667]],["title/451",[2331,7.901]],["content/451",[8,1.351,16,1.489,35,3.808,69,2.449,125,1.897,342,3.67,365,3.638,597,2.801,637,4.546,1736,3.845,1994,5.461,2119,9.289,2327,6.339,2332,7.315,2333,7.315,2334,7.315,2335,5.189]],["title/452",[1444,3.385,2336,6.246]],["content/452",[8,1.339,16,0.894,22,3.32,47,1.732,55,2.398,60,3.564,62,2.988,63,3.596,67,1.406,68,3.844,69,2.154,72,1.842,120,1.803,125,2.035,158,2.563,268,2.687,290,1.684,360,2.977,411,0.904,452,2.242,473,4.811,597,1.601,615,1.725,617,1.879,865,2.198,873,2.315,1033,2.369,1078,1.949,1413,3.325,1489,6.112,1736,3.383,1988,4.371,1990,4.565,2337,4.181,2338,4.181,2339,4.181,2340,4.181,2341,4.181,2342,3.844,2343,4.181,2344,6.777,2345,3.623,2346,3.844,2347,3.457,2348,3.844]],["title/453",[1444,3.385,2346,5.744]],["content/453",[8,1.123,16,1.411,62,3.039,69,2.671,72,2.908,120,3.442,125,2.898,226,4.077,597,3.056,1489,5.535,2344,6.137,2349,7.98,2350,7.98]],["title/454",[1444,3.385,2347,5.166]],["content/454",[617,4.383,637,4.617,1078,4.546,1990,6.917,2351,8.968]],["title/455",[1444,3.385,2351,5.744]],["content/455",[8,1.49,10,2.424,16,1.184,60,2.652,63,3.789,69,1.603,72,2.042,120,2.066,125,2.449,211,5.059,405,4.15,417,2.503,579,1.976,597,1.834,613,3.228,617,3.83,657,3.018,1489,3.321,1988,4.845,1990,5.059,2224,2.817,2342,4.403,2344,3.683,2352,4.789,2353,7.132,2354,4.789,2355,8.523,2356,4.789,2357,8.523,2358,4.789,2359,4.845]],["title/456",[1444,3.385,2360,6.246]],["content/456",[8,1.421,16,0.991,22,3.018,47,1.289,55,2.747,60,3.95,63,3.38,69,2.388,72,2.042,120,2.066,125,2.21,158,2.936,290,1.929,360,2.216,411,1.036,473,2.936,480,3.19,597,1.834,615,1.976,617,3.205,865,2.517,873,2.652,1078,2.232,1087,2.817,1489,4.947,1736,2.517,1988,5.789,1990,6.046,2344,5.486,2345,4.15,2347,3.96,2361,4.403,2362,4.789,2363,6.559,2364,4.789,2365,4.789,2366,4.789,2367,4.403,2368,4.789]],["title/457",[1444,3.385,2348,5.744]],["content/457",[8,1.461,16,0.878,22,2.674,47,1.099,55,3.625,60,3.5,63,3.369,67,1.373,69,2.588,72,1.809,120,1.762,125,2.005,158,2.504,290,1.645,360,1.889,411,0.883,417,2.713,473,2.504,480,2.72,579,2.608,597,1.564,615,1.685,617,1.835,865,2.146,873,3.5,1078,1.904,1087,2.402,1489,4.383,1736,2.146,1988,6.761,1990,7.061,2344,4.86,2345,5.477,2347,3.377,2361,3.755,2363,5.811,2367,8.003,2369,4.083,2370,4.083,2371,4.083]],["title/458",[440,5.263]],["content/458",[]],["title/459",[2372,7.901]],["content/459",[5,5.23,431,5.979,743,6.917,1905,6.764,2373,8.968]],["title/460",[2373,7.265]],["content/460",[8,1.281,69,2.261,312,4.73,374,4.452,401,6.225,411,1.461,597,2.586,734,7.242,743,6.458,780,5.584,782,5.584,960,5.852,972,7.529,2163,6.618,2374,9.104,2375,6.752,2376,6.752,2377,6.209]],["title/461",[2378,7.901]],["content/461",[5,5.23,431,5.979,743,6.917,1905,6.764,2379,8.968]],["title/462",[2379,7.265]],["content/462",[5,4.154,47,2.682,49,3.725,99,2.133,105,2.49,112,2.933,630,4.112,859,3.88,868,4.897,992,5.261,1025,5.957,1078,3.61,1905,5.372,2305,5.782,2306,6.405,2380,7.122]],["title/463",[2380,7.265]],["content/463",[8,1.32,47,2.525,69,1.896,105,3.473,113,5.369,138,2.412,312,3.701,373,5.369,374,2.769,401,5.671,411,1.225,597,2.169,734,4.505,743,6.656,747,6.666,780,4.684,782,4.684,972,6.666,1358,5.717,2145,5.208,2381,9.383,2382,8.06,2383,5.664]],["title/464",[2384,7.901]],["content/464",[8,1.389,50,3.337,69,2.555,100,3.83,312,5.025,403,4.094,469,5.698,597,2.923,617,3.43,1191,6.312,2324,7.019,2377,7.019,2385,7.633,2386,7.633,2387,7.633,2388,7.633,2389,7.633]],["title/465",[63,2.828]],["content/465",[]],["title/466",[1444,3.385,2390,6.246]],["content/466",[8,1.215,63,3.819,69,2.89,125,3.004,212,5.218,385,6.867,597,3.306,2391,8.634,2392,8.634]],["title/467",[110,3.146]],["content/467",[]],["title/468",[2393,7.901]],["content/468",[6,2.843,8,1.449,16,1.026,69,2.471,86,2.07,110,4.288,111,2.578,112,2.173,118,3.488,120,3.185,209,2.304,226,2.563,329,2.663,372,3.122,396,3.281,402,3.558,452,2.691,495,2.164,523,3.281,540,2.517,556,3.858,597,1.921,624,2.033,750,5.366,1078,2.339,1217,2.254,1611,2.413,1976,4.044,2394,4.613,2395,4.613,2396,4.613,2397,5.017,2398,5.017,2399,5.017,2400,5.017,2401,5.017,2402,5.017,2403,5.017]],["title/469",[2299,7.265]],["content/469",[6,3.512,8,1.496,16,1.193,69,2.074,86,2.557,96,2.263,110,4.235,111,2.998,112,2.527,118,2.468,120,2.673,226,3.166,239,1.354,396,4.053,402,4.395,597,2.373,624,2.511,703,3.694,981,3.857,1217,2.785,1611,2.981,1976,4.703,2394,5.698,2395,5.698,2396,5.698,2404,6.197]],["title/470",[2405,7.901]],["content/470",[]],["title/471",[2406,7.901]],["content/471",[8,1.376,34,4.683,69,2.519,209,4.991,423,5.997,483,3.619,597,2.881,808,4.757,1642,8.358,2407,7.524,2408,7.524,2409,7.524,2410,10.867]],["title/472",[2411,7.901]],["content/472",[8,1.235,69,2.938,209,5.359,419,6.088,423,5.382,597,3.361,1903,9.914,2412,8.777]],["title/473",[2413,7.901]],["content/473",[8,1.443,69,2.712,209,5.168,471,5.883,597,3.103,619,4.592,732,5.043,2414,8.102,2415,8.102,2416,8.102,2417,10.256]],["title/474",[2418,7.901]],["content/474",[8,1.559,69,2.29,209,4.218,417,3.639,483,4.987,597,2.619,1057,7.063,1731,4.396,2138,6.29,2419,6.84,2420,6.84,2421,6.84,2422,6.84,2423,6.84,2424,6.84,2425,6.84,2426,6.84,2427,6.84,2428,6.84]],["title/475",[1784,5.604]],["content/475",[]],["title/476",[1444,3.385,2429,6.246]],["content/476",[476,5.808,816,7.024,2430,9.312]],["title/477",[1444,3.385,2430,5.744]],["content/477",[307,7.642,816,6.891,1934,7.642,2431,9.137]],["title/478",[1444,3.385,2431,5.744]],["content/478",[816,6.891,1876,7.048,2432,8.61,2433,8.61]],["title/479",[1444,3.385,2432,5.413]],["content/479",[8,1.227,16,0.88,34,1.884,69,1.014,96,1.817,99,0.834,110,1.206,111,1.057,112,0.891,118,1.206,138,1.289,181,2.828,198,1.401,239,0.661,269,2.697,271,1.641,290,1.22,307,3.827,343,1.781,368,3.858,375,1.736,411,0.655,417,1.062,419,3.452,426,2.017,431,1.856,432,2.328,433,3.315,435,2.408,445,1.677,476,2.854,481,1.48,495,1.306,514,1.456,579,1.249,581,1.805,597,1.159,599,1.506,623,4.889,624,1.227,637,3,678,2.148,848,1.265,868,1.914,916,1.547,1012,1.677,1014,1.856,1030,1.805,1038,1.781,1056,2.148,1081,1.98,1147,1.591,1466,1.98,1485,2.328,1530,3.958,1575,2.504,1579,2.201,1584,1.506,1597,2.504,1630,2.408,1655,3.199,1686,2.788,1713,2.017,1736,1.591,1784,6.184,1832,1.805,1876,2.148,1934,2.328,2019,2.148,2103,2.784,2116,2.328,2335,2.148,2433,6.36,2434,3.028,2435,4.313,2436,3.028,2437,3.028,2438,4.395,2439,2.624,2440,3.028,2441,3.028,2442,3.028,2443,3.028,2444,2.784,2445,3.028,2446,2.784,2447,3.028,2448,3.028]],["title/480",[1444,3.385,2444,5.744]],["content/480",[8,1.431,33,2.787,67,1.885,69,1.876,118,2.232,138,3.406,307,4.31,368,4.205,419,3.886,476,3.214,540,2.812,597,2.146,600,3.975,623,3.733,624,3.242,1095,2.889,1107,3.387,1191,4.634,1584,4.639,1736,2.945,1784,3.975,1815,3.806,1876,3.975,1934,4.31,2116,4.31,2432,4.856,2433,6.931,2435,4.856,2438,5.548,2449,5.603,2450,5.603,2451,5.603,2452,5.603,2453,5.603,2454,5.603]],["title/481",[112,2.326]],["content/481",[]],["title/482",[1444,3.385,2455,6.246]],["content/482",[5,3.669,22,2.894,34,4.257,50,2.99,67,2.3,69,2.29,111,2.389,112,2.013,205,3.317,417,2.4,495,4.473,579,2.823,597,2.619,622,3.345,637,4.348,1821,4.852,1939,4.972,2087,8.445,2456,6.84,2457,9.184,2458,6.84,2459,9.184]],["title/483",[16,0.868,2460,6.246]],["content/483",[16,1.453,53,3.639,105,2.688,109,3.291,112,2.461,117,4.579,597,3.201,673,3.989,1499,5.798,2069,7.244]],["title/484",[16,0.868,2461,6.246]],["content/484",[16,0.882,35,3.303,105,2.04,111,3.048,112,2.569,114,5.026,118,2.527,158,3.891,286,3.028,329,3.369,365,3.156,367,3.733,411,1.373,419,4.401,450,2.774,531,3.685,597,2.43,673,3.028,849,3.596,975,3.64,1030,3.783,1086,3.783,1499,4.401,1523,4.881,1868,5.835,1994,4.738,2055,5.835,2305,4.738]],["title/485",[16,0.868,2462,6.246]],["content/485",[8,0.975,16,1.287,72,1.984,110,4.437,112,2.04,434,2.444,450,3.03,513,4.532,531,4.024,544,4.532,597,2.654,673,3.307,752,4.807,859,2.698,907,5.037,1499,4.807,1611,3.333,1825,6.171,1930,5.512,1931,6.373,2463,6.93,2464,6.93]],["title/486",[16,0.868,2465,5.744]],["content/486",[16,1.076,62,2.95,125,2.009,209,3.557,226,5.091,417,2.718,452,4.154,597,2.966,622,3.787,673,3.696,1499,5.372,1736,4.071,1837,5.782,1991,6.405,2310,6.712,2466,7.745,2467,7.122]],["title/487",[16,0.868,2468,6.246]],["content/487",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2465,8.805]],["title/488",[16,0.868,2469,5.744]],["content/488",[16,1.137,62,2.204,63,2.072,67,1.947,125,2.123,209,2.658,226,4.851,407,3.171,411,1.252,419,4.014,451,3.932,597,2.216,619,3.28,622,2.83,657,2.449,673,2.762,1367,3.498,1499,4.014,1715,4.604,1736,3.043,1837,4.321,1988,6.45,1990,5.806,1992,6.111,2310,7.093,2467,5.323,2470,8.185,2471,8.185,2472,8.185,2473,5.323]],["title/489",[16,0.868,2474,6.246]],["content/489",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2469,8.805]],["title/490",[16,0.868,2475,5.744]],["content/490",[8,1.404,16,0.747,22,2.274,45,2.606,47,2.686,49,5.091,59,4.348,452,2.883,539,2.525,597,2.058,622,2.628,673,2.565,755,4.992,1068,2.941,1358,3.813,1499,3.728,1736,4.081,1934,4.134,2118,9.173,2317,8.38,2476,5.375,2477,7.763,2478,5.375,2479,5.375,2480,5.375,2481,5.375,2482,4.942]],["title/491",[16,0.868,2483,6.246]],["content/491",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2475,8.805]],["title/492",[16,0.868,2484,6.246]],["content/492",[16,1.372,111,3.448,112,2.906,122,5.189,125,2.838,411,1.651,474,3.293,539,3.586,597,2.923,622,3.732,673,3.642,1156,3.505,1499,5.294,2485,7.633]],["title/493",[16,0.868,2486,5.744]],["content/493",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2486,8.805]],["title/494",[2487,4.477]],["content/494",[]],["title/495",[2488,7.901]],["content/495",[50,3.488,100,5.607,105,3.782,495,3.442,597,3.056,703,4.757,755,5.564,1070,6.599,2489,7.98,2490,7.338,2491,7.338]],["title/496",[2492,7.901]],["content/496",[50,3.488,100,5.607,105,2.566,495,3.442,597,3.056,703,4.757,1070,6.599,1358,7.205,2490,7.338,2491,7.338,2493,7.98,2494,11.174]],["title/397",[111,1.804,112,1.52,1156,2.372]],["content/397",[]],["title/398",[16,0.718,112,1.52,1156,2.372]],["content/398",[3,2.085,8,1.426,16,1.57,67,1.625,86,1.994,110,1.925,112,1.422,122,3.775,125,1.253,156,1.903,190,2.446,286,3.426,411,1.045,417,1.696,531,2.806,546,2.676,622,2.363,624,1.959,671,2.492,736,2.881,848,2.019,917,2.843,1012,4.746,1047,3.844,1049,3.812,1078,2.253,1120,2.676,1156,3.935,1217,2.172,1611,3.454,1737,4.878,1839,3.775,1976,3.934,2104,7.426,2495,6.223]],["title/399",[16,0.533,112,1.129,205,1.86,1156,1.762,1217,1.724]],["content/399",[5,4.29,8,1.431,16,1.495,86,2.312,111,1.957,112,1.649,156,3.149,190,4.049,205,2.717,360,2.593,407,3.07,411,1.212,417,1.966,546,3.103,613,2.536,624,2.271,671,2.889,917,3.296,1012,4.43,1047,4.457,1156,2.573,1217,3.595,1611,3.847,1737,3.806,1961,5.153,1972,6.931,1976,4.382,2104,4.856,2496,7.999]],["title/400",[76,2.125,112,1.129,290,1.546,360,1.775,1156,1.762]],["content/400",[8,0.975,76,3.838,86,2.86,112,2.727,290,3.733,360,3.206,371,4.916,407,3.796,417,2.432,430,6.005,431,4.249,615,2.86,624,2.809,1092,5.174,1156,3.183,1217,3.114,1635,8.519,1727,5.512,1817,7.791,1976,3.796,2497,6.93,2498,6.93]],["title/401",[112,1.296,360,2.037,1100,2.624,1156,2.022]],["content/401",[8,1.853,86,1.469,112,1.048,118,1.417,360,1.647,370,1.994,394,1.929,407,1.95,417,2.482,423,2.182,431,2.182,532,1.647,615,1.469,617,3.626,624,1.443,642,2.25,1068,1.348,1100,3.382,1156,1.635,1206,2.944,1217,1.6,1595,4.513,1727,4.513,1728,4.712,1730,3.273,1818,3.273,1976,1.95,2082,2.944,2107,4.692,2116,2.737,2117,3.273,2174,2.831,2499,5.673,2500,3.559,2501,3.559,2502,3.559,2503,3.559,2504,2.831,2505,3.559,2506,3.559]],["title/402",[16,0.612,112,1.296,180,2.249,1156,2.022]],["content/402",[8,1.445,16,1.311,86,2.363,105,1.841,112,2.391,120,2.47,156,2.254,180,5.919,190,2.898,411,1.757,417,2.009,478,2.754,548,4.403,558,3.46,599,4.04,624,2.32,671,2.952,851,3.51,917,3.368,1047,4.554,1156,2.629,1217,2.573,1611,3.907,1976,4.449,2116,4.403,2507,8.122]],["title/403",[1120,3.46,1156,2.869]],["content/403",[8,1.72,16,1.258,53,1.144,82,2.506,86,3.435,205,1.825,417,3.178,423,3.635,617,3.297,624,4.454,678,2.669,690,2.809,1100,4.373,1120,2.084,1156,3.369,1217,5.036,1556,4.887,1608,2.735,1817,4.426,1976,6.02,2259,2.809,2508,3.763,2509,3.763,2510,3.763]],["title/504",[111,1.804,112,1.52,2511,3.508]],["content/504",[111,3.891,112,3.279,156,2.728,181,3.093,411,1.499,467,3.508,850,5.021,936,4.568,975,3.975,1038,4.076,1804,5.283,2511,6.293,2512,5.731,2513,6.93,2514,6.059]],["title/497",[111,1.538,112,1.296,850,2.386,2511,2.991]],["content/497",[8,1.565,16,1.183,86,2.527,111,2.139,112,1.803,270,3.319,417,2.149,452,3.285,467,3.101,617,2.752,624,3.451,859,2.384,1100,5.076,1156,2.813,1217,3.827,1611,2.946,1866,5.906,1976,5.363,2046,5.065,2254,5.632,2515,4.871,2516,4.71,2517,5.307,2518,7.831,2519,5.632]],["title/498",[112,1.839,1038,3.674]],["content/498",[17,6.025,110,3.383,111,2.967,112,2.5,270,4.604,401,5.134,1038,6.214,1095,4.38,2517,7.361,2520,7.811,2521,7.025,2522,7.811]],["title/499",[467,2.615,1156,2.372,2523,5.165]],["content/499",[111,2.067,112,2.829,398,3.577,411,1.28,427,3.142,452,3.174,467,4.866,495,2.553,615,2.442,678,4.198,720,3.354,857,3.174,1022,3.683,1095,3.052,1156,5.23,1783,5.344,1888,4.707,2000,4.707,2524,6.394,2525,3.577,2526,3.629,2527,4.418,2528,6.043,2529,3.742,2530,5.129,2531,5.898,2532,4.707]],["title/500",[467,2.615,1100,3.079,1156,2.372]],["content/500",[16,1.217,112,2.578,114,2.239,146,3.122,191,2.563,270,4.001,360,2.321,367,2.951,411,1.085,425,4.149,467,3.737,506,3.172,599,2.495,907,3.646,961,3.558,975,2.877,1093,2.843,1095,3.807,1100,5.221,1105,2.99,1153,3.881,1156,4.728,1620,2.877,1821,3.558,1866,3.479,1892,4.613,1893,5.511,2515,3.99,2524,3.858,2525,4.462,2526,4.526,2533,5.511,2534,3.745,2535,3.479,2536,4.613,2537,4.613,2538,5.017,2539,5.017]],["title/501",[16,0.718,467,2.615,1156,2.372]],["content/501",[16,1.427,34,3.563,112,2.391,146,3.563,366,4.061,427,6.151,452,3.071,467,2.898,506,3.62,540,2.873,563,3.68,599,2.848,720,3.245,788,4.554,907,4.161,916,2.925,1049,3.04,1055,3.744,1104,4.554,1156,4.335,1585,5.265,1696,3.971,1769,4.403,2046,4.735,2149,4.403,2529,3.62,2530,4.961,2531,5.761,2534,4.274,2535,3.971]],["title/502",[467,2.615,1156,2.372,1817,3.856]],["content/502",[467,5.691,816,6.522,1100,5.606,1156,5.162,1817,7.021]],["title/503",[180,2.639,467,2.615,1156,2.372]],["content/503",[16,1.372,53,2.322,111,2.666,112,2.247,180,5.043,467,5.539,673,3.642,720,5.595,786,4.613,816,5.294,850,4.137,1156,4.534,1804,3.864,2540,7.019]],["title/505",[111,1.538,112,1.296,1804,2.229,2511,2.991]],["content/505",[16,0.748,26,0.974,45,1.617,46,1.159,47,0.897,59,1.868,72,0.954,99,0.918,109,1.313,110,1.328,111,1.88,112,2.288,117,1.826,125,2.015,148,1.736,198,1.543,199,2.143,204,4.281,239,0.728,274,1.42,282,2.365,398,3.254,407,1.826,411,1.164,441,1.101,467,1.688,474,1.438,489,2.365,503,1.889,514,1.604,543,2.044,563,2.143,630,2.858,673,1.591,720,3.051,752,2.312,775,2.075,786,2.015,817,2.108,857,1.788,865,1.753,936,1.644,1014,2.044,1015,2.044,1077,2.015,1094,2.312,1095,3.491,1156,1.531,1207,2.489,1620,1.912,1724,3.521,1742,2.312,1783,3.46,1800,2.489,1804,5.056,1813,2.489,1821,4.803,1839,1.753,1888,2.652,1893,2.489,2000,5.385,2305,2.489,2446,3.066,2524,4.14,2525,3.254,2526,2.044,2527,2.489,2528,2.423,2540,3.066,2541,2.652,2542,3.066,2543,2.652,2544,2.757,2545,2.652,2546,2.757,2547,2.889,2548,3.334,2549,3.334]],["title/509",[111,1.538,112,1.296,495,1.899,2511,2.991]],["content/509",[8,1.077,16,1.064,46,1.398,67,1.352,69,1.346,86,1.659,105,1.293,110,1.601,111,2.181,112,2.254,156,1.583,411,0.87,417,2.192,467,3.161,481,1.966,486,1.889,495,4.727,550,2.306,624,2.531,637,2.956,720,2.279,859,1.565,1008,2.335,1012,2.227,1022,2.503,1031,2.306,1043,2.465,1095,3.22,1153,3.283,1202,3.198,1217,1.807,1306,5.888,1611,1.934,1783,2.585,1810,2.852,1937,3.093,1939,4.539,1952,3.485,1976,3.421,1978,3.698,2511,2.731,2515,3.198,2516,3.093,2518,3.698,2521,3.325,2524,4.803,2525,3.774,2526,2.465,2527,3.002,2550,4.021,2551,7.656,2552,4.021,2553,4.021]],["title/506",[111,1.34,112,1.129,427,2.037,2511,2.606,2531,2.721]],["content/506",[22,2.297,72,1.554,76,3.007,111,1.896,112,1.598,125,1.408,204,3.433,241,3.194,268,3.49,270,2.943,290,2.188,411,1.175,427,2.883,450,3.419,467,2.749,495,3.954,532,2.512,736,3.237,848,2.269,865,4.111,968,3.042,1120,4.331,1156,2.494,1469,4.319,1568,4.706,1602,4.319,2524,4.176,2528,5.684,2531,7.539,2532,6.221,2554,4.993,2555,5.43,2556,5.43,2557,4.706,2558,5.43,2559,5.43,2560,5.43]],["title/507",[450,2.731,2557,5.413]],["content/507",[8,1.514,86,2.312,111,1.957,112,2.354,146,3.488,191,2.863,290,2.258,411,1.212,417,1.966,431,3.436,467,2.837,474,2.417,545,2.483,615,2.312,622,2.74,624,2.271,637,2.653,1012,3.103,1014,3.436,1092,4.183,1095,2.889,1100,3.34,1156,2.573,1217,2.518,1367,3.387,1557,4.183,1602,4.457,1880,4.073,1893,5.972,1976,3.07,2511,3.806,2521,4.634,2525,3.387,2526,3.436,2531,5.674,2545,4.457,2557,4.856,2561,5.603]],["title/508",[450,2.731,2554,5.744]],["content/508",[5,3.174,8,1.545,22,2.504,50,2.587,86,2.442,146,5.175,241,4.891,407,3.242,417,2.077,427,3.142,450,2.587,495,3.587,624,2.399,637,2.802,716,3.577,1014,3.629,1095,4.287,1100,3.528,1217,2.66,1734,4.707,1893,4.418,1976,3.242,2515,6.613,2521,4.894,2531,6.818,2562,5.918,2563,5.918,2564,5.918,2565,5.918]],["title/510",[16,0.533,111,1.34,112,1.129,427,2.037,2511,2.606]],["content/510",[10,3.555,16,1.299,112,2.067,270,3.806,342,3.524,427,5.946,440,4.678,902,4.77,975,4.028,1156,3.225,1476,5.808,1507,6.086,1640,5.586,1804,3.555,2046,5.808,2524,8.08,2534,5.243,2566,7.022,2567,7.022,2568,7.022]],["title/511",[53,2.403]],["content/511",[16,1.411,53,3.399,365,3.969,411,1.726,817,5.045,849,4.522,936,3.935,1107,4.823,1815,5.42,2530,6.915,2543,6.347,2569,7.338,2570,7.98,2571,7.338]],["title/512",[110,3.146]],["content/512",[3,3.55,110,4.125,111,3.617,112,3.049,401,4.973,471,4.72,481,4.024,524,5.382,1060,5.707,1994,6.143,2511,5.59,2572,8.229]],["title/513",[114,3.526]],["content/513",[3,3.341,53,2.356,74,5.065,111,2.705,112,2.28,114,3.456,267,3.386,365,3.852,397,4.617,401,4.681,411,1.675,916,3.957,1030,4.617,1095,3.994,1769,5.957,2545,6.16,2573,7.122,2574,5.372,2575,7.745]],["title/514",[80,2.229,96,1.608,411,0.952,1804,2.229]],["content/514",[16,1.284,22,3.909,32,3.679,96,3.374,290,3.722,411,1.998,467,4.677,2531,6.554]],["title/515",[125,1.339,411,1.117,1804,2.615]],["content/515",[22,3.777,113,5.946,125,2.315,365,4.44,411,1.931,424,6.664,467,4.519,1093,5.058,2531,6.332,2576,7.735]],["title/516",[62,2.379,109,2.459]],["content/516",[3,3.2,62,2.825,67,2.495,109,3.815,113,4.941,125,1.924,158,4.548,208,5.705,226,4.951,423,4.548,424,5.538,513,4.851,539,3.485,579,3.061,599,4.82,613,3.357,1837,5.538,1857,5.705,2576,6.428]],["title/517",[63,2.236,109,2.459]],["content/517",[3,2.612,63,3.023,67,2.036,109,3.326,113,5.627,125,2.191,158,3.712,226,3.093,385,6.719,411,1.31,424,6.307,451,4.112,483,2.912,599,4.839,613,2.74,617,2.721,619,3.431,657,2.561,685,5.007,908,3.891,1367,3.659,1745,6.307,1799,5.246,1837,4.52,1988,4.112,1990,4.294,2574,4.199,2576,7.32]],["title/518",[122,4.153]],["content/518",[16,1.254,24,4.977,67,2.242,96,2.435,111,3.83,112,3.228,125,1.729,601,4.729,642,5.707,720,3.778,868,4.215,907,4.846,1012,5.668,1038,3.922,1156,4.145,1626,4.215,1681,5.777,1686,3.735,2577,6.667]],["title/519",[59,4.426]],["content/519",[3,2.185,10,2.564,45,3.605,46,3.061,47,2.612,48,5.004,49,5.197,51,4.778,59,2.837,67,2.5,99,1.395,112,1.491,144,3.593,198,2.343,199,3.255,411,1.096,579,2.09,599,3.698,609,3.061,613,2.292,630,2.689,692,3.781,817,3.202,848,2.116,859,1.972,1012,2.805,1158,3.895,1474,3.374,1620,2.905,1734,4.029,1804,2.564,1821,3.593,1856,4.029,2146,6.836,2511,3.44,2531,3.593,2578,4.029]],["title/520",[470,4.036]],["content/520",[]],["title/521",[394,4.282]],["content/521",[26,2.606,239,1.95,394,4.838,467,5.514,850,4.838,864,6.191,1798,7.1,2579,7.735,2580,7.382]],["title/522",[552,4.917]],["content/522",[8,0.893,108,4.633,397,3.783,456,3.596,469,4.738,500,4.501,547,3.515,552,6.687,554,5.499,557,7.563,560,5.835,850,3.439,864,4.401,979,4.881,1147,3.336,1162,5.499,1603,5.835,1622,7.218,1625,5.047,1707,4.738,2581,4.881,2582,5.248,2583,6.346,2584,5.835,2585,8.025,2586,6.346,2587,6.346]],["title/523",[1839,4.153]],["content/523",[50,2.878,60,3.646,61,3.363,62,2.507,107,4.472,109,2.592,125,2.637,145,4.472,146,4.098,241,3.873,286,3.141,398,3.979,470,3.363,525,4.037,532,3.046,558,3.979,601,4.67,671,3.395,1022,4.098,1839,5.345,1873,7.401,1911,4.472,2546,5.445,2588,6.054,2589,6.584,2590,6.584]],["title/524",[46,2.746]],["content/524",[46,3.453,156,3.912,470,5.076,2544,8.217]],["title/525",[1839,4.153]],["content/525",[26,2.746,62,3.581,115,7.48,239,2.055,530,7.777,1022,5.853,2546,7.777]],["title/526",[8,0.879,426,4.161]],["content/526",[8,1.398,426,6.619,1532,8.217,2591,5.699]],["title/527",[8,0.879,855,3.54]],["content/527",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/528",[8,0.879,581,3.723]],["content/528",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/529",[8,0.727,532,2.39,974,3.754]],["content/529",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/530",[8,0.879,609,3.775]],["content/530",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/531",[8,0.727,111,1.804,112,1.52]],["content/531",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/532",[8,0.879,470,3.191]],["content/532",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/533",[8,0.727,61,2.639,441,1.706]],["content/533",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/534",[8,0.62,441,1.454,462,1.912,492,2.084]],["content/534",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/535",[8,0.62,360,2.037,441,1.454,492,2.084]],["content/535",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/536",[8,0.879,1803,2.912]],["content/536",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/537",[8,0.54,239,0.838,442,1.644,502,1.574,579,1.583]],["content/537",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/538",[8,0.478,62,1.295,239,0.743,442,1.457,474,1.466,502,1.394]],["content/538",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/539",[8,0.879,441,2.063]],["content/539",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/544",[8,0.727,496,2.999,1529,3.32]],["content/544",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/545",[1,4.085,8,0.879]],["content/545",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/546",[8,0.879,19,4.085]],["content/546",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/547",[8,0.879,30,2.258]],["content/547",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/548",[8,0.879,43,2.869]],["content/548",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/549",[8,0.879,12,2.532]],["content/549",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/550",[8,0.879,186,4.085]],["content/550",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/540",[8,0.62,239,0.962,456,2.495,1803,2.052]],["content/540",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/541",[8,0.727,492,2.445,502,2.119]],["content/541",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/542",[8,0.727,492,2.445,508,2.927]],["content/542",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/543",[8,0.727,239,1.128,441,1.706]],["content/543",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/551",[8,0.879,508,3.54]],["content/551",[8,1.533,508,6.173,624,3.618,1803,4.161,2595,8.208,2596,7.382,2597,6.332,2598,8.208]],["title/552",[8,0.62,624,1.784,1803,2.052,2597,3.123]],["content/552",[8,1.533,508,6.173,624,3.618,1803,4.161,2595,8.208,2596,7.382,2597,6.332,2598,8.208]],["title/553",[8,0.62,502,1.806,624,1.784,2597,3.123]],["content/553",[8,1.235,156,3.456,442,3.762,452,4.708,470,4.484,502,4.422,545,3.89,624,3.557,2597,6.226,2599,7.606]],["title/581",[2600,5.367]],["content/581",[239,1.876,436,4.298,464,3.554,466,4.929,496,3.598,503,3.512,536,4.626,537,4.128,562,4.395,859,2.412,871,4.504,968,3.471,988,4.209,1024,3.918,1026,4.626,1093,3.512,1584,3.082,1599,3.598,1607,4.053,1675,3.799,1783,3.983,1827,4.626,1877,4.626,2579,5.37,2600,5.831,2601,5.37,2602,5.125,2603,6.197,2604,5.698,2605,5.698,2606,4.626,2607,5.37,2608,5.125,2609,6.197]],["title/582",[2600,5.367]],["content/582",[239,1.514,370,3.882,380,4.382,399,5.512,400,6.373,401,4.188,450,3.03,478,3.333,489,4.916,496,4.024,499,6.005,500,4.916,563,4.454,850,3.756,859,2.698,1068,2.625,1623,4.807,1801,6.005,1874,4.707,1877,5.174,2533,5.174,2582,5.731,2600,4.707,2610,6.93,2611,6.005,2612,6.373,2613,6.93]],["title/583",[2614,7.901]],["content/583",[10,3.088,30,1.411,35,2.031,114,1.741,147,2.65,197,1.536,268,2.508,290,1.572,291,1.418,411,1.625,445,2.161,449,1.805,453,3.227,479,3.227,646,3.381,719,3.104,877,2.238,916,3.116,981,2.429,1024,2.467,1037,3.381,1104,3.104,1158,3.001,1176,2.599,1207,2.913,1402,2.706,1449,2.65,1470,3.227,1561,2.836,1584,4.583,1599,3.542,1614,3.104,1707,2.913,1800,2.913,1815,2.65,1819,3.227,1833,2.768,1853,3.381,1929,3.104,2516,3.001,2527,2.913,2579,5.286,2600,4.144,2605,5.61,2608,7.023,2611,3.381,2615,3.588,2616,3.227,2617,3.588,2618,3.902,2619,3.588,2620,3.902,2621,3.588,2622,7.359,2623,3.902,2624,5.61,2625,6.1,2626,3.902,2627,3.902,2628,3.902,2629,3.902,2630,3.902,2631,3.902,2632,3.902,2633,3.902,2634,3.902]],["title/584",[2607,6.847]],["content/584",[110,3.505,146,3.998,411,1.389,486,3.017,496,3.73,519,3.445,859,2.501,875,3.065,989,3.938,1095,3.312,1509,3.998,1553,4.455,1587,5.109,1866,4.455,1896,9.358,2166,8.302,2607,9.358,2611,5.566,2635,6.423,2636,5.566,2637,6.423,2638,5.907,2639,6.423,2640,6.423]],["title/554",[1803,3.683]],["content/554",[]],["title/555",[291,2.871]],["content/555",[]],["title/556",[205,1.48,239,0.667,439,1.066,1058,2.073,1677,2.524,1804,1.545,2641,1.62]],["content/556",[107,5.77,156,3.344,181,3.791,197,3.344,356,5.063,450,3.713,521,6.341,1694,5.37,1701,5.891,2642,6.533,2643,7.811,2644,8.494,2645,7.811]],["title/557",[584,2.77,905,3.215,2646,4.476]],["content/557",[18,4.098,86,2.717,109,2.592,272,3.069,360,4.141,411,1.424,500,4.67,532,3.046,584,5.852,604,3.167,1093,3.731,1128,3.495,1141,4.566,1174,4.915,1653,6.054,1694,4.163,1707,6.682,1803,3.069,2535,4.566,2641,3.495,2646,5.705,2647,5.705,2648,6.054,2649,7.756,2650,5.237]],["title/558",[117,0.718,125,0.34,239,0.286,286,0.625,411,0.518,451,0.89,508,0.742,563,0.842,584,0.703,599,0.651,859,0.932,1367,0.792,1623,0.908,1803,1.117,1839,0.689,2651,1.135,2652,1.31]],["content/558",[16,0.697,33,2.495,72,1.436,117,4.044,131,2.951,138,2.136,148,2.611,181,4.311,239,1.096,286,2.394,411,1.597,441,2.893,450,2.193,470,2.563,508,2.843,520,2.843,545,2.223,584,2.691,630,2.663,847,4.083,865,2.637,876,2.877,1217,2.254,1623,3.479,1675,3.076,1803,3.441,1804,2.54,1839,3.881,1921,3.858,2051,3.342,2125,3.99,2166,4.149,2335,5.237,2544,4.149,2641,3.919,2651,6.397,2653,3.745,2654,4.613,2655,4.149,2656,4.613,2657,4.347,2658,5.017]],["title/559",[62,1.461,239,0.838,442,1.644,474,1.655,502,1.574]],["content/559",[]],["title/560",[291,2.871]],["content/560",[]],["title/561",[62,1.461,239,0.838,442,1.644,474,1.655,502,1.574]],["content/561",[16,0.938,62,2.572,109,2.659,121,4.081,290,3.668,410,4.269,411,1.461,441,2.23,444,5.041,492,3.197,502,2.77,543,4.14,976,4.34,992,4.587,1056,4.79,1161,4.498,1686,3.782,1839,4.786,2659,6.209,2660,7.89,2661,5.852,2662,5.852,2663,5.852,2664,6.752,2665,4.908,2666,5.193]],["title/562",[62,1.295,239,0.743,442,1.457,462,1.476,474,1.466,502,1.394]],["content/562",[8,1.398,462,4.315,502,4.075,2667,9.936]],["title/563",[290,2.081,954,3.378,2662,4.476]],["content/563",[361,5.329,579,4.1,2082,8.217,2663,8.61]],["title/564",[62,1.677,273,2.933,439,1.538,502,1.806]],["content/564",[34,5.373,148,5.556,411,1.867,415,4.679,439,3.015,483,4.153,1078,4.975,2668,7.939,2669,6.64,2670,7.482]],["title/565",[108,1.47,239,0.605,439,0.967,440,1.844,466,2.202,502,1.136,604,1.332,726,1.964]],["content/565",[46,1.398,49,4.152,62,1.531,72,2.471,108,4.065,109,3.398,110,1.601,112,2.751,122,2.114,239,0.879,274,1.712,290,3.085,312,1.847,411,0.87,415,3.384,431,2.465,442,1.723,452,2.157,457,2.585,474,2.694,477,2.335,502,2.561,514,3.004,543,3.829,637,1.904,679,1.565,720,3.539,736,2.397,755,2.203,848,1.68,859,1.565,863,2.852,989,2.465,1078,1.875,1161,4.16,1449,2.731,1491,3.002,1508,3.485,1686,3.498,1815,2.731,1839,2.114,2528,2.923,2541,3.198,2671,3.698,2672,3.325,2673,3.698,2674,5.2,2675,6.274,2676,3.093,2677,3.198,2678,2.923,2679,3.485]],["title/566",[53,0.928,108,1.62,239,0.667,439,1.066,440,2.033,502,1.252,726,2.165]],["content/566",[62,3.932,502,4.235]],["title/567",[148,1.589,239,0.667,411,0.66,439,1.066,440,2.033,502,1.252,1218,1.75]],["content/567",[26,2.366,62,3.086,109,4.038,148,5.339,239,1.77,502,3.323,905,5.043,1839,4.259,2655,8.482,2671,7.451,2673,7.451,2677,6.445,2680,8.102]],["title/568",[125,1.112,239,0.554,441,0.837,470,1.294,497,1.657,857,1.359,1537,1.688,1724,1.657]],["content/568",[26,2.441,86,3.45,398,5.052,441,2.761,462,3.63,497,5.467,877,5.999,2514,6.841,2525,5.052,2681,8.36,2682,8.36,2683,6.913]],["title/569",[2684,6.076]],["content/569",[]],["title/570",[26,1.286,156,1.733,239,0.962,2684,3.386]],["content/570",[239,2.055,439,3.284,447,6.835,1721,7.48,2487,5.329,2685,7.48,2686,6.671]],["title/571",[26,1.508,622,2.526,2684,3.972]],["content/571",[8,1.14,26,2.995,563,5.208,622,5.015,817,5.123,909,6.967,975,4.647,1949,7.888,2684,6.232,2687,6.445,2688,8.102,2689,8.102]],["title/572",[552,3.888,2684,4.804]],["content/572",[8,1.215,191,4.411,441,2.851,552,5.373,563,5.549,817,5.458,975,4.952,1634,5.549,2684,8.208,2687,6.867,2690,8.634]],["title/573",[443,3.191,1599,3.627]],["content/573",[]],["title/574",[16,0.424,27,2.347,109,1.201,1128,1.62,1630,2.427,2691,2.645,2692,2.645]],["content/574",[156,3.19,239,1.77,441,2.676,488,3.45,502,3.323,624,3.284,1128,4.302,1638,6.049,2526,4.968,2660,7.021,2665,7.455,2666,6.232,2693,7.451,2694,7.451,2695,7.451]],["title/575",[63,1.373,125,0.995,1023,3.325,1706,2.426,1724,2.509]],["content/575",[17,6.025,63,3.04,125,2.982,417,2.981,450,3.713,617,3.817,1021,6.174,1078,3.96,1466,5.555,1724,5.555,2696,7.811]],["title/576",[604,2.484,857,2.77,2697,4.271]],["content/576",[16,0.747,109,4.477,198,2.487,290,2.166,394,4.207,411,1.163,434,2.738,441,1.775,450,2.35,474,3.349,502,2.205,545,2.382,546,2.977,547,5.047,647,3.011,848,2.246,857,2.883,1062,3.455,1218,3.083,1367,3.248,1553,3.728,1556,3.58,1639,3.907,1657,4.658,1839,2.825,1847,4.134,1855,4.942,1930,4.275,1959,3.455,2697,4.445,2698,4.658,2699,4.445,2700,5.375,2701,4.942,2702,4.013,2703,6.42,2704,5.375]],["title/577",[27,3.386,519,2.361,532,2.037,1447,3.641]],["content/577",[156,3.24,197,3.24,198,3.807,394,4.46,488,4.41,519,4.413,524,5.382,532,3.807,902,5.59,1030,4.905,1367,4.973,1696,5.707,1827,6.143,1939,5.981]],["title/578",[1162,6.847]],["content/578",[]],["title/579",[239,0.605,411,0.599,434,0.976,488,1.179,502,1.136,532,1.281,859,1.078,985,1.311]],["content/579",[26,2.914,72,2.222,98,3.248,105,2.93,108,4.121,109,2.116,111,1.877,112,1.582,144,3.813,180,2.746,197,2.116,270,4.939,411,1.971,434,1.895,439,3.183,462,2.334,488,2.289,502,2.205,520,3.046,525,3.295,532,3.592,848,2.246,859,2.092,976,3.455,985,2.544,1031,3.083,1043,3.295,1101,3.515,1120,2.977,1161,3.58,1363,4.134,1686,3.011,1882,4.134,2125,4.275,2705,3.651]],["title/580",[26,0.891,411,0.66,441,1.008,470,1.559,1724,1.996,2706,2.806,2707,2.524]],["content/580",[26,2.136,35,3.808,196,4.303,415,3.964,441,3.54,442,3.135,470,4.906,630,3.884,870,6.339,1341,4.969,1553,5.073,1724,4.784,2707,6.049,2708,6.727,2709,8.83,2710,6.727,2711,5.818,2712,5.317,2713,6.727]],["title/591",[239,0.962,442,1.887,502,1.806,579,1.817]],["content/591",[]],["title/592",[291,2.871]],["content/592",[]],["title/593",[239,0.962,442,1.887,452,2.361,502,1.806]],["content/593",[0,1.825,16,0.523,26,1.099,62,1.433,63,1.347,72,1.077,98,2.274,108,3.148,109,1.481,112,1.108,115,2.993,213,2.418,239,1.819,274,3.124,290,1.516,312,1.728,341,2.274,360,1.741,415,3.213,427,1.998,439,2.907,442,2.541,444,2.809,445,2.084,447,2.735,452,3.18,457,4.715,476,2.158,492,1.781,495,1.623,502,3.415,525,2.307,537,2.506,572,2.809,679,1.465,848,2.477,976,2.418,985,2.807,1115,2.158,1119,4.426,1161,2.506,1363,2.894,1539,2.307,1686,2.108,1812,3.112,1882,2.894,1905,2.61,2016,3.46,2027,3.261,2125,2.993,2606,2.809,2666,2.894,2669,2.894,2674,2.556,2714,3.763,2715,2.993,2716,3.261,2717,2.993,2718,3.261,2719,3.763,2720,3.763,2721,3.763,2722,3.763,2723,2.556,2724,3.261,2725,3.46,2726,3.763,2727,3.261,2728,3.46,2729,3.763,2730,3.763]],["title/594",[8,0.62,239,0.962,462,1.912,502,1.806]],["content/594",[8,1.398,462,4.315,502,4.075,2731,9.137]],["title/595",[62,1.677,273,2.933,439,1.538,502,1.806]],["content/595",[34,5.373,148,5.556,411,1.867,415,4.679,439,3.015,483,4.153,1078,4.975,2668,7.939,2669,6.64,2670,7.482]],["title/596",[239,0.962,439,1.538,486,2.068,502,1.806]],["content/596",[239,2.263,415,4.46,439,3.617,447,5.981,486,3.866,502,4.248,545,3.647,572,6.143,1721,6.545,2487,4.663,2685,6.545,2686,5.837]],["title/597",[156,1.51,239,0.838,458,2.721,461,2.102,502,1.574]],["content/597",[137,4.933,239,1.856,411,1.837,459,6.174,488,3.617,502,3.484,998,4.814,1509,5.287,2599,7.361,2686,6.025,2732,7.025,2733,7.025,2734,7.025]],["title/598",[441,2.063,2487,3.54]],["content/598",[26,1.853,63,2.271,111,2.216,112,1.868,124,5.351,267,2.774,269,3.439,286,3.028,439,2.216,441,3.294,447,6.344,448,4.738,488,2.702,985,3.004,1012,3.515,1509,3.95,1721,6.942,2487,6.088,2685,6.942,2686,7.076,2705,4.31,2715,5.047,2735,6.346]],["title/599",[62,1.967,1741,3.508,2547,4.476]],["content/599",[0,4.119,62,3.235,180,4.34,197,3.344,239,1.856,289,4.872,411,1.837,464,4.872,572,6.341,1739,7.361,1741,5.77,2736,8.494,2737,8.494]],["title/600",[290,2.081,954,3.378,2662,4.476]],["content/600",[361,5.329,579,4.1,2082,8.217,2663,8.61]],["title/601",[47,1.681,1515,3.949]],["content/601",[]],["title/602",[18,1.723,112,0.815,290,1.115,312,1.271,492,1.311,502,1.136,2674,1.881,2723,1.881]],["content/602",[49,2.981,53,1.885,108,4.558,112,2.9,272,2.889,274,3.656,290,3.459,312,2.846,407,3.394,411,1.34,457,5.518,492,2.933,502,2.542,1049,3.29,1118,4.626,1119,6.409,1161,4.128,1449,4.209,1686,3.471,1793,4.929,1839,3.257,2674,5.831,2675,4.504,2723,4.209,2724,5.37,2738,5.698,2739,5.37,2740,6.197]],["title/603",[72,1.098,98,2.319,338,1.997,492,1.816,1115,2.201]],["content/603",[16,0.903,72,2.54,98,3.93,99,1.79,105,2.091,274,2.769,439,3.099,478,3.128,492,4.201,516,3.601,604,3.128,623,5.911,848,2.717,865,3.418,985,3.078,1115,3.73,1161,5.911,1350,4.417,1673,4.047,1686,3.642,1760,5.378,1941,4.854,2487,3.685,2606,4.854,2741,5.635,2742,5.635,2743,5.635]],["title/604",[492,2.084,502,1.806,1086,2.624,1479,3.2]],["content/604",[63,3.073,108,3.29,109,2.44,125,1.607,137,3.598,148,3.226,226,3.166,339,3.983,441,2.046,443,3.166,492,2.933,502,4.041,679,2.412,749,5.954,1048,5.518,1068,2.347,1086,5.118,1136,4.298,1218,3.554,1479,4.504,1509,3.857,1839,3.257,2678,4.504,2744,5.37,2745,4.626,2746,5.698,2747,5.698,2748,5.37,2749,5.698,2750,5.37]],["title/605",[360,2.89,502,2.562]],["content/605",[]],["title/606",[239,0.838,338,1.997,502,1.574,604,1.845,2487,2.174]],["content/606",[16,0.841,49,2.912,63,2.167,72,2.418,98,3.659,109,2.384,111,2.114,112,1.782,122,3.182,239,1.846,274,2.578,293,3.959,312,2.78,411,1.31,434,2.135,439,2.114,441,1.999,481,2.96,492,2.866,502,2.483,516,3.353,577,3.891,604,4.063,610,3.891,1033,3.431,1115,3.472,1161,4.033,1368,4.294,1686,3.391,1804,3.065,1839,4.44,2487,3.431,2674,4.112,2723,4.112]],["title/607",[239,0.962,502,1.806,604,2.118,2487,2.495]],["content/607",[10,3.101,49,2.946,100,3.073,109,2.411,112,1.803,197,2.411,239,1.338,272,2.855,274,2.608,411,1.325,439,2.974,502,2.512,577,3.937,610,3.937,786,3.702,816,4.248,854,3.603,859,2.384,875,2.922,936,3.02,1066,3.937,1217,2.752,1466,4.005,1504,4.08,1584,3.046,1793,4.871,1810,4.344,1839,4.476,2129,4.71,2335,4.344,2487,4.826,2675,4.452,2723,4.16,2751,5.632]],["title/608",[441,2.609]],["content/608",[]],["title/609",[26,0.891,411,0.66,441,1.008,470,1.559,1724,1.996,2706,2.806,2707,2.524]],["content/609",[26,2.136,35,3.808,196,4.303,415,3.964,441,3.54,442,3.135,470,4.906,630,3.884,870,6.339,1341,4.969,1553,5.073,1724,4.784,2707,6.049,2708,6.727,2709,8.83,2710,6.727,2711,5.818,2712,5.317,2713,6.727]],["title/610",[239,0.743,441,1.123,520,1.926,2702,2.538,2752,3.126,2753,3.126]],["content/610",[0,3.649,75,5.337,190,3.809,191,3.844,239,1.644,266,5.787,394,4.078,441,2.485,496,4.369,520,5.543,615,3.105,678,5.337,1031,4.315,1207,5.617,2000,5.985,2753,8.994,2754,8.994,2755,7.524]],["title/611",[470,4.036]],["content/611",[]],["title/612",[191,1.193,441,0.771,447,1.697,470,1.193,1634,1.501,2487,1.323,2717,1.857,2756,2.147,2757,2.147,2758,2.147]],["content/612",[26,1.902,72,2.743,111,1.484,125,2.055,191,2.17,206,5.76,212,5.371,411,0.919,441,1.403,447,3.088,470,4.049,506,2.686,615,1.753,622,2.077,679,1.654,1022,2.644,1068,1.609,1094,6.163,1694,2.686,1949,7.778,2000,3.379,2438,7.302,2487,2.407,2543,6.303,2651,3.681,2669,3.267,2715,3.379,2717,3.379,2756,3.906,2757,3.906,2758,3.906,2759,3.681,2760,5.916,2761,4.248,2762,4.248,2763,4.248,2764,4.248,2765,4.248,2766,4.248,2767,4.248,2768,4.248,2769,4.248,2770,4.248]],["title/613",[62,1.295,269,1.842,2669,2.614,2715,2.704,2716,2.946,2771,2.946]],["content/613",[8,1.076,26,2.234,62,3.765,112,2.652,125,2.336,191,2.691,272,2.455,411,1.139,441,1.739,457,3.386,478,2.534,520,2.985,556,4.051,703,3.14,936,2.597,985,2.494,1068,1.995,1161,3.509,1368,3.736,1921,4.051,2669,4.051,2715,6.085,2716,4.565,2717,4.19,2718,4.565,2771,4.565,2772,4.844,2773,7.65,2774,4.844,2775,5.267,2776,5.267,2777,4.19,2778,4.844,2779,7.65,2780,5.267,2781,5.267,2782,5.267,2783,5.267,2784,3.736]],["title/614",[443,3.191,1599,3.627]],["content/614",[]],["title/615",[16,0.424,27,2.347,109,1.201,1128,1.62,1630,2.427,2691,2.645,2692,2.645]],["content/615",[156,3.19,239,1.77,441,2.676,488,3.45,502,3.323,624,3.284,1128,4.302,1638,6.049,2526,4.968,2660,7.021,2665,7.455,2666,6.232,2693,7.451,2694,7.451,2695,7.451]],["title/616",[63,1.373,125,0.995,1023,3.325,1706,2.426,1724,2.509]],["content/616",[17,6.025,63,3.04,125,2.982,417,2.981,450,3.713,617,3.817,1021,6.174,1078,3.96,1466,5.555,1724,5.555,2696,7.811]],["title/617",[27,3.386,519,2.361,532,2.037,1447,3.641]],["content/617",[16,1.161,197,3.291,394,4.53,488,4.861,519,4.483,532,3.868,902,5.678,1030,4.983,1402,5.798,1696,5.798,1827,6.241,2785,8.36]],["title/585",[441,2.609]],["content/585",[]],["title/586",[291,2.871]],["content/586",[]],["title/587",[125,1.142,239,0.962,441,1.454,865,2.314]],["content/587",[16,0.61,63,2.391,67,1.476,110,1.748,120,1.894,125,2.344,181,1.959,239,1.46,269,4.899,338,2.285,398,2.653,401,2.653,417,1.54,427,3.547,439,1.533,441,2.671,483,2.111,488,1.869,514,3.213,531,2.549,574,4.037,579,1.811,582,2.549,611,2.924,650,3.62,679,1.709,680,3.191,847,3.114,859,2.601,877,2.518,916,2.243,985,2.078,1014,2.691,1068,1.663,1202,3.492,1217,1.973,1556,2.924,1839,3.512,1893,3.277,2008,3.63,2051,2.924,2525,4.037,2526,2.691,2529,4.224,2683,3.63,2786,4.037,2787,4.037,2788,4.39,2789,4.037,2790,4.39,2791,4.739,2792,4.037]],["title/588",[239,0.962,439,1.538,441,1.454,859,1.714]],["content/588",[33,2.535,49,3.11,86,1.286,110,1.241,196,1.834,197,2.007,205,2.472,239,1.114,267,1.363,268,2.004,271,4.048,274,1.327,366,2.211,380,1.971,398,1.884,411,0.674,417,1.094,423,1.911,431,1.911,441,1.683,483,1.499,484,2.162,488,2.753,497,2.039,513,3.333,514,3.11,516,1.726,537,2.076,543,1.911,547,1.726,552,1.94,573,2.327,579,1.286,599,1.55,604,1.499,619,1.766,643,3.482,650,3.504,680,2.266,720,1.766,817,1.971,818,2.327,847,2.376,849,2.889,857,1.672,859,1.984,867,2.211,936,1.537,962,2.117,970,1.858,985,1.476,1034,2.479,1038,1.834,1136,2.162,1202,2.479,1213,2.397,1222,4.687,1353,2.162,1532,2.578,1539,1.911,1575,2.578,1626,1.971,1628,2.327,1638,2.327,1688,2.397,1731,2.004,1839,1.639,1840,2.266,2019,2.211,2120,2.039,2259,2.327,2504,2.479,2525,3.081,2529,1.971,2545,2.479,2602,2.578,2641,1.655,2711,2.479,2712,4.7,2784,2.211,2789,2.866,2793,3.117,2794,3.117,2795,2.866,2796,3.117,2797,2.701,2798,4.054,2799,5.603,2800,4.687]],["title/589",[63,1.373,239,0.838,441,1.267,859,1.494,2359,2.606]],["content/589",[16,0.832,62,2.28,63,4.2,123,7.262,197,2.356,205,4.064,206,6.091,207,5.812,239,1.831,266,4.603,271,3.244,417,2.101,441,1.977,483,2.879,550,3.433,579,2.47,619,3.392,859,3.765,877,3.433,1587,4.761,1783,3.847,1857,4.603,2525,5.844,2791,4.246]],["title/590",[239,0.962,441,1.454,451,2.991,859,1.714]],["content/590",[62,2.068,73,3.042,187,3.947,197,2.138,205,3.792,206,5.684,266,4.176,271,2.943,293,3.551,417,1.906,445,4.331,451,7.749,483,2.612,484,3.766,488,2.312,579,3.227,619,3.077,786,3.282,859,3.568,902,3.688,1022,3.38,1105,3.237,1128,2.883,1542,4.706,1587,4.319,1628,4.054,2124,6.777,2504,4.319,2522,4.993,2525,5.539,2529,3.433,2543,4.319,2801,5.43]],["title/618",[239,1.365,438,5.413]],["content/618",[16,1.018,26,2.543,42,3.447,148,2.587,197,1.956,205,2.41,239,1.602,274,2.116,291,1.805,411,1.075,434,2.585,439,2.56,486,2.334,488,2.116,492,2.352,496,2.886,673,2.371,679,2.854,850,2.693,871,3.612,976,3.194,985,4.124,987,4.794,993,5.473,1026,3.71,1240,3.447,1439,3.612,1446,3.093,1590,3.194,1591,3.375,1599,2.886,1655,3.194,1672,3.31,1673,3.093,1686,2.784,1798,3.953,1808,4.57,1809,3.822,1878,3.822,2802,4.969,2803,4.306,2804,4.57,2805,4.306,2806,4.306,2807,4.306,2808,4.11]],["title/619",[2809,6.847]],["content/619",[16,1.055,26,3.054,35,3.954,50,2.28,72,1.493,99,1.436,105,1.677,190,3.845,199,3.352,272,2.431,341,3.152,439,1.821,445,2.888,460,4.796,476,2.991,495,2.25,545,2.311,578,3.198,610,3.352,647,2.921,732,3.246,933,4.148,965,4.519,995,2.857,1005,2.689,1034,4.148,1189,3.068,1197,4.519,1592,3.699,1614,4.148,1673,4.727,1700,4.313,1733,4.796,2150,4.796,2676,4.011,2805,6.582,2810,6.582,2811,5.215,2812,4.519,2813,5.215,2814,5.215,2815,4.796]],["title/620",[2816,6.847]],["content/620",[16,1.228,26,2.181,50,1.363,72,1.851,82,2.076,96,1.138,99,2.268,120,1.345,190,3.273,191,2.604,198,2.358,239,0.681,267,1.363,272,1.453,274,1.327,275,1.689,291,1.852,411,1.781,415,1.689,439,1.089,442,2.184,449,2.358,474,1.345,520,1.766,604,1.499,637,1.476,673,1.487,679,2.517,936,1.537,941,2.076,976,2.004,987,2.039,988,2.117,995,2.792,998,1.766,1005,1.607,1015,1.911,1016,2.076,1033,1.766,1049,1.655,1060,2.162,1068,2.449,1083,3.755,1084,2.266,1106,2.96,1119,2.327,1133,3.276,1441,1.884,1511,2.479,1512,2.076,1527,1.911,1537,2.076,1584,1.55,1590,2.004,1591,2.117,1599,1.81,1655,2.004,1672,2.076,1673,1.94,1680,2.479,1686,2.855,1716,2.211,1737,2.117,1753,2.397,1769,2.397,1789,2.397,1811,2.397,2306,2.578,2810,2.701,2817,3.117,2818,3.117,2819,3.117,2820,3.117,2821,3.117,2822,3.117,2823,2.701,2824,3.117,2825,3.117,2826,2.578,2827,2.866,2828,3.117,2829,3.117,2830,3.117,2831,2.866,2832,2.701]],["title/622",[1672,4.161,1673,3.888]],["content/622",[16,1.147,26,1.083,72,1.062,96,3.016,99,2.477,105,1.193,137,2.154,156,1.461,191,1.895,210,2.242,239,1.281,267,1.622,272,1.729,274,1.58,337,2.696,358,2.384,368,1.95,374,2.867,411,0.802,427,1.969,434,1.308,439,2.047,442,1.59,443,1.895,449,1.716,462,1.611,486,1.743,513,2.426,546,2.055,613,1.679,637,1.756,647,2.078,848,2.449,916,1.895,985,1.756,987,2.426,996,3.215,997,3.215,1016,3.905,1024,2.345,1033,2.102,1038,2.182,1068,1.405,1075,2.631,1106,3.405,1121,3.215,1490,3.068,1515,2.345,1590,3.768,1591,3.982,1655,3.768,1672,3.905,1673,5.141,1686,4.072,1715,4.663,1757,3.411,1857,2.853,1873,3.068,2676,2.853,2692,3.215,2833,3.71,2834,3.71,2835,3.71,2836,3.71,2837,3.71,2838,3.71,2839,3.71]],["title/623",[1655,4.015,1686,3.499]],["content/623",[26,1.23,35,3.371,43,2.974,52,2.862,96,1.539,99,2.983,156,1.659,239,0.921,272,1.964,340,2.334,374,2.061,439,1.472,443,2.153,449,1.95,478,3.114,486,1.98,506,2.664,540,2.114,736,2.512,826,3.352,995,2.308,1078,1.964,1106,2.447,1580,3.485,1584,2.096,1601,3.875,1648,5.15,1655,2.709,1672,2.807,1673,4.908,1675,2.584,1686,2.361,1689,5.355,1742,2.923,1760,3.485,1873,3.485,2516,3.241,2659,3.875,2745,3.146,2748,3.652,2840,3.875,2841,3.652,2842,4.214,2843,4.214,2844,4.214,2845,4.214,2846,4.214,2847,4.214,2848,3.875,2849,3.652,2850,5.355,2851,7.038,2852,4.214,2853,3.875,2854,4.214,2855,3.875,2856,4.214,2857,4.214]],["title/624",[1106,3.627,1590,4.015]],["content/624",[16,1.191,45,2.343,46,2.496,47,1.933,49,2.324,67,2.415,96,1.765,99,3.029,121,4.34,156,1.903,196,2.843,199,3.106,205,2.343,272,2.253,312,2.219,361,2.592,374,3.511,415,2.619,449,2.236,516,3.977,703,2.881,963,3.428,995,2.647,1005,2.492,1068,1.831,1105,2.881,1106,5.509,1121,4.188,1165,5.361,1449,3.282,1518,3.717,1552,3.608,1590,5.508,1592,3.428,1596,3.844,1697,3.996,2051,3.219,2841,6.223,2858,4.833]],["title/625",[1666,6.076]],["content/625",[16,1.368,18,3.012,50,1.279,67,1.628,71,1.57,72,1.771,96,3.954,97,5.718,98,4.812,99,3.236,114,1.306,122,1.538,125,0.759,144,2.076,145,1.988,146,3.012,197,1.152,198,3.968,269,3.353,275,3.353,286,2.309,289,1.679,337,3.518,365,1.456,368,3.252,374,1.431,403,1.57,433,3.224,434,1.707,436,4.986,503,1.659,514,1.408,516,1.621,547,2.68,577,3.111,846,2.076,850,2.623,855,1.659,911,1.7,936,1.443,1049,1.554,1103,2.251,1106,1.7,1112,2.328,1138,3.518,1368,2.076,1565,2.536,1579,2.127,1590,1.881,1655,1.881,1666,2.251,1686,1.639,2482,2.691,2859,2.927,2860,2.927,2861,2.927,2862,2.691,2863,2.691]],["title/621",[121,3.775,338,3.252]],["content/621",[16,1.249,26,1.388,45,1.388,46,2.465,47,2.419,48,1.476,60,1.586,67,0.963,72,0.82,96,2.225,97,2.277,99,1.308,100,1.437,121,4.286,138,1.219,190,1.449,191,1.463,239,0.626,272,3.667,274,1.219,289,1.642,291,1.727,337,2.081,338,3.692,340,3.928,356,1.707,411,1.028,434,1.01,439,1.66,454,1.907,461,4.924,472,1.81,481,1.4,519,1.536,525,1.755,539,2.232,599,2.364,647,1.604,832,2.081,848,2.545,963,2.031,992,1.945,998,1.623,1024,1.81,1068,1.8,1099,1.907,1101,1.872,1105,1.707,1106,2.76,1115,1.642,1128,1.52,1153,1.505,1218,1.642,1359,3.108,1465,2.368,1469,2.277,1500,2.481,1504,1.907,1515,1.81,1588,2.368,1665,2.081,1685,2.031,1697,2.368,1832,1.707,1833,2.031,2002,2.633,2051,1.907,2120,3.108,2535,1.986,2676,2.202,2727,2.481,2807,2.481,2808,2.368,2841,2.481,2864,2.481,2865,2.863,2866,2.633,2867,2.863,2868,2.481,2869,2.633,2870,2.277,2871,2.863,2872,2.202,2873,2.863,2874,2.368,2875,2.633]],["title/631",[854,4.647]],["content/631",[26,2.606,42,6.191,239,1.95,854,5.25,875,4.259,901,6.664,989,5.473,1240,6.191,2672,7.382,2876,7.382]],["title/632",[2672,5.166,2876,5.166]],["content/632",[]],["title/633",[10,2.229,46,1.53,47,1.185,2877,4.403]],["content/633",[10,3.174,16,1.203,42,4.349,46,3.715,47,2.877,50,2.741,72,1.795,120,2.705,125,1.626,239,1.37,312,2.88,342,3.146,357,4.349,411,2.144,442,2.687,474,2.705,673,4.13,852,4.681,854,3.688,1068,2.375,1449,4.259,1527,3.845,1537,4.177,1556,4.177,1675,3.845]],["title/634",[340,3.46,461,3.422]],["content/634",[16,1.095,33,2.729,47,2.872,100,3.953,121,3.316,291,1.993,338,2.856,340,4.364,342,2.753,449,3.645,454,3.655,455,3.271,461,4.316,477,5.851,540,2.753,615,2.264,679,2.136,848,2.292,850,2.974,872,3.271,911,3.186,992,3.727,1043,3.364,1053,4.096,1055,3.588,1095,2.829,1120,3.039,1465,4.538,1859,5.045,2120,3.588,2746,5.045,2876,4.538,2878,5.487,2879,5.487,2880,5.045]],["title/635",[901,5.898]],["content/635",[26,2.078,33,3.54,86,2.937,203,5.474,239,1.555,374,3.48,410,5.962,679,2.771,854,5.547,971,5.886,1055,4.655,1093,4.033,1462,5.661,2580,5.886,2679,6.168,2686,5.049,2712,5.173,2870,5.661,2881,6.168,2882,6.545,2883,7.117,2884,7.117,2885,7.117]],["title/636",[46,2.171,47,1.681]],["content/636",[0,3.317,8,0.962,46,2.377,47,1.841,86,2.823,197,2.693,203,5.261,291,2.485,340,3.788,374,3.345,411,1.48,412,5.504,454,4.556,455,4.077,645,3.972,832,6.675,853,4.646,955,5.657,957,5.927,964,5.441,1068,2.591,1229,6.37,1504,4.556,2886,6.29]],["title/637",[312,3.628]],["content/637",[46,2.578,47,1.996,86,3.061,105,2.385,138,3.159,197,2.921,289,4.255,312,4.45,374,3.627,410,4.69,411,1.605,412,3.938,519,3.978,600,5.262,671,3.825,832,5.392,873,4.108,1089,6.135,2887,6.821,2888,7.418,2889,7.418]],["title/638",[16,0.868,125,1.62]],["content/638",[10,1.426,16,1.24,32,1.122,33,1.401,35,1.467,46,2.44,47,2.098,52,1.914,53,0.857,72,1.342,125,2.022,197,2.371,239,0.616,282,1.998,291,1.024,312,3.581,342,3.523,357,1.954,365,2.332,374,2.945,411,1.821,412,2.489,434,2.476,441,0.93,442,2.009,449,1.303,450,1.232,452,1.511,486,1.323,539,1.323,540,1.413,546,1.56,615,2.485,622,1.377,629,1.527,645,5.182,673,1.344,679,1.097,720,2.657,755,1.543,847,1.313,852,2.103,853,5.296,857,1.511,901,2.103,909,1.914,911,1.636,955,2.33,957,4.063,964,2.241,985,1.334,987,1.842,1009,2.167,1024,1.781,1054,3.326,1060,1.954,1068,1.067,1099,1.877,1120,1.56,1164,1.998,1350,1.914,1387,1.811,1402,1.954,1527,1.727,1537,3.123,1544,4.312,1552,2.103,1701,1.954,1847,2.167,2057,2.048,2597,1.998,2797,2.441,2890,2.591,2891,2.817,2892,6.023,2893,4.689,2894,4.689]],["title/639",[374,3.054,908,4.015]],["content/639",[26,2.48,100,4.262,411,1.837,455,5.063,881,7.361,908,5.46,968,4.758,1206,7.025,1599,4.933,2686,6.025,2895,8.494,2896,8.494,2897,8.494]],["title/626",[471,2.962,472,3.266,2898,5.165]],["content/626",[]],["title/627",[455,3.079,471,2.962,472,3.266]],["content/627",[47,1.492,120,2.392,137,3.22,274,4.747,397,3.305,410,3.505,411,1.199,445,3.071,455,4.732,464,3.18,471,4.553,472,5.863,478,2.667,495,2.392,525,3.4,604,2.667,911,3.22,912,4.397,998,4.499,1086,4.732,1509,3.451,1539,3.4,1675,3.4,2601,4.805,2738,5.098,2849,4.805,2899,5.544,2900,5.544,2901,5.544,2902,5.544,2903,5.544,2904,5.544,2905,5.544,2906,5.544]],["title/628",[239,0.962,455,2.624,471,2.525,472,2.784]],["content/628",[26,1.433,35,1.549,46,1.034,47,1.321,99,2.381,101,2.289,213,3.154,239,0.65,272,1.387,274,1.267,290,1.199,357,2.064,411,1.354,431,3.009,439,1.039,442,1.276,452,1.596,454,1.983,455,5.154,471,4.166,472,4.592,478,1.432,484,2.064,514,3.494,528,4.98,540,2.462,577,3.154,579,1.228,643,1.387,712,6.007,736,3.732,786,1.799,823,2.064,873,2.718,891,2.289,912,1.648,916,2.507,961,2.111,982,2.022,1024,1.882,1055,1.946,1059,2.367,1078,1.387,1152,2.461,1212,2.222,1512,1.983,1515,1.882,1769,2.289,1813,2.222,1832,4.789,1946,2.022,2532,6.391,2578,2.367,2600,2.022,2728,2.737,2850,2.461,2851,4.98,2853,5.757,2872,2.289,2907,2.461,2908,2.976,2909,2.976,2910,2.976,2911,2.976,2912,4.907,2913,2.737,2914,4.512,2915,2.976,2916,2.976,2917,2.579,2918,2.737,2919,2.976,2920,2.737,2921,2.579,2922,2.976,2923,2.579,2924,2.976,2925,2.976]],["title/629",[455,2.287,471,2.201,472,2.426,912,2.125,1166,3.052]],["content/629",[239,1.475,274,2.875,411,1.461,449,3.124,452,3.622,455,4.025,471,3.873,472,5.756,537,4.498,610,4.34,912,3.74,969,4.587,970,4.025,976,5.852,1086,4.025,1129,5.852,1214,4.908,1351,5.852,1355,5.852,1539,4.14,1691,5.852,2224,3.972,2784,4.79,2917,5.852,2926,6.752,2927,6.752,2928,6.752]],["title/630",[239,0.962,1166,3.502,2929,4.403,2930,4.403]],["content/630",[0,1.786,35,1.918,47,0.991,48,1.9,50,1.61,51,2.368,74,2.409,99,1.014,100,1.848,137,4.202,138,1.569,239,1.274,274,1.569,312,1.692,410,2.329,411,0.797,434,1.299,440,5.971,449,3.348,454,5.48,471,2.113,472,2.329,486,1.73,532,2.697,550,2.113,577,2.368,645,2.139,720,2.088,853,2.502,854,2.167,861,4.484,905,2.293,968,2.063,969,2.502,970,2.196,987,2.409,994,2.555,1041,2.75,1049,1.956,1098,2.613,1115,2.113,1164,2.613,1166,7.13,1167,5.343,1168,3.046,1240,2.555,1376,5.052,1438,3.046,1492,2.555,1527,4.436,1592,2.613,1614,2.93,1813,2.75,1830,2.833,2051,2.454,2160,3.387,2777,2.93,2931,3.684,2932,3.684,2933,3.684,2934,3.684,2935,3.192,2936,5.83,2937,3.684,2938,3.684,2939,3.684,2940,3.387,2941,3.684]],["title/640",[985,2.957,1832,3.723]],["content/640",[]],["title/641",[1832,4.71]],["content/641",[16,0.6,26,1.261,45,2.094,48,2.226,72,1.236,99,1.189,239,1.441,267,1.888,272,2.013,274,1.838,341,2.61,356,2.574,442,1.85,445,2.391,474,1.863,492,2.044,525,2.647,536,3.223,580,3.321,615,1.782,624,2.674,679,1.681,702,3.063,720,2.447,788,3.434,851,2.647,863,3.063,873,2.391,968,2.419,976,2.775,985,3.79,1004,3.571,1025,3.321,1049,2.292,1105,2.574,1363,3.321,1489,2.995,1509,2.687,1547,3.223,1555,3.223,1588,3.571,1599,2.507,1608,3.138,1742,2.995,1799,3.742,1832,6.067,1878,3.321,2533,3.223,2535,2.995,2686,3.063,2864,3.742,2942,4.318,2943,4.318,2944,4.318,2945,4.318,2946,4.318,2947,4.318,2948,4.318,2949,4.318,2950,4.318,2951,4.318,2952,3.97,2953,4.318,2954,3.97]],["title/642",[962,4.243,1530,4.968]],["content/642",[35,2.384,47,1.233,48,2.362,61,2.34,72,1.975,181,2.044,274,1.95,282,3.249,411,1.492,434,2.433,439,1.6,441,2.741,442,2.957,448,3.42,455,2.73,462,3.604,476,3.957,477,2.66,478,2.203,520,2.596,624,2.796,847,2.135,848,1.914,857,2.457,859,1.783,868,4.362,872,4.112,873,2.537,929,3.249,962,5.637,999,3.643,1174,3.42,1359,4.512,1387,2.944,1509,2.851,1530,5.487,1556,3.051,1726,3.643,1742,3.177,1832,2.73,2120,2.996,2545,3.643,2573,4.212,2602,3.788,2656,4.212,2670,3.969,2874,3.788,2955,4.58,2956,4.212,2957,3.969]],["title/649",[847,3.683]],["content/649",[16,0.976,45,3.405,48,3.621,51,4.514,72,2.675,181,3.134,267,3.07,434,2.476,441,3.087,462,4.059,478,3.378,492,3.324,679,2.734,847,3.274,848,2.934,850,3.806,872,4.186,902,4.77,1363,5.401,1515,4.44,1555,5.243,1694,4.44,2009,5.586]],["title/650",[47,1.681,291,2.27]],["content/650",[35,2.856,46,1.907,47,2.99,52,3.727,181,3.516,209,2.52,267,2.399,291,3.35,441,1.812,462,2.383,471,4.519,488,3.355,528,4.364,629,2.974,630,4.183,643,2.558,703,3.271,844,4.364,848,2.292,859,2.136,869,5.045,876,3.147,985,2.597,1024,3.469,1049,2.913,1093,3.109,1182,4.538,1218,3.147,1617,3.727,1634,3.527,1832,4.697,2958,5.487,2959,4.755,2960,4.755,2961,5.487]],["title/651",[48,2.663,624,3.057]],["content/651",[10,2.005,16,1.289,33,1.97,35,2.062,45,2.993,47,2.304,48,4.415,51,3.967,67,1.332,72,2.17,147,2.69,181,1.767,197,1.559,274,1.686,291,2.242,411,1.335,441,1.308,462,4.269,476,2.272,514,1.905,580,3.046,624,2.501,645,2.3,847,4.326,851,2.428,852,2.957,853,2.69,854,2.33,859,1.542,861,4.747,862,4.909,863,2.809,865,3.244,867,2.809,868,2.504,966,2.465,968,2.219,999,3.15,1068,2.338,1105,2.361,1174,2.957,1189,2.33,1359,4.036,1542,5.348,2051,2.638,2120,2.59,2712,2.879,2869,3.642,2874,3.275,2962,3.961,2963,3.961,2964,3.432]],["title/652",[1742,4.332,2965,6.246]],["content/652",[3,2.144,35,2.587,46,3.028,47,2.344,67,1.671,72,1.422,124,3.047,239,1.602,367,2.923,398,3.003,445,2.752,448,3.71,450,2.172,478,2.39,496,2.886,514,2.39,516,2.752,519,2.665,580,3.822,847,3.417,848,2.076,859,1.935,877,2.85,961,3.525,962,3.375,965,4.306,985,4.124,1004,4.11,1015,3.047,1049,2.638,1240,3.447,1359,3.25,1515,3.142,1705,3.822,1742,3.447,1789,3.822,1832,5.193,1959,3.194,2512,4.11,2641,2.638,2952,4.57,2954,4.57,2966,4.969,2967,4.969,2968,4.969,2969,4.306,2970,4.969]],["title/653",[909,5.367]],["content/653",[16,0.567,47,2.533,72,1.169,125,1.059,181,2.82,197,2.488,210,2.468,239,0.892,274,2.691,291,2.809,312,1.875,374,1.997,411,1.882,441,1.348,442,1.75,446,3.539,448,3.049,450,1.785,474,1.762,476,2.342,622,1.997,629,4.19,640,3.539,643,2.946,645,4.49,650,2.213,698,3.248,743,2.897,847,1.904,853,2.774,857,3.389,876,2.342,908,4.062,909,2.774,915,3.755,955,3.377,960,3.539,963,2.897,1068,1.547,1093,2.314,1128,2.168,1137,2.72,1174,3.049,1218,2.342,1229,4.383,1466,2.671,1832,2.434,1994,3.049,2116,4.86,2886,3.755,2971,4.083,2972,4.083,2973,3.755,2974,4.083,2975,4.083,2976,3.539,2977,4.083,2978,4.083,2979,4.083]],["title/643",[537,5.263]],["content/643",[213,5.836,239,1.984,478,4.367,495,3.917,597,3.477,1085,5.412,1617,6.167,1809,6.983,2541,7.222]],["title/644",[26,1.824,2803,5.413]],["content/644",[8,0.777,16,0.961,47,0.927,96,2.527,148,1.792,198,1.593,209,1.581,239,1.207,274,1.466,275,2.994,290,2.788,411,0.745,417,1.939,431,2.111,446,4.787,449,2.556,615,1.421,678,2.442,679,1.34,783,3.166,823,2.388,848,1.438,912,1.907,983,2.293,985,1.63,987,2.252,1017,4.394,1043,2.111,1049,1.828,1068,1.304,1085,2.052,1106,1.999,1229,2.388,1308,3.832,1479,2.503,1530,5.503,1579,2.503,1591,3.753,1628,2.57,1634,2.213,1672,2.293,1673,3.438,1731,2.213,1742,3.832,1813,4.124,2259,2.57,2745,2.57,2777,2.739,2803,2.984,2805,4.787,2806,2.984,2807,5.996,2808,4.569,2815,3.166,2850,4.569,2851,4.394,2980,3.166,2981,3.443,2982,5.525,2983,3.443,2984,5.525,2985,3.166,2986,3.443,2987,5.525,2988,2.984,2989,3.443,2990,3.166,2991,3.443,2992,3.443,2993,3.443,2994,3.443,2995,3.443,2996,3.443,2997,3.443,2998,3.443]],["title/645",[488,2.66,1770,4.968]],["content/645",[8,0.656,16,0.648,26,1.361,117,2.554,239,1.018,274,1.985,329,2.475,357,4.848,406,4.04,439,2.441,441,1.539,451,3.166,472,2.947,474,3.016,481,2.279,488,1.985,497,4.572,526,5.56,527,3.855,537,3.105,540,2.339,545,3.098,679,1.815,726,3.307,848,1.948,871,3.388,985,3.309,998,2.642,1015,2.858,1308,3.233,1661,4.04,1675,2.858,1705,3.585,1783,2.996,1803,2.173,1827,3.48,2571,4.287,2580,3.855,2641,2.475,2661,4.04,2784,3.307,2999,4.662,3000,3.585,3001,4.04,3002,4.959,3003,4.662,3004,6.991,3005,4.287,3006,4.662,3007,4.662,3008,3.307,3009,4.662,3010,4.662,3011,4.662,3012,4.662]],["title/646",[985,2.957,1832,3.723]],["content/646",[47,1.809,59,3.766,239,1.469,274,1.885,290,1.783,411,0.957,440,2.949,443,4.153,462,1.922,474,1.91,480,2.949,519,2.374,536,3.305,540,2.221,610,2.845,615,1.827,679,1.723,720,2.509,899,3.661,916,2.261,966,2.755,975,2.539,985,3.183,998,2.509,1024,2.799,1049,2.35,1105,2.639,1133,2.845,1363,3.404,1446,2.755,1599,2.571,1717,3.217,1832,6.367,1845,4.07,1911,3.007,2120,2.895,2241,3.836,2535,4.663,2816,3.836,2864,3.836,2890,4.07,2940,4.07,3000,5.171,3013,4.427,3014,4.427,3015,4.427,3016,4.427,3017,4.427,3018,4.427,3019,4.427,3020,3.007,3021,4.427,3022,4.427,3023,4.427,3024,4.427,3025,4.427]],["title/647",[1048,5.078]],["content/647",[8,0.669,10,1.449,16,0.398,26,1.779,35,1.49,46,0.995,47,0.771,63,1.025,72,1.36,75,2.031,86,1.182,99,1.308,110,1.14,117,1.568,121,1.73,213,1.84,239,1.719,290,1.154,291,1.727,338,1.49,341,1.73,343,1.684,360,1.325,374,1.4,411,0.619,428,2.368,434,1.676,439,2.128,449,1.325,467,1.449,473,1.755,474,1.235,486,1.345,537,3.166,538,2.368,562,2.031,679,1.115,703,1.707,749,1.986,775,2.958,808,1.81,843,2.368,848,1.196,863,2.031,873,1.586,875,1.366,905,1.782,954,3.108,985,2.25,1008,1.663,1025,2.202,1026,2.137,1031,2.726,1036,2.633,1048,4.558,1068,1.8,1085,1.707,1105,1.707,1153,4.135,1164,2.031,1207,2.137,1214,2.081,1218,1.642,1221,2.368,1474,3.166,1555,3.548,1617,1.945,1685,2.031,1707,2.137,1710,2.137,1716,2.031,1804,1.449,1809,2.202,1832,2.833,2224,1.684,2473,2.633,2535,1.986,2578,3.78,2600,1.945,2601,4.118,2616,2.368,2650,3.78,2777,2.277,2832,2.481,2870,2.277,2907,2.368,3026,2.863,3027,2.863,3028,2.863,3029,2.863,3030,2.863,3031,2.863,3032,4.37,3033,2.633,3034,2.863,3035,2.633,3036,2.633,3037,2.633,3038,2.633,3039,2.368,3040,2.633,3041,2.633]],["title/648",[1783,4.015,2606,4.663]],["content/648",[197,2.625,239,1.457,343,3.922,449,3.085,464,3.824,500,4.729,503,3.778,562,4.729,577,4.285,604,3.207,716,4.029,859,2.595,985,3.156,1489,4.624,1607,5.903,1617,4.529,1710,4.977,1783,4.285,1800,4.977,1827,4.977,1929,5.303,2057,4.846,2574,6.261,2600,4.529,2606,4.977,3042,6.667,3043,6.667,3044,6.667]],["title/660",[16,0.868,148,3.252]],["content/660",[16,0.684,22,2.083,26,1.437,62,2.773,63,1.762,72,1.409,96,1.798,99,1.355,148,4.51,156,1.938,180,2.515,239,1.076,272,3.394,338,2.563,360,2.278,365,2.448,374,2.407,375,2.824,411,1.575,439,1.719,442,2.11,449,2.278,478,2.368,540,2.47,657,2.083,703,2.934,732,3.064,823,3.414,995,2.697,1033,2.79,1046,3.786,1055,3.22,1068,1.865,1128,2.614,1140,3.578,1476,4.071,1527,3.018,1575,4.071,1591,3.344,1684,4.527,1701,3.414,1716,5.164,1741,3.344,1744,4.071,2321,4.266,3002,3.492,3045,4.527,3046,4.527,3047,4.527,3048,4.923,3049,4.923,3050,4.923]],["title/661",[732,4.917]],["content/661",[8,1.415,16,1.197,26,1.596,62,2.082,72,0.973,109,2.152,111,1.909,112,1,122,3.605,148,4.79,197,1.338,198,1.572,209,3.15,210,2.054,267,1.486,275,1.842,286,1.622,338,1.769,357,2.357,365,1.69,375,3.136,397,2.026,412,1.804,417,1.193,423,2.084,449,1.572,526,2.703,539,1.596,540,3.441,545,2.423,578,2.084,599,1.69,823,2.357,911,1.974,952,2.811,968,1.904,989,2.084,1026,2.537,1055,2.223,1068,2.071,1076,4.521,1120,1.882,1171,2.411,1172,2.223,1474,2.264,1504,5.235,1546,2.264,1555,2.537,1595,4.349,1714,2.811,1731,2.184,1741,3.714,1744,5.672,2130,3.125,2985,3.125,3002,5.575,3046,3.125,3051,3.399,3052,3.399,3053,3.125,3054,3.125,3055,3.399,3056,3.399,3057,3.399,3058,3.399,3059,3.399]],["title/662",[53,1.571,365,2.569,2921,4.476]],["content/662",[]],["title/663",[26,2.307]],["content/663",[16,1.092,26,2.295,49,3.781,53,2.391,71,4.216,72,2.25,99,2.77,148,4.092,180,4.016,196,4.624,365,3.91,443,4.016,445,4.354,968,4.403,1556,5.236,3002,5.576,3060,7.228]],["title/664",[847,3.683]],["content/664",[16,1.109,148,4.154,434,2.814,441,2.635,443,5.189,462,3.465,622,3.902,847,3.72,1101,5.219,1153,4.195,1556,5.315,1809,6.137,2826,6.599,3002,5.66,3061,7.98,3062,7.338]],["title/665",[63,2.828]],["content/665",[8,1.14,10,1.814,16,0.987,26,1.046,50,1.567,53,1.09,62,1.365,63,3.371,67,1.205,96,1.309,99,0.987,109,1.411,138,1.526,145,2.434,146,2.23,148,4.604,198,1.658,209,3.263,210,2.166,211,5.04,213,4.567,239,0.783,289,2.055,327,5.615,338,1.865,417,1.258,434,2.012,449,1.658,450,1.567,486,1.683,647,2.007,702,2.542,703,2.136,786,2.166,823,2.485,859,3.154,873,1.985,875,2.722,911,3.312,936,1.767,966,2.23,1026,2.675,1068,2.161,1093,2.031,1101,3.73,1120,1.985,1128,1.903,1504,4.733,1548,3.295,1595,4.537,1665,2.605,1744,2.964,2359,3.874,2591,3.272,3002,2.542,3054,3.295,3063,3.295,3064,3.584,3065,3.584,3066,3.584]],["title/654",[1048,5.078]],["content/654",[110,2.821,239,1.037,439,2.961,449,2.196,474,2.047,481,2.32,488,2.021,495,2.047,537,3.161,552,2.954,578,2.91,679,1.847,736,2.829,808,3,843,3.925,863,3.366,868,3,872,2.829,911,2.756,985,4.013,999,3.775,1004,3.925,1008,4.114,1024,3,1048,5.449,1093,2.689,1350,4.812,1472,3.925,1609,3.65,1617,4.812,1642,3.65,1682,4.364,1811,3.65,1815,3.223,1822,3.925,1828,3.925,2622,4.112,2823,4.112,2840,4.364,2870,5.635,2872,3.65,2956,4.364,3067,4.745,3068,4.745,3069,4.364,3070,4.745,3071,4.745,3072,4.745,3073,4.364,3074,4.745,3075,4.745]],["title/655",[8,0.54,121,2.319,985,1.816,1832,3.588]],["content/655",[213,5.289,341,4.973,428,6.805,537,5.481,538,6.805,873,4.558,1048,5.289,1555,7.732,1685,5.837,2578,6.545,2650,6.545,2872,6.329,3032,7.567,3035,7.567]],["title/656",[72,1.788,110,2.488]],["content/656",[]],["title/657",[438,6.847]],["content/657",[16,1.033,26,2.171,72,1.45,75,3.593,86,2.09,99,2.047,110,2.017,114,2.26,117,2.774,197,1.994,239,1.107,267,3.25,290,2.041,360,3.44,411,1.096,427,2.689,434,1.786,439,2.596,467,2.564,703,3.019,808,3.202,848,2.116,863,3.593,979,3.895,1014,3.105,1031,2.905,1044,4.389,1045,4.657,1048,3.255,1068,2.816,1086,3.019,1105,3.019,1153,5.101,1707,3.781,1710,3.781,1716,3.593,2520,4.657,2578,4.029,2616,4.189,2777,4.029,3036,4.657,3037,4.657,3038,4.657,3039,4.189,3076,5.065]],["title/658",[1107,4.775]],["content/658",[3,1.27,16,0.409,26,0.859,28,1.416,69,0.985,86,2.006,95,2.088,96,2.268,99,1.339,110,3.789,120,2.097,138,1.253,191,1.504,239,1.062,272,1.372,274,2.07,341,1.779,361,1.578,411,0.637,427,1.562,434,1.038,439,2.169,442,2.662,450,2.125,467,3.652,470,1.504,473,1.804,495,1.27,516,2.693,542,2.55,545,1.304,547,3.44,572,2.197,604,2.339,671,3.203,673,1.404,736,2.898,775,1.832,808,1.861,859,1.146,871,2.139,916,1.504,936,1.451,1022,1.832,1037,2.55,1048,1.892,1085,1.754,1098,2.088,1103,6.142,1104,3.867,1107,1.779,1111,2.706,1120,1.63,1136,2.041,1138,2.139,1140,2.139,1189,1.731,1221,2.434,1291,1.925,1413,2.341,1474,1.96,1539,1.804,1607,6.451,1608,4.515,1609,2.263,1616,2.55,1617,1.999,1618,2.706,1620,1.688,1688,2.263,1716,2.088,1717,2.139,1804,3.145,1847,3.739,1880,2.139,2622,2.55,2676,2.263,2872,2.263,2957,2.55,3077,2.943,3078,2.943,3079,2.943,3080,2.55]],["title/659",[3040,7.265]],["content/659",[26,2.295,63,2.813,338,4.092,434,2.772,474,3.391,749,5.452,905,4.892,995,4.306,1025,6.046,1031,4.509,1153,4.132,1218,4.509,1592,5.576,2224,4.624,2600,5.339,2650,6.252,2698,6.812,3041,7.228]],["title/666",[1699,5.078]],["content/666",[16,1.045,26,2.197,72,2.8,105,2.419,111,2.628,112,2.215,239,1.644,411,1.627,439,2.628,486,3.534,503,4.264,521,5.617,637,3.562,871,5.469,875,3.59,1009,5.787,1138,5.469,1176,5.012,1512,5.012,1699,4.836]],["title/667",[8,0.879,338,3.252]],["content/667",[16,1.354,72,1.464,96,1.868,99,1.408,105,3.135,111,1.786,112,1.505,180,2.613,197,2.013,269,2.772,272,3.49,291,1.858,397,3.048,411,1.619,433,3.406,434,3.124,464,2.933,489,3.628,808,3.233,875,2.44,914,3.933,954,3.345,1068,1.937,1082,3.287,1093,2.898,1153,3.936,1160,3.717,1176,3.406,1206,4.229,1527,3.136,1655,3.287,1672,4.987,1673,4.66,1686,2.865,1696,5.193,1699,4.812,1700,4.229,2536,4.703,3081,5.114]],["title/668",[181,3.526]],["content/668",[62,3.56,63,2.513,67,2.362,99,1.934,148,3.656,181,3.134,269,3.806,374,3.434,411,1.519,486,3.299,1140,6.794,1147,3.691,1616,6.086,1665,5.104,1699,4.514,1739,6.086,1740,6.458,1741,6.349,3082,6.458,3083,6.086,3084,7.022,3085,6.458,3086,7.022]],["title/669",[1005,4.074]],["content/669",[16,0.754,26,2.928,45,2.633,47,2.105,96,2.856,99,2.524,239,1.186,274,2.312,434,1.915,435,4.319,445,3.007,455,4.662,471,3.115,472,3.433,477,3.153,486,2.551,540,2.725,599,2.701,851,3.329,852,4.054,901,4.054,954,3.551,982,3.688,1005,2.8,1017,4.319,1033,3.077,1095,2.8,1137,3.617,1512,3.617,1689,4.491,1770,4.319,2224,3.194,2532,4.319,2615,4.993,2976,4.706,3080,4.706,3087,7.821,3088,5.43,3089,5.43]],["title/670",[1148,3.949,1446,3.888]],["content/670",[26,2.606,105,2.87,452,4.787,476,5.12,503,5.058,545,3.956,995,4.89,1005,4.603,1789,6.865,3090,7.735]],["title/671",[3091,6.847]],["content/671",[26,3.029,99,2.63,105,1.882,138,2.492,156,2.304,210,4.986,286,2.793,378,5.382,411,1.266,536,4.369,613,2.649,875,2.793,896,5.072,994,4.059,996,5.072,997,5.072,1016,3.898,1068,2.217,1093,3.317,1118,4.369,1492,4.059,1626,3.7,1771,4.655,1833,4.151,1858,5.072,2827,5.382,2960,5.072,3090,5.072,3091,5.072,3092,5.852,3093,5.852,3094,5.382,3095,5.382,3096,5.852,3097,5.382]],["title/672",[3098,6.534]],["content/672",[26,2.804,99,2.014,105,2.352,290,2.947,503,5.442,536,5.461,601,5.189,613,3.311,637,3.463,875,3.49,1055,4.784,1441,4.421,1505,6.049,1737,4.969,2516,5.626,3008,5.189,3094,6.727,3098,6.049,3099,6.727,3100,7.315,3101,7.315]],["title/673",[442,2.677,492,2.957]],["content/673",[16,0.795,26,1.672,71,3.071,72,1.639,99,2.236,210,3.46,239,1.775,343,3.368,411,2.042,434,2.019,457,3.68,503,5.349,637,2.71,872,3.413,993,4.274,1084,5.903,1099,3.814,1103,6.247,1128,3.04,1133,3.68,1134,4.061,1387,3.68,1515,3.62,1561,4.161,1685,4.061,1753,7.26,1810,4.061,2009,4.554,2495,4.961,2935,4.961,3102,5.725,3103,5.725,3104,5.725]],["title/674",[16,0.718,96,1.886,604,2.484]],["content/674",[16,0.804,96,2.114,99,2.999,105,1.861,147,3.932,156,3.739,197,3.739,269,3.137,275,3.137,286,2.762,289,3.32,290,2.332,394,3.137,473,3.549,503,3.28,520,3.28,875,3.906,1015,5.019,1077,4.947,1098,4.106,1128,3.073,1138,4.207,1147,3.043,1578,5.323,1665,4.207,1737,3.932,1819,4.787,1858,5.016,1946,3.932,3105,5.788,3106,5.788]],["title/675",[16,0.718,26,1.508,72,1.478]],["content/675",[16,1.371,26,3.03,46,1.578,47,1.222,48,2.342,67,1.527,72,2.363,96,1.658,99,3.054,197,3.25,239,0.992,274,1.934,275,2.461,411,1.483,434,1.601,442,1.946,449,2.101,520,3.884,643,2.117,679,1.768,848,1.897,854,2.671,875,3.27,916,2.32,989,2.784,992,3.084,1005,3.534,1016,3.025,1033,2.573,1060,3.149,1068,2.596,1213,3.492,1359,2.97,1537,3.025,1673,2.826,3080,3.935,3091,3.935,3107,4.176,3108,4.541,3109,4.541,3110,4.541,3111,4.541]],["title/676",[71,3.35,72,1.788]],["content/676",[26,2.931,73,3.598,99,1.769,156,3.465,290,3.546,445,3.557,679,2.501,963,4.556,988,4.363,1003,5.566,1005,4.538,1033,3.64,1068,2.433,1082,4.128,1083,3.73,1113,5.109,1116,5.907,1512,4.279,1675,3.938,1728,4.279,1851,5.907,2831,5.907,2832,5.566,3098,5.312,3112,6.423,3113,6.423,3114,6.423,3115,6.423]],["title/677",[105,2.008,3090,5.413]],["content/677",[26,2.33,82,5.315,105,2.566,197,3.142,209,3.665,210,4.823,239,1.743,275,4.325,411,1.726,875,3.808,941,5.315,995,4.371,1015,4.893,1083,4.634,1706,5.045,1771,6.347,3097,7.338]],["title/678",[1080,5.078]],["content/678",[16,1.109,26,2.33,99,2.197,137,4.634,138,3.398,239,1.743,272,3.72,411,1.726,439,2.787,599,3.969,1005,4.115,1080,5.129,1084,5.8,1141,5.535,1217,3.586,1753,6.137,2786,7.338]],["title/679",[1137,5.263]],["content/679",[0,2.776,16,1.128,26,2.372,47,2.186,67,1.925,99,2.986,105,1.841,125,1.485,132,4.061,133,4.161,265,4.161,272,2.669,274,2.438,290,2.307,291,2.08,343,3.368,357,3.971,420,4.061,514,2.754,516,3.171,547,3.171,604,2.754,630,3.04,637,2.71,643,3.786,1080,3.68,1137,3.814,1140,4.161,1205,3.325,1579,4.161,1584,2.848,1680,4.554,2224,3.368,3116,5.725,3117,5.725]],["title/680",[1153,4.153]],["content/680",[16,1.18,26,2.48,99,2.339,105,2.731,197,3.344,290,3.422,291,3.086,342,4.262,397,5.063,434,3.726,2913,7.811,3118,7.811]],["title/681",[1141,5.48]],["content/681",[16,1.31,26,2.078,67,2.394,96,2.599,99,2.912,425,5.886,442,3.05,514,3.423,515,5.314,547,5.223,624,2.885,1033,4.033,1133,4.575,1134,5.049,1141,4.936,1148,4.5,1151,5.314,1158,5.474,1537,4.741,1584,3.54,2541,5.661]],["title/682",[1133,4.015,1134,4.431]],["content/682",[16,0.851,99,2.914,105,1.969,110,2.439,156,2.411,239,1.861,272,2.855,274,2.608,374,2.995,411,1.842,439,2.139,463,4.871,615,2.527,916,3.129,1012,3.392,1030,3.651,1079,5.307,1080,3.937,1083,3.557,1120,3.392,1133,5.474,1134,6.041,1151,4.572,1158,4.71,1527,3.755,1591,4.16,3119,6.125,3120,5.632,3121,6.125,3122,6.125]],["title/683",[214,5.604]],["content/683",[16,1.47,26,1.788,67,2.06,73,3.431,76,4.716,198,2.834,289,3.513,361,3.285,1008,3.557,1033,3.471,1068,3.226,1082,6.292,1133,3.937,1134,6.041,1150,5.307,1151,6.358,1158,8.138,1522,4.71,1584,3.046,1675,3.755,1728,5.673,2678,4.452,2797,5.307,3039,5.065]],["title/684",[1141,5.48]],["content/684",[16,1.203,67,2.109,76,3.473,99,2.943,125,1.626,138,2.67,198,4.005,267,2.741,275,3.398,289,3.596,361,3.363,365,3.119,411,1.356,434,2.211,514,3.016,615,3.572,647,3.512,673,2.992,1106,5.027,1148,3.964,1150,5.434,1151,6.462,1189,3.688,1522,4.822,1584,3.119,1590,4.03,1680,4.987]],["title/694",[3123,6.284]],["content/694",[]],["title/695",[434,1.353,537,2.556,850,2.079,2174,3.052,3123,3.052]],["content/695",[26,1.771,111,1.353,112,1.14,181,1.728,214,4.302,239,0.846,339,2.49,434,1.366,443,3.099,449,1.792,452,2.077,457,2.49,481,1.894,488,2.583,524,3.967,527,3.203,540,1.943,545,2.688,598,3.357,615,1.598,619,2.195,660,3.203,848,2.534,871,4.408,875,1.848,912,2.145,933,3.081,941,2.58,962,2.631,968,2.17,976,2.49,985,1.834,1043,2.375,1048,2.49,1056,2.747,1068,2.297,1136,2.686,1176,2.58,1189,2.278,1213,2.979,1341,2.631,1362,3.562,1584,1.926,1625,3.081,1628,4.528,1713,2.58,1716,2.747,1832,2.309,1838,3.562,2057,2.815,2120,2.533,2174,3.081,2661,3.357,2784,2.747,2808,3.203,2810,5.256,2849,3.357,2882,3.562,2923,3.357,3123,6.728,3124,3.873,3125,3.873,3126,3.873,3127,3.873,3128,3.873,3129,3.873,3130,3.873,3131,3.562,3132,3.873,3133,3.562,3134,3.873,3135,3.873,3136,3.873]],["title/696",[239,0.962,503,2.495,562,3.123,3137,4.403]],["content/696",[26,2.166,109,3.815,110,2.954,464,5.558,514,3.568,976,4.768,1033,4.204,1341,5.039,1783,6.229,1905,5.145,2619,6.821,2745,5.538,3123,5.9,3138,9.691,3139,7.418,3140,7.418,3141,7.418,3142,7.418]],["title/697",[67,2.101,3123,4.968]],["content/697",[]],["title/698",[439,2.759]],["content/698",[16,1.043,22,1.964,26,2.192,28,0.956,30,1.258,45,0.964,46,0.691,47,1.5,52,3.154,72,1.813,82,1.324,96,2.035,98,2.104,100,0.997,105,1.119,111,0.694,112,0.585,137,1.154,181,0.887,209,0.913,213,1.278,214,1.41,238,1.484,274,1.977,275,1.077,290,0.801,341,1.202,343,1.169,410,2.935,411,0.43,439,0.694,442,0.852,443,4.275,448,4.729,457,2.237,461,3.818,474,0.858,476,2.663,477,1.154,481,0.972,520,1.127,536,2.599,540,0.997,550,1.14,577,1.278,582,1.154,604,2.681,848,0.831,852,1.484,873,1.101,875,3.582,976,1.278,985,2.999,998,1.127,1005,1.025,1015,1.219,1043,2.134,1049,1.848,1084,1.445,1086,1.185,1106,1.154,1120,1.101,1133,1.278,1134,1.41,1176,3.093,1205,2.021,1213,1.529,1218,1.14,1341,1.35,1359,1.3,1474,1.324,1490,1.644,1511,1.581,1512,1.324,1590,1.278,1591,1.35,1592,1.41,1611,0.956,1655,1.278,1672,1.324,1673,1.237,1686,1.95,1697,1.644,1710,1.484,1753,1.529,1790,1.828,1822,1.644,1830,1.529,1832,3.776,1909,1.828,2009,1.581,2224,1.169,2606,1.484,2697,1.644,2812,1.723,2866,1.828,2870,2.769,2872,1.529,2875,1.828,2918,1.828,2921,1.723,2964,1.723,3045,1.828,3143,1.988,3144,5.489,3145,1.988,3146,5.489,3147,1.988,3148,1.988,3149,1.988,3150,1.828,3151,1.644,3152,1.988,3153,1.988,3154,3.481,3155,1.988,3156,1.988,3157,3.016,3158,1.988,3159,1.988,3160,1.988,3161,1.723,3162,1.988,3163,1.988,3164,1.988,3165,1.828,3166,1.988,3167,1.988]],["title/699",[2120,5.167]],["content/699",[26,1.997,35,1.406,47,0.727,52,1.835,105,0.869,137,1.569,138,1.15,267,1.181,341,1.633,403,1.449,410,1.708,411,0.979,420,1.916,461,4.514,467,1.368,474,1.165,476,2.597,478,1.299,546,1.496,671,1.393,716,2.736,736,1.61,848,1.129,852,5.106,872,1.61,875,2.16,901,3.38,984,2.234,985,2.143,1049,4.375,1078,1.259,1115,1.549,1182,4.833,1359,4.473,1480,7.004,1498,3.744,1552,2.017,1553,1.874,1648,2.149,1694,1.708,1932,2.484,2120,6.447,2675,1.964,3144,6.6,3146,6.6,3157,7.142,3168,2.702,3169,2.702,3170,2.702,3171,2.341,3172,8.241,3173,2.702,3174,4.528,3175,5.844,3176,4.528,3177,4.528,3178,2.702,3179,5.844,3180,2.702,3181,2.484,3182,2.702,3183,2.702,3184,2.702,3185,2.484,3186,4.163,3187,2.702,3188,4.528,3189,2.702,3190,2.702,3191,2.702,3192,2.702,3193,2.702,3194,2.702,3195,2.702,3196,2.702,3197,2.702,3198,2.702,3199,2.702]],["title/700",[455,4.71]],["content/700",[16,0.963,26,2.024,117,3.796,461,5.717,503,5.25,520,3.927,525,4.249,859,2.698,911,4.024,998,3.927,1049,3.679,1527,4.249,2969,6.005,3144,8.028,3146,8.028,3200,6.93,3201,6.93,3202,6.93,3203,6.93,3204,6.93,3205,6.93,3206,6.93]],["title/685",[1083,4.588]],["content/685",[16,1.071,26,2.25,72,2.206,96,2.814,198,4.192,239,1.684,272,3.592,411,1.96,427,2.825,434,1.876,439,3.469,486,2.499,547,2.947,604,3.707,637,2.519,858,3.972,895,4.092,898,4.893,899,4.4,985,2.519,987,3.48,998,3.015,1031,3.052,1057,4.092,1083,5.262,1088,4.092,1442,4.4,1554,4.611,1580,4.4,1642,4.092,1770,4.232,1959,4.953,3207,5.321]],["title/686",[96,2.885]],["content/686",[16,1.588,26,1.748,96,3.06,98,3.617,99,1.648,191,3.058,241,3.521,272,2.79,327,3.568,411,1.295,434,2.111,503,3.392,604,2.879,719,4.761,982,4.066,987,3.914,995,3.279,1016,3.987,1017,4.761,1030,4.995,1041,4.468,1068,2.267,1083,3.476,1141,4.151,1350,4.066,1590,3.847,1599,3.476,1814,5.187,1833,4.246,2806,5.187,2880,5.504,3208,5.504]],["title/687",[198,3.655]],["content/687",[16,1.505,46,1.346,47,1.042,71,2.077,72,2.421,96,2.73,99,2.901,105,1.245,122,2.036,125,2.526,144,4.302,198,5.225,275,4.584,286,1.848,365,1.926,434,1.366,872,2.309,916,1.979,995,2.122,1068,2.832,1075,2.747,1078,1.806,1082,2.49,1087,2.278,1095,1.997,1174,2.892,1218,4.851,1444,2.099,1513,3.562,1539,2.375,1959,2.49,2678,7.659,2973,3.562,3209,3.873,3210,3.873,3211,3.873]],["title/688",[1106,3.627,1590,4.015]],["content/688",[16,1.244,26,1.523,49,2.508,67,3.013,96,1.904,99,3.103,105,1.677,125,1.352,138,2.221,156,2.99,198,4.553,199,3.352,272,2.431,445,2.888,449,2.413,911,3.029,992,3.542,995,2.857,1005,2.689,1046,4.011,1068,1.976,1083,3.029,1106,5.715,1474,3.474,1552,3.893,1584,2.594,1590,3.352,1596,4.148,1680,4.148,1691,4.519,1811,4.011,1833,3.699,2636,4.519,3212,5.215,3213,5.215]],["title/689",[71,3.35,72,1.788]],["content/689",[16,0.989,26,2.078,71,3.817,72,2.037,96,2.599,198,3.293,239,1.555,272,3.318,411,2.04,439,2.486,442,3.05,582,4.133,966,4.43,987,4.655,995,3.899,998,4.033,1083,5.476,1085,4.243,1141,4.936,1387,4.575,1474,4.741,1527,4.364,1537,4.741]],["title/690",[1515,4.995]],["content/690",[50,3.578,71,5.093,72,2.718,76,3.206,125,2.463,239,1.265,267,2.53,365,4.723,411,1.77,439,2.021,450,2.53,547,4.533,613,2.62,987,3.785,1030,3.45,1057,4.452,1078,3.816,1083,4.753,1085,3.45,1087,4.815,1599,3.361,1626,3.66,1728,5.452,1878,4.452,3214,5.788,3215,5.788,3216,5.788]],["title/691",[16,0.718,80,2.615,1551,4.271]],["content/691",[16,1.547,50,2.193,60,2.778,71,4.698,72,2.765,73,2.81,80,2.54,96,2.696,99,2.66,125,1.301,198,4.053,272,2.339,273,3.342,286,2.394,290,2.021,291,2.682,361,2.691,415,2.719,427,2.663,434,1.769,545,2.223,624,2.033,911,2.913,987,3.281,995,2.748,1068,3.318,1087,2.951,1091,2.877,1100,4.401,1105,2.99,1128,2.663,1728,4.917,2862,4.613,2959,4.347]],["title/692",[26,1.286,99,1.212,337,3.2,623,2.933]],["content/692",[16,1.155,26,2.806,46,2.057,47,1.593,71,4.459,72,2.38,73,3.315,99,2.87,120,2.553,156,3.273,197,2.33,198,2.738,291,2.15,337,4.302,361,3.174,427,3.142,445,3.278,547,3.278,623,3.942,624,2.399,671,3.052,911,3.437,966,3.683,994,4.105,1068,2.242,1075,4.198,1087,4.891,1138,4.302,1728,3.942,1771,4.707]],["title/693",[1091,4.531]],["content/693",[16,1.129,26,1.292,46,2.337,47,1.809,50,2.939,67,1.489,71,2.374,72,1.267,73,2.48,80,4.595,96,2.455,99,2.688,101,3.404,120,1.91,125,2.108,144,3.14,146,2.755,156,1.743,197,1.743,290,2.709,365,2.202,373,2.949,427,2.35,613,2.003,624,2.725,643,2.063,864,3.07,936,2.183,994,3.07,1005,2.283,1008,2.571,1057,3.404,1068,1.677,1087,3.955,1091,3.856,1100,2.639,1113,5.347,1120,2.452,1128,2.35,1141,4.663,1589,4.07,1728,2.949,1731,2.845,1771,3.521,3217,4.427,3218,4.427,3219,4.427,3220,4.427,3221,4.427]],["title/701",[71,3.35,1094,4.332]],["content/701",[16,1.016,239,1.598,398,4.421,411,1.582,439,3.354,481,3.577,637,3.463,943,6.339,989,4.485,1033,4.145,1068,2.771,1082,4.702,1083,6.225,1087,5.648,1094,5.073,1919,6.049,2804,6.727,2980,6.727,3222,7.315]],["title/702",[1515,4.995]],["content/702",[71,4.63,72,2.471,273,5.751,453,7.14,474,3.724,615,3.563,643,4.025,1094,5.988,1515,5.458,1734,6.867,1840,6.275,3223,8.634]],["title/703",[1091,4.531]],["content/703",[16,1.06,71,4.094,72,2.185,290,3.978,368,4.012,449,3.531,544,4.992,817,4.826,868,4.826,1083,4.433,1091,6.276,1095,3.936,1100,5.885,3224,7.633,3225,7.633,3226,7.633]],["title/704",[1092,5.898]],["content/704",[16,1.43,26,2.156,71,4.698,72,1.436,73,4.135,99,1.381,239,1.096,270,2.719,275,2.719,290,2.974,341,3.032,415,2.719,434,1.769,449,2.321,470,3.771,474,2.164,480,3.342,532,2.321,545,3.272,864,3.479,1033,2.843,1068,1.9,1087,2.951,1091,4.234,1092,7.686,1096,4.347,1100,6.137,1155,4.149,1165,3.745,1539,3.076,1602,3.99,1724,4.828,1727,3.99,2826,4.149,3227,5.017]],["title/705",[1087,4.647]],["content/705",[16,1.143,239,1.798,412,5.499,439,2.874,452,4.413,617,3.698,643,3.836,831,7.567,1087,4.84,1089,6.805,2988,7.131,3228,8.229,3229,8.229,3230,8.229]],["title/706",[16,0.718,604,2.484,1566,3.754]],["content/706",[16,0.911,50,1.872,71,5.441,72,1.876,73,4.461,76,5.619,99,2.793,105,1.377,125,1.7,198,3.685,267,1.872,275,2.321,290,1.725,291,1.556,309,3.711,374,2.094,417,2.301,449,3.033,643,3.056,673,2.043,720,2.427,856,3.711,875,2.043,929,3.038,1008,2.487,1091,2.456,1094,2.97,1098,3.038,1105,2.553,1106,3.807,1137,2.853,1147,2.251,1449,2.909,1552,4.894,1626,2.708,1728,4.367,2057,3.113,2306,3.542,2608,3.542,3231,4.283,3232,4.283,3233,4.283,3234,4.283,3235,3.711,3236,6.556]],["title/707",[16,0.868,3237,6.246]],["content/707",[16,1.318,50,2.113,71,2.592,72,1.383,99,1.977,239,1.056,275,3.892,290,2.893,358,3.106,398,2.921,411,1.045,432,6.591,433,3.219,434,1.704,514,2.324,545,2.142,577,3.106,673,2.306,846,3.428,855,4.07,912,2.676,916,2.469,1043,2.963,1068,1.831,1075,3.428,1082,4.616,1083,2.806,1087,4.224,1091,5.441,1094,5.943,1098,3.428,1413,3.844,1522,3.717,1566,3.513,1584,2.404,1590,3.106,1675,2.963,1706,3.055,1716,3.428,1959,3.106,3238,4.833,3239,4.833,3240,4.833,3241,4.833]],["title/708",[265,4.54,275,3.385]],["content/708",[8,0.893,16,1.212,26,1.853,50,2.774,71,4.681,72,1.816,73,3.555,98,3.835,99,1.747,105,2.04,156,2.498,198,2.936,271,3.439,272,4.068,563,4.079,578,3.891,624,2.572,679,2.47,857,3.403,1015,3.891,1083,3.685,1088,4.881,1099,4.227,1527,3.891,1595,5.047,1634,4.079,1945,5.835,3098,5.248,3242,6.346,3243,6.346,3244,6.346]],["title/709",[1446,3.888,1591,4.243]],["content/709",[0,2.221,16,0.958,67,1.54,71,3.7,72,1.975,96,3.618,99,2.867,100,2.298,120,1.976,156,2.716,198,2.119,265,7.202,267,2.002,269,2.482,271,5.006,272,2.135,274,1.95,275,3.739,290,1.845,417,1.607,433,4.596,436,3.177,450,2.002,483,2.203,540,2.298,546,2.537,578,2.808,623,3.051,671,2.362,679,1.783,688,3.329,920,3.643,1068,1.735,1075,3.249,1083,2.66,1128,2.432,1152,3.788,1368,3.249,1553,3.177,1566,3.329,1638,3.42,1655,2.944,3245,4.58,3246,4.58]],["title/710",[275,3.385,1517,5.413]],["content/710",[8,1.691,16,0.739,50,2.326,72,2.593,96,2.814,99,2.122,109,2.095,111,1.858,112,1.566,122,5.221,209,2.443,267,2.326,271,2.883,275,2.883,433,5.133,436,3.69,450,2.326,486,2.499,637,2.519,857,2.854,877,4.42,1060,3.69,1076,4.4,1083,4.475,1088,4.092,1497,4.4,2725,4.893,3247,5.321,3248,5.321,3249,5.321,3250,5.321]],["title/711",[855,3.54,1566,4.54]],["content/711",[16,1.548,69,2.32,96,3.811,99,2.874,109,2.728,432,5.33,433,4.616,436,6.426,514,3.333,623,4.616,855,5.914,1566,6.734,1610,5.174,1696,4.807,1959,4.454,2812,6.005]],["title/712",[1152,5.166,1827,4.663]],["content/712",[16,1.346,74,4.851,96,2.709,99,2.668,100,3.722,265,5.392,271,4.02,275,4.02,375,4.255,403,5.197,486,3.485,578,4.548,941,4.941,1098,5.262,1229,5.145,1705,5.705,3053,6.821,3251,7.418,3252,7.418]],["title/718",[63,2.828]],["content/718",[16,0.938,59,3.782,63,3.687,121,4.081,211,4.79,239,1.989,411,1.461,434,2.381,481,3.302,484,4.683,613,3.056,647,3.782,848,2.821,859,2.629,909,4.587,968,3.782,1031,3.873,1717,4.908,1770,5.371,3008,4.79,3253,6.209,3254,6.209,3255,6.752,3256,6.752,3257,6.752,3258,6.752]],["title/719",[3008,5.604]],["content/719",[16,0.841,61,3.093,62,3.217,63,3.482,109,3.831,111,2.114,112,1.782,138,2.578,239,1.323,293,3.959,327,3.609,329,3.214,365,3.011,473,3.712,478,4.063,486,2.844,532,2.801,540,3.038,615,2.498,654,3.959,841,4.656,859,2.357,983,4.033,1055,3.959,1341,4.112,1350,4.112,1441,3.659,1509,3.768,1512,4.033,1877,4.52,3008,4.294,3259,5.567]],["title/720",[1742,5.48]],["content/720",[63,3.925,122,3.505,360,4.176,480,4.441,481,3.26,492,3.156,519,3.576,532,3.085,685,5.514,875,3.181,912,3.693,1742,4.624,1745,4.977,1840,4.846,1959,4.285,2149,5.128,2574,7.606,2703,5.514,3260,6.131,3261,5.514,3262,5.303,3263,5.777,3264,6.667]],["title/721",[1101,5.167]],["content/721",[16,0.963,33,3.447,53,2.108,63,3.735,72,1.984,114,3.093,156,2.728,191,3.54,239,1.514,365,4.608,367,5.45,385,5.512,434,2.444,494,4.707,613,3.137,642,4.382,859,3.607,1507,6.005,1529,4.454,1745,5.174,1831,6.005,3265,6.93]],["title/722",[2359,5.367]],["content/722",[6,2.665,8,1.689,53,2.14,63,3.764,205,3.413,206,5.115,207,4.881,208,5.412,210,4.253,293,4.602,417,2.47,423,2.884,450,3.076,752,3.262,848,2.94,1498,3.889,1553,3.262,1731,4.523,2359,4.78,2504,3.741,3262,5.597,3266,6.471,3267,4.076,3268,7.037,3269,7.037,3270,7.037,3271,7.037,3272,4.703,3273,4.703]],["title/723",[10,3.162,2359,4.243]],["content/723",[8,1.573,10,3.143,16,0.862,22,1.688,35,2.077,53,1.888,63,3.077,96,1.457,108,2.119,109,1.571,187,2.901,205,3.695,206,4.512,207,4.306,208,3.069,210,3.752,211,5.405,327,2.379,417,1.4,423,2.447,450,2.714,451,6.698,478,1.919,483,1.919,539,1.875,563,4.897,578,2.447,579,1.647,859,1.554,1105,2.379,1128,2.119,1623,6.839,1695,2.768,1745,2.979,1813,2.979,1840,2.901,2109,3.3,2305,2.979,2359,4.217,3274,3.67,3275,3.3,3276,3.991,3277,3.991,3278,3.991,3279,3.991,3280,3.991,3281,3.991]],["title/724",[63,1.373,2359,2.606,2574,2.661,3261,3.173,3262,3.052]],["content/724",[8,1.313,16,1.111,53,1.704,59,3.139,63,4.121,72,1.604,114,2.501,156,2.206,207,3.886,290,2.258,293,3.665,365,2.787,367,3.296,423,3.436,450,2.45,494,3.806,505,4.31,506,3.543,513,3.665,543,3.436,1078,2.612,1093,3.176,1529,3.602,1559,4.457,1921,4.31,2359,3.806,2574,3.886,2959,6.931,3261,4.634,3262,4.457,3266,5.153,3267,4.856,3282,5.603,3283,5.153,3284,5.153]],["title/725",[122,2.715,2574,3.582,3263,4.476]],["content/725",[3,1.647,8,1.7,10,3.035,16,0.53,33,1.899,35,1.987,53,1.161,63,3.623,67,1.284,114,1.703,122,4.411,187,2.775,205,1.851,206,2.775,207,4.159,210,2.307,226,3.063,269,2.069,293,2.496,365,1.899,407,3.285,417,2.599,423,3.676,450,2.621,451,4.073,579,1.575,859,1.486,1101,3.921,1623,5.136,1921,4.612,1946,2.593,2109,6.124,2359,5.03,2574,4.159,3261,3.157,3262,4.769,3263,5.196,3267,3.308,3274,3.51,3275,3.157,3283,3.51,3284,3.51,3285,5.996]],["title/726",[109,3.111]],["content/726",[8,1.754,16,0.833,53,1.161,61,1.95,63,3.264,86,1.575,105,1.227,109,3.304,111,2.094,112,1.765,125,1.555,211,2.708,212,2.307,226,3.063,227,2.936,233,3.036,239,0.834,268,2.453,286,1.821,417,2.599,441,1.98,442,1.636,445,2.114,450,2.621,451,2.593,476,2.189,579,1.575,581,3.574,644,3.51,720,2.163,726,2.708,859,1.486,920,3.036,1014,5.591,1714,3.157,1745,2.85,1899,3.157,2109,4.959,3286,3.51,3287,3.817,3288,3.817,3289,3.308,3290,3.817,3291,3.817,3292,3.817,3293,3.817]],["title/713",[16,0.868,72,1.788]],["content/713",[16,1.483,26,2.521,96,3.153,190,5.403,239,1.886,427,4.584,941,5.751,1068,3.27,1686,4.836,3294,8.634]],["title/714",[1059,6.284]],["content/714",[16,1.631,46,2.574,47,1.993,67,1.284,72,2.771,96,2.704,125,2.365,145,5.03,146,4.609,267,1.669,274,1.625,282,2.708,312,1.753,327,3.574,361,4.5,407,3.285,411,1.297,473,2.34,514,1.836,615,1.575,673,3.533,848,1.595,858,2.85,916,1.95,1030,2.275,1068,1.446,1072,2.936,1093,2.163,1153,2.007,1350,2.593,1449,2.593,1549,3.51,1665,2.775,1782,3.51,1814,3.308,1837,2.85,1843,3.51,1941,2.85,2335,2.708,2653,2.85,2848,3.51,2876,3.157,3107,3.51,3118,3.51,3295,3.817,3296,3.817,3297,3.817,3298,3.817,3299,3.817]],["title/715",[16,0.868,329,3.316]],["content/715",[8,1.797,10,0.531,16,1.126,17,2.43,45,1.957,46,2.176,47,2.181,48,0.541,49,1.317,50,0.853,51,1.255,53,0.833,59,1.094,61,2.339,62,0.4,63,0.98,67,1.152,72,0.3,80,0.531,96,3.03,97,4.693,98,2.439,99,0.538,100,3.85,101,1.502,105,1.101,107,1.326,109,0.769,110,1.364,111,1.196,112,1.008,114,1.221,117,0.575,120,1.478,121,3.326,122,2.406,125,0.71,137,1.989,138,0.447,144,1.942,145,1.859,146,1.704,147,0.713,148,1.016,291,0.995,312,0.482,329,1.036,337,0.763,338,1.783,339,0.675,340,1.516,341,1.18,342,2.541,365,0.522,374,0.955,380,0.664,401,0.634,410,1.234,411,0.592,444,0.784,454,0.699,461,0.575,473,0.643,477,0.609,480,0.699,493,0.807,495,0.453,505,1.502,540,0.98,599,0.971,613,1.826,642,0.664,647,0.588,650,0.569,651,0.965,680,3.681,719,0.835,832,0.763,872,0.626,902,0.713,968,1.533,1005,0.541,1008,0.609,1033,0.595,1095,0.541,1099,0.699,1106,1.989,1107,1.18,1137,0.699,1218,1.12,1221,0.868,1504,0.699,1527,0.643,1546,0.699,1547,1.458,1552,0.784,1553,0.728,1559,1.553,1590,1.255,1591,1.326,1610,2.558,1611,0.505,1623,0.728,1695,0.728,1734,0.835,1959,0.675,2636,0.909,2653,0.784,2855,0.965,2863,2.517,3300,0.909,3301,1.049,3302,0.965,3303,1.049,3304,1.049,3305,1.049,3306,1.049,3307,1.049,3308,1.049,3309,1.049,3310,1.049,3311,1.049]],["title/716",[16,0.868,1610,4.663]],["content/716",[]],["title/717",[16,0.868,96,2.281]],["content/717",[]],["title/727",[16,0.868,53,1.9]],["content/727",[16,1.556,26,3.068,53,3.195,99,2.574,120,3.029,275,5.066,365,3.493,411,1.519,579,2.898,817,4.44,1106,4.078,1368,4.981,1588,7.73,1611,3.378,2124,6.086,2569,6.458]],["title/728",[26,1.824,99,1.72]],["content/728",[16,1.143,26,2.403,99,3.275,120,3.55,197,3.24,558,4.973,848,3.438,859,3.204,916,4.204,1137,5.481,1694,5.203,1706,5.203]],["title/729",[26,1.824,3312,6.246]],["content/729",[16,1.284,49,4.444,99,2.544,196,5.435,558,5.584,679,3.597,1165,6.898,3313,9.239]],["title/730",[26,1.824,3314,6.246]],["content/730",[16,1.261,99,2.5,286,4.332,449,4.201,1140,6.6,1165,6.779,3315,8.349,3316,8.349,3317,9.08]],["title/731",[26,1.824,3318,6.246]],["content/731",[16,1.18,62,3.235,226,5.397,293,6.909,342,4.262,1078,3.96,1165,6.341,1728,5.658,2321,7.361,3315,7.811,3316,7.811]],["title/732",[26,1.824,180,3.191]],["content/732",[16,1.045,62,2.865,72,2.154,105,2.419,114,4.365,120,3.246,180,3.844,197,2.962,450,3.289,642,4.757,679,2.929,916,3.844,1078,3.507,1147,3.955,1706,6.184,1727,5.985,1741,5.111,1800,5.617,2305,5.617]],["title/733",[26,1.824,3319,6.246]],["content/733",[16,1.545,74,6.042,180,4.72,342,4.636,1165,6.898,1728,6.154,3320,9.239]],["title/734",[26,1.824,3321,5.744]],["content/734",[16,1.219,95,6.226,99,2.417,110,3.495,120,3.786,546,4.861,615,3.622,808,6.816,916,4.484,1337,7.259]],["title/735",[26,1.824,3322,6.246]],["content/735",[16,1.24,95,6.332,99,2.458,411,1.931,514,4.293,808,5.643,1291,5.838,1337,7.382,1693,7.735,3321,8.208]],["title/736",[26,1.824,340,3.46]],["content/736",[1856,8.377]],["title/737",[847,3.683]],["content/737",[16,1.284,62,3.519,63,3.307,411,1.998,441,3.051,859,4.33,3323,9.239]],["title/738",[3324,7.901]],["content/738",[16,1.38,45,4.818,613,4.497,847,4.632]],["title/739",[109,3.111]],["content/739",[16,1.284,120,3.986,122,4.857,474,5.148,1991,5.938,1992,6.898]],["title/740",[63,2.828]],["content/740",[16,1.407,63,3.624,613,4.584]],["title/741",[117,4.328]],["content/741",[16,1.579,338,4.984,849,5.426,1107,5.787,1803,4.463]],["title/742",[105,2.54]],["content/742",[16,1.355,59,5.463,114,4.352,120,4.207,474,4.207]],["title/743",[112,2.326]],["content/743",[3,4.207,16,1.355,110,3.884,112,2.87,120,4.207]],["title/744",[62,2.379,63,2.236]],["content/744",[46,2.26,62,2.476,99,1.79,138,2.769,207,4.51,239,1.421,439,2.271,442,2.787,444,4.854,445,3.601,449,3.008,464,3.73,558,3.93,615,2.683,859,2.531,1059,5.172,1133,4.179,1505,5.378,1509,4.047,1783,4.179,2535,4.51,2580,7.339,2907,5.378,3008,4.612,3157,5.635,3325,6.502,3326,6.502,3327,6.502,3328,6.502,3329,5.979,3330,6.502]],["title/745",[63,1.576,3331,4.403,3332,4.403,3333,4.403]],["content/745",[16,0.915,30,2.38,63,2.356,99,2.464,191,3.363,272,3.069,440,4.386,449,3.046,481,3.219,488,2.803,532,3.046,558,3.979,732,4.098,982,4.472,995,3.606,1133,4.232,1509,4.098,1809,5.063,2907,5.445,3002,4.67,3005,6.054,3033,6.054,3329,6.054,3334,10.168,3335,6.584,3336,6.584,3337,6.584,3338,6.584]],["title/746",[239,1.128,456,2.927,1803,2.408]],["content/746",[26,2.403,117,4.508,156,3.24,239,1.798,274,3.504,434,2.902,532,3.807,823,5.707,851,5.045,985,3.896,1016,5.481,1446,5.122,2641,4.369,2923,7.131,3339,7.567]],["title/747",[2809,6.847]],["content/747",[72,2.065,117,5.213,411,1.561,445,3.996,456,4.089,472,4.562,484,5.004,679,2.809,995,3.952,1005,3.72,1024,4.562,1148,4.562,1446,4.49,1776,6.634,1833,5.118,2051,4.806,2741,6.252,2816,6.252,2826,5.967,3253,6.634,3340,7.215,3341,6.634,3342,7.215]],["title/748",[2533,5.898]],["content/748",[16,0.989,268,4.575,338,3.705,339,4.575,474,3.07,532,3.293,615,2.937,786,4.302,848,2.974,1049,3.779,1078,3.318,1446,4.43,1504,4.741,1509,4.43,1537,4.741,1803,3.318,1804,4.774,2641,5.978,2809,6.168,3254,8.672]],["title/749",[274,3.364]],["content/749",[26,1.303,72,1.937,96,2.471,105,2.175,117,3.706,156,1.758,239,0.975,267,1.951,274,3.479,398,2.698,439,1.559,456,2.53,478,2.147,643,3.154,679,2.634,702,3.166,752,3.096,849,2.53,855,2.53,857,2.394,868,4.278,899,3.692,968,2.501,985,2.113,998,2.53,1005,2.302,1016,2.974,1024,2.822,1041,3.333,1043,2.737,1068,2.563,1088,3.433,1308,3.096,1446,2.778,1596,3.551,1672,2.974,1673,2.778,1833,3.166,1959,2.869,2335,3.166,2641,4.84,2702,3.333,2823,3.868,2850,3.692,2851,3.551,3000,5.204,3063,4.105,3151,3.692,3339,4.105,3343,4.464,3344,4.464,3345,4.464,3346,4.464,3347,4.464,3348,4.464]],["title/750",[1441,3.775,3349,6.246]],["content/750",[8,0.541,16,0.534,26,1.761,62,1.464,72,1.101,105,1.236,117,4.615,148,2.002,156,1.514,239,1.318,343,2.262,417,1.349,439,1.343,445,2.13,449,1.779,450,1.681,514,1.849,539,1.806,540,1.929,578,2.358,579,1.587,615,1.587,752,2.667,864,2.667,868,2.431,916,1.964,954,2.515,985,2.855,998,2.179,1006,3.536,1016,2.561,1068,1.457,1076,3.18,1078,1.792,1093,2.179,1148,2.431,1212,2.871,1441,2.324,1446,2.393,1701,2.667,1714,6.153,1721,3.058,1804,1.947,2107,3.18,2435,3.332,2641,5.155,2655,3.18,2685,3.058,2969,3.332,3000,5.722,3001,5.226,3002,7.201,3047,3.536,3259,3.536,3341,3.536,3350,3.845,3351,3.845,3352,3.845,3353,7.44,3354,3.845,3355,3.845,3356,3.845,3357,3.845,3358,3.845]],["title/751",[1546,5.263]],["content/751",[8,0.433,72,0.882,105,0.99,111,1.076,112,0.907,117,4.063,120,1.329,239,0.673,291,1.119,380,4.055,439,1.076,442,1.32,443,1.574,445,2.796,456,4.982,481,1.506,488,2.731,497,4.194,512,4.642,514,1.482,540,2.533,578,1.889,584,2.707,624,2.599,647,1.726,654,2.015,679,1.965,720,1.746,818,2.3,850,1.67,859,1.199,864,2.137,868,1.948,875,1.47,968,1.726,989,1.889,1002,2.45,1043,1.889,1055,3.301,1081,3.301,1147,1.619,1172,4.194,1176,2.052,1187,2.369,1357,2.67,1359,3.301,1446,1.917,1466,2.015,1500,2.67,1623,2.137,1639,3.669,1644,2.833,1661,2.67,1761,2.833,1803,3.457,1804,1.56,1959,1.98,1964,2.833,1994,2.3,2051,2.052,2528,2.239,2597,4.549,2641,4.345,2705,2.093,2760,4.788,3000,3.882,3020,2.093,3300,2.67,3359,3.081,3360,3.081,3361,3.081,3362,3.081,3363,3.081,3364,3.081,3365,3.081,3366,3.081,3367,3.081,3368,3.081,3369,3.081,3370,5.048,3371,2.67,3372,3.081]],["title/752",[3373,7.265]],["content/752",[8,0.674,86,1.976,205,2.322,268,3.078,341,5.151,439,1.672,456,2.714,467,3.611,478,2.303,481,3.488,488,2.039,508,4.042,519,2.568,522,2.817,523,3.132,524,5.574,532,3.943,545,2.122,547,2.652,561,3.575,581,2.854,584,2.568,673,2.285,720,2.714,847,2.232,963,3.397,982,3.253,998,2.714,1058,3.253,1103,3.683,1148,3.028,1172,3.132,1205,2.781,1509,2.98,1546,3.19,1609,3.683,1784,3.397,1804,3.611,1959,3.078,2107,3.96,2602,3.96,2641,4.525,2642,3.683,3008,3.397,3374,4.15,3375,4.789,3376,4.403,3377,4.789,3378,4.789]],["title/759",[1609,4.804,1804,3.162]],["content/759",[96,1.673,117,2.509,239,1.813,411,1.492,442,1.963,456,2.596,494,3.111,508,4.703,522,2.694,523,2.996,541,3.643,558,2.768,615,1.89,654,4.512,671,2.362,736,2.73,848,1.914,864,3.177,985,2.168,989,2.808,993,3.42,1031,2.627,1054,3.249,1068,1.735,1093,2.596,1214,3.329,1217,3.1,1240,3.177,1547,3.42,1584,2.278,1599,2.66,1609,5.306,1639,3.329,1803,2.135,1804,5.47,1819,3.788,1847,3.523,2608,3.788,2638,4.212,2641,4.406,3039,3.788,3095,4.212,3379,4.58,3380,4.58,3381,4.58,3382,4.58,3383,4.58,3384,4.58,3385,4.58,3386,4.58]],["title/753",[205,2.505,1058,3.508,1803,2.408]],["content/753",[125,1.751,132,4.79,205,4.415,338,3.515,434,2.381,445,3.74,478,3.248,493,5.193,615,2.787,966,4.203,968,3.782,985,3.197,998,3.827,1058,4.587,1446,4.203,1527,4.14,1547,5.041,1877,5.041,2438,4.683,2641,5.468,2642,5.193,2760,5.041,3099,6.209,3374,5.852,3387,6.752,3388,6.752]],["title/754",[3374,6.847]],["content/754",[22,2.206,53,1.586,72,1.493,86,2.152,99,2.091,117,2.857,125,1.352,137,3.029,205,3.683,239,1.659,411,2.129,452,2.797,543,3.198,582,3.029,615,2.152,622,2.55,654,3.411,679,2.03,998,2.955,1058,5.159,1069,4.011,1196,3.068,1229,3.617,1357,4.519,1466,3.411,1492,3.617,1677,6.281,1929,4.148,2051,3.474,2641,4.756,2642,4.011,2935,4.519,3389,5.215,3390,5.215,3391,4.519,3392,4.796,3393,4.519,3394,5.215,3395,4.796,3396,5.215,3397,5.215,3398,4.796]],["title/755",[117,2.829,341,3.122,679,2.011]],["content/755",[16,1.101,53,2.41,72,2.268,117,4.341,380,5.01,427,4.207,615,3.27,622,3.875,1069,6.095,1078,3.694,1196,5.949,1557,5.916,2525,4.79,2641,4.207,2642,6.095,2643,3.906,2645,3.906,3171,10.167,3392,7.287,3393,6.867,3395,7.287,3398,7.287,3399,4.248]],["title/756",[3400,6.076]],["content/756",[16,0.804,117,3.171,239,1.265,274,3.485,399,6.51,415,3.137,439,2.021,452,3.104,486,2.719,506,3.66,516,3.206,525,3.549,563,3.72,613,2.62,859,2.253,1021,4.207,1049,3.073,1058,3.932,1205,4.753,1584,2.879,1657,5.016,1677,4.787,1705,4.452,1755,5.016,1803,2.698,2641,5.48,2702,4.321,2752,5.323,2787,5.323,2917,5.016,3391,7.093,3393,7.093,3400,4.452,3401,5.323]],["title/757",[417,2.192,1205,3.627]],["content/757",[47,2.001,48,2.612,59,2.837,76,2.805,96,1.85,138,2.157,411,1.608,434,1.786,479,4.189,493,3.895,508,2.87,522,5.181,539,2.379,546,2.805,599,2.519,624,2.053,817,3.202,855,2.87,1053,3.781,1058,5.983,1066,3.255,1205,6.002,1559,4.029,1584,3.698,2044,4.657,2051,3.374,2515,4.029,2642,5.718,2759,6.442,3069,6.836,3391,6.442,3402,5.065,3403,7.434,3404,5.065,3405,5.065,3406,5.065,3407,5.065,3408,5.065,3409,5.065]],["title/758",[72,1.26,579,1.817,622,2.153,1205,2.557]],["content/758",[16,1.005,26,1.424,47,2.739,48,2.515,72,1.396,96,1.781,99,1.343,114,2.176,120,2.104,131,2.869,138,2.077,339,3.135,411,1.564,462,2.118,473,2.99,477,5.003,503,2.764,508,2.764,522,2.869,539,2.291,558,2.948,582,2.832,615,2.013,624,2.93,630,2.589,848,2.038,876,2.797,1205,5.534,1218,2.797,1803,3.371,1804,2.469,2344,3.751,2641,2.589,2653,3.641,2760,3.641,3400,7.329,3410,4.877,3411,4.877,3412,4.877,3413,4.877,3414,4.877,3415,4.877,3416,4.485]],["title/760",[338,3.252,1803,2.912]],["content/760",[16,1.109,72,2.284,117,4.371,239,2.219,411,1.726,439,2.787,456,4.522,604,3.838,850,4.325,902,5.42,936,3.935,1449,5.42,1803,3.72,2641,4.236,2702,5.957,3151,6.599]],["title/761",[16,0.868,850,3.385]],["content/761",[8,1.711,16,1.23,35,1.172,82,1.5,105,1.952,114,2.279,117,1.233,120,1.673,125,2.078,147,1.529,203,2.982,226,1.15,291,0.818,312,1.781,365,1.929,375,2.93,380,2.452,417,2.13,435,1.791,443,1.15,450,0.984,474,0.971,478,1.083,481,1.101,483,1.083,508,1.276,519,1.207,545,0.998,561,1.681,578,1.38,582,2.966,584,4.012,624,0.912,637,1.836,727,1.951,755,2.798,788,1.791,858,1.681,865,1.183,989,1.38,1173,2.07,1291,1.472,1447,1.862,1450,2.07,1608,1.636,1623,4.21,1628,1.681,1640,1.791,1685,1.597,1688,1.731,1796,1.791,1802,1.791,1803,1.049,1812,1.862,1828,1.862,1857,1.731,2149,1.731,2604,2.07,2641,3.223,2887,3.566,3275,1.862,3300,4.426,3417,5.108,3418,2.251,3419,2.251,3420,2.251,3421,3.566,3422,3.878,3423,6.071,3424,2.251,3425,2.251,3426,3.878,3427,2.251,3428,3.878,3429,2.251,3430,2.251,3431,2.251,3432,2.251,3433,2.251,3434,6.071,3435,3.878,3436,5.108,3437,2.251,3438,3.878,3439,3.878,3440,2.251]],["title/762",[114,2.787,3151,5.166]],["content/762",[6,2.102,16,1.01,52,2.52,72,1.678,96,1.355,99,1.614,105,1.885,114,2.616,117,2.032,125,0.962,239,1.281,267,1.622,286,1.77,290,1.495,368,1.95,371,2.631,394,2.01,398,3.543,399,2.951,436,2.573,439,1.296,456,3.322,514,2.82,521,2.769,578,2.275,581,3.495,582,5.223,584,4.824,597,1.421,673,1.77,716,3.543,818,2.769,855,2.102,865,1.95,867,5.156,876,2.128,971,3.068,989,2.275,1033,2.102,1068,1.405,1078,1.729,1083,2.154,1110,2.853,1120,2.055,1125,2.951,1147,1.95,1449,2.52,1537,2.471,1555,2.769,1584,3.615,1689,3.068,1784,2.631,1803,1.729,1831,3.215,1840,2.696,2149,2.853,2528,2.696,2641,4.775,2677,2.951,2702,4.377,2760,2.769,3235,3.215,3441,3.71,3442,3.215]],["title/763",[1153,3.283,2641,3.316]],["content/763",[16,1.287,72,1.984,99,1.908,269,3.756,286,3.307,358,4.454,434,2.444,481,3.389,582,5.38,643,3.231,654,4.532,848,2.895,867,4.916,1021,5.037,1078,3.231,1153,4.87,1387,4.454,1568,6.005,1584,3.447,1626,4.382,1803,3.231,2438,4.807,2641,4.919]],["title/764",[2641,3.316,3443,6.246]],["content/764",[8,1.117,16,1.103,86,2.288,99,1.527,105,2.552,110,2.208,131,3.261,147,3.766,286,2.646,342,2.782,358,3.564,417,1.946,423,3.4,439,1.936,462,2.408,582,4.61,623,3.693,936,2.734,954,3.626,975,3.18,1706,3.505,1784,3.933,1810,3.933,2179,7.3,2241,4.805,2305,4.139,2542,5.098,2574,5.506,2641,4.923,2647,4.805,2920,5.098,3161,4.805,3421,5.098,3444,8.036,3445,5.544,3446,5.544]],["title/768",[624,2.093,1803,2.408,2597,3.664]],["content/768",[110,2.834,239,1.555,338,3.705,411,1.539,439,2.486,443,3.636,456,4.033,462,3.091,464,4.082,488,3.031,509,4.741,531,4.133,546,3.942,849,4.033,936,3.51,1172,4.655,1439,5.173,1803,3.318,1804,3.603,1840,5.173,2581,5.474,2596,5.886,2687,5.661,3020,4.834,3447,7.117]],["title/769",[2687,6.284]],["content/769",[]],["title/770",[290,1.546,643,1.788,1172,2.509,1804,1.942,3020,2.606]],["content/770",[0,1.443,8,0.419,16,0.87,46,1.706,47,0.801,67,1.65,72,0.852,82,1.983,86,1.228,107,2.022,109,1.172,114,2.19,120,2.117,148,1.549,191,1.52,197,1.932,205,2.38,239,1.072,271,1.613,366,2.111,403,3.358,407,1.63,411,0.644,427,1.58,434,1.73,439,2.187,441,0.983,477,1.728,483,1.432,495,1.284,513,3.209,514,2.36,515,2.222,525,1.825,539,1.398,545,2.175,550,1.707,582,1.728,584,3.358,599,1.48,608,2.367,650,1.613,679,2.437,749,2.064,810,2.289,847,2.288,848,1.243,857,2.632,868,1.882,877,1.707,985,1.409,1014,1.825,1058,2.022,1101,3.209,1172,3.209,1205,2.85,1218,2.815,1340,2.111,1365,4.058,1367,2.966,1803,1.387,1804,4.067,1815,2.022,1839,1.564,1852,2.461,1877,2.222,1910,2.289,2514,1.946,2525,1.799,2641,3.324,2646,2.579,2648,2.737,2653,2.222,2683,2.461,3020,7.104,3161,2.579,3376,2.737,3448,2.737,3449,2.976,3450,2.976,3451,2.976,3452,2.737,3453,2.976]],["title/771",[1153,2.715,1172,3.378,3020,3.508]],["content/771",[16,1.189,18,2.465,46,1.377,72,1.134,86,3.83,105,1.273,109,1.559,114,1.767,117,2.17,120,2.662,148,2.062,197,2.43,239,0.865,270,2.147,358,2.546,394,2.147,403,4.067,411,0.857,415,2.147,434,2.674,439,2.99,441,1.308,488,2.628,513,2.59,514,1.905,515,2.957,545,2.735,561,2.957,582,2.3,643,1.846,650,2.147,679,1.542,750,2.879,810,3.046,848,1.655,1022,2.465,1063,2.194,1151,2.957,1153,4.5,1218,2.272,1561,2.879,1567,3.275,1642,3.046,1804,2.005,1815,2.69,1839,2.082,1852,6.271,2514,2.59,2525,2.394,2529,2.504,2621,3.642,2677,3.15,3020,6.677,3452,3.642,3454,3.961,3455,3.961]],["title/772",[1153,2.715,1205,2.999,3400,3.972]],["content/772",[0,2.129,16,1.48,18,2.732,46,1.526,47,1.798,49,2.111,72,1.256,86,2.757,109,1.728,114,1.959,148,2.285,239,0.959,267,1.919,403,3.583,411,0.949,439,1.533,441,1.45,477,3.879,488,1.869,513,2.871,514,2.111,515,3.277,545,2.96,582,4.696,622,2.146,643,2.046,650,2.379,679,1.709,810,3.376,848,1.834,1022,2.732,1058,2.982,1063,2.431,1153,5.112,1205,5.949,1218,4.638,1567,3.63,1804,2.222,1839,2.307,2514,2.871,2525,2.653,2529,2.775,3020,6.139,3400,3.376]],["title/773",[1172,3.378,3020,3.508,3444,4.476]],["content/773",[16,1.408,18,3.008,72,1.383,86,2.963,109,1.903,148,2.516,239,1.056,271,2.619,403,3.851,411,1.045,439,1.688,441,1.596,462,2.098,478,2.324,488,2.058,513,3.16,514,2.324,545,3.182,582,4.17,643,2.253,650,2.619,679,1.881,810,3.717,848,2.019,1022,3.008,1063,2.676,1153,3.775,1172,4.696,1218,2.772,1567,3.996,1804,2.446,1839,2.54,1910,3.717,2514,3.16,2525,2.921,3020,7.471,3060,4.444,3133,4.444,3444,9.205]],["title/774",[197,1.733,1095,2.27,1172,2.879,3456,4.049]],["content/774",[16,0.822,86,3.431,114,3.71,120,2.553,156,2.33,197,2.33,329,3.142,342,2.969,439,2.067,462,2.57,474,2.553,523,3.87,584,4.459,624,2.399,936,2.918,1068,3.641,1077,3.577,1205,4.828,1626,3.742,1701,4.105,1715,4.707,1804,4.209,2512,4.894,2525,5.025,2641,4.414,2683,6.876,2754,5.442,3400,4.552,3457,5.918,3458,5.442]],["title/775",[1803,2.912,3459,5.744]],["content/775",[69,2.555,107,5.185,239,1.668,271,4.137,441,2.521,488,3.25,520,4.326,573,5.698,650,4.137,857,4.094,902,5.185,1625,6.071,1803,3.558,2525,4.613,2526,4.68,3448,7.019,3458,7.019,3459,9.078,3460,7.633]],["title/776",[3373,7.265]],["content/776",[1,4.921,16,1.045,100,3.775,114,4.365,441,2.485,443,4.997,525,4.613,622,3.679,851,4.613,1068,2.85,1223,6.919,1359,4.921,1466,4.921,1803,3.507,1824,6.222,1852,6.222,1911,5.111,2649,6.52,3456,6.919]],["title/765",[508,2.174,522,2.257,523,2.509,524,2.509,1803,1.788]],["content/765",[156,3.005,239,1.668,411,1.651,439,2.666,500,5.414,508,4.326,514,3.671,522,4.49,552,4.751,554,6.614,556,5.87,584,4.094,1439,5.548,1639,5.548,1803,3.558,1804,3.864,2581,5.87,2596,6.312,2641,4.052,3461,7.019]],["title/766",[125,1.339,291,1.877,1803,2.408]],["content/766",[8,1.029,125,2.78,289,4.196,291,3.489,411,2.462,450,3.198,470,3.737,522,4.303,617,3.287,630,5.098,647,4.097,657,3.095,1803,3.41,2546,6.049,2657,6.339,3462,7.315]],["title/767",[1803,2.912,1804,3.162]],["content/767",[8,1.488,16,1.576,26,0.789,35,1.406,62,1.029,72,0.773,96,2.134,109,1.064,114,2.02,131,3.438,148,3.56,271,3.706,286,1.289,329,1.434,411,1.479,417,0.948,441,0.892,474,1.165,478,1.299,483,2.811,497,1.767,520,1.531,522,2.663,558,1.633,561,2.017,578,2.776,579,1.115,584,2.428,597,1.034,599,1.344,615,1.115,630,4.044,678,1.916,826,2.149,847,1.259,857,1.449,859,2.275,876,3.352,916,1.38,1014,1.656,1038,1.589,1078,1.259,1094,4.053,1095,3.014,1153,1.42,1559,2.149,1583,2.484,1638,4.363,1803,1.259,1804,4.172,1822,2.234,1839,1.42,1847,2.078,1946,3.075,2544,4.833,2547,3.923,2641,3.103,2649,2.341,2655,2.234,2657,2.341,3416,2.484,3463,2.702,3464,2.702,3465,2.702,3466,2.702,3467,2.702,3468,2.702,3469,2.702,3470,2.702,3471,2.702,3472,2.702,3473,2.702,3474,2.702]],["title/777",[492,2.957,502,2.562]],["content/777",[62,2.388,63,2.244,86,2.588,108,4.595,123,5.434,156,2.469,239,1.37,274,2.67,439,2.19,442,2.687,447,4.558,457,5.563,470,3.203,492,2.968,502,4.066,530,5.186,532,2.901,545,2.779,547,3.473,654,4.101,848,2.62,985,2.968,1005,3.233,1686,3.512,1882,4.822,2666,4.822,2717,4.987,2718,5.434,3442,5.434,3475,6.27,3476,6.27]],["title/778",[47,1.681,1515,3.949]],["content/778",[]],["title/779",[112,1.129,290,1.546,312,1.762,2674,2.606,2723,2.606]],["content/779",[46,1.246,49,4.254,72,2.319,108,4.301,109,2.246,110,1.427,112,2.603,122,1.884,272,1.671,274,2.429,290,3.264,312,1.646,360,1.658,407,1.963,410,2.266,411,0.775,415,1.942,457,3.666,474,2.461,476,2.055,477,2.081,492,1.696,502,1.47,514,1.724,525,2.197,577,3.666,610,3.666,679,1.395,720,2.031,736,2.136,755,1.963,816,2.485,848,1.497,976,2.303,992,2.434,1042,3.105,1043,2.197,1049,3.028,1056,4.046,1118,4.258,1119,4.258,1161,4.733,1449,2.434,1466,2.344,1491,2.675,1539,2.197,1686,3.195,1793,2.85,1804,1.814,1815,2.434,1839,1.884,2541,2.85,2665,4.146,2674,5.502,2675,5.165,2677,2.85,2678,2.605,2679,3.105,2723,2.434,2724,3.105,2739,3.105,3000,2.756]],["title/780",[72,1.26,98,2.661,492,2.084,1115,2.525]],["content/780",[16,0.653,72,2.014,98,2.842,99,1.295,105,2.263,239,1.028,274,2.996,340,2.605,343,2.766,360,2.176,410,2.974,439,2.458,445,2.605,472,2.974,478,2.262,492,3.331,525,2.884,604,2.262,623,4.688,679,1.831,854,2.766,865,3.699,875,2.244,978,3.889,985,2.226,1016,3.133,1043,4.315,1056,4.992,1060,3.262,1119,5.254,1147,2.472,1161,6.235,1350,3.195,1492,3.262,1673,2.927,1686,3.942,1760,3.889,1941,3.511,1959,3.023,2487,2.665,2606,5.254,2675,3.418,2723,4.78,2727,4.076,2742,4.076,2743,4.076,3477,4.703]],["title/781",[1086,3.723,1479,4.54]],["content/781",[32,1.498,63,2.979,72,1.077,108,1.998,109,1.481,125,0.976,137,2.185,148,3.819,226,3.748,239,1.295,290,1.516,339,2.418,340,2.084,411,0.814,415,2.039,441,1.243,443,1.922,502,2.432,521,2.809,540,1.888,577,2.418,610,2.418,647,2.108,749,4.112,823,2.61,858,2.809,1048,2.418,1068,2.246,1086,6.219,1098,2.669,1136,2.61,1218,2.158,1479,7.583,1509,2.342,1726,2.993,1810,2.669,1839,1.978,1857,2.894,1968,5.138,2335,2.669,2487,2.132,2647,3.261,2674,2.556,2678,6.051,2691,3.261,2742,3.261,2744,3.261,2745,2.809,2747,3.46,2748,3.261,2749,3.46,2750,5.138,2778,3.46,3185,3.46,3478,3.763,3479,3.763,3480,3.763,3481,3.763,3482,3.763,3483,3.46,3484,3.763]],["title/782",[1240,5.48]],["content/782",[1856,8.377]],["title/783",[360,3.655]],["content/783",[]],["title/784",[239,1.365,2487,3.54]],["content/784",[0,1.577,34,2.024,49,3.202,63,2.382,72,1.51,98,1.965,108,2.801,109,1.28,111,1.136,112,1.553,122,2.773,125,0.843,147,2.209,148,1.693,239,1.454,269,2.859,272,2.459,275,1.762,290,1.31,293,2.127,312,1.493,360,1.504,407,1.781,427,1.726,434,1.147,439,1.842,441,1.742,481,2.58,492,2.498,502,2.164,550,1.865,577,2.09,604,2.538,610,2.09,647,1.821,674,2.689,786,1.965,844,2.586,855,1.843,875,2.517,940,2.99,982,2.209,995,1.781,1012,1.801,1078,1.516,1086,3.145,1095,3.432,1115,1.865,1118,2.428,1197,2.818,1214,2.364,1217,1.461,1479,3.835,1491,2.428,1528,4.196,1557,2.428,1584,2.624,1611,1.564,1688,2.501,1804,2.671,1839,3.499,1968,2.818,2487,4.34,2674,3.583,2675,3.835,2678,5.567,2705,2.209,2723,3.583,2750,5.768,2988,2.818,3289,2.818,3485,3.252,3486,2.99,3487,2.99]],["title/785",[239,1.365,2487,3.54]],["content/785",[10,1.27,33,1.248,49,3.815,63,1.522,100,3.272,108,2.94,109,0.988,111,0.876,112,2.149,121,2.571,138,1.068,147,1.704,197,0.988,239,0.929,269,1.36,271,1.36,272,1.983,291,0.911,312,1.953,384,2.307,407,1.374,434,1.5,439,0.876,441,1.405,449,1.161,457,1.612,481,3.569,492,4.387,502,1.029,550,1.439,604,2.663,610,1.612,679,2.842,719,1.995,720,1.422,786,2.571,816,1.74,854,1.476,859,2.156,875,1.197,936,1.237,982,1.704,1031,1.439,1047,1.995,1049,1.332,1066,1.612,1128,1.332,1145,2.307,1148,1.586,1153,1.319,1196,1.476,1217,2.488,1528,1.995,1539,2.608,1550,2.174,1584,2.754,1587,1.995,1611,1.207,1648,1.995,1701,1.74,1793,1.995,1810,1.779,1824,2.075,1829,1.929,1839,3.428,1941,1.873,1959,1.612,2129,1.929,2487,4.137,2528,4.025,2654,2.307,2674,2.889,2675,5.765,2678,6.97,2723,5.387,2751,2.307,3008,1.779,3289,2.174,3486,2.307,3487,2.307,3488,2.509,3489,4.253,3490,2.509,3491,2.509]],["title/786",[502,1.806,624,1.784,2597,3.123,2687,3.502]],["content/786",[0,1.921,47,1.066,86,3.129,108,2.103,110,1.577,124,2.428,138,1.686,156,2.43,239,1.871,272,1.846,358,2.546,411,0.857,441,2.827,442,1.697,452,2.124,456,3.498,459,5.511,462,2.68,464,2.272,470,2.023,488,3.951,492,1.875,502,3.11,509,2.638,525,2.428,531,3.584,539,2.899,545,1.755,546,2.194,552,2.465,867,2.809,875,1.89,975,2.272,998,2.245,1153,2.082,1387,2.546,1439,2.879,1511,3.15,1515,2.504,1812,3.275,2019,2.809,2532,3.15,2581,3.046,2599,5.348,2686,2.809,2702,4.608,2731,3.642,2732,3.275,2733,3.275,2734,3.275,2772,3.642,2784,2.809,3131,5.675,3483,3.642,3492,3.642,3493,3.961,3494,3.961,3495,3.961,3496,3.961,3497,3.432]],["title/787",[538,6.534]],["content/787",[26,2.229,52,5.185,107,5.185,124,4.68,197,3.005,441,2.521,470,5.043,502,3.131,521,5.698,643,3.558,966,4.751,1648,6.071,1694,4.826,1839,4.012,2008,6.312,2487,4.326,2868,6.614,3492,7.019,3498,7.019]],["title/788",[436,4.332,573,4.663]],["content/788",[239,1.886,436,5.988,462,3.749,488,3.676,502,4.377,573,6.445,674,7.14,1688,6.64,2525,5.218,2526,5.293,3499,8.634]],["title/789",[488,2.66,2514,4.085]],["content/789",[0,3.87,197,3.142,239,1.743,286,3.808,307,6.137,488,3.398,496,4.634,563,5.129,679,3.107,905,4.967,1105,4.757,1367,4.823,1463,5.42,1888,6.347,2514,5.219,2650,6.347,3500,7.98]],["title/790",[462,2.712,1031,3.583]],["content/790",[16,1.031,239,1.621,394,4.02,415,4.02,439,2.591,462,3.221,495,3.2,502,3.975,572,5.538,1077,4.483,1367,4.483,1402,5.145,1463,5.039,2487,4.204,2514,4.851,2527,5.538,2528,5.392,2665,7.044,2699,6.135,3501,7.418]],["title/791",[108,3.316,502,2.562]],["content/791",[16,1.031,109,3.815,197,2.921,239,1.621,241,4.363,271,4.02,403,3.978,441,2.45,502,3.043,550,4.255,577,4.768,604,3.568,610,4.768,786,4.483,1012,4.108,1107,4.483,1120,4.108,1551,6.135,1911,5.039,2487,4.204,2698,6.428]],["title/792",[109,1.733,417,1.545,550,2.525,786,2.661]],["content/792",[1,3.445,3,2.272,53,1.602,63,1.885,109,2.074,147,3.578,156,2.074,191,2.691,239,1.671,272,2.455,340,2.917,366,3.736,439,3.667,441,1.739,464,3.021,467,2.667,470,2.691,520,4.335,531,4.443,539,2.474,546,2.917,582,3.059,610,3.386,786,3.183,905,3.278,1202,4.19,1367,3.183,1546,5.096,1599,3.059,1620,3.021,2019,3.736,2439,4.565,2487,4.335,2529,6.639,2543,4.19,2676,4.051,3498,4.844,3502,4.565]],["title/793",[271,2.386,579,1.817,786,2.661,1107,2.661]],["content/793",[63,3.09,73,4.836,148,5.556,197,3.399,271,4.679,573,6.445,1107,5.218,1911,5.864,2439,7.482,3503,8.634,3504,8.634]],["title/794",[109,1.733,483,2.118,786,2.661,1012,2.438]],["content/794",[16,1.304,109,3.173,112,1.667,125,1.469,239,1.237,271,4.368,366,4.017,403,3.038,441,3.099,465,4.684,476,3.248,604,4.513,642,5.096,678,4.017,679,2.205,810,6.199,875,2.702,1212,4.228,1551,6.666,1553,3.928,1620,3.248,1839,2.977,2019,4.017,2487,3.21,2653,4.228,2699,4.684,2701,5.208,2723,3.847,2795,5.208,3505,5.664,3506,5.664,3507,5.664,3508,5.664]],["title/795",[394,2.799,443,2.639,1402,3.582]],["content/795",[109,3.142,156,3.142,394,5.505,402,5.66,461,5.564,462,3.465,775,4.967,875,3.808,1031,4.577,1077,4.823,1402,7.75,2019,5.66,3509,7.98]],["title/796",[0,3.029,1367,3.775]],["content/796",[394,5.189,1069,7.364,1402,7.881,1485,7.364,1518,7.364]],["title/797",[109,2.034,623,3.441,1217,2.321]],["content/797",[109,4.631,239,1.743,394,4.325,462,3.465,1107,4.823,1341,5.42,1402,5.535,1617,5.42,2665,5.8,2699,6.599,3186,7.338,3510,10.158,3511,7.338]],["title/798",[604,3.005,2665,4.54]],["content/798",[16,0.938,96,2.466,125,1.751,148,3.515,190,3.418,226,3.45,239,1.475,269,3.66,271,3.66,398,4.081,441,2.23,520,3.827,642,4.269,674,5.584,865,3.549,875,3.222,1031,3.873,1620,3.873,1839,5.414,2665,8.013,2759,5.852,3512,6.752,3513,6.752,3514,6.752]],["title/799",[492,2.957,508,3.54]],["content/799",[16,0.938,124,4.14,156,2.659,239,1.475,286,3.222,411,1.461,439,2.358,441,2.23,443,3.45,478,3.248,481,3.302,488,2.875,519,3.622,520,3.827,522,3.972,523,4.416,532,3.124,565,4.908,847,3.148,968,3.782,985,3.197,1020,4.908,1634,4.34,1639,4.908,1642,5.193,1675,4.14,1695,4.683,1807,5.852,2594,5.371]],["title/800",[552,4.917]],["content/800",[8,0.68,16,0.998,124,2.963,125,1.253,239,1.569,286,3.426,291,1.756,338,2.516,373,3.219,380,3.055,443,2.469,462,2.098,481,2.363,488,3.058,508,4.856,524,3.16,541,3.844,552,4.469,557,4.188,565,3.513,599,2.404,847,3.348,848,3,850,4.644,867,3.428,877,2.772,908,3.106,1022,5.904,1136,3.352,1217,2.172,1622,3.996,1641,3.996,1707,3.608,1796,3.844,2514,3.16,2529,3.055,2581,3.717,2582,5.939,3497,4.188,3515,4.444,3516,4.833,3517,4.833,3518,4.833,3519,4.833,3520,4.833]],["title/801",[125,1.62,291,2.27]],["content/801",[22,3.138,50,4.236,125,2.513,291,2.695,312,4.45,360,3.432,374,4.738,380,4.69,630,3.938,645,5.627,657,3.138,848,3.099,853,6.582,908,4.768,1593,6.821,2537,6.821]],["title/802",[16,0.718,286,2.465,850,2.799]],["content/802",[16,1.613,33,2.148,53,2.726,62,1.644,63,1.545,99,1.189,109,3.152,131,3.88,191,4.09,197,1.7,286,3.82,360,1.998,361,2.316,411,0.934,427,2.292,449,1.998,450,1.888,474,2.846,539,2.028,615,2.722,622,2.111,630,3.502,657,2.791,679,1.681,848,1.804,859,1.681,877,2.476,908,2.775,1105,2.574,1532,3.571,1620,3.784,1694,2.73,1701,2.995,1911,2.933,2438,2.995,2514,2.824,2526,4.045,2527,3.223,2529,5.061,2697,3.571,2703,3.571,2791,3.063,3521,3.742,3522,4.318,3523,3.742]],["title/803",[62,2.379,109,2.459]],["content/803",[16,0.963,47,1.865,53,2.818,62,3.528,67,2.331,96,2.531,109,4.109,125,1.797,226,3.54,411,1.499,622,3.389,848,2.895,859,2.698,1034,5.512,1485,5.33,1634,4.454,1694,5.857,2526,4.249,2791,4.916,3524,4.916,3525,5.731,3526,6.005]],["title/804",[63,2.236,109,2.459]],["content/804",[63,4.146,109,3.399,125,2.239,212,5.218,407,4.729,615,3.563,808,5.458,1078,4.025,1187,6.64,2791,6.124]],["title/805",[122,4.153]],["content/805",[16,0.712,22,1.327,26,0.916,33,1.56,45,4.006,46,2.605,47,2.919,49,3.605,59,5.239,67,1.723,111,2.267,112,1.508,120,1.353,122,1.648,131,1.844,191,1.602,197,1.235,198,3.468,199,2.015,434,1.106,462,2.819,474,1.353,514,2.464,539,2.406,543,1.923,544,2.051,553,3.479,613,1.419,615,1.294,622,3.665,630,1.665,808,1.982,817,1.982,848,1.31,857,2.747,859,1.221,872,1.869,877,1.798,975,1.798,1012,2.837,1068,1.188,1078,1.462,1101,2.051,1187,2.412,1451,2.717,1485,3.939,1546,3.412,1620,1.798,1694,4.105,1821,2.224,1830,2.412,2526,1.923,2529,1.982,2791,4.605,3524,5.86,3525,4.236,3526,4.438,3527,3.136,3528,5.122,3529,3.136,3530,2.883]],["title/806",[114,3.526]],["content/806",[16,1.045,53,2.288,114,4.365,191,3.844,547,4.167,601,6.938,848,3.143,857,4.035,1911,5.111,1919,6.222,1946,5.111,2791,7.708,3521,6.52,3524,5.337,3531,8.994,3532,6.919]],["title/807",[111,2.182,112,1.839]],["content/807",[16,1.016,53,2.225,111,3.354,112,2.826,191,3.737,547,4.051,601,6.811,848,3.056,857,3.923,1911,4.969,1919,6.049,1946,4.969,2791,7.604,3521,6.339,3524,5.189,3531,8.83,3532,6.727]],["title/808",[16,0.868,286,2.981]],["content/808",[16,1.219,543,5.382,622,4.292,818,6.553,877,5.034,1022,5.463,1694,5.549,2526,5.382,2791,6.226,3524,6.226,3530,8.071]],["title/809",[443,3.191,847,2.912]],["content/809",[16,0.903,50,2.843,131,5.22,181,3.96,286,3.103,360,3.008,407,3.562,443,3.322,462,3.854,547,3.601,615,2.683,622,3.18,630,4.711,647,3.642,847,5.296,848,2.717,857,3.487,859,2.531,1341,4.417,1620,3.73,2438,4.51,2514,4.253,2529,4.111,3082,5.979]],["title/810",[847,2.912,859,2.432]],["content/810",[411,1.899,434,3.095,462,3.811,630,4.66,679,3.417,847,5.026,859,4.197,2526,5.382,3524,6.226]],["title/811",[462,2.712,847,2.912]],["content/811",[62,3.134,67,2.768,181,4.622,462,4.498,474,3.55,817,5.203,847,4.828,859,3.204,908,5.289,1218,4.72,2526,5.045,3524,5.837]],["title/812",[8,0.62,181,1.965,544,2.879,1341,2.991]],["content/812",[3,2.99,53,2.108,67,2.331,181,5.444,205,4.493,398,4.188,434,3.267,629,3.756,859,3.607,876,3.975,908,4.454,1022,4.313,1034,5.512,1485,5.33,3524,6.572,3525,5.731,3526,6.005]],["title/813",[16,0.718,181,2.305,859,2.011]],["content/813",[16,1.478,35,3.226,131,3.645,181,4.746,268,3.983,360,2.867,434,2.185,474,2.673,506,3.918,630,3.29,645,3.598,657,2.622,847,2.889,853,4.209,859,3.342,902,4.209,1078,2.889,1527,3.799,1694,5.428,1911,4.209,2514,4.053,2526,3.799,2529,5.428,3524,6.09,3525,7.1]],["title/814",[239,0.838,508,2.174,522,2.257,523,2.509,1695,2.661]],["content/814",[35,3.973,156,3.005,239,1.668,398,4.613,411,1.651,494,5.185,508,4.326,519,5.295,522,6.436,523,4.992,562,5.414,637,3.613,680,5.548,1107,4.613,1639,5.548,2868,6.614,3461,7.019]],["title/815",[2600,5.367]],["content/815",[110,3.178,380,5.045,427,4.236,436,5.535,494,5.42,496,4.634,532,3.692,968,4.47,1020,5.8,1599,4.634,1800,5.957,2008,6.599,2600,6.9,2957,6.915,3442,6.915,3533,7.98]],["title/817",[239,1.365,441,2.063]],["content/817",[10,3.101,108,3.252,110,2.439,181,2.733,239,1.861,270,3.319,274,2.608,417,2.149,439,2.139,441,2.023,443,3.129,444,4.572,461,3.355,462,3.698,476,3.513,481,4.164,525,3.755,532,2.834,615,2.527,847,2.855,962,4.16,970,3.651,985,2.899,1044,5.307,1353,4.248,1512,4.08,2120,4.005,2535,4.248,2672,5.065,2741,5.307,2798,4.871,3534,6.125,3535,6.125,3536,6.125]],["title/818",[1031,4.531]],["content/818",[16,0.819,62,2.781,63,2.968,67,1.983,110,1.488,125,1.529,156,1.471,196,3.468,212,3.563,239,1.288,269,2.025,286,1.783,358,2.401,411,0.808,441,1.947,443,3.012,444,2.789,451,4.004,457,2.401,458,2.65,462,3.171,486,2.769,650,2.025,847,1.742,877,2.143,909,2.538,912,2.069,936,1.842,962,2.538,981,2.325,1031,3.381,1077,2.258,1101,3.856,1120,4.044,1168,3.09,1353,2.591,1558,3.09,1566,2.716,1741,2.538,1878,2.873,2009,2.972,2120,2.443,2259,2.789,2359,4.004,2666,2.873,2711,2.972,2712,2.716,2771,3.238,2792,3.435,3062,3.435,3083,3.238,3537,3.736,3538,3.736,3539,3.736,3540,3.736,3541,3.238,3542,3.238,3543,3.435,3544,3.736,3545,3.435,3546,3.736,3547,3.238,3548,3.238,3549,5.421,3550,3.736,3551,3.736,3552,3.435,3553,3.435,3554,3.435]],["title/819",[3371,6.847]],["content/819",[34,1.477,98,2.452,105,0.763,110,2.116,124,1.455,138,1.727,239,0.518,274,1.727,282,1.683,290,0.956,291,0.862,356,1.415,380,1.5,399,4.227,411,1.149,441,0.784,445,1.314,449,2.459,456,2.299,458,1.683,459,1.725,461,1.3,464,3.048,467,1.201,474,1.024,481,2.598,485,1.825,486,1.906,488,2.677,497,1.552,503,1.345,509,6.613,524,1.552,530,1.962,532,3.269,546,1.314,552,1.477,558,1.434,572,1.772,578,1.455,637,1.123,726,1.683,750,1.725,844,1.888,848,0.991,859,0.924,867,1.683,877,1.361,905,1.477,912,1.314,913,1.962,941,1.581,966,1.477,975,1.361,980,4.087,981,3.307,984,1.962,1031,1.361,1053,1.772,1101,1.552,1167,2.418,1175,2.182,1359,1.552,1387,1.525,1438,1.962,1462,1.888,1492,1.646,1509,2.525,1558,1.962,1599,1.378,1641,1.962,1755,2.056,1783,2.608,1795,3.862,1877,1.772,1902,2.182,1946,1.612,1953,2.182,2057,1.725,2335,1.683,2517,2.056,2533,3.029,2612,2.182,2685,1.888,2732,1.962,2733,1.962,2734,1.962,2744,2.056,2745,1.772,2784,5.011,2800,2.182,2851,1.888,2914,2.182,3001,2.056,3002,1.683,3008,4.46,3073,2.182,3371,4.605,3555,5.314,3556,3.731,3557,2.373,3558,2.056,3559,2.056,3560,2.373,3561,2.373,3562,2.373,3563,2.373,3564,2.373,3565,2.373,3566,2.373,3567,2.373,3568,2.373,3569,2.373,3570,2.373,3571,2.373,3572,2.373]],["title/820",[630,4.194]],["content/820",[8,1.507,33,1.598,34,4.108,65,1.521,69,1.075,118,2.629,209,2.399,239,0.702,274,2.224,291,1.167,356,1.915,410,2.031,411,1.645,441,2.18,462,1.395,476,1.842,478,1.545,509,2.14,528,2.555,540,1.612,617,1.444,630,4.442,647,2.926,679,2.033,716,1.941,737,2.784,761,2.784,848,1.342,849,1.82,859,2.57,871,2.335,910,2.954,913,2.656,954,2.101,981,3.251,1167,3.114,1172,2.101,1189,1.889,1208,2.555,1469,5.25,1795,2.335,1946,2.182,1994,3.9,2027,2.784,2174,2.555,2711,4.155,2712,6.868,2799,4.526,2960,2.784,2976,2.784,3120,2.954,3502,2.784,3545,2.954,3547,4.526,3548,2.784,3573,3.212,3574,3.212,3575,3.212,3576,3.212,3577,3.212,3578,3.212,3579,3.212,3580,5.223,3581,3.212,3582,3.212,3583,3.212,3584,5.223,3585,3.212,3586,5.223]],["title/821",[274,2.66,488,2.66]],["content/821",[35,1.541,47,1.315,75,2.099,105,0.952,110,1.945,115,2.354,124,1.815,181,1.321,197,1.165,205,1.435,209,1.359,212,4.375,267,2.135,274,2.08,394,2.647,397,1.764,411,1.566,417,1.039,431,1.815,439,1.034,442,1.268,448,2.209,456,1.677,458,2.099,459,2.151,461,3.965,462,3.143,486,2.294,488,1.26,509,1.971,516,1.639,519,1.587,543,1.815,546,1.639,579,1.221,581,1.764,615,1.221,647,2.736,654,1.936,679,1.901,873,1.639,895,2.276,936,1.459,941,1.971,962,3.318,970,2.912,975,1.697,998,1.677,1014,1.815,1041,2.209,1042,2.565,1043,1.815,1095,1.526,1167,1.764,1174,2.209,1189,1.741,1217,1.33,1340,2.099,1351,4.233,1353,3.388,1359,5.966,1527,1.815,1626,1.871,1824,2.448,1878,3.757,2504,2.354,2535,2.053,2585,2.721,2743,2.565,2745,2.209,2874,2.448,2990,2.721,3150,2.721,3181,2.721,3497,2.565,3523,2.565,3541,6.272,3542,6.272,3543,4.491,3587,2.96,3588,2.96,3589,2.96,3590,2.96,3591,2.96,3592,2.96,3593,6.236,3594,2.96,3595,2.96,3596,2.96]],["title/822",[105,2.008,267,2.731]],["content/822",[16,0.313,22,0.518,26,0.658,30,0.443,32,0.897,33,0.609,47,1.221,48,1.613,52,1.53,60,0.679,62,0.858,67,0.412,76,0.679,80,0.62,86,1.29,99,0.62,105,1.458,110,0.897,120,0.529,125,0.318,131,1.325,138,0.959,156,0.887,181,0.547,191,1.151,197,2.946,209,0.563,212,0.74,239,0.683,267,2.833,274,2.586,282,0.869,289,1.794,291,0.819,361,0.657,380,1.424,394,1.695,398,2.345,401,0.74,411,1.216,412,0.65,431,0.751,439,0.428,440,0.816,441,1.498,442,0.525,443,1.151,450,0.536,458,0.869,463,0.975,470,0.626,474,0.529,476,2.225,479,1.863,481,1.529,488,2.759,495,0.972,497,0.801,509,0.816,520,1.277,539,0.576,545,3.182,552,0.763,571,2.876,573,1.682,580,0.942,581,0.73,599,0.609,601,1.598,610,0.788,615,0.506,630,2.408,643,1.809,647,2.173,679,0.477,694,0.891,755,0.671,843,1.013,844,0.975,847,0.571,848,3.963,862,2.487,877,1.292,914,0.942,936,0.604,942,1.127,954,0.801,962,2.124,970,1.343,975,0.703,981,1.946,1014,0.751,1025,0.942,1068,0.464,1081,0.801,1085,0.73,1089,1.013,1102,1.127,1125,0.975,1126,1.127,1136,3.145,1155,1.013,1159,1.733,1167,0.73,1189,0.721,1217,0.551,1218,0.703,1229,0.85,1234,2.072,1291,0.801,1294,1.062,1340,1.598,1353,3.145,1359,3.675,1387,1.448,1460,0.869,1462,0.975,1469,0.975,1498,1.013,1505,1.863,1522,0.942,1537,5.339,1566,1.637,1685,1.598,1724,0.801,1741,2.636,1783,0.788,1888,0.975,1911,0.832,1946,0.832,1949,0.942,2057,0.891,2120,0.801,2149,0.942,2224,0.721,2495,3.362,2512,1.013,2516,0.942,2527,0.915,2529,0.775,2588,1.127,2653,0.915,2674,2.124,2703,2.586,2705,0.832,2712,0.891,2760,0.915,2774,1.127,2798,0.975,2799,1.062,3083,2.71,3085,1.127,3171,1.062,3275,1.013,3302,1.127,3401,1.127,3502,2.71,3523,1.062,3541,1.062,3542,1.062,3547,1.062,3548,1.062,3549,2.072,3552,3.568,3553,2.072,3554,2.072,3559,1.952,3597,1.225,3598,1.225,3599,1.225,3600,1.225,3601,1.225,3602,2.253,3603,1.225,3604,2.253,3605,1.225,3606,1.225,3607,3.127,3608,1.225,3609,1.225,3610,1.225,3611,1.225]],["title/823",[124,3.167,239,1.128,439,1.804]],["content/823",[33,3.011,124,3.712,156,2.384,196,3.561,239,2.126,397,3.609,439,2.114,449,2.801,464,3.472,494,4.112,503,3.431,509,6.481,532,3.908,544,3.959,562,4.294,609,5.88,988,4.112,1014,3.712,1167,3.609,1713,4.033,1783,3.891,1795,6.14,1796,4.815,1797,5.567,2057,4.4,2705,4.112,3020,4.112,3511,5.567,3612,5.246,3613,6.054]],["title/824",[2584,7.265]],["content/824",[]],["title/825",[3515,5.744,3614,6.246]],["content/825",[509,6.619,1795,7.222,3615,9.936,3616,9.936]],["title/826",[556,6.076]],["content/826",[488,2.67,509,6.603,514,4.163,552,6.17,558,6.46,561,6.462,565,4.558,608,4.987,609,3.79,850,4.691,867,4.448,980,6.657,1439,4.558,1639,4.558,1796,7.885,3558,5.434,3617,6.27,3618,6.27,3619,6.27,3620,8.656,3621,6.27]],["title/827",[503,3.54,2705,4.243]],["content/827",[47,1.575,197,2.304,239,1.802,274,3.513,343,4.852,415,3.172,439,3.336,441,3.155,477,4.79,488,4.068,503,5.414,525,3.588,532,2.708,537,3.898,630,3.107,848,2.445,858,4.369,984,4.84,985,2.771,1049,3.107,1539,3.588,1830,4.501,2705,6.489,2798,4.655,3235,5.072,3556,5.382,3622,5.852]],["title/828",[1077,3.122,1196,3.038,1240,3.582]],["content/828",[16,0.971,34,2.901,47,1.255,138,2.977,156,1.835,181,2.08,197,2.752,271,2.526,403,2.5,411,1.008,441,3.461,442,1.998,450,3.667,477,2.707,481,2.279,545,3.717,599,3.477,637,2.207,650,4.546,703,2.779,851,2.858,863,3.307,865,2.45,872,2.779,901,3.48,916,3.571,985,2.207,1049,2.475,1189,2.742,1217,3.142,1550,4.04,2624,6.428,2705,6.781,2739,4.04,2798,3.708,2964,4.04,3165,4.287,3623,6.058,3624,4.662,3625,4.662,3626,4.287]],["title/829",[1077,3.122,1196,3.038,1617,3.508]],["content/829",[0,1.252,16,0.359,33,1.284,82,1.72,98,1.561,110,1.028,124,1.583,131,1.519,156,1.017,181,1.152,239,2.118,286,1.232,341,3.418,343,3.909,356,1.539,360,1.195,367,1.519,394,1.4,403,1.385,411,1.606,415,2.362,439,1.975,441,2.974,443,1.319,452,1.385,456,2.47,458,1.832,459,1.877,476,1.481,481,1.263,486,1.213,488,1.1,489,1.832,495,1.114,503,4.207,509,1.72,524,2.851,525,1.583,532,3.725,540,1.296,544,1.689,581,1.539,642,1.633,650,1.4,679,1.697,736,2.598,847,1.204,848,2.363,851,1.583,855,2.47,865,2.291,872,1.539,875,1.232,912,2.414,929,1.832,1014,1.583,1167,3.372,1446,1.607,1458,2.238,1539,1.583,1675,1.583,1784,1.832,1795,3.168,1802,2.054,1882,3.352,1899,2.136,1949,3.352,2066,2.238,2335,1.832,2438,3.023,2533,1.928,2616,2.136,2705,6.117,2732,2.136,2733,2.136,2734,2.136,2760,3.254,2784,5.266,3260,2.375,3558,2.238,3559,2.238,3612,3.777,3627,2.582,3628,2.375,3629,5.201,3630,2.582,3631,2.375,3632,2.582]],["title/830",[156,2.459,522,3.674]],["content/830",[16,0.965,18,4.322,46,1.606,47,1.869,50,3.036,52,4.717,60,2.559,67,1.554,100,2.318,120,1.993,125,1.801,131,2.718,181,4.14,197,1.819,271,3.764,286,2.205,361,2.478,403,2.478,439,1.614,441,3.45,481,3.396,522,4.085,544,3.022,545,3.697,599,3.454,629,3.764,650,5.028,657,2.938,865,2.429,891,3.554,916,3.548,985,3.288,3623,4.004,3626,4.249,3633,9.277]],["title/831",[476,3.583,1949,4.804]],["content/831",[8,1.158,82,5.481,156,3.24,186,6.774,290,3.315,452,4.413,474,3.55,476,4.72,637,3.896,1099,5.481,1617,5.59,3208,7.567,3628,7.567,3634,8.229]],["title/832",[3635,7.901]],["content/832",[131,5.736,411,2.109,575,6.624,2438,6.764,3636,8.065]],["title/833",[1584,3.93]],["content/833",[8,1.425,1584,5.037,2534,7.56]],["title/834",[368,3.283,775,3.888]],["content/834",[8,1.692,118,3.745,131,5.532,2438,6.522,3637,9.404]],["title/835",[3638,7.901]],["content/835",[575,6.749,650,5.385,3636,8.217,3639,9.936]],["title/836",[1584,3.93]],["content/836",[8,1.453,2534,7.709]],["title/837",[368,3.283,775,3.888]],["content/837",[8,1.797,118,4.045,125,2.069,204,5.045,205,4.926,363,6.137,650,5.505]],["title/838",[3286,7.265]],["content/838",[16,1.407,286,4.832,403,5.431]],["title/839",[1584,3.93]],["content/839",[8,1.641,16,1.46,30,2.539,53,2.843,86,3.857,105,3.005,111,2.453,112,2.067,116,6.086,118,2.797,209,3.225,411,1.519,847,3.274,968,3.934,1832,4.186,2881,6.086,3640,6.458]],["title/840",[368,3.283,775,3.888]],["content/840",[8,1.686,16,1.06,118,3.04,125,1.979,209,5.313,269,4.137,271,5.35,276,6.614,277,6.614,1323,6.614,1706,4.826,3641,7.019]],["title/841",[3642,7.901]],["content/841",[181,4.519,622,4.952,847,4.721]],["title/842",[1584,3.93]],["content/842",[8,1.692,118,3.745,181,4.196,205,5.451]],["title/843",[368,3.283,775,3.888]],["content/843",[8,1.694,16,1.076,118,3.084,125,2.009,209,5.342,269,4.198,271,5.401,276,6.712,277,6.712,1323,6.712,3641,7.122]],["title/844",[3643,7.901]],["content/844",[181,4.273,520,5.426,575,6.504,847,4.463,862,7.616,3636,7.918]],["title/845",[1584,3.93]],["content/845",[8,1.453,2534,7.709]],["title/846",[368,3.283,775,3.888]],["content/846",[8,1.795,118,4.328,181,3.358,312,3.455,629,4.078,645,5.68,876,4.315,972,6.222,3644,7.524,3645,7.524]],["title/847",[3646,7.901]],["content/847",[46,3.211,47,2.487,50,4.862,181,4.123,629,5.007,657,3.909,712,7.641]],["title/848",[1584,3.93]],["content/848",[8,1.599,72,1.861,118,3.534,181,3.96,197,2.56,205,3.153,209,2.986,411,1.406,617,2.922,622,3.18,629,5.475,657,3.755,873,3.601,876,5.09,908,5.704,1367,5.364,1504,4.331,1922,4.612,3647,5.635,3648,5.635]],["title/849",[368,3.283,775,3.888]],["content/849",[8,1.654,46,3.102,47,2.402,50,3.902,56,5.25,118,3.555,181,3.983,657,3.777]],["title/850",[3649,7.901]],["content/850",[50,4.967,125,2.483,181,4.273,629,5.189,657,4.051]],["title/851",[1584,3.93]],["content/851",[8,1.599,72,1.861,118,3.534,181,3.96,197,2.56,205,3.153,209,2.986,411,1.406,617,2.922,622,3.18,629,5.475,657,3.755,873,3.601,876,5.09,908,5.704,1367,5.364,1504,4.331,1922,4.612,3647,5.635,3648,5.635]],["title/852",[368,3.283,775,3.888]],["content/852",[8,1.692,118,3.745,125,2.915,629,5.097]],["title/853",[3650,7.901]],["content/853",[545,4.322,575,6.624,650,5.285,2529,6.166,3636,8.065]],["title/854",[1584,3.93]],["content/854",[8,1.453,2534,7.709]],["title/855",[368,3.283,775,3.888]],["content/855",[8,1.703,118,4.25,125,2.239,204,5.458,205,5.175,363,6.64,650,4.679]],["title/856",[3651,7.901]],["content/856",[16,1.407,403,5.431,480,6.746]],["title/857",[1584,3.93]],["content/857",[8,1.716,16,1.387,30,1.943,53,2.361,86,3.204,105,2.496,111,1.877,112,1.582,116,4.658,118,3.629,181,3.464,197,2.116,205,2.606,209,2.468,403,2.883,411,1.679,622,2.628,629,2.913,847,2.506,876,3.083,968,3.011,1367,3.248,1504,3.58,1832,3.204,2519,4.942,2881,4.658,3640,4.942,3647,4.658,3648,4.658]],["title/858",[368,3.283,775,3.888]],["content/858",[8,1.71,16,1.111,46,3.242,47,2.51,50,2.45,100,4.68,118,4.051,121,3.387,125,2.074,243,5.153,245,5.153,246,5.153,291,2.906,312,2.573,338,2.917,339,3.602,340,3.103,342,4.68,411,1.212,434,1.976,461,3.07,3652,5.603]],["title/859",[3653,7.901]],["content/859",[8,0.522,98,2.242,124,2.275,156,1.461,197,1.461,239,1.588,270,2.01,274,1.58,341,3.543,343,2.182,356,2.211,360,1.716,411,0.802,415,2.01,439,2.047,441,2.727,443,1.895,476,2.128,488,2.496,489,2.631,503,4.681,524,2.426,532,4.162,540,1.861,563,2.384,581,2.211,619,2.102,654,2.426,848,1.55,855,3.322,857,1.99,936,1.829,1038,2.182,1049,1.969,1167,3.495,1182,3.068,1189,2.182,1441,2.242,1446,2.309,1458,3.215,1462,2.951,1580,3.068,1607,2.426,1675,2.275,1795,4.261,1802,2.951,1830,2.853,1882,4.509,2533,2.769,2574,2.573,2581,5.59,2582,3.068,2617,3.411,2686,2.631,2705,3.982,2784,4.159,3612,5.08,3623,3.215,3629,6.684,3631,3.411,3654,3.71,3655,3.71,3656,3.71,3657,7.269,3658,3.71]],["title/816",[496,3.627,1529,4.015]],["content/816",[12,2.737,19,4.416,30,3.291,43,3.101,53,2.054,137,3.921,241,3.972,291,3.308,356,4.025,411,1.969,426,4.498,496,3.921,499,5.852,524,4.416,613,3.056,848,2.821,1041,5.041,1499,4.683,1529,6.621,1620,3.873,3659,6.752,3660,6.752,3661,6.752,3662,6.752]]],"invertedIndex":[["",{"_index":8,"title":{"216":{},"217":{},"268":{},"278":{},"365":{},"389":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"594":{},"655":{},"667":{},"812":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"9":{},"12":{},"13":{},"15":{},"16":{},"19":{},"20":{},"22":{},"23":{},"25":{},"26":{},"28":{},"29":{},"31":{},"32":{},"34":{},"35":{},"37":{},"38":{},"40":{},"41":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"53":{},"55":{},"56":{},"58":{},"59":{},"61":{},"62":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"77":{},"78":{},"80":{},"81":{},"83":{},"84":{},"86":{},"87":{},"89":{},"90":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"104":{},"105":{},"107":{},"108":{},"112":{},"113":{},"115":{},"116":{},"120":{},"121":{},"123":{},"124":{},"126":{},"127":{},"131":{},"132":{},"134":{},"135":{},"137":{},"138":{},"141":{},"146":{},"148":{},"152":{},"154":{},"158":{},"160":{},"164":{},"166":{},"168":{},"175":{},"176":{},"178":{},"179":{},"183":{},"185":{},"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{},"197":{},"198":{},"201":{},"202":{},"204":{},"207":{},"215":{},"221":{},"224":{},"244":{},"245":{},"246":{},"248":{},"253":{},"280":{},"322":{},"327":{},"328":{},"330":{},"346":{},"352":{},"353":{},"354":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"364":{},"365":{},"366":{},"369":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"384":{},"385":{},"386":{},"388":{},"389":{},"391":{},"392":{},"393":{},"395":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"436":{},"437":{},"438":{},"439":{},"440":{},"442":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"455":{},"456":{},"457":{},"460":{},"463":{},"464":{},"466":{},"468":{},"469":{},"471":{},"472":{},"473":{},"474":{},"479":{},"480":{},"485":{},"490":{},"497":{},"507":{},"508":{},"509":{},"522":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"562":{},"571":{},"572":{},"594":{},"613":{},"636":{},"644":{},"645":{},"647":{},"661":{},"665":{},"708":{},"710":{},"715":{},"722":{},"723":{},"724":{},"725":{},"726":{},"750":{},"751":{},"752":{},"761":{},"764":{},"766":{},"767":{},"770":{},"800":{},"820":{},"831":{},"833":{},"834":{},"836":{},"837":{},"839":{},"840":{},"842":{},"843":{},"845":{},"846":{},"848":{},"849":{},"851":{},"852":{},"854":{},"855":{},"857":{},"858":{},"859":{}}}],["0",{"_index":617,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"200":{},"205":{},"206":{},"209":{},"228":{},"245":{},"246":{},"247":{},"252":{},"271":{},"356":{},"362":{},"365":{},"369":{},"373":{},"374":{},"376":{},"384":{},"385":{},"386":{},"388":{},"389":{},"391":{},"401":{},"403":{},"423":{},"424":{},"429":{},"432":{},"433":{},"452":{},"454":{},"455":{},"456":{},"457":{},"464":{},"497":{},"517":{},"575":{},"616":{},"705":{},"766":{},"820":{},"848":{},"851":{}}}],["0,1",{"_index":2247,"title":{},"content":{"429":{}}}],["0.01",{"_index":1744,"title":{},"content":{"326":{},"660":{},"661":{},"665":{}}}],["0.02",{"_index":1719,"title":{},"content":{"322":{}}}],["0.1",{"_index":2985,"title":{},"content":{"644":{},"661":{}}}],["0.2",{"_index":2138,"title":{},"content":{"395":{},"474":{}}}],["0.22",{"_index":3468,"title":{},"content":{"767":{}}}],["0.23",{"_index":3467,"title":{},"content":{"767":{}}}],["0.42w",{"_index":2998,"title":{},"content":{"644":{}}}],["0.9",{"_index":1901,"title":{},"content":{"362":{}}}],["0/0",{"_index":2972,"title":{},"content":{"653":{}}}],["00",{"_index":831,"title":{},"content":{"194":{},"705":{}}}],["000",{"_index":2847,"title":{},"content":{"623":{}}}],["0000000000",{"_index":2320,"title":{},"content":{"447":{}}}],["000012345",{"_index":2310,"title":{},"content":{"444":{},"486":{},"488":{}}}],["00001ab",{"_index":1985,"title":{},"content":{"354":{}}}],["00001abc",{"_index":1925,"title":{},"content":{"367":{}}}],["00001ac8...4f",{"_index":3290,"title":{},"content":{"726":{}}}],["00001bc",{"_index":1986,"title":{},"content":{"354":{}}}],["00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa",{"_index":2564,"title":{},"content":{"508":{}}}],["000023456",{"_index":2472,"title":{},"content":{"488":{}}}],["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98",{"_index":2025,"title":{},"content":{"376":{}}}],["000056789",{"_index":2309,"title":{},"content":{"444":{},"445":{}}}],["00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065",{"_index":3462,"title":{},"content":{"766":{}}}],["0000ab12",{"_index":1989,"title":{},"content":{"354":{}}}],["0000abcd...ef",{"_index":3288,"title":{},"content":{"726":{}}}],["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd",{"_index":2026,"title":{},"content":{"376":{}}}],["0000c13373c96538b468ccdab8f95fdc3744ebfa2cd36a81c3791b2a205705d9c3a2",{"_index":3284,"title":{},"content":{"724":{},"725":{}}}],["0000d574d171a484f8deac2d61fc3f7cc984beb52465d69b3b5f670090742cbf5cca",{"_index":2108,"title":{},"content":{"388":{}}}],["0000f1fd",{"_index":3285,"title":{},"content":{"725":{}}}],["000108a5c",{"_index":2316,"title":{},"content":{"446":{}}}],["000abcd",{"_index":1879,"title":{},"content":{"359":{}}}],["000abcd123",{"_index":1885,"title":{},"content":{"359":{}}}],["0014ac",{"_index":2334,"title":{},"content":{"451":{}}}],["00743b809adde7e1e3e9b5afb704813d06155958fbbb78cd052cc45a1b19f976b",{"_index":1534,"title":{},"content":{"261":{}}}],["00:00",{"_index":1729,"title":{},"content":{"328":{}}}],["00:00:00",{"_index":3234,"title":{},"content":{"706":{}}}],["00:00am",{"_index":3320,"title":{},"content":{"733":{}}}],["00abcd",{"_index":2324,"title":{},"content":{"448":{},"464":{}}}],["00bcde",{"_index":2388,"title":{},"content":{"464":{}}}],["00efab",{"_index":2327,"title":{},"content":{"449":{},"450":{},"451":{}}}],["01",{"_index":2892,"title":{},"content":{"638":{}}}],["01309f1c765967ac7",{"_index":2893,"title":{},"content":{"638":{}}}],["01ab2cd",{"_index":3430,"title":{},"content":{"761":{}}}],["02",{"_index":685,"title":{},"content":{"189":{},"194":{},"517":{},"720":{}}}],["02/11/2021",{"_index":3231,"title":{},"content":{"706":{}}}],["02:00am",{"_index":3315,"title":{},"content":{"730":{},"731":{}}}],["03/11/2021",{"_index":3233,"title":{},"content":{"706":{}}}],["04",{"_index":686,"title":{},"content":{"189":{},"190":{},"195":{},"254":{}}}],["04xi",{"_index":684,"title":{},"content":{"189":{},"198":{},"202":{}}}],["08",{"_index":776,"title":{},"content":{"191":{},"196":{}}}],["09/06/2023",{"_index":3661,"title":{},"content":{"816":{}}}],["0ac1bfa9",{"_index":3431,"title":{},"content":{"761":{}}}],["0ac7fj",{"_index":3434,"title":{},"content":{"761":{}}}],["0d574d171a484f8deac2d61fc3f7cc984beb52465d69b3b5f670090742cbf5cc",{"_index":2141,"title":{},"content":{"396":{}}}],["0f",{"_index":3215,"title":{},"content":{"690":{}}}],["0fb27dac",{"_index":3427,"title":{},"content":{"761":{}}}],["0th",{"_index":1520,"title":{},"content":{"261":{}}}],["0x",{"_index":1881,"title":{},"content":{"359":{}}}],["0x00",{"_index":1183,"title":{},"content":{"244":{}}}],["0x0000",{"_index":653,"title":{},"content":{"189":{}}}],["0x00001234ab",{"_index":2038,"title":{},"content":{"378":{}}}],["0x00001ac8...4f",{"_index":3292,"title":{},"content":{"726":{}}}],["0x0000993f3be0ce40541e47735aa083854ecac7785b39435c90d8456c777b9e9d81f1",{"_index":2084,"title":{},"content":{"385":{}}}],["0x0000a3a066dd64fbd51ae384f2383684b3803bc72012bfeaa9cd1c93ab7c60f584dc",{"_index":2088,"title":{},"content":{"385":{}}}],["0x0000abcd...ef",{"_index":3293,"title":{},"content":{"726":{}}}],["0x000abcd",{"_index":1884,"title":{},"content":{"359":{}}}],["0x000abcd123",{"_index":1886,"title":{},"content":{"359":{}}}],["0x00abc",{"_index":1996,"title":{},"content":{"354":{}}}],["0x00abcd",{"_index":2342,"title":{},"content":{"452":{},"455":{}}}],["0x00abd",{"_index":2364,"title":{},"content":{"456":{}}}],["0x00bcde",{"_index":2354,"title":{},"content":{"455":{}}}],["0x00def",{"_index":1997,"title":{},"content":{"354":{}}}],["0x00defa",{"_index":2367,"title":{},"content":{"456":{},"457":{}}}],["0x00fedc",{"_index":2356,"title":{},"content":{"455":{}}}],["0x04",{"_index":1184,"title":{},"content":{"244":{}}}],["0x06",{"_index":1267,"title":{},"content":{"246":{}}}],["0x0b",{"_index":1268,"title":{},"content":{"246":{}}}],["0x1234",{"_index":2395,"title":{},"content":{"468":{},"469":{}}}],["0x14",{"_index":1275,"title":{},"content":{"246":{}}}],["0x1a",{"_index":1256,"title":{},"content":{"246":{}}}],["0x1b",{"_index":1273,"title":{},"content":{"246":{}}}],["0x24",{"_index":1263,"title":{},"content":{"246":{}}}],["0x33",{"_index":1274,"title":{},"content":{"246":{}}}],["0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc",{"_index":2781,"title":{},"content":{"613":{}}}],["0x44",{"_index":1252,"title":{},"content":{"246":{}}}],["0x46",{"_index":1260,"title":{},"content":{"246":{}}}],["0x52",{"_index":1265,"title":{},"content":{"246":{}}}],["0x64",{"_index":1269,"title":{},"content":{"246":{}}}],["0x67",{"_index":1251,"title":{},"content":{"246":{}}}],["0x69",{"_index":1276,"title":{},"content":{"246":{}}}],["0x6e",{"_index":1266,"title":{},"content":{"246":{}}}],["0x71",{"_index":1249,"title":{},"content":{"246":{}}}],["0x82",{"_index":1378,"title":{},"content":{"273":{}}}],["0x83",{"_index":1248,"title":{},"content":{"246":{}}}],["0x84",{"_index":1253,"title":{},"content":{"246":{}}}],["0x8a3d77e9d6968b780564936d15b09805827c21fa",{"_index":2780,"title":{},"content":{"613":{}}}],["0x8d",{"_index":1259,"title":{},"content":{"246":{}}}],["0x90",{"_index":1257,"title":{},"content":{"246":{}}}],["0x9000",{"_index":626,"title":{},"content":{"188":{}}}],["0x95",{"_index":1379,"title":{},"content":{"273":{}}}],["0x97",{"_index":1250,"title":{},"content":{"246":{}}}],["0xa1",{"_index":1271,"title":{},"content":{"246":{}}}],["0xa5",{"_index":1261,"title":{},"content":{"246":{}}}],["0xaa",{"_index":1277,"title":{},"content":{"246":{}}}],["0xb001f1e7c8bda414ac7cf7ecba5469fe8d24b6d",{"_index":2783,"title":{},"content":{"613":{}}}],["0xb3",{"_index":1254,"title":{},"content":{"246":{}}}],["0xbaddecod",{"_index":753,"title":{},"content":{"190":{},"191":{}}}],["0xcc",{"_index":1258,"title":{},"content":{"246":{}}}],["0xd7",{"_index":1262,"title":{},"content":{"246":{}}}],["0xda",{"_index":1272,"title":{},"content":{"246":{}}}],["0xf2",{"_index":1270,"title":{},"content":{"246":{}}}],["0xf8",{"_index":1255,"title":{},"content":{"246":{}}}],["0xf9",{"_index":1419,"title":{},"content":{"285":{}}}],["0xfd",{"_index":1264,"title":{},"content":{"246":{}}}],["0xffff",{"_index":641,"title":{},"content":{"189":{}}}],["1",{"_index":417,"title":{"354":{},"757":{},"792":{}},"content":{"157":{},"191":{},"195":{},"196":{},"204":{},"205":{},"206":{},"209":{},"210":{},"245":{},"248":{},"261":{},"298":{},"330":{},"331":{},"351":{},"354":{},"356":{},"357":{},"361":{},"362":{},"365":{},"366":{},"367":{},"373":{},"375":{},"377":{},"379":{},"383":{},"384":{},"385":{},"386":{},"388":{},"389":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"423":{},"428":{},"429":{},"438":{},"439":{},"448":{},"450":{},"455":{},"457":{},"474":{},"479":{},"482":{},"486":{},"497":{},"507":{},"508":{},"509":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"540":{},"541":{},"542":{},"543":{},"575":{},"587":{},"588":{},"589":{},"590":{},"616":{},"644":{},"661":{},"665":{},"706":{},"709":{},"722":{},"723":{},"725":{},"726":{},"750":{},"761":{},"764":{},"767":{},"817":{},"821":{}}}],["1,2",{"_index":1895,"title":{},"content":{"361":{},"428":{}}}],["1,2,3",{"_index":2153,"title":{},"content":{"404":{},"438":{},"439":{}}}],["1,2,3,4",{"_index":2235,"title":{},"content":{"427":{}}}],["1,2,3,4,5",{"_index":1906,"title":{},"content":{"363":{}}}],["1..10",{"_index":1908,"title":{},"content":{"364":{}}}],["1..5",{"_index":1904,"title":{},"content":{"363":{}}}],["1.0",{"_index":1894,"title":{},"content":{"361":{},"362":{},"388":{},"396":{}}}],["1.0e2",{"_index":1872,"title":{},"content":{"358":{}}}],["1.1",{"_index":1900,"title":{},"content":{"362":{},"365":{}}}],["1.1.0",{"_index":2105,"title":{},"content":{"355":{}}}],["1.18",{"_index":3518,"title":{},"content":{"800":{}}}],["1.2",{"_index":2471,"title":{},"content":{"488":{}}}],["1.3",{"_index":2550,"title":{},"content":{"509":{}}}],["10",{"_index":1731,"title":{},"content":{"328":{},"378":{},"474":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"588":{},"644":{},"661":{},"693":{},"722":{}}}],["100",{"_index":1873,"title":{},"content":{"358":{},"523":{},"622":{},"623":{}}}],["1000",{"_index":3267,"title":{},"content":{"722":{},"724":{},"725":{}}}],["10000",{"_index":2059,"title":{},"content":{"384":{},"389":{}}}],["100000",{"_index":3273,"title":{},"content":{"722":{}}}],["100000000",{"_index":2109,"title":{},"content":{"388":{},"723":{},"725":{},"726":{}}}],["100000000000",{"_index":3266,"title":{},"content":{"722":{},"724":{}}}],["10:00:00",{"_index":3232,"title":{},"content":{"706":{}}}],["10_000",{"_index":1869,"title":{},"content":{"358":{}}}],["10_000.0",{"_index":1870,"title":{},"content":{"358":{}}}],["10min",{"_index":3081,"title":{},"content":{"667":{}}}],["11100000",{"_index":1778,"title":{},"content":{"331":{}}}],["11155111",{"_index":2762,"title":{},"content":{"612":{}}}],["11:30pm",{"_index":3313,"title":{},"content":{"729":{}}}],["12",{"_index":2174,"title":{"695":{}},"content":{"401":{},"408":{},"695":{},"820":{}}}],["12.1",{"_index":2176,"title":{},"content":{"408":{}}}],["123",{"_index":2271,"title":{},"content":{"434":{}}}],["123456",{"_index":2260,"title":{},"content":{"432":{}}}],["128",{"_index":1281,"title":{},"content":{"246":{}}}],["13",{"_index":2179,"title":{},"content":{"409":{},"764":{}}}],["13.2",{"_index":2181,"title":{},"content":{"409":{}}}],["1391309040",{"_index":2148,"title":{},"content":{"396":{}}}],["13:56:15",{"_index":3662,"title":{},"content":{"816":{}}}],["14",{"_index":2575,"title":{},"content":{"513":{}}}],["14.26239",{"_index":2350,"title":{},"content":{"453":{}}}],["14.26239591",{"_index":2358,"title":{},"content":{"455":{}}}],["15",{"_index":2593,"title":{},"content":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["15.5",{"_index":2396,"title":{},"content":{"468":{},"469":{}}}],["16",{"_index":729,"title":{},"content":{"190":{},"191":{},"202":{}}}],["1622801400",{"_index":1718,"title":{},"content":{"322":{}}}],["1674564088",{"_index":2024,"title":{},"content":{"376":{}}}],["1676332800",{"_index":2498,"title":{},"content":{"400":{}}}],["1677493444",{"_index":2303,"title":{},"content":{"442":{}}}],["1677572714",{"_index":2012,"title":{},"content":{"373":{}}}],["1677598185",{"_index":2023,"title":{},"content":{"376":{}}}],["1689857160",{"_index":2054,"title":{},"content":{"383":{}}}],["1693519200",{"_index":2509,"title":{},"content":{"403":{}}}],["1693605600",{"_index":2510,"title":{},"content":{"403":{}}}],["16byte",{"_index":741,"title":{},"content":{"190":{},"191":{}}}],["18",{"_index":3261,"title":{"724":{}},"content":{"720":{},"724":{},"725":{}}}],["181812.87",{"_index":2339,"title":{},"content":{"452":{}}}],["19",{"_index":3263,"title":{"725":{}},"content":{"720":{},"725":{}}}],["197",{"_index":2846,"title":{},"content":{"623":{}}}],["1\\ncondit",{"_index":2464,"title":{},"content":{"485":{}}}],["1e731fb84d0a094c6273fffed68147c381a273c83868cdeb9b81c7ec790c6d38",{"_index":691,"title":{},"content":{"189":{}}}],["1fb2ha",{"_index":3438,"title":{},"content":{"761":{}}}],["1mb",{"_index":3356,"title":{},"content":{"750":{}}}],["1s",{"_index":1127,"title":{},"content":{"237":{}}}],["1st",{"_index":920,"title":{},"content":{"201":{},"263":{},"367":{},"709":{},"726":{}}}],["2",{"_index":579,"title":{"537":{},"591":{},"758":{},"793":{}},"content":{"186":{},"188":{},"191":{},"205":{},"206":{},"209":{},"244":{},"298":{},"310":{},"330":{},"354":{},"362":{},"366":{},"367":{},"368":{},"375":{},"376":{},"377":{},"379":{},"385":{},"406":{},"415":{},"423":{},"428":{},"455":{},"457":{},"479":{},"482":{},"516":{},"519":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"563":{},"587":{},"588":{},"589":{},"590":{},"600":{},"628":{},"723":{},"725":{},"726":{},"727":{},"750":{},"767":{},"821":{}}}],["2.0",{"_index":1899,"title":{},"content":{"362":{},"396":{},"726":{},"829":{}}}],["2.0.8",{"_index":2681,"title":{},"content":{"568":{}}}],["2.1",{"_index":2420,"title":{},"content":{"474":{}}}],["2.58933391",{"_index":3466,"title":{},"content":{"767":{}}}],["2.o",{"_index":2926,"title":{},"content":{"629":{}}}],["20",{"_index":1404,"title":{},"content":{"280":{}}}],["200",{"_index":2435,"title":{},"content":{"479":{},"480":{},"750":{}}}],["2022",{"_index":3572,"title":{},"content":{"819":{}}}],["2023",{"_index":3544,"title":{},"content":{"818":{}}}],["2048",{"_index":3585,"title":{},"content":{"820":{}}}],["21st",{"_index":1405,"title":{},"content":{"280":{}}}],["23",{"_index":2501,"title":{},"content":{"401":{}}}],["24",{"_index":2711,"title":{},"content":{"580":{},"588":{},"609":{},"818":{},"820":{}}}],["255",{"_index":3229,"title":{},"content":{"705":{}}}],["255121",{"_index":3429,"title":{},"content":{"761":{}}}],["256",{"_index":1089,"title":{},"content":{"228":{},"637":{},"705":{},"822":{}}}],["256kb",{"_index":2441,"title":{},"content":{"479":{}}}],["29",{"_index":2592,"title":{},"content":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["2^31",{"_index":416,"title":{},"content":{"157":{}}}],["2nd",{"_index":1572,"title":{},"content":{"263":{},"367":{}}}],["3",{"_index":483,"title":{"794":{}},"content":{"181":{},"188":{},"190":{},"191":{},"206":{},"209":{},"252":{},"297":{},"353":{},"362":{},"367":{},"373":{},"471":{},"474":{},"517":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"564":{},"587":{},"588":{},"589":{},"590":{},"595":{},"709":{},"723":{},"761":{},"767":{},"770":{}}}],["3,4",{"_index":2234,"title":{},"content":{"427":{}}}],["3.0",{"_index":3616,"title":{},"content":{"825":{}}}],["3.10",{"_index":3615,"title":{},"content":{"825":{}}}],["3.53553390",{"_index":2416,"title":{},"content":{"473":{}}}],["3.6",{"_index":2984,"title":{},"content":{"644":{}}}],["30",{"_index":3440,"title":{},"content":{"761":{}}}],["300000000",{"_index":3276,"title":{},"content":{"723":{}}}],["31",{"_index":2502,"title":{},"content":{"401":{}}}],["32",{"_index":694,"title":{},"content":{"189":{},"190":{},"191":{},"201":{},"202":{},"246":{},"261":{},"822":{}}}],["32byte",{"_index":739,"title":{},"content":{"190":{},"191":{}}}],["32bytesinsid",{"_index":731,"title":{},"content":{"190":{},"191":{}}}],["33",{"_index":1533,"title":{},"content":{"261":{}}}],["34",{"_index":781,"title":{},"content":{"191":{}}}],["374c7527733556",{"_index":2382,"title":{},"content":{"463":{}}}],["3c21ef708bf11b4232",{"_index":2392,"title":{},"content":{"466":{}}}],["3mb",{"_index":3420,"title":{},"content":{"761":{}}}],["3rd",{"_index":649,"title":{},"content":{"189":{},"367":{}}}],["3s",{"_index":1124,"title":{},"content":{"237":{}}}],["4",{"_index":619,"title":{},"content":{"188":{},"190":{},"191":{},"195":{},"196":{},"204":{},"206":{},"209":{},"261":{},"354":{},"424":{},"473":{},"488":{},"517":{},"540":{},"541":{},"542":{},"543":{},"588":{},"589":{},"590":{},"695":{},"859":{}}}],["4,5,6",{"_index":2155,"title":{},"content":{"404":{}}}],["4.05902597",{"_index":2368,"title":{},"content":{"456":{}}}],["4.md",{"_index":3656,"title":{},"content":{"859":{}}}],["410",{"_index":3446,"title":{},"content":{"764":{}}}],["456",{"_index":2273,"title":{},"content":{"434":{}}}],["4756.5401",{"_index":2343,"title":{},"content":{"452":{}}}],["4th",{"_index":656,"title":{},"content":{"189":{}}}],["5",{"_index":1628,"title":{},"content":{"298":{},"406":{},"588":{},"590":{},"644":{},"695":{},"761":{}}}],["5/month",{"_index":3355,"title":{},"content":{"750":{}}}],["500",{"_index":3358,"title":{},"content":{"750":{}}}],["51",{"_index":2991,"title":{},"content":{"644":{}}}],["512",{"_index":2978,"title":{},"content":{"653":{}}}],["52e77c79bea0f84e2d9c40356932fb0dd31688c23d6b6e9ac99d2869dc407692",{"_index":689,"title":{},"content":{"189":{}}}],["59",{"_index":2500,"title":{},"content":{"401":{}}}],["592ac76afa",{"_index":2184,"title":{},"content":{"410":{}}}],["5s",{"_index":1766,"title":{},"content":{"330":{}}}],["5th",{"_index":658,"title":{},"content":{"189":{}}}],["6",{"_index":2504,"title":{},"content":{"401":{},"588":{},"590":{},"722":{},"821":{}}}],["64",{"_index":737,"title":{},"content":{"190":{},"191":{},"820":{}}}],["650",{"_index":640,"title":{},"content":{"189":{},"200":{},"653":{}}}],["66",{"_index":783,"title":{},"content":{"191":{},"644":{}}}],["68",{"_index":2576,"title":{},"content":{"515":{},"516":{},"517":{}}}],["68420",{"_index":3424,"title":{},"content":{"761":{}}}],["68656c6c6f",{"_index":2186,"title":{},"content":{"410":{}}}],["69.75757441",{"_index":2409,"title":{},"content":{"471":{}}}],["6th",{"_index":661,"title":{},"content":{"189":{}}}],["7",{"_index":1532,"title":{},"content":{"261":{},"526":{},"588":{},"802":{}}}],["7330d2b39ca35ea",{"_index":2375,"title":{},"content":{"460":{}}}],["754",{"_index":409,"title":{},"content":{"151":{}}}],["7th",{"_index":662,"title":{},"content":{"189":{}}}],["7z",{"_index":3450,"title":{},"content":{"770":{}}}],["8",{"_index":423,"title":{},"content":{"165":{},"191":{},"331":{},"362":{},"391":{},"401":{},"403":{},"471":{},"472":{},"516":{},"588":{},"661":{},"722":{},"723":{},"724":{},"725":{},"764":{}}}],["8.90800012",{"_index":2365,"title":{},"content":{"456":{}}}],["80001",{"_index":2769,"title":{},"content":{"612":{}}}],["8am",{"_index":2117,"title":{},"content":{"391":{},"401":{}}}],["9",{"_index":2259,"title":{},"content":{"403":{},"432":{},"433":{},"434":{},"588":{},"644":{},"818":{}}}],["90",{"_index":2850,"title":{},"content":{"623":{},"628":{},"644":{},"749":{}}}],["901a365ff22b895",{"_index":2383,"title":{},"content":{"463":{}}}],["97",{"_index":2765,"title":{},"content":{"612":{}}}],["99.99999999",{"_index":2844,"title":{},"content":{"623":{}}}],["9f",{"_index":3216,"title":{},"content":{"690":{}}}],["_",{"_index":1867,"title":{},"content":{"358":{}}}],["_dnslink",{"_index":3398,"title":{},"content":{"754":{},"755":{}}}],["_dnslink.example.com",{"_index":3394,"title":{},"content":{"754":{}}}],["a0b1c2",{"_index":2276,"title":{},"content":{"434":{}}}],["a1",{"_index":3146,"title":{},"content":{"698":{},"699":{},"700":{}}}],["a3d7e45a0d9be5f",{"_index":2376,"title":{},"content":{"460":{}}}],["abc",{"_index":2262,"title":{},"content":{"432":{}}}],["abc123f",{"_index":3425,"title":{},"content":{"761":{}}}],["abcdef0123456789",{"_index":3575,"title":{},"content":{"820":{}}}],["abdecoin_bal",{"_index":2362,"title":{},"content":{"456":{}}}],["abi_decode/2",{"_index":2492,"title":{"496":{}},"content":{}}],["abi_encode/2",{"_index":2488,"title":{"495":{}},"content":{}}],["abil",{"_index":2578,"title":{},"content":{"519":{},"628":{},"647":{},"655":{},"657":{}}}],["abitrati",{"_index":2121,"title":{},"content":{"393":{}}}],["abov",{"_index":506,"title":{},"content":{"181":{},"190":{},"191":{},"201":{},"202":{},"245":{},"349":{},"365":{},"500":{},"501":{},"612":{},"623":{},"724":{},"756":{},"813":{}}}],["abritrati",{"_index":2122,"title":{},"content":{"393":{}}}],["absenc",{"_index":1875,"title":{},"content":{"358":{}}}],["absolut",{"_index":2836,"title":{},"content":{"622":{}}}],["acc",{"_index":1944,"title":{},"content":{"369":{}}}],["accept",{"_index":513,"title":{},"content":{"181":{},"345":{},"375":{},"389":{},"485":{},"516":{},"588":{},"622":{},"724":{},"770":{},"771":{},"772":{},"773":{}}}],["access",{"_index":462,"title":{"211":{},"212":{},"534":{},"562":{},"594":{},"790":{},"811":{}},"content":{"181":{},"197":{},"211":{},"212":{},"213":{},"219":{},"243":{},"261":{},"270":{},"322":{},"337":{},"339":{},"351":{},"365":{},"533":{},"534":{},"535":{},"562":{},"568":{},"579":{},"594":{},"622":{},"642":{},"646":{},"649":{},"650":{},"651":{},"664":{},"758":{},"764":{},"768":{},"773":{},"774":{},"786":{},"788":{},"790":{},"795":{},"797":{},"800":{},"805":{},"809":{},"810":{},"811":{},"817":{},"818":{},"820":{},"821":{}}}],["access//aeweb.archethic.net",{"_index":2598,"title":{},"content":{"551":{},"552":{}}}],["accord",{"_index":703,"title":{},"content":{"190":{},"191":{},"233":{},"265":{},"288":{},"312":{},"322":{},"345":{},"469":{},"495":{},"496":{},"613":{},"624":{},"647":{},"650":{},"657":{},"660":{},"665":{},"828":{}}}],["accordingli",{"_index":2448,"title":{},"content":{"479":{}}}],["account",{"_index":650,"title":{"195":{},"210":{},"219":{}},"content":{"189":{},"190":{},"195":{},"198":{},"200":{},"216":{},"219":{},"587":{},"588":{},"653":{},"715":{},"770":{},"771":{},"772":{},"773":{},"775":{},"818":{},"828":{},"829":{},"830":{},"835":{},"837":{},"853":{},"855":{}}}],["accumul",{"_index":1130,"title":{},"content":{"238":{}}}],["accur",{"_index":2401,"title":{},"content":{"468":{}}}],["achiev",{"_index":982,"title":{},"content":{"215":{},"216":{},"263":{},"329":{},"628":{},"669":{},"686":{},"745":{},"752":{},"784":{},"785":{}}}],["acknowledg",{"_index":2660,"title":{},"content":{"561":{},"574":{},"615":{}}}],["acm",{"_index":3404,"title":{},"content":{"757":{}}}],["acquir",{"_index":3539,"title":{},"content":{"818":{}}}],["act",{"_index":435,"title":{},"content":{"178":{},"181":{},"479":{},"669":{},"761":{}}}],["action",{"_index":1217,"title":{"350":{},"352":{},"399":{},"797":{}},"content":{"246":{},"262":{},"271":{},"328":{},"345":{},"350":{},"351":{},"352":{},"353":{},"356":{},"369":{},"383":{},"384":{},"385":{},"386":{},"388":{},"389":{},"390":{},"391":{},"394":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"468":{},"469":{},"497":{},"507":{},"508":{},"509":{},"558":{},"587":{},"607":{},"678":{},"759":{},"784":{},"785":{},"800":{},"821":{},"822":{},"828":{}}}],["action'",{"_index":1829,"title":{},"content":{"346":{},"373":{},"375":{},"377":{},"379":{},"785":{}}}],["activ",{"_index":2495,"title":{},"content":{"398":{},"673":{},"822":{}}}],["actor",{"_index":2872,"title":{},"content":{"621":{},"628":{},"654":{},"655":{},"658":{},"698":{}}}],["actual",{"_index":1880,"title":{},"content":{"354":{},"359":{},"366":{},"371":{},"393":{},"422":{},"507":{},"658":{}}}],["ad",{"_index":544,"title":{"812":{}},"content":{"183":{},"189":{},"261":{},"262":{},"327":{},"358":{},"485":{},"703":{},"805":{},"823":{},"829":{},"830":{}}}],["adapt",{"_index":901,"title":{"635":{}},"content":{"200":{},"631":{},"638":{},"669":{},"699":{},"828":{}}}],["add",{"_index":622,"title":{"571":{},"758":{}},"content":{"188":{},"220":{},"223":{},"228":{},"244":{},"304":{},"324":{},"327":{},"347":{},"374":{},"396":{},"398":{},"482":{},"486":{},"488":{},"490":{},"492":{},"507":{},"571":{},"612":{},"638":{},"653":{},"664":{},"754":{},"755":{},"772":{},"776":{},"802":{},"803":{},"805":{},"808":{},"809":{},"841":{},"848":{},"851":{},"857":{}}}],["add_ownership",{"_index":2144,"title":{},"content":{"396":{}}}],["add_ownership/1",{"_index":2475,"title":{"490":{}},"content":{"491":{}}}],["add_ownerships/1",{"_index":2483,"title":{"491":{}},"content":{}}],["add_recipi",{"_index":2147,"title":{},"content":{"396":{}}}],["add_recipient/1",{"_index":2484,"title":{"492":{}},"content":{}}],["add_recipients/1",{"_index":2486,"title":{"493":{}},"content":{"493":{}}}],["add_servic",{"_index":3642,"title":{"841":{}},"content":{}}],["add_token_transf",{"_index":2114,"title":{},"content":{"389":{},"396":{}}}],["add_token_transfer/1",{"_index":2469,"title":{"488":{}},"content":{"489":{}}}],["add_token_transfers/1",{"_index":2474,"title":{"489":{}},"content":{}}],["add_uco_transf",{"_index":2111,"title":{},"content":{"388":{},"396":{}}}],["add_uco_transfer/1",{"_index":2465,"title":{"486":{}},"content":{"487":{}}}],["add_uco_transfers/1",{"_index":2468,"title":{"487":{}},"content":{}}],["add_vote([x",{"_index":2093,"title":{},"content":{"386":{}}}],["add_vote(vot",{"_index":2095,"title":{},"content":{"386":{}}}],["adddress",{"_index":2458,"title":{},"content":{"482":{}}}],["addit",{"_index":1504,"title":{"266":{}},"content":{"259":{},"607":{},"621":{},"636":{},"661":{},"665":{},"715":{},"748":{},"848":{},"851":{},"857":{}}}],["addr",{"_index":834,"title":{},"content":{"195":{}}}],["address",{"_index":125,"title":{"144":{},"190":{},"195":{},"210":{},"515":{},"558":{},"568":{},"575":{},"587":{},"616":{},"638":{},"766":{},"801":{}},"content":{"25":{},"26":{},"37":{},"38":{},"52":{},"53":{},"55":{},"56":{},"58":{},"59":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"73":{},"74":{},"77":{},"78":{},"83":{},"84":{},"86":{},"87":{},"92":{},"93":{},"101":{},"102":{},"107":{},"108":{},"109":{},"112":{},"113":{},"123":{},"124":{},"125":{},"126":{},"127":{},"131":{},"132":{},"134":{},"135":{},"136":{},"144":{},"163":{},"175":{},"176":{},"178":{},"179":{},"186":{},"189":{},"190":{},"191":{},"195":{},"198":{},"200":{},"201":{},"210":{},"212":{},"213":{},"220":{},"223":{},"224":{},"225":{},"230":{},"232":{},"261":{},"262":{},"264":{},"297":{},"304":{},"334":{},"347":{},"354":{},"359":{},"376":{},"377":{},"378":{},"384":{},"385":{},"388":{},"389":{},"393":{},"396":{},"398":{},"444":{},"445":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"455":{},"456":{},"457":{},"466":{},"486":{},"488":{},"492":{},"505":{},"506":{},"515":{},"516":{},"517":{},"518":{},"523":{},"575":{},"587":{},"604":{},"612":{},"613":{},"616":{},"625":{},"633":{},"638":{},"653":{},"679":{},"684":{},"687":{},"688":{},"690":{},"691":{},"693":{},"706":{},"714":{},"715":{},"726":{},"753":{},"754":{},"761":{},"762":{},"766":{},"781":{},"784":{},"794":{},"798":{},"800":{},"801":{},"803":{},"804":{},"818":{},"822":{},"830":{},"837":{},"840":{},"843":{},"850":{},"852":{},"855":{},"858":{}}}],["address'",{"_index":1543,"title":{},"content":{"262":{}}}],["address_index",{"_index":666,"title":{},"content":{"189":{},"190":{},"191":{},"195":{},"196":{}}}],["address_len",{"_index":768,"title":{},"content":{"190":{},"191":{}}}],["addressit",{"_index":769,"title":{},"content":{"190":{}}}],["addresslength",{"_index":779,"title":{},"content":{"191":{}}}],["adher",{"_index":2629,"title":{},"content":{"583":{}}}],["admin",{"_index":1220,"title":{},"content":{"246":{}}}],["administr",{"_index":1357,"title":{},"content":{"271":{},"751":{},"754":{}}}],["adopt",{"_index":1809,"title":{},"content":{"345":{},"618":{},"643":{},"647":{},"664":{},"745":{}}}],["adpu",{"_index":828,"title":{"192":{}},"content":{}}],["advantag",{"_index":2938,"title":{},"content":{"630":{}}}],["ae",{"_index":861,"title":{},"content":{"202":{},"207":{},"212":{},"213":{},"630":{},"651":{}}}],["aebnb",{"_index":2721,"title":{},"content":{"593":{}}}],["aeeth",{"_index":2719,"title":{},"content":{"593":{}}}],["aeip",{"_index":2574,"title":{"724":{},"725":{}},"content":{"513":{},"517":{},"648":{},"720":{},"724":{},"725":{},"764":{},"859":{}}}],["aemail",{"_index":3003,"title":{},"content":{"645":{}}}],["aemat",{"_index":2720,"title":{},"content":{"593":{}}}],["aenft",{"_index":3007,"title":{},"content":{"645":{}}}],["aeronaut",{"_index":2856,"title":{},"content":{"623":{}}}],["aerospik",{"_index":1456,"title":{},"content":{"256":{}}}],["aes256",{"_index":881,"title":{},"content":{"198":{},"202":{},"639":{}}}],["aes256(mode=cbc",{"_index":948,"title":{},"content":{"202":{}}}],["aes256(mode=ctr",{"_index":939,"title":{},"content":{"202":{}}}],["aes\\_key",{"_index":949,"title":{},"content":{"202":{}}}],["aes_key",{"_index":884,"title":{},"content":{"198":{},"202":{}}}],["aes_key_iv_tag",{"_index":733,"title":{},"content":{"190":{},"191":{}}}],["aewallet",{"_index":3636,"title":{},"content":{"832":{},"835":{},"844":{},"853":{}}}],["aeweb",{"_index":1803,"title":{"536":{},"540":{},"552":{},"554":{},"558":{},"746":{},"753":{},"760":{},"765":{},"766":{},"767":{},"768":{},"775":{}},"content":{"342":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"551":{},"552":{},"557":{},"558":{},"645":{},"741":{},"748":{},"751":{},"756":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"765":{},"766":{},"767":{},"768":{},"770":{},"775":{},"776":{}}}],["aeweb'",{"_index":3379,"title":{},"content":{"759":{}}}],["aewebvers",{"_index":3421,"title":{},"content":{"761":{},"764":{}}}],["af28c3d5b3828ad3f8682f1b1d14a8507b829f65f7be6c50427a6019ccb6801c",{"_index":2140,"title":{},"content":{"396":{}}}],["again",{"_index":1125,"title":{},"content":{"237":{},"298":{},"326":{},"762":{},"822":{}}}],["against",{"_index":2924,"title":{},"content":{"628":{}}}],["aggreg",{"_index":74,"title":{"238":{}},"content":{"19":{},"106":{},"230":{},"238":{},"266":{},"309":{},"319":{},"328":{},"513":{},"630":{},"712":{},"733":{}}}],["ago",{"_index":3375,"title":{},"content":{"752":{}}}],["agpl",{"_index":3141,"title":{},"content":{"696":{}}}],["agre",{"_index":3455,"title":{},"content":{"771":{}}}],["agreement",{"_index":2659,"title":{},"content":{"561":{},"623":{}}}],["agvsbg8gd29ybgq",{"_index":3433,"title":{},"content":{"761":{}}}],["aim",{"_index":871,"title":{},"content":{"197":{},"581":{},"618":{},"645":{},"658":{},"666":{},"695":{},"820":{}}}],["aka",{"_index":846,"title":{},"content":{"197":{},"211":{},"261":{},"299":{},"533":{},"534":{},"535":{},"625":{},"707":{}}}],["al",{"_index":1073,"title":{},"content":{"223":{}}}],["alca",{"_index":507,"title":{},"content":{"181":{},"182":{},"183":{}}}],["algo",{"_index":972,"title":{},"content":{"210":{},"460":{},"463":{},"846":{}}}],["algorithm",{"_index":374,"title":{"305":{},"639":{}},"content":{"109":{},"144":{},"147":{},"163":{},"202":{},"210":{},"241":{},"246":{},"262":{},"293":{},"299":{},"303":{},"305":{},"307":{},"309":{},"310":{},"322":{},"328":{},"460":{},"463":{},"622":{},"623":{},"624":{},"625":{},"635":{},"636":{},"637":{},"638":{},"647":{},"653":{},"660":{},"668":{},"682":{},"706":{},"715":{},"801":{}}}],["alic",{"_index":2166,"title":{},"content":{"407":{},"425":{},"558":{},"584":{}}}],["alloc",{"_index":292,"title":{},"content":{"73":{},"83":{},"92":{},"136":{},"233":{}}}],["allow",{"_index":848,"title":{},"content":{"211":{},"330":{},"349":{},"353":{},"398":{},"479":{},"506":{},"519":{},"533":{},"534":{},"535":{},"565":{},"576":{},"579":{},"593":{},"603":{},"621":{},"622":{},"634":{},"642":{},"644":{},"645":{},"647":{},"649":{},"650":{},"652":{},"657":{},"675":{},"695":{},"698":{},"699":{},"714":{},"718":{},"722":{},"728":{},"748":{},"758":{},"759":{},"763":{},"770":{},"771":{},"772":{},"773":{},"777":{},"779":{},"800":{},"801":{},"802":{},"803":{},"805":{},"806":{},"807":{},"809":{},"816":{},"819":{},"820":{},"822":{},"827":{},"829":{},"859":{}}}],["allow_mint",{"_index":3272,"title":{},"content":{"722":{}}}],["alogrithm",{"_index":2911,"title":{},"content":{"628":{}}}],["alon",{"_index":2903,"title":{},"content":{"627":{}}}],["along",{"_index":1164,"title":{},"content":{"241":{},"299":{},"315":{},"327":{},"338":{},"390":{},"630":{},"638":{},"647":{}}}],["alreadi",{"_index":608,"title":{},"content":{"188":{},"315":{},"410":{},"770":{},"826":{}}}],["although",{"_index":3582,"title":{},"content":{"820":{}}}],["alway",{"_index":2305,"title":{},"content":{"442":{},"462":{},"484":{},"505":{},"723":{},"732":{},"764":{}}}],["amang",{"_index":1461,"title":{},"content":{"256":{}}}],["amazon",{"_index":2968,"title":{},"content":{"652":{}}}],["amd",{"_index":1427,"title":{},"content":{"288":{}}}],["among",{"_index":1540,"title":{},"content":{"262":{}}}],["amort",{"_index":1759,"title":{},"content":{"330":{}}}],["amount",{"_index":226,"title":{},"content":{"52":{},"58":{},"73":{},"83":{},"86":{},"92":{},"136":{},"191":{},"221":{},"224":{},"326":{},"330":{},"354":{},"384":{},"388":{},"389":{},"393":{},"396":{},"453":{},"468":{},"469":{},"486":{},"488":{},"516":{},"517":{},"604":{},"725":{},"726":{},"731":{},"761":{},"781":{},"798":{},"803":{}}}],["amount'",{"_index":2776,"title":{},"content":{"613":{}}}],["amount_send",{"_index":2063,"title":{},"content":{"384":{},"389":{}}}],["an",{"_index":3335,"title":{},"content":{"745":{}}}],["analys",{"_index":3337,"title":{},"content":{"745":{}}}],["analysi",{"_index":3186,"title":{},"content":{"699":{},"797":{}}}],["analyz",{"_index":1447,"title":{"577":{},"617":{}},"content":{"256":{},"761":{}}}],["anchor",{"_index":1146,"title":{},"content":{"234":{}}}],["and/or",{"_index":3409,"title":{},"content":{"757":{}}}],["android",{"_index":3558,"title":{},"content":{"819":{},"826":{},"829":{}}}],["announc",{"_index":3107,"title":{},"content":{"675":{},"714":{}}}],["anoth",{"_index":1946,"title":{},"content":{"369":{},"427":{},"628":{},"674":{},"725":{},"767":{},"806":{},"807":{},"819":{},"820":{},"822":{}}}],["answer",{"_index":2845,"title":{},"content":{"623":{}}}],["anymor",{"_index":2020,"title":{},"content":{"375":{}}}],["anyon",{"_index":2602,"title":{},"content":{"581":{},"588":{},"642":{},"752":{}}}],["anyth",{"_index":907,"title":{},"content":{"200":{},"354":{},"361":{},"438":{},"485":{},"500":{},"501":{},"518":{}}}],["apdu",{"_index":596,"title":{"193":{}},"content":{"188":{},"191":{},"194":{},"195":{},"196":{}}}],["api",{"_index":581,"title":{"187":{},"528":{}},"content":{"241":{},"262":{},"370":{},"479":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"726":{},"752":{},"762":{},"821":{},"822":{},"829":{},"859":{}}}],["app",{"_index":497,"title":{"568":{}},"content":{"181":{},"182":{},"183":{},"187":{},"209":{},"568":{},"588":{},"645":{},"751":{},"767":{},"819":{},"822":{}}}],["appear",{"_index":366,"title":{},"content":{"109":{},"144":{},"147":{},"163":{},"501":{},"588":{},"770":{},"792":{},"794":{}}}],["append",{"_index":822,"title":{},"content":{"191":{},"244":{},"257":{},"258":{},"259":{},"261":{},"262":{},"428":{},"429":{}}}],["append/2",{"_index":2238,"title":{"428":{}},"content":{}}],["appendix",{"_index":1960,"title":{"354":{}},"content":{"351":{},"373":{},"375":{},"377":{},"379":{},"448":{},"450":{}}}],["appli",{"_index":808,"title":{},"content":{"191":{},"262":{},"298":{},"304":{},"375":{},"471":{},"647":{},"654":{},"657":{},"658":{},"667":{},"734":{},"735":{},"804":{},"805":{}}}],["applic",{"_index":488,"title":{"187":{},"579":{},"645":{},"789":{},"821":{}},"content":{"181":{},"188":{},"212":{},"213":{},"216":{},"259":{},"263":{},"268":{},"297":{},"304":{},"335":{},"345":{},"349":{},"540":{},"541":{},"542":{},"543":{},"574":{},"577":{},"579":{},"587":{},"588":{},"590":{},"597":{},"598":{},"615":{},"617":{},"618":{},"645":{},"650":{},"654":{},"695":{},"745":{},"751":{},"752":{},"768":{},"771":{},"772":{},"773":{},"775":{},"786":{},"788":{},"789":{},"799":{},"800":{},"819":{},"821":{},"822":{},"826":{},"827":{},"829":{},"859":{}}}],["application'",{"_index":3509,"title":{},"content":{"795":{}}}],["application(i",{"_index":918,"title":{},"content":{"201":{}}}],["appnam",{"_index":620,"title":{},"content":{"188":{}}}],["approach",{"_index":1492,"title":{"259":{}},"content":{"258":{},"261":{},"263":{},"329":{},"630":{},"671":{},"754":{},"780":{},"819":{}}}],["appropri",{"_index":2772,"title":{},"content":{"613":{},"786":{}}}],["approv",{"_index":95,"title":{"321":{}},"content":{"22":{},"191":{},"246":{},"297":{},"321":{},"658":{},"734":{},"735":{}}}],["approx",{"_index":3245,"title":{},"content":{"709":{}}}],["approxim",{"_index":2304,"title":{},"content":{"442":{}}}],["appup",{"_index":1613,"title":{},"content":{"297":{}}}],["appvers",{"_index":612,"title":{},"content":{"188":{}}}],["appversion[0",{"_index":618,"title":{},"content":{"188":{}}}],["arch",{"_index":1672,"title":{"622":{}},"content":{"303":{},"312":{},"346":{},"618":{},"620":{},"622":{},"623":{},"644":{},"667":{},"698":{},"749":{}}}],["arch_address",{"_index":838,"title":{},"content":{"195":{},"198":{}}}],["archer",{"_index":2801,"title":{},"content":{"590":{}}}],["archeth",{"_index":239,"title":{"190":{},"195":{},"537":{},"538":{},"540":{},"543":{},"556":{},"558":{},"559":{},"561":{},"562":{},"565":{},"566":{},"567":{},"568":{},"570":{},"579":{},"587":{},"588":{},"589":{},"590":{},"591":{},"593":{},"594":{},"596":{},"597":{},"606":{},"607":{},"610":{},"618":{},"628":{},"630":{},"696":{},"746":{},"784":{},"785":{},"814":{},"817":{},"823":{}},"content":{"70":{},"114":{},"117":{},"128":{},"133":{},"139":{},"147":{},"181":{},"182":{},"183":{},"187":{},"190":{},"191":{},"195":{},"197":{},"198":{},"200":{},"202":{},"210":{},"211":{},"214":{},"215":{},"219":{},"227":{},"232":{},"255":{},"268":{},"276":{},"280":{},"293":{},"297":{},"298":{},"304":{},"311":{},"326":{},"327":{},"329":{},"331":{},"334":{},"341":{},"342":{},"343":{},"345":{},"346":{},"347":{},"348":{},"349":{},"359":{},"368":{},"390":{},"394":{},"404":{},"469":{},"479":{},"505":{},"521":{},"525":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"558":{},"565":{},"567":{},"570":{},"574":{},"581":{},"582":{},"587":{},"588":{},"589":{},"593":{},"596":{},"597":{},"599":{},"606":{},"607":{},"610":{},"615":{},"618":{},"620":{},"621":{},"622":{},"623":{},"628":{},"629":{},"630":{},"631":{},"633":{},"635":{},"638":{},"641":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"652":{},"653":{},"654":{},"657":{},"658":{},"660":{},"665":{},"666":{},"669":{},"673":{},"675":{},"677":{},"678":{},"682":{},"685":{},"689":{},"690":{},"695":{},"701":{},"704":{},"705":{},"707":{},"713":{},"718":{},"719":{},"721":{},"726":{},"744":{},"746":{},"749":{},"750":{},"751":{},"754":{},"756":{},"759":{},"760":{},"762":{},"765":{},"768":{},"770":{},"771":{},"772":{},"773":{},"775":{},"777":{},"780":{},"781":{},"784":{},"785":{},"786":{},"788":{},"789":{},"790":{},"791":{},"792":{},"794":{},"797":{},"798":{},"799":{},"800":{},"814":{},"817":{},"818":{},"819":{},"820":{},"822":{},"823":{},"827":{},"829":{},"859":{}}}],["archethic'",{"_index":492,"title":{"197":{},"211":{},"255":{},"534":{},"535":{},"541":{},"542":{},"602":{},"603":{},"604":{},"673":{},"777":{},"780":{},"799":{}},"content":{"181":{},"182":{},"183":{},"200":{},"305":{},"533":{},"534":{},"535":{},"540":{},"541":{},"542":{},"543":{},"561":{},"593":{},"602":{},"603":{},"604":{},"606":{},"618":{},"641":{},"649":{},"720":{},"777":{},"779":{},"780":{},"784":{},"785":{},"786":{}}}],["archethic.net",{"_index":517,"title":{},"content":{"181":{}}}],["archethic.oraclechain",{"_index":1748,"title":{},"content":{"327":{}}}],["archethic.oraclechain.service.mynewservic",{"_index":1751,"title":{},"content":{"327":{}}}],["archethic.oraclechain.services.ucopric",{"_index":1749,"title":{},"content":{"327":{}}}],["archethic_derive_with_seed_key",{"_index":677,"title":{},"content":{"189":{}}}],["archethic_lib_dart",{"_index":3613,"title":{},"content":{"823":{}}}],["archethic_nod",{"_index":1624,"title":{},"content":{"298":{},"304":{}}}],["archethicindex",{"_index":1393,"title":{"276":{},"292":{}},"content":{"276":{},"279":{},"280":{},"288":{},"290":{},"292":{}}}],["archethic’",{"_index":2671,"title":{},"content":{"565":{},"567":{}}}],["archiv",{"_index":1852,"title":{},"content":{"349":{},"770":{},"771":{},"776":{}}}],["area",{"_index":2520,"title":{},"content":{"498":{},"657":{}}}],["areaes_key",{"_index":738,"title":{},"content":{"190":{},"191":{}}}],["aren't",{"_index":1945,"title":{},"content":{"369":{},"708":{}}}],["arg",{"_index":2087,"title":{},"content":{"385":{},"482":{}}}],["arg1",{"_index":1958,"title":{},"content":{"371":{}}}],["arg2",{"_index":1955,"title":{},"content":{"371":{}}}],["argument",{"_index":5,"title":{"3":{},"5":{},"102":{},"105":{},"108":{},"113":{},"116":{},"121":{},"124":{},"127":{},"132":{},"135":{},"138":{},"176":{},"179":{},"352":{}},"content":{"2":{},"4":{},"352":{},"369":{},"374":{},"399":{},"404":{},"459":{},"461":{},"462":{},"482":{},"508":{}}}],["arithemet",{"_index":1604,"title":{},"content":{"296":{}}}],["arithmet",{"_index":1898,"title":{"362":{}},"content":{"362":{}}}],["ariti",{"_index":2158,"title":{},"content":{"404":{}}}],["around",{"_index":1714,"title":{},"content":{"311":{},"661":{},"726":{},"750":{}}}],["arriv",{"_index":1121,"title":{},"content":{"237":{},"622":{},"624":{}}}],["arrow",{"_index":3522,"title":{},"content":{"802":{}}}],["arsèn",{"_index":2191,"title":{},"content":{"411":{}}}],["articl",{"_index":3554,"title":{},"content":{"818":{},"822":{}}}],["artist",{"_index":3012,"title":{},"content":{"645":{}}}],["asc",{"_index":36,"title":{},"content":{"9":{}}}],["ascend",{"_index":39,"title":{},"content":{"10":{}}}],["ascii",{"_index":1890,"title":{"360":{}},"content":{}}],["ask",{"_index":1550,"title":{},"content":{"262":{},"785":{},"828":{}}}],["asn",{"_index":841,"title":{},"content":{"196":{},"244":{},"245":{},"246":{},"253":{},"719":{}}}],["asn1",{"_index":1179,"title":{},"content":{"244":{}}}],["asn_der_sign",{"_index":774,"title":{},"content":{"191":{}}}],["asn_sign",{"_index":813,"title":{},"content":{"191":{}}}],["asnsigns",{"_index":1193,"title":{"245":{}},"content":{}}],["aspect",{"_index":1776,"title":{},"content":{"331":{},"747":{}}}],["assert",{"_index":1066,"title":{},"content":{"219":{},"230":{},"299":{},"305":{},"306":{},"315":{},"317":{},"318":{},"319":{},"320":{},"325":{},"607":{},"757":{},"785":{}}}],["asset",{"_index":108,"title":{"565":{},"566":{},"791":{}},"content":{"25":{},"31":{},"58":{},"73":{},"83":{},"86":{},"92":{},"136":{},"181":{},"219":{},"317":{},"342":{},"522":{},"565":{},"579":{},"593":{},"602":{},"604":{},"723":{},"777":{},"779":{},"781":{},"784":{},"785":{},"786":{},"817":{}}}],["assets/app.css",{"_index":3435,"title":{},"content":{"761":{}}}],["assets/image.jpg",{"_index":3436,"title":{},"content":{"761":{}}}],["assign",{"_index":1311,"title":{},"content":{"248":{},"253":{},"254":{},"365":{}}}],["associ",{"_index":1218,"title":{"567":{}},"content":{"246":{},"350":{},"373":{},"576":{},"604":{},"621":{},"647":{},"650":{},"653":{},"659":{},"687":{},"698":{},"715":{},"758":{},"770":{},"771":{},"772":{},"773":{},"781":{},"811":{},"822":{}}}],["assum",{"_index":533,"title":{},"content":{"182":{},"375":{}}}],["assur",{"_index":3210,"title":{},"content":{"687":{}}}],["ast",{"_index":2402,"title":{},"content":{"468":{}}}],["async",{"_index":635,"title":{},"content":{"189":{}}}],["asynchron",{"_index":2812,"title":{},"content":{"619":{},"698":{},"711":{}}}],["at/2",{"_index":2220,"title":{"423":{}},"content":{}}],["ath",{"_index":1975,"title":{},"content":{"353":{}}}],["atom",{"_index":1686,"title":{"623":{}},"content":{"310":{},"345":{},"346":{},"479":{},"518":{},"561":{},"565":{},"579":{},"593":{},"602":{},"603":{},"606":{},"618":{},"620":{},"622":{},"623":{},"625":{},"667":{},"698":{},"713":{},"777":{},"779":{},"780":{}}}],["attack",{"_index":2849,"title":{},"content":{"623":{},"627":{},"695":{}}}],["attempt",{"_index":2628,"title":{},"content":{"583":{}}}],["attest",{"_index":265,"title":{"708":{}},"content":{"67":{},"180":{},"230":{},"274":{},"679":{},"709":{},"712":{}}}],["attribut",{"_index":1208,"title":{"357":{}},"content":{"246":{},"356":{},"357":{},"820":{}}}],["audit",{"_index":542,"title":{},"content":{"183":{},"348":{},"658":{}}}],["auth",{"_index":3590,"title":{},"content":{"821":{}}}],["auth_key",{"_index":744,"title":{},"content":{"190":{},"191":{},"202":{}}}],["auth_se",{"_index":742,"title":{},"content":{"190":{},"191":{},"202":{}}}],["auth_tag",{"_index":728,"title":{},"content":{"190":{},"191":{},"202":{}}}],["authent",{"_index":1359,"title":{},"content":{"271":{},"621":{},"642":{},"651":{},"652":{},"675":{},"698":{},"699":{},"751":{},"776":{},"819":{},"821":{},"822":{}}}],["authenticateyk",{"_index":1356,"title":{"271":{}},"content":{}}],["authentif",{"_index":3597,"title":{},"content":{"822":{}}}],["author",{"_index":45,"title":{"338":{}},"content":{"12":{},"25":{},"37":{},"46":{},"49":{},"55":{},"125":{},"130":{},"197":{},"202":{},"207":{},"211":{},"212":{},"213":{},"234":{},"246":{},"315":{},"316":{},"334":{},"338":{},"346":{},"396":{},"490":{},"505":{},"519":{},"533":{},"534":{},"535":{},"621":{},"624":{},"641":{},"649":{},"651":{},"669":{},"698":{},"715":{},"738":{},"805":{}}}],["authorit",{"_index":3295,"title":{},"content":{"714":{}}}],["authorization/deleg",{"_index":119,"title":{},"content":{"25":{},"55":{},"125":{}}}],["authorizationd",{"_index":155,"title":{},"content":{"37":{}}}],["authorized_key",{"_index":2118,"title":{},"content":{"392":{},"393":{},"490":{}}}],["authorized_public_key",{"_index":2146,"title":{},"content":{"396":{},"519":{}}}],["authorizedkey",{"_index":44,"title":{"12":{}},"content":{"12":{},"46":{},"47":{},"154":{},"164":{}}}],["authorizedkey.encryptedsecretkey",{"_index":57,"title":{},"content":{"13":{}}}],["authorizedkey.publickey",{"_index":58,"title":{},"content":{"13":{}}}],["authorizedpublickey",{"_index":192,"title":{},"content":{"46":{}}}],["authpolici",{"_index":1244,"title":{},"content":{"246":{}}}],["authvalu",{"_index":1235,"title":{},"content":{"246":{}}}],["auto",{"_index":3085,"title":{},"content":{"668":{},"822":{}}}],["autolock",{"_index":3600,"title":{},"content":{"822":{}}}],["autom",{"_index":1609,"title":{"759":{}},"content":{"297":{},"654":{},"658":{},"752":{},"759":{}}}],["automat",{"_index":1620,"title":{},"content":{"297":{},"345":{},"374":{},"385":{},"500":{},"505":{},"519":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"658":{},"792":{},"794":{},"798":{},"802":{},"805":{},"809":{},"816":{}}}],["autonom",{"_index":1811,"title":{"346":{}},"content":{"345":{},"346":{},"620":{},"654":{},"688":{}}}],["autor",{"_index":3529,"title":{},"content":{"805":{}}}],["avail",{"_index":156,"title":{"236":{},"337":{},"570":{},"597":{},"830":{}},"content":{"37":{},"220":{},"223":{},"228":{},"237":{},"238":{},"266":{},"316":{},"334":{},"336":{},"337":{},"341":{},"342":{},"343":{},"351":{},"355":{},"369":{},"371":{},"373":{},"386":{},"398":{},"399":{},"402":{},"404":{},"504":{},"509":{},"524":{},"553":{},"556":{},"574":{},"577":{},"615":{},"622":{},"623":{},"624":{},"660":{},"671":{},"674":{},"676":{},"682":{},"688":{},"692":{},"693":{},"708":{},"709":{},"721":{},"724":{},"746":{},"749":{},"750":{},"765":{},"774":{},"777":{},"786":{},"792":{},"795":{},"799":{},"814":{},"818":{},"822":{},"823":{},"828":{},"829":{},"831":{},"859":{}}}],["availability/lat",{"_index":3112,"title":{},"content":{"676":{}}}],["availabilityaddingtim",{"_index":77,"title":{},"content":{"19":{}}}],["avala",{"_index":3639,"title":{},"content":{"835":{}}}],["averag",{"_index":1132,"title":{},"content":{"238":{},"294":{},"334":{},"336":{}}}],["averageavail",{"_index":157,"title":{},"content":{"37":{}}}],["aviat",{"_index":2993,"title":{},"content":{"644":{}}}],["avoid",{"_index":851,"title":{},"content":{"211":{},"255":{},"258":{},"259":{},"261":{},"263":{},"328":{},"348":{},"378":{},"402":{},"641":{},"651":{},"669":{},"746":{},"776":{},"828":{},"829":{}}}],["avro",{"_index":1773,"title":{},"content":{"331":{}}}],["awar",{"_index":2786,"title":{},"content":{"587":{},"678":{}}}],["away",{"_index":3281,"title":{},"content":{"723":{}}}],["awc",{"_index":3629,"title":{},"content":{"829":{},"859":{}}}],["awri",{"_index":1029,"title":{},"content":{"216":{}}}],["b",{"_index":1467,"title":{},"content":{"256":{},"369":{},"423":{}}}],["b298kjkfs98dj7xdnsq",{"_index":3432,"title":{},"content":{"761":{}}}],["back",{"_index":818,"title":{},"content":{"191":{},"216":{},"330":{},"588":{},"751":{},"762":{},"808":{}}}],["backend",{"_index":512,"title":{},"content":{"181":{},"751":{}}}],["backpressur",{"_index":1526,"title":{},"content":{"261":{}}}],["backup",{"_index":1478,"title":{},"content":{"257":{},"259":{},"262":{}}}],["backward",{"_index":2881,"title":{},"content":{"635":{},"839":{},"857":{}}}],["bad",{"_index":2925,"title":{},"content":{"628":{}}}],["balanc",{"_index":60,"title":{"15":{},"101":{}},"content":{"15":{},"17":{},"52":{},"54":{},"70":{},"71":{},"101":{},"103":{},"146":{},"158":{},"219":{},"220":{},"223":{},"310":{},"452":{},"455":{},"456":{},"457":{},"523":{},"621":{},"691":{},"822":{},"830":{}}}],["balance.address",{"_index":359,"title":{},"content":{"102":{}}}],["balance.token",{"_index":66,"title":{},"content":{"16":{}}}],["balance.uco",{"_index":68,"title":{},"content":{"16":{},"452":{}}}],["ban",{"_index":2910,"title":{},"content":{"628":{}}}],["bandwidth",{"_index":1771,"title":{},"content":{"331":{},"671":{},"677":{},"692":{},"693":{}}}],["banish",{"_index":2853,"title":{},"content":{"623":{},"628":{}}}],["bar",{"_index":2268,"title":{},"content":{"434":{},"438":{},"439":{}}}],["base",{"_index":449,"title":{},"content":{"181":{},"182":{},"201":{},"218":{},"228":{},"235":{},"294":{},"312":{},"328":{},"334":{},"345":{},"346":{},"358":{},"391":{},"423":{},"583":{},"620":{},"622":{},"623":{},"624":{},"629":{},"630":{},"634":{},"638":{},"644":{},"647":{},"648":{},"654":{},"660":{},"661":{},"665":{},"675":{},"688":{},"695":{},"703":{},"704":{},"706":{},"730":{},"744":{},"745":{},"750":{},"785":{},"802":{},"819":{},"823":{}}}],["base16",{"_index":369,"title":{},"content":{"109":{},"144":{},"147":{},"163":{}}}],["base64",{"_index":3275,"title":{},"content":{"723":{},"725":{},"761":{},"822":{}}}],["basic",{"_index":453,"title":{"358":{}},"content":{"181":{},"583":{},"702":{}}}],["baz(uint,address",{"_index":2491,"title":{},"content":{"495":{},"496":{}}}],["be",{"_index":868,"title":{},"content":{"213":{},"262":{},"263":{},"266":{},"462":{},"479":{},"518":{},"642":{},"651":{},"654":{},"703":{},"749":{},"750":{},"751":{},"770":{}}}],["beacon",{"_index":71,"title":{"676":{},"689":{},"701":{}},"content":{"19":{},"104":{},"106":{},"228":{},"229":{},"236":{},"237":{},"266":{},"309":{},"625":{},"663":{},"673":{},"687":{},"689":{},"690":{},"691":{},"692":{},"693":{},"702":{},"703":{},"704":{},"706":{},"707":{},"708":{},"709":{}}}],["beaconchain",{"_index":1082,"title":{"227":{}},"content":{"227":{},"228":{},"229":{},"230":{},"238":{},"262":{},"334":{},"667":{},"676":{},"683":{},"687":{},"701":{},"707":{}}}],["beaconchainsummari",{"_index":70,"title":{"19":{},"104":{}},"content":{"19":{},"21":{},"79":{},"104":{},"106":{},"158":{},"162":{},"168":{}}}],["beaconchainsummary.availabilityaddingtim",{"_index":87,"title":{},"content":{"20":{}}}],["beaconchainsummary.p2pavail",{"_index":88,"title":{},"content":{"20":{}}}],["beaconchainsummary.summarytim",{"_index":89,"title":{},"content":{"20":{}}}],["beaconchainsummary.timestamp",{"_index":362,"title":{},"content":{"105":{}}}],["beaconchainsummary.transactionsummari",{"_index":90,"title":{},"content":{"20":{}}}],["beaconchainsummary.transactionsummaries.limit",{"_index":91,"title":{},"content":{"20":{}}}],["beaconchainsummary.transactionsummaries.pagingoffset",{"_index":92,"title":{},"content":{"20":{}}}],["beaconchainsummary.vers",{"_index":93,"title":{},"content":{"20":{}}}],["beauti",{"_index":3361,"title":{},"content":{"751":{}}}],["becom",{"_index":858,"title":{},"content":{"212":{},"307":{},"685":{},"714":{},"761":{},"781":{},"827":{}}}],["befor",{"_index":546,"title":{},"content":{"183":{},"203":{},"209":{},"230":{},"237":{},"261":{},"298":{},"315":{},"353":{},"355":{},"376":{},"398":{},"399":{},"576":{},"622":{},"638":{},"699":{},"709":{},"734":{},"757":{},"768":{},"786":{},"792":{},"819":{},"821":{}}}],["begin",{"_index":1688,"title":{},"content":{"312":{},"588":{},"658":{},"761":{},"784":{},"788":{}}}],["behalf",{"_index":1820,"title":{},"content":{"346":{}}}],["behav",{"_index":2536,"title":{},"content":{"500":{},"667":{}}}],["behavior",{"_index":1160,"title":{"325":{}},"content":{"240":{},"241":{},"325":{},"326":{},"346":{},"357":{},"667":{}}}],["behaviour",{"_index":1568,"title":{},"content":{"263":{},"506":{},"763":{}}}],["behind",{"_index":1413,"title":{},"content":{"282":{},"283":{},"452":{},"658":{},"707":{}}}],["believ",{"_index":3021,"title":{},"content":{"646":{}}}],["below",{"_index":1734,"title":{},"content":{"328":{},"508":{},"519":{},"702":{},"715":{}}}],["benchmark",{"_index":1448,"title":{},"content":{"256":{},"298":{}}}],["best",{"_index":1046,"title":{},"content":{"216":{},"217":{},"310":{},"329":{},"660":{},"688":{}}}],["beta",{"_index":3376,"title":{},"content":{"752":{},"770":{}}}],["better",{"_index":273,"title":{"564":{},"595":{}},"content":{"67":{},"180":{},"216":{},"218":{},"259":{},"296":{},"322":{},"348":{},"691":{},"702":{}}}],["between",{"_index":415,"title":{},"content":{"157":{},"181":{},"186":{},"210":{},"297":{},"306":{},"330":{},"354":{},"564":{},"565":{},"580":{},"593":{},"595":{},"596":{},"609":{},"620":{},"624":{},"691":{},"704":{},"756":{},"771":{},"779":{},"781":{},"790":{},"827":{},"829":{},"859":{}}}],["beyond",{"_index":2990,"title":{},"content":{"644":{},"821":{}}}],["bia",{"_index":2634,"title":{},"content":{"583":{}}}],["big",{"_index":788,"title":{},"content":{"191":{},"296":{},"501":{},"641":{},"761":{}}}],["bigger",{"_index":3101,"title":{},"content":{"672":{}}}],["biggest",{"_index":3068,"title":{},"content":{"654":{}}}],["billion",{"_index":2805,"title":{},"content":{"618":{},"619":{},"644":{}}}],["binanc",{"_index":2757,"title":{"612":{}},"content":{"612":{}}}],["binari",{"_index":373,"title":{"331":{}},"content":{"109":{},"144":{},"147":{},"163":{},"203":{},"261":{},"329":{},"331":{},"463":{},"693":{},"800":{}}}],["biometr",{"_index":2120,"title":{"699":{}},"content":{"392":{},"588":{},"621":{},"634":{},"642":{},"646":{},"651":{},"695":{},"699":{},"817":{},"818":{},"822":{}}}],["bip32",{"_index":897,"title":{},"content":{"200":{},"201":{}}}],["bip32/bip44",{"_index":900,"title":{},"content":{"200":{}}}],["bip39",{"_index":3580,"title":{},"content":{"820":{}}}],["bip39_mnemon",{"_index":3586,"title":{},"content":{"820":{}}}],["bip43",{"_index":903,"title":{},"content":{"200":{}}}],["bip44",{"_index":698,"title":{},"content":{"190":{},"191":{},"195":{},"196":{},"653":{}}}],["bip44path",{"_index":756,"title":{},"content":{"190":{},"191":{}}}],["bip44pathlen",{"_index":760,"title":{},"content":{"190":{},"191":{}}}],["bit",{"_index":914,"title":{},"content":{"201":{},"262":{},"331":{},"373":{},"667":{},"822":{}}}],["bitcask",{"_index":1488,"title":{},"content":{"258":{}}}],["bitcoin",{"_index":446,"title":{},"content":{"181":{},"644":{},"653":{}}}],["bitfield",{"_index":3252,"title":{},"content":{"712":{}}}],["bitstr",{"_index":1777,"title":{},"content":{"331":{}}}],["blake2b",{"_index":960,"title":{},"content":{"206":{},"460":{},"653":{}}}],["blind",{"_index":1842,"title":{},"content":{"348":{}}}],["blob",{"_index":3419,"title":{},"content":{"761":{}}}],["block",{"_index":190,"title":{"350":{},"373":{}},"content":{"46":{},"258":{},"330":{},"350":{},"351":{},"352":{},"353":{},"356":{},"365":{},"369":{},"370":{},"373":{},"374":{},"375":{},"376":{},"377":{},"379":{},"391":{},"392":{},"393":{},"394":{},"395":{},"398":{},"399":{},"402":{},"404":{},"610":{},"619":{},"620":{},"621":{},"713":{},"798":{}}}],["blockag",{"_index":3061,"title":{},"content":{"664":{}}}],["blockchain",{"_index":439,"title":{"556":{},"564":{},"565":{},"566":{},"567":{},"588":{},"595":{},"596":{},"698":{},"823":{}},"content":{"181":{},"197":{},"200":{},"202":{},"211":{},"215":{},"216":{},"297":{},"329":{},"341":{},"342":{},"343":{},"345":{},"359":{},"390":{},"533":{},"534":{},"535":{},"564":{},"570":{},"579":{},"587":{},"593":{},"595":{},"596":{},"598":{},"603":{},"606":{},"607":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"628":{},"642":{},"645":{},"647":{},"654":{},"657":{},"658":{},"660":{},"666":{},"678":{},"682":{},"685":{},"689":{},"690":{},"698":{},"701":{},"705":{},"744":{},"749":{},"750":{},"751":{},"752":{},"756":{},"760":{},"762":{},"764":{},"765":{},"768":{},"770":{},"771":{},"772":{},"773":{},"774":{},"777":{},"780":{},"784":{},"785":{},"790":{},"792":{},"799":{},"817":{},"821":{},"822":{},"823":{},"827":{},"829":{},"830":{},"859":{}}}],["blockchain'",{"_index":3070,"title":{},"content":{"654":{}}}],["blockchain/ecosystem",{"_index":2930,"title":{"630":{}},"content":{}}],["blog",{"_index":3553,"title":{},"content":{"818":{},"822":{}}}],["bloom",{"_index":1582,"title":{},"content":{"264":{},"265":{}}}],["bnb",{"_index":2716,"title":{"613":{}},"content":{"593":{},"613":{}}}],["bodi",{"_index":2433,"title":{},"content":{"478":{},"479":{},"480":{}}}],["body'",{"_index":2440,"title":{},"content":{"479":{}}}],["bolo",{"_index":487,"title":{},"content":{"181":{},"183":{},"187":{}}}],["book",{"_index":3551,"title":{},"content":{"818":{}}}],["bool",{"_index":1330,"title":{"253":{},"269":{}},"content":{}}],["boolean",{"_index":7,"title":{"140":{}},"content":{"2":{},"3":{},"4":{},"5":{},"37":{},"38":{},"73":{},"74":{},"140":{},"358":{},"373":{},"374":{}}}],["boot",{"_index":2899,"title":{},"content":{"627":{}}}],["bootstrap",{"_index":1080,"title":{"232":{},"234":{},"235":{},"678":{}},"content":{"226":{},"232":{},"234":{},"235":{},"266":{},"322":{},"335":{},"678":{},"679":{},"682":{}}}],["both",{"_index":610,"title":{},"content":{"188":{},"262":{},"606":{},"607":{},"619":{},"629":{},"646":{},"779":{},"781":{},"784":{},"785":{},"791":{},"792":{},"822":{}}}],["bottleneckarcheth",{"_index":2828,"title":{},"content":{"620":{}}}],["bottom",{"_index":2522,"title":{},"content":{"498":{},"590":{}}}],["boundari",{"_index":1538,"title":{},"content":{"261":{}}}],["box",{"_index":1042,"title":{},"content":{"216":{},"779":{},"821":{}}}],["bracket",{"_index":1935,"title":{},"content":{"367":{}}}],["branch",{"_index":1614,"title":{},"content":{"297":{},"304":{},"583":{},"619":{},"630":{}}}],["brand",{"_index":1752,"title":{},"content":{"329":{}}}],["brave",{"_index":2753,"title":{"610":{}},"content":{"610":{}}}],["break",{"_index":1859,"title":{},"content":{"357":{},"634":{}}}],["bridg",{"_index":502,"title":{"537":{},"538":{},"541":{},"553":{},"559":{},"561":{},"562":{},"564":{},"565":{},"566":{},"567":{},"579":{},"591":{},"593":{},"594":{},"595":{},"596":{},"597":{},"602":{},"604":{},"605":{},"606":{},"607":{},"777":{},"786":{},"791":{}},"content":{"181":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"553":{},"561":{},"562":{},"565":{},"566":{},"567":{},"574":{},"576":{},"579":{},"593":{},"594":{},"596":{},"597":{},"602":{},"604":{},"606":{},"607":{},"615":{},"777":{},"779":{},"781":{},"784":{},"785":{},"786":{},"787":{},"788":{},"790":{},"791":{}}}],["bridge'",{"_index":2750,"title":{},"content":{"604":{},"781":{},"784":{}}}],["bridge.testnet.archethic.net",{"_index":3476,"title":{},"content":{"777":{}}}],["bring",{"_index":1508,"title":{},"content":{"259":{},"345":{},"565":{}}}],["broad",{"_index":2618,"title":{},"content":{"583":{}}}],["broadcast",{"_index":3098,"title":{"672":{}},"content":{"672":{},"676":{},"708":{}}}],["broader",{"_index":2730,"title":{},"content":{"593":{}}}],["brought",{"_index":2951,"title":{},"content":{"641":{}}}],["brows",{"_index":2588,"title":{},"content":{"523":{},"822":{}}}],["browser",{"_index":2702,"title":{"610":{}},"content":{"576":{},"749":{},"756":{},"760":{},"762":{},"786":{}}}],["browser’",{"_index":2755,"title":{},"content":{"610":{}}}],["bsc",{"_index":2718,"title":{},"content":{"593":{},"613":{},"777":{}}}],["buck",{"_index":3354,"title":{},"content":{"750":{}}}],["buffer",{"_index":606,"title":{},"content":{"188":{},"190":{},"191":{},"246":{}}}],["build",{"_index":850,"title":{"497":{},"695":{},"761":{},"802":{}},"content":{"211":{},"213":{},"216":{},"226":{},"304":{},"318":{},"342":{},"503":{},"504":{},"521":{},"522":{},"533":{},"534":{},"535":{},"582":{},"618":{},"625":{},"634":{},"649":{},"751":{},"760":{},"800":{},"826":{}}}],["built",{"_index":1439,"title":{},"content":{"255":{},"262":{},"311":{},"618":{},"765":{},"768":{},"786":{},"826":{}}}],["burger",{"_index":2682,"title":{},"content":{"568":{}}}],["burn",{"_index":2321,"title":{},"content":{"447":{},"660":{},"731":{}}}],["burnt",{"_index":3490,"title":{},"content":{"785":{}}}],["busi",{"_index":3368,"title":{},"content":{"751":{}}}],["button",{"_index":2526,"title":{},"content":{"499":{},"500":{},"505":{},"507":{},"509":{},"574":{},"587":{},"615":{},"775":{},"788":{},"802":{},"803":{},"805":{},"808":{},"810":{},"811":{},"813":{}}}],["buy",{"_index":2771,"title":{"613":{}},"content":{"613":{},"818":{}}}],["buytoken",{"_index":2086,"title":{},"content":{"385":{}}}],["buytoken(recipient_address",{"_index":2060,"title":{},"content":{"384":{}}}],["byte",{"_index":412,"title":{"245":{},"253":{},"254":{}},"content":{"147":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{},"201":{},"202":{},"204":{},"205":{},"206":{},"209":{},"210":{},"245":{},"246":{},"253":{},"261":{},"262":{},"331":{},"636":{},"637":{},"638":{},"661":{},"705":{},"822":{}}}],["c",{"_index":490,"title":{"217":{}},"content":{"181":{},"215":{},"217":{},"295":{},"296":{},"423":{}}}],["ca",{"_index":1247,"title":{},"content":{"246":{}}}],["cach",{"_index":1110,"title":{},"content":{"230":{},"262":{},"296":{},"322":{},"335":{},"762":{}}}],["calcul",{"_index":732,"title":{"661":{}},"content":{"190":{},"191":{},"247":{},"284":{},"286":{},"288":{},"289":{},"290":{},"291":{},"292":{},"349":{},"473":{},"619":{},"660":{},"745":{}}}],["calculate(x",{"_index":2508,"title":{},"content":{"403":{}}}],["call",{"_index":637,"title":{},"content":{"189":{},"202":{},"216":{},"247":{},"249":{},"253":{},"330":{},"335":{},"345":{},"367":{},"369":{},"370":{},"373":{},"374":{},"385":{},"404":{},"451":{},"454":{},"479":{},"482":{},"487":{},"489":{},"491":{},"493":{},"507":{},"508":{},"509":{},"565":{},"620":{},"622":{},"666":{},"672":{},"673":{},"679":{},"685":{},"701":{},"710":{},"761":{},"814":{},"819":{},"828":{},"831":{}}}],["call_function/3",{"_index":2455,"title":{"482":{}},"content":{}}],["callabl",{"_index":1940,"title":{},"content":{"369":{},"370":{}}}],["caller",{"_index":1961,"title":{},"content":{"352":{},"399":{}}}],["calul",{"_index":791,"title":{},"content":{"191":{}}}],["can't",{"_index":2752,"title":{"610":{}},"content":{"756":{}}}],["candid",{"_index":1051,"title":{"306":{}},"content":{"217":{},"305":{},"307":{},"378":{},"386":{}}}],["capabl",{"_index":1043,"title":{},"content":{"216":{},"261":{},"263":{},"298":{},"346":{},"509":{},"579":{},"634":{},"644":{},"695":{},"698":{},"707":{},"749":{},"751":{},"779":{},"780":{},"821":{}}}],["capac",{"_index":2988,"title":{},"content":{"644":{},"705":{},"784":{}}}],["capit",{"_index":3105,"title":{},"content":{"674":{}}}],["captur",{"_index":2278,"title":{},"content":{"434":{}}}],["card",{"_index":1362,"title":{},"content":{"272":{},"695":{}}}],["care",{"_index":1853,"title":{},"content":{"349":{},"352":{},"583":{}}}],["carri",{"_index":2933,"title":{},"content":{"630":{}}}],["carriag",{"_index":2403,"title":{},"content":{"468":{}}}],["case",{"_index":647,"title":{},"content":{"189":{},"216":{},"246":{},"259":{},"298":{},"352":{},"354":{},"357":{},"576":{},"619":{},"621":{},"622":{},"665":{},"684":{},"715":{},"718":{},"751":{},"766":{},"781":{},"784":{},"809":{},"820":{},"821":{},"822":{}}}],["cassandra",{"_index":1454,"title":{},"content":{"256":{}}}],["categor",{"_index":2879,"title":{},"content":{"634":{}}}],["categori",{"_index":2124,"title":{},"content":{"394":{},"590":{},"727":{}}}],["caution",{"_index":2019,"title":{},"content":{"375":{},"377":{},"379":{},"479":{},"588":{},"786":{},"792":{},"794":{},"795":{}}}],["cbc",{"_index":885,"title":{},"content":{"198":{},"202":{}}}],["cc",{"_index":2928,"title":{},"content":{"629":{}}}],["cd",{"_index":1622,"title":{"298":{}},"content":{"298":{},"522":{},"800":{}}}],["censorship",{"_index":3339,"title":{},"content":{"746":{},"749":{}}}],["central",{"_index":3000,"title":{},"content":{"645":{},"646":{},"749":{},"750":{},"751":{},"779":{}}}],["cert.pem",{"_index":3414,"title":{},"content":{"758":{}}}],["certain",{"_index":75,"title":{},"content":{"19":{},"106":{},"257":{},"313":{},"330":{},"610":{},"647":{},"657":{},"821":{}}}],["certainti",{"_index":2843,"title":{},"content":{"623":{}}}],["certbot",{"_index":3403,"title":{},"content":{"757":{}}}],["certif",{"_index":1205,"title":{"757":{},"758":{},"772":{}},"content":{"246":{},"272":{},"280":{},"281":{},"285":{},"286":{},"287":{},"288":{},"315":{},"679":{},"698":{},"752":{},"756":{},"757":{},"758":{},"770":{},"772":{},"774":{}}}],["certifi",{"_index":2917,"title":{},"content":{"628":{},"629":{},"756":{}}}],["certificates",{"_index":1418,"title":{"285":{},"288":{}},"content":{}}],["certonli",{"_index":3405,"title":{},"content":{"757":{}}}],["chach",{"_index":1560,"title":{},"content":{"262":{}}}],["chain",{"_index":72,"title":{"261":{},"262":{},"263":{},"266":{},"324":{},"443":{},"603":{},"656":{},"675":{},"676":{},"689":{},"713":{},"758":{},"780":{}},"content":{"19":{},"55":{},"101":{},"104":{},"106":{},"125":{},"131":{},"197":{},"200":{},"201":{},"212":{},"216":{},"226":{},"233":{},"235":{},"237":{},"261":{},"262":{},"263":{},"264":{},"266":{},"309":{},"310":{},"311":{},"313":{},"319":{},"320":{},"321":{},"322":{},"345":{},"346":{},"347":{},"349":{},"353":{},"354":{},"375":{},"376":{},"378":{},"384":{},"385":{},"392":{},"393":{},"444":{},"445":{},"449":{},"450":{},"452":{},"453":{},"455":{},"456":{},"457":{},"485":{},"505":{},"506":{},"558":{},"565":{},"579":{},"593":{},"603":{},"606":{},"612":{},"619":{},"620":{},"621":{},"622":{},"625":{},"633":{},"638":{},"641":{},"642":{},"647":{},"649":{},"651":{},"652":{},"653":{},"657":{},"660":{},"661":{},"663":{},"666":{},"667":{},"673":{},"675":{},"685":{},"687":{},"689":{},"690":{},"691":{},"692":{},"693":{},"698":{},"702":{},"703":{},"704":{},"706":{},"707":{},"708":{},"709":{},"710":{},"714":{},"715":{},"721":{},"724":{},"732":{},"747":{},"749":{},"750":{},"751":{},"754":{},"755":{},"758":{},"760":{},"762":{},"763":{},"767":{},"770":{},"771":{},"772":{},"773":{},"779":{},"780":{},"781":{},"784":{},"848":{},"851":{}}}],["chain'",{"_index":1114,"title":{},"content":{"236":{},"262":{},"264":{},"346":{}}}],["chain.get_balance(0x00abcd",{"_index":2337,"title":{},"content":{"452":{}}}],["chain.get_burn_address",{"_index":2319,"title":{},"content":{"447":{}}}],["chain.get_first_transaction_address(\"000012345",{"_index":2312,"title":{},"content":{"445":{}}}],["chain.get_first_transaction_address/1",{"_index":2555,"title":{},"content":{"506":{}}}],["chain.get_genesis_address",{"_index":2037,"title":{},"content":{"378":{}}}],["chain.get_genesis_address(\"000012345",{"_index":2308,"title":{},"content":{"444":{}}}],["chain.get_genesis_address(contract.address",{"_index":2080,"title":{},"content":{"384":{}}}],["chain.get_genesis_address/1",{"_index":2554,"title":{"508":{}},"content":{"506":{}}}],["chain.get_genesis_public_key(\"00013b08d",{"_index":2315,"title":{},"content":{"446":{}}}],["chain.get_genesis_public_key/1",{"_index":2556,"title":{},"content":{"506":{}}}],["chain.get_last_address(0x00abcd",{"_index":2326,"title":{},"content":{"449":{}}}],["chain.get_last_transaction(0x00abcd",{"_index":2329,"title":{},"content":{"450":{}}}],["chain.get_last_transaction(0x00abcf",{"_index":2330,"title":{},"content":{"450":{}}}],["chain.get_previous_address(0x00abcd",{"_index":2332,"title":{},"content":{"451":{}}}],["chain.get_previous_address(transact",{"_index":2333,"title":{},"content":{"451":{}}}],["chain.get_token_balance(transaction_address",{"_index":2357,"title":{},"content":{"455":{}}}],["chain.get_tokens_balance(0x00abcd",{"_index":2361,"title":{},"content":{"456":{},"457":{}}}],["chain.get_transaction(0x00abcd",{"_index":2323,"title":{},"content":{"448":{}}}],["chain.get_uco_balance(0x00abcd",{"_index":2349,"title":{},"content":{"453":{}}}],["chainlength",{"_index":240,"title":{},"content":{"70":{}}}],["challeng",{"_index":3069,"title":{},"content":{"654":{},"757":{}}}],["chang",{"_index":916,"title":{},"content":{"201":{},"229":{},"235":{},"246":{},"259":{},"296":{},"297":{},"304":{},"318":{},"319":{},"320":{},"357":{},"479":{},"501":{},"513":{},"583":{},"587":{},"622":{},"628":{},"646":{},"658":{},"675":{},"682":{},"687":{},"707":{},"714":{},"728":{},"732":{},"734":{},"750":{},"767":{},"828":{},"830":{}}}],["channel",{"_index":3208,"title":{},"content":{"686":{},"831":{}}}],["char",{"_index":761,"title":{},"content":{"190":{},"191":{},"820":{}}}],["charact",{"_index":424,"title":{"360":{}},"content":{"165":{},"360":{},"406":{},"515":{},"516":{},"517":{}}}],["charg",{"_index":1075,"title":{},"content":{"226":{},"233":{},"236":{},"328":{},"622":{},"687":{},"692":{},"707":{},"709":{}}}],["chars[rng.nextint(chars.length",{"_index":3578,"title":{},"content":{"820":{}}}],["chart",{"_index":3552,"title":{},"content":{"818":{},"822":{}}}],["cheap",{"_index":3259,"title":{},"content":{"719":{},"750":{}}}],["check",{"_index":671,"title":{},"content":{"189":{},"191":{},"228":{},"245":{},"253":{},"254":{},"265":{},"304":{},"312":{},"315":{},"316":{},"320":{},"321":{},"325":{},"348":{},"356":{},"371":{},"373":{},"375":{},"377":{},"379":{},"389":{},"398":{},"399":{},"402":{},"523":{},"637":{},"658":{},"692":{},"699":{},"709":{},"759":{}}}],["check/recheck",{"_index":3106,"title":{},"content":{"674":{}}}],["check_amount(transaction.uco_mov",{"_index":2061,"title":{},"content":{"384":{}}}],["check_amount(transf",{"_index":2077,"title":{},"content":{"384":{}}}],["checkyk",{"_index":1349,"title":{"269":{}},"content":{}}],["child'",{"_index":1914,"title":{},"content":{"365":{}}}],["chip",{"_index":2905,"title":{},"content":{"627":{}}}],["choic",{"_index":1462,"title":{},"content":{"256":{},"635":{},"819":{},"822":{},"859":{}}}],["choos",{"_index":2543,"title":{},"content":{"505":{},"511":{},"590":{},"612":{},"792":{}}}],["chosen",{"_index":3502,"title":{},"content":{"792":{},"820":{},"822":{}}}],["chunk",{"_index":3439,"title":{},"content":{"761":{}}}],["ci",{"_index":1631,"title":{"304":{}},"content":{"298":{},"304":{}}}],["ci/cd",{"_index":1621,"title":{},"content":{"297":{}}}],["ci_logfile.txt",{"_index":1652,"title":{},"content":{"304":{}}}],["cipher",{"_index":1225,"title":{},"content":{"246":{}}}],["cla",{"_index":829,"title":{},"content":{"194":{},"195":{},"196":{}}}],["claim",{"_index":2664,"title":{},"content":{"561":{}}}],["clair",{"_index":2043,"title":{},"content":{"378":{}}}],["classic",{"_index":3099,"title":{},"content":{"672":{},"753":{}}}],["clean",{"_index":1486,"title":{},"content":{"257":{},"298":{}}}],["cleanup",{"_index":1484,"title":{},"content":{"257":{}}}],["clear",{"_index":2703,"title":{},"content":{"576":{},"720":{},"802":{},"822":{}}}],["cli",{"_index":508,"title":{"542":{},"551":{},"558":{},"765":{},"799":{},"814":{}},"content":{"181":{},"182":{},"540":{},"541":{},"542":{},"543":{},"551":{},"552":{},"558":{},"752":{},"757":{},"758":{},"759":{},"761":{},"765":{},"800":{},"814":{}}}],["cli.git",{"_index":3519,"title":{},"content":{"800":{}}}],["cli@latest",{"_index":3517,"title":{},"content":{"800":{}}}],["click",{"_index":2525,"title":{},"content":{"499":{},"500":{},"505":{},"507":{},"509":{},"568":{},"587":{},"588":{},"589":{},"590":{},"755":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"788":{}}}],["client",{"_index":855,"title":{"527":{},"711":{}},"content":{"209":{},"211":{},"213":{},"306":{},"330":{},"347":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"625":{},"707":{},"711":{},"749":{},"757":{},"762":{},"784":{},"829":{},"859":{}}}],["client'",{"_index":379,"title":{},"content":{"110":{}}}],["clone",{"_index":557,"title":{},"content":{"184":{},"522":{},"800":{}}}],["close",{"_index":1930,"title":{},"content":{"367":{},"375":{},"376":{},"485":{},"576":{}}}],["closer",{"_index":3102,"title":{},"content":{"673":{}}}],["closest",{"_index":1680,"title":{},"content":{"309":{},"620":{},"679":{},"684":{},"688":{}}}],["cloudfar",{"_index":3399,"title":{},"content":{"755":{}}}],["cloudflar",{"_index":2644,"title":{},"content":{"556":{}}}],["cn108780501",{"_index":3190,"title":{},"content":{"699":{}}}],["cn109074478",{"_index":3191,"title":{},"content":{"699":{}}}],["cname",{"_index":3392,"title":{},"content":{"754":{},"755":{}}}],["code",{"_index":110,"title":{"297":{},"320":{},"321":{},"467":{},"512":{},"656":{}},"content":{"25":{},"98":{},"149":{},"150":{},"188":{},"216":{},"218":{},"261":{},"262":{},"270":{},"297":{},"298":{},"304":{},"345":{},"346":{},"347":{},"348":{},"350":{},"353":{},"354":{},"356":{},"357":{},"370":{},"373":{},"375":{},"376":{},"392":{},"393":{},"396":{},"398":{},"468":{},"469":{},"479":{},"485":{},"498":{},"505":{},"509":{},"512":{},"565":{},"584":{},"587":{},"588":{},"647":{},"654":{},"657":{},"658":{},"682":{},"696":{},"715":{},"734":{},"743":{},"764":{},"768":{},"779":{},"786":{},"815":{},"817":{},"818":{},"819":{},"821":{},"822":{},"829":{}}}],["code.is_same?(cod",{"_index":2397,"title":{},"content":{"468":{}}}],["code.is_valid?(cod",{"_index":2404,"title":{},"content":{"469":{}}}],["code_approv",{"_index":3322,"title":{"735":{}},"content":{}}],["code_propos",{"_index":3321,"title":{"734":{}},"content":{"735":{}}}],["code_s",{"_index":802,"title":{},"content":{"191":{}}}],["codebas",{"_index":3385,"title":{},"content":{"759":{}}}],["coin",{"_index":648,"title":{"384":{}},"content":{"189":{}}}],["coin_typ",{"_index":665,"title":{},"content":{"189":{}}}],["coingecko",{"_index":1739,"title":{},"content":{"326":{},"599":{},"668":{}}}],["coinmarketcap",{"_index":2737,"title":{},"content":{"599":{}}}],["cold",{"_index":475,"title":{},"content":{"181":{}}}],["collabor",{"_index":3011,"title":{},"content":{"645":{}}}],["collect",{"_index":211,"title":{},"content":{"55":{},"125":{},"304":{},"366":{},"455":{},"665":{},"718":{},"723":{},"726":{}}}],["collet",{"_index":3277,"title":{},"content":{"723":{}}}],["colletion_symbol",{"_index":3278,"title":{},"content":{"723":{}}}],["column",{"_index":1496,"title":{},"content":{"259":{},"260":{},"261":{},"263":{}}}],["combin",{"_index":978,"title":{},"content":{"215":{},"276":{},"304":{},"780":{}}}],["come",{"_index":357,"title":{},"content":{"101":{},"257":{},"262":{},"378":{},"628":{},"633":{},"638":{},"645":{},"661":{},"679":{}}}],["command",{"_index":522,"title":{"192":{},"193":{},"765":{},"814":{},"830":{}},"content":{"182":{},"184":{},"194":{},"195":{},"304":{},"752":{},"757":{},"758":{},"759":{},"765":{},"766":{},"767":{},"799":{},"814":{},"830":{}}}],["comment",{"_index":1863,"title":{},"content":{"358":{}}}],["commerc",{"_index":1844,"title":{},"content":{"349":{}}}],["commiss",{"_index":3336,"title":{},"content":{"745":{}}}],["commit",{"_index":1655,"title":{"623":{}},"content":{"304":{},"310":{},"320":{},"346":{},"479":{},"618":{},"620":{},"622":{},"623":{},"625":{},"667":{},"698":{},"709":{}}}],["commite",{"_index":1709,"title":{},"content":{"321":{}}}],["common",{"_index":1129,"title":{},"content":{"238":{},"330":{},"629":{}}}],["commun",{"_index":503,"title":{"696":{},"827":{}},"content":{"181":{},"217":{},"296":{},"330":{},"505":{},"581":{},"625":{},"648":{},"666":{},"670":{},"672":{},"673":{},"674":{},"686":{},"700":{},"758":{},"819":{},"823":{},"827":{},"829":{},"859":{}}}],["compact",{"_index":1487,"title":{},"content":{"257":{},"258":{}}}],["compaction/merg",{"_index":1503,"title":{},"content":{"259":{}}}],["companion",{"_index":501,"title":{},"content":{"181":{}}}],["compar",{"_index":750,"title":{},"content":{"190":{},"191":{},"326":{},"359":{},"361":{},"468":{},"771":{},"819":{}}}],["comparaison",{"_index":1883,"title":{"361":{}},"content":{"359":{}}}],["compat",{"_index":2686,"title":{},"content":{"570":{},"596":{},"597":{},"598":{},"635":{},"639":{},"641":{},"786":{},"859":{}}}],["compatibl",{"_index":3640,"title":{},"content":{"839":{},"857":{}}}],["compens",{"_index":3168,"title":{},"content":{"699":{}}}],["competitor",{"_index":3565,"title":{},"content":{"819":{}}}],["compil",{"_index":1641,"title":{},"content":{"304":{},"348":{},"800":{},"819":{}}}],["complet",{"_index":1959,"title":{},"content":{"372":{},"576":{},"652":{},"685":{},"687":{},"707":{},"711":{},"715":{},"720":{},"749":{},"751":{},"752":{},"780":{},"785":{}}}],["completli",{"_index":1541,"title":{},"content":{"262":{},"345":{}}}],["complex",{"_index":1055,"title":{},"content":{"217":{},"373":{},"376":{},"428":{},"501":{},"628":{},"634":{},"635":{},"660":{},"661":{},"672":{},"719":{},"751":{}}}],["complianc",{"_index":2965,"title":{"652":{}},"content":{}}],["compliant",{"_index":2966,"title":{},"content":{"652":{}}}],["compon",{"_index":485,"title":{},"content":{"181":{},"217":{},"305":{},"311":{},"322":{},"819":{}}}],["compos",{"_index":2149,"title":{},"content":{"404":{},"501":{},"720":{},"761":{},"762":{},"822":{}}}],["comprehens",{"_index":2999,"title":{},"content":{"645":{}}}],["compress",{"_index":3465,"title":{},"content":{"767":{}}}],["compris",{"_index":3587,"title":{},"content":{"821":{}}}],["compromis",{"_index":2018,"title":{},"content":{"375":{}}}],["comput",{"_index":911,"title":{},"content":{"200":{},"217":{},"219":{},"230":{},"259":{},"295":{},"296":{},"322":{},"345":{},"348":{},"625":{},"627":{},"634":{},"638":{},"654":{},"661":{},"665":{},"688":{},"691":{},"692":{},"700":{}}}],["concat/2",{"_index":2231,"title":{"427":{}},"content":{}}],["concaten",{"_index":1301,"title":{},"content":{"247":{},"427":{}}}],["concept",{"_index":1515,"title":{"601":{},"690":{},"702":{},"778":{}},"content":{"260":{},"261":{},"262":{},"621":{},"622":{},"628":{},"649":{},"652":{},"673":{},"702":{},"786":{}}}],["concern",{"_index":598,"title":{},"content":{"188":{},"246":{},"695":{}}}],["concis",{"_index":1040,"title":{},"content":{"216":{}}}],["conclus",{"_index":3653,"title":{"859":{}},"content":{}}],["concord",{"_index":2838,"title":{},"content":{"622":{}}}],["concret",{"_index":1966,"title":{},"content":{"352":{}}}],["concurr",{"_index":1442,"title":{},"content":{"255":{},"309":{},"330":{},"685":{}}}],["concurrent/parallel",{"_index":1007,"title":{},"content":{"216":{}}}],["condit",{"_index":1611,"title":{"373":{},"375":{},"377":{},"379":{},"392":{}},"content":{"297":{},"345":{},"346":{},"356":{},"369":{},"373":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"384":{},"386":{},"388":{},"389":{},"390":{},"392":{},"393":{},"394":{},"395":{},"398":{},"399":{},"402":{},"468":{},"469":{},"485":{},"497":{},"509":{},"698":{},"715":{},"727":{},"784":{},"785":{}}}],["confid",{"_index":3348,"title":{},"content":{"749":{}}}],["confidenti",{"_index":2875,"title":{},"content":{"621":{},"698":{}}}],["config",{"_index":1747,"title":{},"content":{"327":{}}}],["config.ex",{"_index":1746,"title":{},"content":{"327":{}}}],["configur",{"_index":1694,"title":{"327":{}},"content":{"312":{},"327":{},"556":{},"557":{},"612":{},"649":{},"699":{},"728":{},"787":{},"802":{},"803":{},"805":{},"808":{},"813":{}}}],["confirm",{"_index":271,"title":{"793":{}},"content":{"67":{},"180":{},"228":{},"230":{},"237":{},"479":{},"588":{},"589":{},"590":{},"708":{},"709":{},"710":{},"712":{},"767":{},"770":{},"773":{},"775":{},"785":{},"791":{},"793":{},"794":{},"798":{},"828":{},"830":{},"840":{},"843":{}}}],["conflict",{"_index":2945,"title":{},"content":{"641":{}}}],["conform",{"_index":1708,"title":{},"content":{"320":{}}}],["congratul",{"_index":2549,"title":{},"content":{"505":{}}}],["connect",{"_index":520,"title":{"610":{}},"content":{"182":{},"232":{},"234":{},"268":{},"330":{},"558":{},"579":{},"610":{},"613":{},"620":{},"642":{},"674":{},"675":{},"698":{},"700":{},"767":{},"775":{},"792":{},"798":{},"799":{},"822":{},"844":{}}}],["connectivity/crypto",{"_index":1154,"title":{},"content":{"235":{}}}],["consensu",{"_index":1673,"title":{"622":{}},"content":{"303":{},"312":{},"346":{},"603":{},"618":{},"619":{},"620":{},"622":{},"623":{},"644":{},"667":{},"675":{},"698":{},"749":{},"780":{}}}],["consensusarcheth",{"_index":2821,"title":{},"content":{"620":{}}}],["consid",{"_index":473,"title":{},"content":{"181":{},"237":{},"238":{},"259":{},"309":{},"338":{},"347":{},"452":{},"456":{},"457":{},"647":{},"658":{},"674":{},"714":{},"715":{},"719":{},"758":{}}}],["consider",{"_index":2880,"title":{},"content":{"634":{},"686":{}}}],["consist",{"_index":2676,"title":{},"content":{"565":{},"619":{},"621":{},"622":{},"658":{},"792":{}}}],["consol",{"_index":2521,"title":{},"content":{"498":{},"507":{},"508":{},"509":{}}}],["consolid",{"_index":2736,"title":{},"content":{"599":{}}}],["const",{"_index":3574,"title":{},"content":{"820":{}}}],["constant",{"_index":921,"title":{},"content":{"201":{}}}],["constantli",{"_index":2839,"title":{},"content":{"622":{}}}],["constrain",{"_index":3074,"title":{},"content":{"654":{}}}],["constraint",{"_index":1592,"title":{"294":{}},"content":{"293":{},"294":{},"346":{},"619":{},"624":{},"630":{},"659":{},"698":{}}}],["consult",{"_index":2868,"title":{},"content":{"621":{},"787":{},"814":{}}}],["consum",{"_index":3064,"title":{},"content":{"665":{}}}],["consumpt",{"_index":2808,"title":{},"content":{"618":{},"621":{},"644":{},"695":{}}}],["contact",{"_index":1145,"title":{},"content":{"234":{},"785":{}}}],["contain",{"_index":120,"title":{},"content":{"25":{},"55":{},"125":{},"244":{},"246":{},"262":{},"269":{},"272":{},"297":{},"298":{},"304":{},"313":{},"328":{},"336":{},"354":{},"356":{},"392":{},"393":{},"402":{},"444":{},"445":{},"449":{},"450":{},"452":{},"453":{},"455":{},"456":{},"457":{},"468":{},"469":{},"587":{},"620":{},"627":{},"633":{},"658":{},"692":{},"693":{},"709":{},"715":{},"727":{},"728":{},"732":{},"734":{},"739":{},"742":{},"743":{},"751":{},"758":{},"761":{},"770":{},"771":{},"774":{},"805":{},"822":{},"830":{}}}],["content",{"_index":114,"title":{"142":{},"513":{},"762":{},"806":{}},"content":{"25":{},"26":{},"142":{},"191":{},"312":{},"315":{},"316":{},"317":{},"318":{},"319":{},"353":{},"354":{},"373":{},"376":{},"378":{},"380":{},"383":{},"386":{},"392":{},"393":{},"395":{},"396":{},"448":{},"450":{},"484":{},"500":{},"513":{},"583":{},"625":{},"657":{},"715":{},"721":{},"724":{},"725":{},"732":{},"742":{},"758":{},"761":{},"762":{},"767":{},"770":{},"771":{},"772":{},"774":{},"776":{},"806":{}}}],["content_s",{"_index":803,"title":{},"content":{"191":{}}}],["context",{"_index":18,"title":{"308":{},"602":{}},"content":{"6":{},"64":{},"188":{},"218":{},"249":{},"268":{},"299":{},"308":{},"557":{},"625":{},"771":{},"772":{},"773":{},"830":{}}}],["continu",{"_index":1847,"title":{},"content":{"349":{},"576":{},"638":{},"658":{},"759":{},"767":{}}}],["contract",{"_index":112,"title":{"313":{},"344":{},"345":{},"350":{},"355":{},"356":{},"373":{},"382":{},"387":{},"390":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"404":{},"481":{},"497":{},"498":{},"504":{},"505":{},"506":{},"509":{},"510":{},"531":{},"602":{},"743":{},"779":{},"807":{}},"content":{"25":{},"49":{},"130":{},"262":{},"306":{},"312":{},"313":{},"345":{},"346":{},"347":{},"348":{},"349":{},"351":{},"353":{},"354":{},"356":{},"359":{},"362":{},"367":{},"368":{},"369":{},"370":{},"371":{},"373":{},"375":{},"377":{},"378":{},"379":{},"383":{},"384":{},"385":{},"386":{},"389":{},"390":{},"393":{},"394":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"404":{},"442":{},"462":{},"468":{},"469":{},"479":{},"482":{},"483":{},"484":{},"485":{},"492":{},"497":{},"498":{},"499":{},"500":{},"501":{},"503":{},"504":{},"505":{},"506":{},"507":{},"509":{},"510":{},"512":{},"513":{},"518":{},"519":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"565":{},"579":{},"593":{},"598":{},"602":{},"606":{},"607":{},"613":{},"661":{},"666":{},"667":{},"695":{},"698":{},"710":{},"715":{},"719":{},"726":{},"743":{},"751":{},"779":{},"784":{},"785":{},"794":{},"805":{},"807":{},"839":{},"857":{}}}],["contract'",{"_index":1821,"title":{},"content":{"346":{},"351":{},"384":{},"442":{},"482":{},"500":{},"505":{},"519":{},"805":{}}}],["contract.add_ownership",{"_index":2478,"title":{},"content":{"490":{}}}],["contract.add_recipi",{"_index":2085,"title":{},"content":{"385":{}}}],["contract.add_recipient(\"000012345",{"_index":2485,"title":{},"content":{"492":{}}}],["contract.add_token_transf",{"_index":2470,"title":{},"content":{"488":{}}}],["contract.add_token_transfer(to",{"_index":2070,"title":{},"content":{"384":{}}}],["contract.add_token_transfer(token_address",{"_index":3291,"title":{},"content":{"726":{}}}],["contract.add_uco_transf",{"_index":2394,"title":{},"content":{"468":{},"469":{}}}],["contract.add_uco_transfer(amount",{"_index":2089,"title":{},"content":{"385":{}}}],["contract.add_uco_transfer(to",{"_index":2466,"title":{},"content":{"486":{}}}],["contract.address",{"_index":2075,"title":{},"content":{"384":{},"389":{}}}],["contract.call_function(0x0000abcd",{"_index":2456,"title":{},"content":{"482":{}}}],["contract.cont",{"_index":1952,"title":{},"content":{"370":{},"386":{},"509":{}}}],["contract.set_code(\"@vers",{"_index":2463,"title":{},"content":{"485":{}}}],["contract.set_cont",{"_index":2518,"title":{},"content":{"497":{},"509":{}}}],["contract.set_content(\"hello",{"_index":2055,"title":{},"content":{"383":{},"484":{}}}],["contract.set_content(chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa",{"_index":2565,"title":{},"content":{"508":{}}}],["contract.set_content(json.to_string(vot",{"_index":2096,"title":{},"content":{"386":{}}}],["contract.set_content(new_pric",{"_index":1982,"title":{},"content":{"353":{}}}],["contract.set_content(time.now",{"_index":2561,"title":{},"content":{"507":{}}}],["contract.set_type(\"transf",{"_index":2069,"title":{},"content":{"384":{},"385":{},"483":{}}}],["contract.uco_mov",{"_index":1999,"title":{},"content":{"354":{}}}],["contract.uco_transf",{"_index":1998,"title":{},"content":{"354":{}}}],["contract1",{"_index":1834,"title":{},"content":{"347":{}}}],["contract2",{"_index":1836,"title":{},"content":{"347":{}}}],["contract_address",{"_index":2457,"title":{},"content":{"482":{}}}],["contractcalls)1",{"_index":3051,"title":{},"content":{"661":{}}}],["contrast",{"_index":3178,"title":{},"content":{"699":{}}}],["contribut",{"_index":2600,"title":{"581":{},"582":{},"815":{}},"content":{"581":{},"582":{},"583":{},"628":{},"647":{},"648":{},"659":{},"815":{}}}],["contributor",{"_index":2622,"title":{},"content":{"583":{},"654":{},"658":{}}}],["control",{"_index":2535,"title":{},"content":{"500":{},"501":{},"557":{},"621":{},"641":{},"646":{},"647":{},"744":{},"817":{},"821":{}}}],["conveni",{"_index":1868,"title":{},"content":{"358":{},"484":{}}}],["convent",{"_index":3477,"title":{},"content":{"780":{}}}],["convert",{"_index":372,"title":{},"content":{"109":{},"144":{},"147":{},"163":{},"189":{},"190":{},"191":{},"244":{},"245":{},"246":{},"253":{},"263":{},"359":{},"384":{},"389":{},"468":{}}}],["coordin",{"_index":337,"title":{"692":{}},"content":{"95":{},"244":{},"621":{},"622":{},"625":{},"692":{},"715":{}}}],["coordinator'",{"_index":3309,"title":{},"content":{"715":{}}}],["copi",{"_index":611,"title":{},"content":{"188":{},"191":{},"252":{},"272":{},"281":{},"285":{},"298":{},"304":{},"404":{},"418":{},"421":{},"587":{}}}],["copy/past",{"_index":2785,"title":{},"content":{"617":{}}}],["core",{"_index":974,"title":{"214":{},"529":{}},"content":{"527":{},"528":{},"529":{},"530":{},"531":{},"532":{}}}],["corpor",{"_index":3365,"title":{},"content":{"751":{}}}],["correct",{"_index":1104,"title":{},"content":{"230":{},"318":{},"501":{},"583":{},"658":{}}}],["correctli",{"_index":1656,"title":{},"content":{"304":{}}}],["correl",{"_index":3163,"title":{},"content":{"698":{}}}],["correspond",{"_index":680,"title":{},"content":{"189":{},"196":{},"248":{},"252":{},"587":{},"588":{},"715":{},"814":{}}}],["cosign",{"_index":3251,"title":{},"content":{"712":{}}}],["cost",{"_index":3002,"title":{},"content":{"645":{},"660":{},"661":{},"663":{},"664":{},"665":{},"745":{},"750":{},"819":{}}}],["cost_per_recipi",{"_index":3059,"title":{},"content":{"661":{}}}],["costli",{"_index":3349,"title":{"750":{}},"content":{}}],["council",{"_index":1618,"title":{},"content":{"297":{},"658":{}}}],["count",{"_index":1388,"title":{},"content":{"275":{},"386":{}}}],["count_i",{"_index":2102,"title":{},"content":{"386":{}}}],["count_x",{"_index":2100,"title":{},"content":{"386":{}}}],["counter",{"_index":2551,"title":{},"content":{"509":{}}}],["counterparti",{"_index":3486,"title":{},"content":{"784":{},"785":{}}}],["countri",{"_index":2884,"title":{},"content":{"635":{}}}],["coupl",{"_index":2969,"title":{},"content":{"652":{},"700":{},"750":{}}}],["cover",{"_index":1585,"title":{},"content":{"266":{},"501":{}}}],["covert",{"_index":3624,"title":{},"content":{"828":{}}}],["cp",{"_index":1650,"title":{},"content":{"304":{}}}],["crash",{"_index":2313,"title":{},"content":{"445":{}}}],["creat",{"_index":859,"title":{"558":{},"579":{},"588":{},"589":{},"590":{},"810":{},"813":{}},"content":{"200":{},"212":{},"228":{},"233":{},"234":{},"246":{},"260":{},"298":{},"304":{},"313":{},"317":{},"346":{},"349":{},"354":{},"365":{},"367":{},"376":{},"383":{},"386":{},"462":{},"485":{},"497":{},"509":{},"519":{},"565":{},"579":{},"581":{},"582":{},"584":{},"587":{},"588":{},"589":{},"590":{},"607":{},"642":{},"648":{},"650":{},"651":{},"652":{},"658":{},"665":{},"700":{},"718":{},"719":{},"721":{},"723":{},"725":{},"726":{},"728":{},"737":{},"744":{},"751":{},"756":{},"767":{},"785":{},"802":{},"803":{},"805":{},"809":{},"810":{},"811":{},"812":{},"813":{},"819":{},"820":{}}}],["create/assign",{"_index":2028,"title":{},"content":{"376":{}}}],["create/import",{"_index":2713,"title":{},"content":{"580":{},"609":{}}}],["created/manipul",{"_index":328,"title":{},"content":{"92":{}}}],["creation",{"_index":1101,"title":{"721":{}},"content":{"229":{},"237":{},"309":{},"579":{},"621":{},"664":{},"665":{},"725":{},"770":{},"805":{},"818":{},"819":{}}}],["credenti",{"_index":2970,"title":{},"content":{"652":{}}}],["credit",{"_index":2065,"title":{},"content":{"384":{},"389":{}}}],["credo",{"_index":1658,"title":{},"content":{"304":{}}}],["criteria",{"_index":1691,"title":{},"content":{"312":{},"629":{},"688":{}}}],["critic",{"_index":2963,"title":{},"content":{"651":{}}}],["cron",{"_index":1818,"title":{},"content":{"346":{},"401":{}}}],["cross",{"_index":98,"title":{"603":{},"780":{}},"content":{"22":{},"347":{},"579":{},"593":{},"603":{},"606":{},"625":{},"686":{},"698":{},"708":{},"715":{},"780":{},"784":{},"819":{},"829":{},"859":{}}}],["crossvalidationstamp",{"_index":94,"title":{"22":{}},"content":{"22":{},"70":{},"71":{},"154":{},"164":{}}}],["crossvalidationstamp.nodepublickey",{"_index":103,"title":{},"content":{"23":{}}}],["crossvalidationstamp.signatur",{"_index":104,"title":{},"content":{"23":{}}}],["crowdfund",{"_index":2112,"title":{"389":{}},"content":{}}],["crowdsal",{"_index":2058,"title":{},"content":{"384":{}}}],["crypto",{"_index":440,"title":{"458":{},"565":{},"566":{},"567":{}},"content":{"181":{},"197":{},"234":{},"510":{},"630":{},"646":{},"745":{},"822":{}}}],["crypto.hash(\"mi",{"_index":2374,"title":{},"content":{"460":{}}}],["crypto.hash(\"tintin",{"_index":2386,"title":{},"content":{"464":{}}}],["crypto.hmac(\"mi",{"_index":2381,"title":{},"content":{"463":{}}}],["crypto.sign_with_recovery(signature_payload",{"_index":2387,"title":{},"content":{"464":{}}}],["cryptocurr",{"_index":444,"title":{},"content":{"181":{},"561":{},"593":{},"715":{},"744":{},"817":{},"818":{}}}],["cryptograph",{"_index":410,"title":{},"content":{"147":{},"307":{},"346":{},"395":{},"561":{},"627":{},"630":{},"635":{},"637":{},"698":{},"699":{},"715":{},"779":{},"780":{},"820":{}}}],["cryptographi",{"_index":854,"title":{"199":{},"239":{},"631":{}},"content":{"200":{},"202":{},"211":{},"239":{},"240":{},"244":{},"246":{},"332":{},"607":{},"630":{},"631":{},"633":{},"635":{},"651":{},"675":{},"780":{},"785":{}}}],["css",{"_index":3417,"title":{},"content":{"761":{}}}],["ctr",{"_index":882,"title":{},"content":{"198":{},"202":{}}}],["curent",{"_index":1422,"title":{},"content":{"286":{}}}],["currenc",{"_index":3083,"title":{},"content":{"668":{},"818":{},"822":{}}}],["current",{"_index":545,"title":{},"content":{"183":{},"189":{},"205":{},"206":{},"209":{},"228":{},"229":{},"248":{},"250":{},"251":{},"280":{},"286":{},"289":{},"291":{},"297":{},"328":{},"330":{},"346":{},"351":{},"375":{},"377":{},"379":{},"404":{},"442":{},"445":{},"507":{},"553":{},"558":{},"576":{},"596":{},"619":{},"645":{},"658":{},"661":{},"670":{},"691":{},"695":{},"704":{},"707":{},"752":{},"761":{},"770":{},"771":{},"772":{},"773":{},"777":{},"786":{},"822":{},"828":{},"830":{},"853":{}}}],["current_ath",{"_index":1977,"title":{},"content":{"353":{}}}],["currentkeyhandl",{"_index":1312,"title":{},"content":{"248":{}}}],["currentkeyindex",{"_index":1429,"title":{},"content":{"289":{}}}],["cursor",{"_index":1576,"title":{},"content":{"263":{}}}],["curv",{"_index":645,"title":{"205":{}},"content":{"189":{},"190":{},"201":{},"202":{},"204":{},"205":{},"209":{},"210":{},"211":{},"244":{},"254":{},"262":{},"630":{},"636":{},"638":{},"651":{},"653":{},"801":{},"813":{},"846":{}}}],["curve,fn",{"_index":707,"title":{},"content":{"190":{},"191":{}}}],["curve25519",{"_index":2897,"title":{},"content":{"639":{}}}],["curve_typ",{"_index":682,"title":{},"content":{"189":{},"190":{},"191":{},"205":{}}}],["curveid",{"_index":1288,"title":{},"content":{"246":{}}}],["curvetyp",{"_index":1186,"title":{},"content":{"244":{}}}],["custodi",{"_index":3534,"title":{},"content":{"817":{}}}],["custom",{"_index":909,"title":{"653":{}},"content":{"200":{},"255":{},"331":{},"349":{},"390":{},"571":{},"638":{},"653":{},"718":{},"818":{}}}],["customiz",{"_index":2971,"title":{},"content":{"653":{}}}],["customizationsupport",{"_index":3546,"title":{},"content":{"818":{}}}],["cx_curve_t",{"_index":672,"title":{},"content":{"189":{}}}],["cx_ecdh",{"_index":715,"title":{},"content":{"190":{},"191":{}}}],["cx_ecdh(&originprivatekey",{"_index":717,"title":{},"content":{"190":{},"191":{}}}],["cx_ecdh_x",{"_index":718,"title":{},"content":{"190":{},"191":{}}}],["cx_ecfp_init_private_key(curv",{"_index":693,"title":{},"content":{"189":{}}}],["cx_ecfp_private_key_t",{"_index":668,"title":{},"content":{"189":{}}}],["cx_ecfp_public_key_t",{"_index":670,"title":{},"content":{"189":{},"190":{}}}],["cx_hash_sha256",{"_index":809,"title":{},"content":{"191":{}}}],["cyber",{"_index":3130,"title":{},"content":{"695":{}}}],["cycl",{"_index":1150,"title":{},"content":{"234":{},"683":{},"684":{}}}],["cycle/epoch",{"_index":1704,"title":{},"content":{"319":{}}}],["d",{"_index":3526,"title":{},"content":{"803":{},"805":{},"812":{}}}],["d3e4f5",{"_index":2277,"title":{},"content":{"434":{}}}],["daili",{"_index":1165,"title":{},"content":{"241":{},"624":{},"704":{},"729":{},"730":{},"731":{},"733":{}}}],["dailli",{"_index":1144,"title":{},"content":{"233":{}}}],["damag",{"_index":3205,"title":{},"content":{"700":{}}}],["danger",{"_index":1171,"title":{},"content":{"243":{},"244":{},"246":{},"247":{},"249":{},"251":{},"253":{},"445":{},"661":{}}}],["dao",{"_index":3067,"title":{},"content":{"654":{}}}],["dapp",{"_index":2705,"title":{"827":{}},"content":{"579":{},"598":{},"751":{},"784":{},"822":{},"823":{},"827":{},"828":{},"829":{},"859":{}}}],["dart",{"_index":1795,"title":{"343":{}},"content":{"343":{},"819":{},"820":{},"823":{},"825":{},"829":{},"859":{}}}],["data",{"_index":105,"title":{"25":{},"334":{},"677":{},"742":{},"822":{}},"content":{"25":{},"36":{},"40":{},"48":{},"49":{},"70":{},"71":{},"92":{},"122":{},"123":{},"130":{},"143":{},"146":{},"165":{},"166":{},"173":{},"174":{},"181":{},"188":{},"190":{},"191":{},"202":{},"207":{},"212":{},"216":{},"219":{},"238":{},"243":{},"246":{},"255":{},"257":{},"258":{},"259":{},"260":{},"262":{},"263":{},"266":{},"272":{},"280":{},"309":{},"311":{},"318":{},"319":{},"322":{},"325":{},"326":{},"328":{},"329":{},"331":{},"335":{},"338":{},"346":{},"347":{},"349":{},"366":{},"367":{},"395":{},"402":{},"404":{},"432":{},"434":{},"436":{},"462":{},"463":{},"483":{},"484":{},"495":{},"496":{},"509":{},"579":{},"603":{},"619":{},"622":{},"637":{},"666":{},"667":{},"670":{},"671":{},"672":{},"674":{},"677":{},"679":{},"680":{},"682":{},"687":{},"688":{},"698":{},"699":{},"706":{},"708":{},"715":{},"726":{},"732":{},"749":{},"750":{},"751":{},"761":{},"762":{},"764":{},"771":{},"780":{},"819":{},"821":{},"822":{},"839":{},"857":{}}}],["data.cod",{"_index":126,"title":{},"content":{"26":{}}}],["data.cont",{"_index":127,"title":{},"content":{"26":{}}}],["data.ledg",{"_index":128,"title":{},"content":{"26":{}}}],["data.ownership",{"_index":129,"title":{},"content":{"26":{}}}],["data.recipi",{"_index":130,"title":{},"content":{"26":{}}}],["data/ownership",{"_index":860,"title":{},"content":{"212":{}}}],["data=hashedpath",{"_index":926,"title":{},"content":{"201":{}}}],["databas",{"_index":1081,"title":{"255":{}},"content":{"226":{},"255":{},"256":{},"257":{},"259":{},"311":{},"345":{},"347":{},"349":{},"479":{},"751":{},"822":{}}}],["databuff",{"_index":590,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["datalength",{"_index":592,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["datastructur",{"_index":1473,"title":{},"content":{"257":{}}}],["date",{"_index":76,"title":{"400":{}},"content":{"19":{},"73":{},"92":{},"106":{},"136":{},"221":{},"224":{},"229":{},"232":{},"266":{},"322":{},"334":{},"336":{},"338":{},"345":{},"346":{},"400":{},"506":{},"683":{},"684":{},"690":{},"706":{},"757":{},"822":{}}}],["datetim",{"_index":1817,"title":{"502":{}},"content":{"346":{},"383":{},"396":{},"400":{},"403":{},"502":{}}}],["day",{"_index":1728,"title":{},"content":{"328":{},"391":{},"401":{},"676":{},"683":{},"690":{},"691":{},"692":{},"693":{},"706":{},"731":{},"733":{}}}],["dbft",{"_index":2992,"title":{},"content":{"644":{}}}],["ddress",{"_index":1791,"title":{},"content":{"336":{}}}],["de",{"_index":2931,"title":{},"content":{"630":{}}}],["deal",{"_index":1497,"title":{},"content":{"259":{},"331":{},"367":{},"710":{}}}],["decentr",{"_index":985,"title":{"579":{},"640":{},"646":{},"655":{}},"content":{"215":{},"345":{},"579":{},"587":{},"588":{},"593":{},"598":{},"603":{},"613":{},"618":{},"622":{},"638":{},"641":{},"644":{},"645":{},"646":{},"647":{},"648":{},"650":{},"652":{},"654":{},"685":{},"695":{},"698":{},"699":{},"746":{},"749":{},"750":{},"753":{},"759":{},"770":{},"777":{},"780":{},"799":{},"817":{},"827":{},"828":{},"830":{}}}],["decid",{"_index":3039,"title":{},"content":{"647":{},"657":{},"683":{},"759":{}}}],["decim",{"_index":208,"title":{},"content":{"55":{},"125":{},"362":{},"516":{},"722":{},"723":{}}}],["decimals=8",{"_index":3282,"title":{},"content":{"724":{}}}],["decis",{"_index":3042,"title":{},"content":{"648":{}}}],["declar",{"_index":1910,"title":{},"content":{"365":{},"368":{},"369":{},"370":{},"770":{},"773":{}}}],["declin",{"_index":2701,"title":{},"content":{"576":{},"794":{}}}],["decod",{"_index":1358,"title":{},"content":{"261":{},"271":{},"272":{},"315":{},"316":{},"320":{},"463":{},"490":{},"496":{}}}],["decrypt",{"_index":51,"title":{},"content":{"12":{},"46":{},"49":{},"130":{},"190":{},"191":{},"202":{},"213":{},"246":{},"519":{},"630":{},"649":{},"651":{},"715":{}}}],["decrypt/load",{"_index":1149,"title":{},"content":{"234":{}}}],["decryptwallet(ecdhpointx",{"_index":722,"title":{},"content":{"190":{},"191":{}}}],["dedic",{"_index":521,"title":{},"content":{"182":{},"299":{},"556":{},"666":{},"762":{},"781":{},"787":{}}}],["deduct",{"_index":3482,"title":{},"content":{"781":{}}}],["deeplink",{"_index":3628,"title":{},"content":{"829":{},"831":{}}}],["defacoin_bal",{"_index":2366,"title":{},"content":{"456":{}}}],["default",{"_index":908,"title":{"639":{}},"content":{"200":{},"353":{},"417":{},"517":{},"639":{},"653":{},"800":{},"801":{},"802":{},"811":{},"812":{},"848":{},"851":{}}}],["defici",{"_index":2747,"title":{},"content":{"604":{},"781":{}}}],["defin",{"_index":613,"title":{},"content":{"188":{},"189":{},"200":{},"209":{},"220":{},"223":{},"231":{},"232":{},"233":{},"240":{},"243":{},"246":{},"261":{},"294":{},"299":{},"303":{},"305":{},"307":{},"310":{},"312":{},"325":{},"345":{},"346":{},"349":{},"356":{},"384":{},"389":{},"390":{},"391":{},"392":{},"399":{},"455":{},"516":{},"517":{},"519":{},"622":{},"671":{},"672":{},"690":{},"693":{},"715":{},"718":{},"721":{},"738":{},"740":{},"756":{},"805":{},"816":{}}}],["definit",{"_index":1745,"title":{},"content":{"327":{},"352":{},"517":{},"720":{},"721":{},"723":{},"726":{}}}],["deflat",{"_index":3050,"title":{},"content":{"660":{}}}],["delay",{"_index":2693,"title":{},"content":{"574":{},"615":{}}}],["deleg",{"_index":1830,"title":{},"content":{"346":{},"630":{},"698":{},"805":{},"827":{},"859":{}}}],["delegationsauthor",{"_index":3304,"title":{},"content":{"715":{}}}],["delet",{"_index":1485,"title":{},"content":{"257":{},"479":{},"796":{},"803":{},"805":{},"812":{}}}],["delete/2",{"_index":2218,"title":{"421":{}},"content":{}}],["deliv",{"_index":3063,"title":{},"content":{"665":{},"749":{}}}],["deliveri",{"_index":3151,"title":{"762":{}},"content":{"698":{},"749":{},"760":{}}}],["demand",{"_index":3330,"title":{},"content":{"744":{}}}],["demo",{"_index":570,"title":{"186":{}},"content":{"186":{}}}],["depend",{"_index":397,"title":{},"content":{"142":{},"189":{},"190":{},"262":{},"299":{},"304":{},"345":{},"347":{},"349":{},"351":{},"376":{},"513":{},"522":{},"627":{},"661":{},"667":{},"680":{},"821":{},"823":{}}}],["deploy",{"_index":1804,"title":{"505":{},"514":{},"515":{},"556":{},"759":{},"767":{},"770":{}},"content":{"342":{},"347":{},"503":{},"504":{},"505":{},"510":{},"519":{},"558":{},"606":{},"647":{},"658":{},"748":{},"750":{},"751":{},"752":{},"758":{},"759":{},"765":{},"767":{},"768":{},"770":{},"771":{},"772":{},"773":{},"774":{},"779":{},"784":{}}}],["deposit",{"_index":3483,"title":{},"content":{"781":{},"786":{}}}],["deprec",{"_index":2050,"title":{},"content":{"355":{},"381":{}}}],["deps.get",{"_index":2586,"title":{},"content":{"522":{}}}],["der",{"_index":842,"title":{},"content":{"196":{},"244":{},"245":{},"246":{},"253":{}}}],["deriv",{"_index":629,"title":{"200":{},"201":{}},"content":{"189":{},"190":{},"191":{},"197":{},"200":{},"201":{},"202":{},"204":{},"213":{},"254":{},"262":{},"279":{},"346":{},"638":{},"650":{},"653":{},"812":{},"830":{},"846":{},"847":{},"848":{},"850":{},"851":{},"852":{},"857":{}}}],["derivationpath",{"_index":3644,"title":{},"content":{"846":{}}}],["derivearchethickeypair",{"_index":638,"title":{},"content":{"189":{},"190":{},"191":{}}}],["derivearchethickeypair(cx_curve_secp256k1",{"_index":639,"title":{},"content":{"189":{}}}],["derivearchethickeypair(cx_curve_t",{"_index":663,"title":{},"content":{"189":{}}}],["desc",{"_index":37,"title":{},"content":{"9":{}}}],["descend",{"_index":41,"title":{},"content":{"10":{}}}],["describ",{"_index":902,"title":{},"content":{"200":{},"216":{},"510":{},"577":{},"590":{},"617":{},"649":{},"715":{},"760":{},"775":{},"813":{}}}],["descript",{"_index":187,"title":{},"content":{"43":{},"80":{},"161":{},"261":{},"297":{},"590":{},"723":{},"725":{}}}],["deseri",{"_index":1109,"title":{},"content":{"230":{}}}],["design",{"_index":1509,"title":{"260":{}},"content":{"390":{},"584":{},"597":{},"598":{},"604":{},"627":{},"641":{},"642":{},"719":{},"744":{},"745":{},"748":{},"752":{},"781":{},"819":{}}}],["desktop",{"_index":459,"title":{},"content":{"181":{},"183":{},"209":{},"597":{},"786":{},"819":{},"821":{},"829":{}}}],["destin",{"_index":1837,"title":{},"content":{"347":{},"389":{},"486":{},"488":{},"516":{},"517":{},"714":{}}}],["destruct",{"_index":3049,"title":{},"content":{"660":{}}}],["detail",{"_index":1107,"title":{"658":{},"793":{}},"content":{"230":{},"240":{},"241":{},"246":{},"375":{},"377":{},"379":{},"480":{},"511":{},"658":{},"715":{},"741":{},"791":{},"793":{},"797":{},"814":{}}}],["detect",{"_index":1689,"title":{},"content":{"312":{},"623":{},"669":{},"762":{}}}],["determin",{"_index":289,"title":{},"content":{"73":{},"136":{},"229":{},"232":{},"235":{},"237":{},"238":{},"313":{},"328":{},"332":{},"337":{},"338":{},"599":{},"621":{},"625":{},"637":{},"665":{},"674":{},"683":{},"684":{},"766":{},"822":{}}}],["determinist",{"_index":2306,"title":{},"content":{"442":{},"462":{},"620":{},"706":{}}}],["dev",{"_index":1162,"title":{"578":{}},"content":{"240":{},"522":{}}}],["develop",{"_index":532,"title":{"214":{},"529":{},"577":{},"579":{},"617":{}},"content":{"182":{},"183":{},"216":{},"310":{},"345":{},"346":{},"401":{},"506":{},"523":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"540":{},"541":{},"542":{},"543":{},"557":{},"577":{},"579":{},"617":{},"630":{},"704":{},"719":{},"720":{},"745":{},"746":{},"748":{},"752":{},"777":{},"799":{},"815":{},"817":{},"819":{},"823":{},"827":{},"829":{},"859":{}}}],["developer'",{"_index":2481,"title":{},"content":{"490":{}}}],["deviat",{"_index":1743,"title":{},"content":{"326":{}}}],["devic",{"_index":461,"title":{"189":{},"597":{},"634":{}},"content":{"181":{},"182":{},"183":{},"188":{},"189":{},"198":{},"207":{},"212":{},"213":{},"268":{},"269":{},"392":{},"621":{},"634":{},"698":{},"699":{},"700":{},"715":{},"795":{},"817":{},"819":{},"821":{},"858":{}}}],["device_origin",{"_index":683,"title":{},"content":{"189":{}}}],["dex",{"_index":2773,"title":{},"content":{"613":{}}}],["diagram",{"_index":2607,"title":{"584":{}},"content":{"581":{},"584":{}}}],["dialyz",{"_index":1662,"title":{},"content":{"304":{}}}],["dictionari",{"_index":3584,"title":{},"content":{"820":{}}}],["didn't",{"_index":3086,"title":{},"content":{"668":{}}}],["diff",{"_index":1337,"title":{},"content":{"254":{},"297":{},"734":{},"735":{}}}],["differ",{"_index":270,"title":{},"content":{"67":{},"180":{},"200":{},"202":{},"256":{},"259":{},"262":{},"328":{},"331":{},"346":{},"351":{},"354":{},"369":{},"373":{},"384":{},"385":{},"393":{},"497":{},"498":{},"500":{},"506":{},"510":{},"579":{},"704":{},"771":{},"817":{},"859":{}}}],["differenti",{"_index":1932,"title":{},"content":{"367":{},"699":{}}}],["digest",{"_index":1544,"title":{},"content":{"262":{},"638":{}}}],["digit",{"_index":448,"title":{},"content":{"181":{},"598":{},"642":{},"652":{},"653":{},"698":{},"821":{}}}],["digitalis",{"_index":3256,"title":{},"content":{"718":{}}}],["dimens",{"_index":1570,"title":{},"content":{"263":{}}}],["dimension",{"_index":1569,"title":{},"content":{"263":{}}}],["direct",{"_index":1,"title":{"545":{}},"content":{"2":{},"4":{},"141":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"776":{},"792":{}}}],["directli",{"_index":2335,"title":{},"content":{"451":{},"479":{},"558":{},"607":{},"714":{},"749":{},"781":{},"819":{},"829":{}}}],["directori",{"_index":1653,"title":{},"content":{"304":{},"557":{}}}],["disabl",{"_index":2542,"title":{},"content":{"505":{},"764":{}}}],["disagr",{"_index":2855,"title":{},"content":{"623":{},"715":{}}}],["disast",{"_index":2835,"title":{},"content":{"622":{}}}],["disclaim",{"_index":2103,"title":{},"content":{"355":{},"479":{}}}],["disclos",{"_index":3296,"title":{},"content":{"714":{}}}],["disclosur",{"_index":852,"title":{},"content":{"211":{},"633":{},"638":{},"651":{},"669":{},"698":{},"699":{}}}],["discolur",{"_index":2877,"title":{"633":{}},"content":{}}],["disconnect",{"_index":3459,"title":{"775":{}},"content":{"775":{}}}],["discourag",{"_index":2447,"title":{},"content":{"479":{}}}],["discov",{"_index":3095,"title":{},"content":{"671":{},"759":{}}}],["discoveri",{"_index":1789,"title":{"336":{}},"content":{"338":{},"339":{},"620":{},"652":{},"670":{}}}],["discret",{"_index":2627,"title":{},"content":{"583":{}}}],["discuss",{"_index":2609,"title":{},"content":{"581":{}}}],["disk",{"_index":1460,"title":{},"content":{"256":{},"257":{},"259":{},"261":{},"262":{},"263":{},"264":{},"266":{},"822":{}}}],["dispatch",{"_index":3100,"title":{},"content":{"672":{}}}],["display",{"_index":398,"title":{},"content":{"142":{},"191":{},"269":{},"499":{},"505":{},"523":{},"568":{},"587":{},"588":{},"652":{},"701":{},"707":{},"749":{},"762":{},"798":{},"812":{},"814":{},"822":{}}}],["dispos",{"_index":1651,"title":{},"content":{"304":{}}}],["disrupt",{"_index":2748,"title":{},"content":{"604":{},"623":{},"781":{}}}],["dissemin",{"_index":3111,"title":{},"content":{"675":{}}}],["distilleri",{"_index":1664,"title":{},"content":{"304":{}}}],["distinct",{"_index":3078,"title":{},"content":{"658":{}}}],["distinguish",{"_index":1761,"title":{},"content":{"330":{},"751":{}}}],["distribut",{"_index":995,"title":{"296":{},"301":{},"310":{}},"content":{"216":{},"233":{},"294":{},"296":{},"303":{},"310":{},"334":{},"619":{},"620":{},"623":{},"624":{},"659":{},"660":{},"670":{},"677":{},"686":{},"687":{},"688":{},"689":{},"691":{},"745":{},"747":{},"784":{}}}],["divid",{"_index":1057,"title":{},"content":{"218":{},"228":{},"474":{},"685":{},"690":{},"693":{}}}],["dividend",{"_index":2424,"title":{},"content":{"474":{}}}],["divis",{"_index":2428,"title":{},"content":{"474":{}}}],["divisor",{"_index":2425,"title":{},"content":{"474":{}}}],["dn",{"_index":2642,"title":{},"content":{"556":{},"752":{},"753":{},"754":{},"755":{},"757":{}}}],["dnslink",{"_index":3374,"title":{"754":{}},"content":{"752":{},"753":{}}}],["dnslink=/archethic/0f1e3",{"_index":3396,"title":{},"content":{"754":{}}}],["do",{"_index":1548,"title":{},"content":{"262":{},"665":{}}}],["doc",{"_index":499,"title":{},"content":{"181":{},"582":{},"816":{}}}],["docker",{"_index":1649,"title":{},"content":{"304":{}}}],["document",{"_index":496,"title":{"544":{},"816":{}},"content":{"181":{},"386":{},"435":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"581":{},"582":{},"584":{},"610":{},"618":{},"652":{},"789":{},"815":{},"816":{}}}],["docusauru",{"_index":2610,"title":{},"content":{"582":{}}}],["doe",{"_index":2283,"title":{},"content":{"436":{}}}],["doesdecrypt",{"_index":754,"title":{},"content":{"190":{},"191":{}}}],["doesn't",{"_index":752,"title":{},"content":{"190":{},"191":{},"309":{},"349":{},"428":{},"485":{},"505":{},"722":{},"749":{},"750":{}}}],["doesn’t",{"_index":3022,"title":{},"content":{"646":{}}}],["domain",{"_index":1058,"title":{"556":{},"753":{}},"content":{"218":{},"345":{},"752":{},"753":{},"754":{},"756":{},"757":{},"770":{},"772":{}}}],["don't",{"_index":1556,"title":{},"content":{"262":{},"347":{},"353":{},"359":{},"403":{},"404":{},"576":{},"587":{},"633":{},"642":{},"663":{},"664":{}}}],["done",{"_index":543,"title":{},"content":{"183":{},"189":{},"246":{},"263":{},"312":{},"346":{},"354":{},"362":{},"505":{},"561":{},"565":{},"588":{},"724":{},"754":{},"805":{},"808":{},"821":{}}}],["don’t",{"_index":2710,"title":{},"content":{"580":{},"609":{}}}],["dot",{"_index":3457,"title":{},"content":{"774":{}}}],["doubl",{"_index":404,"title":{},"content":{"151":{},"190":{},"191":{},"202":{},"358":{}}}],["down",{"_index":1034,"title":{},"content":{"216":{},"588":{},"619":{},"803":{},"812":{}}}],["download",{"_index":867,"title":{},"content":{"213":{},"588":{},"651":{},"762":{},"763":{},"786":{},"800":{},"819":{},"826":{}}}],["dri",{"_index":2577,"title":{},"content":{"518":{}}}],["drop",{"_index":1767,"title":{},"content":{"330":{}}}],["due",{"_index":1212,"title":{},"content":{"246":{},"252":{},"328":{},"346":{},"628":{},"750":{},"794":{}}}],["dump",{"_index":1481,"title":{},"content":{"257":{},"259":{},"261":{}}}],["duplic",{"_index":1687,"title":{},"content":{"310":{}}}],["durabl",{"_index":2950,"title":{},"content":{"641":{}}}],["durat",{"_index":2694,"title":{},"content":{"574":{},"615":{}}}],["dure",{"_index":1128,"title":{"574":{},"615":{}},"content":{"234":{},"238":{},"246":{},"262":{},"263":{},"300":{},"309":{},"322":{},"335":{},"346":{},"349":{},"352":{},"557":{},"574":{},"590":{},"615":{},"621":{},"653":{},"660":{},"665":{},"673":{},"674":{},"691":{},"693":{},"709":{},"723":{},"785":{}}}],["dynam",{"_index":986,"title":{},"content":{"216":{},"367":{}}}],["e",{"_index":1573,"title":{},"content":{"263":{},"349":{}}}],["e.g",{"_index":123,"title":{},"content":{"25":{},"589":{},"777":{}}}],["e0",{"_index":830,"title":{},"content":{"194":{},"195":{},"196":{}}}],["e_{key",{"_index":889,"title":{},"content":{"198":{}}}],["e_{priv",{"_index":893,"title":{},"content":{"198":{}}}],["e_{pub",{"_index":892,"title":{},"content":{"198":{},"202":{}}}],["each",{"_index":1068,"title":{},"content":{"221":{},"224":{},"228":{},"229":{},"236":{},"246":{},"261":{},"262":{},"303":{},"310":{},"322":{},"328":{},"330":{},"332":{},"347":{},"349":{},"353":{},"384":{},"386":{},"388":{},"389":{},"391":{},"393":{},"401":{},"404":{},"487":{},"489":{},"490":{},"491":{},"493":{},"582":{},"587":{},"604":{},"612":{},"613":{},"620":{},"621":{},"622":{},"624":{},"633":{},"636":{},"638":{},"644":{},"647":{},"651":{},"653":{},"657":{},"660":{},"661":{},"665":{},"667":{},"671":{},"675":{},"676":{},"683":{},"686":{},"687":{},"688":{},"691":{},"692":{},"693":{},"695":{},"701":{},"704":{},"707":{},"709":{},"713":{},"714":{},"749":{},"750":{},"759":{},"762":{},"774":{},"776":{},"781":{},"805":{},"822":{}}}],["earlier",{"_index":1712,"title":{},"content":{"321":{}}}],["earth",{"_index":2995,"title":{},"content":{"644":{}}}],["eas",{"_index":2826,"title":{},"content":{"620":{},"664":{},"704":{},"747":{}}}],["easi",{"_index":2533,"title":{"748":{}},"content":{"500":{},"582":{},"641":{},"819":{},"829":{},"859":{}}}],["easier",{"_index":1807,"title":{},"content":{"345":{},"348":{},"799":{}}}],["easili",{"_index":929,"title":{},"content":{"201":{},"210":{},"240":{},"262":{},"349":{},"386":{},"642":{},"706":{},"829":{}}}],["ecc",{"_index":1376,"title":{},"content":{"273":{},"282":{},"630":{}}}],["ecc_public_key",{"_index":1374,"title":{},"content":{"272":{},"283":{}}}],["eccpoints",{"_index":1433,"title":{"291":{},"292":{}},"content":{}}],["eccsigns",{"_index":1329,"title":{"253":{},"289":{},"290":{}},"content":{}}],["ecdh",{"_index":714,"title":{},"content":{"190":{},"191":{},"202":{},"254":{},"278":{},"291":{},"292":{}}}],["ecdh_point_x(e_{priv",{"_index":946,"title":{},"content":{"202":{}}}],["ecdh_point_x(e_{pub",{"_index":945,"title":{},"content":{"202":{}}}],["ecdh_secret",{"_index":944,"title":{},"content":{"202":{}}}],["ecdhcurrentkey(euphemeralkey",{"_index":1432,"title":{"291":{}},"content":{}}],["ecdhpastkey",{"_index":1435,"title":{"292":{}},"content":{}}],["ecdhpointx",{"_index":711,"title":{},"content":{"190":{},"191":{}}}],["ecdsa",{"_index":1285,"title":{},"content":{"246":{}}}],["eci",{"_index":931,"title":{},"content":{"202":{},"332":{}}}],["eciese(ellipt",{"_index":932,"title":{},"content":{"202":{}}}],["econom",{"_index":3333,"title":{"745":{}},"content":{}}],["economi",{"_index":3329,"title":{},"content":{"744":{},"745":{}}}],["ecosystem",{"_index":537,"title":{"643":{},"695":{}},"content":{"182":{},"581":{},"588":{},"593":{},"629":{},"645":{},"647":{},"654":{},"655":{},"827":{}}}],["ed25519",{"_index":955,"title":{},"content":{"205":{},"636":{},"638":{},"653":{}}}],["eddsa",{"_index":2896,"title":{},"content":{"639":{}}}],["edit",{"_index":3531,"title":{},"content":{"806":{},"807":{}}}],["editor",{"_index":2639,"title":{},"content":{"584":{}}}],["editori",{"_index":2633,"title":{},"content":{"583":{}}}],["effect",{"_index":2532,"title":{},"content":{"499":{},"506":{},"628":{},"669":{},"786":{}}}],["effici",{"_index":1441,"title":{"750":{}},"content":{"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"263":{},"264":{},"265":{},"296":{},"309":{},"331":{},"620":{},"672":{},"719":{},"750":{},"859":{}}}],["effort",{"_index":1501,"title":{},"content":{"259":{}}}],["effortlessli",{"_index":3132,"title":{},"content":{"695":{}}}],["elaps",{"_index":2740,"title":{},"content":{"602":{}}}],["elect",{"_index":1106,"title":{"293":{},"624":{},"688":{}},"content":{"230":{},"241":{},"293":{},"299":{},"328":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"644":{},"684":{},"688":{},"698":{},"706":{},"715":{},"727":{}}}],["electr",{"_index":3203,"title":{},"content":{"700":{}}}],["electron",{"_index":3150,"title":{},"content":{"698":{},"821":{}}}],["element",{"_index":2224,"title":{},"content":{"423":{},"425":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"455":{},"487":{},"489":{},"491":{},"493":{},"629":{},"647":{},"659":{},"669":{},"679":{},"698":{},"822":{}}}],["elig",{"_index":3513,"title":{},"content":{"798":{}}}],["elimin",{"_index":2918,"title":{},"content":{"628":{},"698":{}}}],["elixir",{"_index":979,"title":{"216":{}},"content":{"215":{},"216":{},"358":{},"522":{},"657":{}}}],["ellipt",{"_index":853,"title":{},"content":{"202":{},"211":{},"244":{},"254":{},"630":{},"636":{},"638":{},"651":{},"653":{},"801":{},"813":{}}}],["email",{"_index":3004,"title":{},"content":{"645":{}}}],["emb",{"_index":1705,"title":{},"content":{"320":{},"376":{},"645":{},"652":{},"712":{},"756":{}}}],["embed",{"_index":999,"title":{},"content":{"216":{},"311":{},"642":{},"651":{},"654":{}}}],["emiss",{"_index":3183,"title":{},"content":{"699":{}}}],["emit",{"_index":1155,"title":{},"content":{"235":{},"328":{},"704":{},"822":{}}}],["emploi",{"_index":3568,"title":{},"content":{"819":{}}}],["employ",{"_index":3488,"title":{},"content":{"785":{}}}],["empti",{"_index":1922,"title":{},"content":{"366":{},"367":{},"375":{},"377":{},"379":{},"414":{},"426":{},"848":{},"851":{}}}],["empty?/1",{"_index":2228,"title":{"426":{}},"content":{}}],["emul",{"_index":3620,"title":{},"content":{"826":{}}}],["en",{"_index":3571,"title":{},"content":{"819":{}}}],["enabl",{"_index":525,"title":{},"content":{"182":{},"523":{},"579":{},"593":{},"621":{},"627":{},"641":{},"700":{},"756":{},"770":{},"776":{},"779":{},"780":{},"786":{},"817":{},"827":{},"829":{}}}],["enc($wk_{a",{"_index":730,"title":{},"content":{"190":{},"191":{}}}],["enc($wk{a",{"_index":746,"title":{},"content":{"190":{},"191":{}}}],["enc(w_{",{"_index":883,"title":{},"content":{"198":{},"202":{}}}],["enc(wk_{a",{"_index":886,"title":{},"content":{"198":{},"202":{}}}],["enclav",{"_index":3088,"title":{},"content":{"669":{}}}],["enclos",{"_index":2010,"title":{},"content":{"373":{}}}],["encod",{"_index":755,"title":{"203":{},"204":{},"205":{},"206":{}},"content":{"190":{},"191":{},"194":{},"195":{},"198":{},"202":{},"203":{},"205":{},"206":{},"209":{},"244":{},"261":{},"263":{},"313":{},"326":{},"490":{},"495":{},"565":{},"638":{},"761":{},"779":{},"822":{}}}],["encode(o_{pub",{"_index":833,"title":{},"content":{"194":{},"198":{}}}],["encode(pub_key",{"_index":845,"title":{},"content":{"196":{},"198":{}}}],["encoded_data",{"_index":2494,"title":{},"content":{"496":{}}}],["encoded_secret1",{"_index":2479,"title":{},"content":{"490":{}}}],["encoded_secret_key",{"_index":2477,"title":{},"content":{"490":{}}}],["encoded_wallet",{"_index":765,"title":{},"content":{"190":{},"191":{}}}],["encodedwallet",{"_index":824,"title":{},"content":{"191":{}}}],["encoding/decod",{"_index":2889,"title":{},"content":{"637":{}}}],["encount",{"_index":2566,"title":{},"content":{"510":{}}}],["encourag",{"_index":2579,"title":{},"content":{"521":{},"581":{},"583":{}}}],["encrypt",{"_index":48,"title":{"202":{},"651":{}},"content":{"12":{},"49":{},"130":{},"190":{},"197":{},"198":{},"202":{},"203":{},"207":{},"211":{},"212":{},"213":{},"246":{},"332":{},"393":{},"519":{},"533":{},"534":{},"535":{},"621":{},"630":{},"641":{},"642":{},"649":{},"651":{},"675":{},"715":{},"757":{},"758":{},"822":{}}}],["encryptedsecretkey",{"_index":54,"title":{},"content":{"12":{}}}],["end",{"_index":624,"title":{"552":{},"553":{},"651":{},"768":{},"786":{}},"content":{"188":{},"211":{},"256":{},"257":{},"261":{},"263":{},"304":{},"331":{},"352":{},"353":{},"361":{},"364":{},"365":{},"369":{},"370":{},"372":{},"373":{},"376":{},"383":{},"384":{},"385":{},"386":{},"388":{},"389":{},"391":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"419":{},"428":{},"468":{},"469":{},"479":{},"480":{},"497":{},"507":{},"508":{},"509":{},"551":{},"552":{},"553":{},"574":{},"615":{},"641":{},"642":{},"651":{},"681":{},"691":{},"692":{},"693":{},"708":{},"751":{},"757":{},"758":{},"761":{},"774":{}}}],["endianthen",{"_index":789,"title":{},"content":{"191":{}}}],["endord",{"_index":1215,"title":{},"content":{"246":{}}}],["endors",{"_index":1200,"title":{},"content":{"246":{}}}],["endpoint",{"_index":131,"title":{"28":{}},"content":{"28":{},"110":{},"111":{},"158":{},"166":{},"330":{},"558":{},"758":{},"764":{},"767":{},"802":{},"805":{},"809":{},"813":{},"822":{},"829":{},"830":{},"832":{},"834":{}}}],["endpoint.ip",{"_index":134,"title":{},"content":{"29":{}}}],["endpoint.port",{"_index":135,"title":{},"content":{"29":{}}}],["endpointurl",{"_index":3637,"title":{},"content":{"834":{}}}],["energi",{"_index":2807,"title":{},"content":{"618":{},"621":{},"644":{}}}],["enf",{"_index":1581,"title":{},"content":{"263":{}}}],["engin",{"_index":1438,"title":{},"content":{"255":{},"256":{},"630":{},"819":{}}}],["english",{"_index":3547,"title":{},"content":{"818":{},"820":{},"822":{}}}],["enhanc",{"_index":2606,"title":{"648":{}},"content":{"581":{},"593":{},"603":{},"648":{},"698":{},"780":{}}}],["enjoy",{"_index":2800,"title":{},"content":{"588":{},"819":{}}}],["enlist",{"_index":3238,"title":{},"content":{"707":{}}}],["enough",{"_index":1616,"title":{},"content":{"297":{},"658":{},"668":{}}}],["enrol",{"_index":856,"title":{"212":{}},"content":{"336":{},"706":{}}}],["enrollmentd",{"_index":159,"title":{},"content":{"37":{}}}],["ensur",{"_index":272,"title":{},"content":{"67":{},"180":{},"216":{},"230":{},"298":{},"309":{},"310":{},"326":{},"329":{},"346":{},"362":{},"375":{},"389":{},"557":{},"602":{},"607":{},"613":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"628":{},"641":{},"658":{},"660":{},"667":{},"678":{},"679":{},"682":{},"685":{},"686":{},"688":{},"689":{},"691":{},"708":{},"709":{},"745":{},"779":{},"784":{},"785":{},"786":{},"792":{}}}],["enter",{"_index":1911,"title":{},"content":{"365":{},"523":{},"646":{},"776":{},"791":{},"793":{},"802":{},"806":{},"807":{},"813":{},"822":{}}}],["entir",{"_index":1033,"title":{},"content":{"216":{},"263":{},"306":{},"307":{},"319":{},"328":{},"339":{},"345":{},"452":{},"606":{},"620":{},"622":{},"660":{},"669":{},"675":{},"676":{},"681":{},"683":{},"696":{},"701":{},"704":{},"715":{},"762":{}}}],["entri",{"_index":1069,"title":{},"content":{"221":{},"224":{},"257":{},"754":{},"755":{},"796":{}}}],["entropi",{"_index":910,"title":{},"content":{"200":{},"820":{}}}],["entrust",{"_index":2943,"title":{},"content":{"641":{}}}],["enum",{"_index":19,"title":{"546":{}},"content":{"6":{},"9":{},"65":{},"132":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"816":{}}}],["envelop",{"_index":1779,"title":{"332":{}},"content":{"332":{}}}],["environ",{"_index":1625,"title":{},"content":{"298":{},"328":{},"522":{},"695":{},"775":{}}}],["environmn",{"_index":3226,"title":{},"content":{"703":{}}}],["ephemer",{"_index":890,"title":{},"content":{"198":{},"202":{}}}],["ephpublickey",{"_index":709,"title":{},"content":{"190":{},"191":{}}}],["ephpublickeys",{"_index":710,"title":{},"content":{"190":{},"191":{}}}],["epoch",{"_index":1092,"title":{"704":{}},"content":{"228":{},"319":{},"400":{},"442":{},"507":{},"704":{}}}],["epoch/cycl",{"_index":1135,"title":{},"content":{"238":{}}}],["epoch/slot",{"_index":3114,"title":{},"content":{"676":{}}}],["equal",{"_index":751,"title":{},"content":{"190":{},"191":{},"280":{}}}],["equip",{"_index":3076,"title":{},"content":{"657":{}}}],["equival",{"_index":1905,"title":{},"content":{"363":{},"459":{},"461":{},"462":{},"487":{},"489":{},"491":{},"493":{},"593":{},"696":{}}}],["era",{"_index":3024,"title":{},"content":{"646":{}}}],["erc20",{"_index":2666,"title":{},"content":{"561":{},"574":{},"593":{},"615":{},"777":{},"818":{}}}],["erlang",{"_index":990,"title":{},"content":{"216":{},"296":{},"335":{}}}],["error",{"_index":17,"title":{},"content":{"6":{},"64":{},"175":{},"177":{},"359":{},"498":{},"575":{},"616":{},"715":{}}}],["errorcontext",{"_index":15,"title":{"6":{}},"content":{"6":{},"64":{},"65":{}}}],["errorcontext.invalid_transact",{"_index":23,"title":{},"content":{"7":{}}}],["errorcontext.network_issu",{"_index":25,"title":{},"content":{"7":{}}}],["errorn",{"_index":1690,"title":{},"content":{"312":{}}}],["esc",{"_index":3532,"title":{},"content":{"806":{},"807":{}}}],["especi",{"_index":2617,"title":{},"content":{"583":{},"859":{}}}],["essenti",{"_index":2650,"title":{},"content":{"557":{},"647":{},"655":{},"659":{},"789":{}}}],["establish",{"_index":1760,"title":{},"content":{"330":{},"603":{},"623":{},"780":{}}}],["estim",{"_index":2547,"title":{"599":{}},"content":{"505":{},"767":{}}}],["esys_createprimari",{"_index":1295,"title":{},"content":{"246":{}}}],["esys_ecdh_zgen",{"_index":1343,"title":{},"content":{"254":{}}}],["esys_initi",{"_index":1315,"title":{},"content":{"249":{}}}],["esys_sign",{"_index":1333,"title":{},"content":{"253":{}}}],["esys_tr_password",{"_index":1298,"title":{},"content":{"246":{}}}],["esys_tr_rh_endors",{"_index":1296,"title":{},"content":{"246":{}}}],["et",{"_index":1064,"title":{},"content":{"219":{},"294":{},"322":{},"335":{}}}],["etc",{"_index":968,"title":{},"content":{"209":{},"230":{},"241":{},"256":{},"259":{},"331":{},"506":{},"581":{},"630":{},"639":{},"641":{},"651":{},"661":{},"663":{},"695":{},"715":{},"718":{},"749":{},"751":{},"753":{},"799":{},"815":{},"839":{},"857":{}}}],["etc/letsencrypt/live/example.com/cert.pem",{"_index":3406,"title":{},"content":{"757":{}}}],["etc/letsencrypt/live/example.com/privatekey.pem",{"_index":3407,"title":{},"content":{"757":{}}}],["eth",{"_index":2715,"title":{"613":{}},"content":{"593":{},"598":{},"612":{},"613":{}}}],["eth/bsc/mat",{"_index":2673,"title":{},"content":{"565":{},"567":{}}}],["eth/matic/bsc",{"_index":2668,"title":{},"content":{"564":{},"595":{}}}],["ether",{"_index":2735,"title":{},"content":{"598":{}}}],["ethereum",{"_index":447,"title":{"612":{}},"content":{"181":{},"570":{},"593":{},"596":{},"598":{},"612":{},"777":{}}}],["euphemer",{"_index":1339,"title":{},"content":{"254":{}}}],["euphemeralkey",{"_index":1336,"title":{"254":{},"292":{}},"content":{}}],["euphermerakley",{"_index":1399,"title":{"278":{}},"content":{}}],["eur",{"_index":319,"title":{},"content":{"80":{},"322":{}}}],["even",{"_index":1024,"title":{},"content":{"216":{},"298":{},"330":{},"359":{},"581":{},"583":{},"621":{},"622":{},"628":{},"638":{},"646":{},"650":{},"654":{},"747":{},"749":{}}}],["evenif",{"_index":1506,"title":{},"content":{"259":{}}}],["event",{"_index":1726,"title":{},"content":{"328":{},"345":{},"356":{},"642":{},"781":{}}}],["everyon",{"_index":2053,"title":{},"content":{"381":{}}}],["everyth",{"_index":1507,"title":{},"content":{"259":{},"510":{},"721":{}}}],["evid",{"_index":3294,"title":{},"content":{"713":{}}}],["evm",{"_index":2487,"title":{"494":{},"598":{},"606":{},"607":{},"612":{},"784":{},"785":{}},"content":{"570":{},"596":{},"598":{},"603":{},"606":{},"607":{},"612":{},"780":{},"781":{},"784":{},"785":{},"787":{},"790":{},"791":{},"792":{},"794":{}}}],["evm.abi_decode(signatur",{"_index":2493,"title":{},"content":{"496":{}}}],["evm.abi_encode(signatur",{"_index":2489,"title":{},"content":{"495":{}}}],["evolut",{"_index":1671,"title":{},"content":{"303":{}}}],["evolv",{"_index":971,"title":{},"content":{"210":{},"262":{},"635":{},"762":{}}}],["ew_{a",{"_index":837,"title":{},"content":{"195":{},"196":{},"198":{}}}],["ewk_{a",{"_index":836,"title":{},"content":{"195":{},"196":{},"198":{}}}],["ewka",{"_index":699,"title":{},"content":{"190":{}}}],["ex",{"_index":2490,"title":{},"content":{"495":{},"496":{}}}],["exact",{"_index":3474,"title":{},"content":{"767":{}}}],["exactli",{"_index":1246,"title":{},"content":{"246":{}}}],["exampl",{"_index":450,"title":{"326":{},"376":{},"378":{},"380":{},"382":{},"387":{},"507":{},"508":{}},"content":{"181":{},"296":{},"313":{},"322":{},"328":{},"331":{},"347":{},"349":{},"354":{},"365":{},"373":{},"374":{},"391":{},"392":{},"404":{},"484":{},"485":{},"506":{},"508":{},"556":{},"558":{},"575":{},"576":{},"582":{},"616":{},"638":{},"652":{},"653":{},"658":{},"665":{},"690":{},"709":{},"710":{},"722":{},"723":{},"724":{},"725":{},"726":{},"732":{},"750":{},"761":{},"766":{},"802":{},"822":{},"828":{}}}],["example.com",{"_index":3391,"title":{},"content":{"754":{},"756":{},"757":{}}}],["exce",{"_index":1692,"title":{},"content":{"312":{}}}],["excel",{"_index":3560,"title":{},"content":{"819":{}}}],["except",{"_index":1206,"title":{},"content":{"246":{},"401":{},"639":{},"667":{}}}],["excess",{"_index":2814,"title":{},"content":{"619":{}}}],["exchang",{"_index":457,"title":{},"content":{"181":{},"216":{},"254":{},"565":{},"593":{},"602":{},"613":{},"673":{},"695":{},"698":{},"777":{},"779":{},"785":{},"818":{}}}],["exclud",{"_index":2648,"title":{},"content":{"557":{},"770":{}}}],["exclus",{"_index":2599,"title":{},"content":{"553":{},"597":{},"786":{}}}],["execut",{"_index":1012,"title":{"794":{}},"content":{"216":{},"266":{},"304":{},"345":{},"347":{},"348":{},"350":{},"353":{},"356":{},"375":{},"376":{},"398":{},"399":{},"442":{},"479":{},"507":{},"509":{},"518":{},"519":{},"598":{},"682":{},"784":{},"791":{},"805":{}}}],["executor",{"_index":2,"title":{},"content":{"2":{},"4":{}}}],["exhaust",{"_index":1495,"title":{},"content":{"258":{},"259":{},"261":{}}}],["exist",{"_index":1148,"title":{"670":{}},"content":{"234":{},"262":{},"265":{},"315":{},"321":{},"331":{},"365":{},"450":{},"681":{},"684":{},"747":{},"750":{},"752":{},"785":{}}}],["exit",{"_index":1919,"title":{},"content":{"365":{},"701":{},"806":{},"807":{}}}],["exlud",{"_index":1545,"title":{},"content":{"262":{}}}],["expand",{"_index":2016,"title":{},"content":{"374":{},"593":{}}}],["expect",{"_index":1893,"title":{},"content":{"361":{},"392":{},"500":{},"505":{},"507":{},"508":{},"587":{}}}],["expens",{"_index":3357,"title":{},"content":{"750":{}}}],["experi",{"_index":530,"title":{},"content":{"182":{},"525":{},"777":{},"819":{}}}],["expir",{"_index":3118,"title":{},"content":{"680":{},"714":{}}}],["explain",{"_index":466,"title":{"565":{}},"content":{"181":{},"242":{},"267":{},"581":{}}}],["explicit",{"_index":2151,"title":{},"content":{"404":{}}}],["explicitli",{"_index":3224,"title":{},"content":{"703":{}}}],["exploit",{"_index":2864,"title":{},"content":{"621":{},"641":{},"646":{}}}],["explor",{"_index":1094,"title":{"701":{}},"content":{"228":{},"334":{},"505":{},"612":{},"701":{},"702":{},"706":{},"707":{},"767":{}}}],["expon",{"_index":2410,"title":{},"content":{"471":{}}}],["export",{"_index":1939,"title":{"370":{}},"content":{"368":{},"369":{},"370":{},"386":{},"482":{},"509":{},"577":{}}}],["expos",{"_index":3235,"title":{},"content":{"706":{},"762":{},"827":{}}}],["exposur",{"_index":3165,"title":{},"content":{"698":{},"828":{}}}],["expr",{"_index":1897,"title":{},"content":{"361":{},"373":{}}}],["express",{"_index":2001,"title":{},"content":{"373":{},"374":{},"378":{},"390":{},"395":{}}}],["extend",{"_index":1735,"title":{},"content":{"324":{},"325":{}}}],["extendedprivatekey",{"_index":927,"title":{},"content":{"201":{}}}],["extendedse",{"_index":924,"title":{},"content":{"201":{}}}],["extendedseed.slice(0",{"_index":928,"title":{},"content":{"201":{}}}],["extens",{"_index":1877,"title":{},"content":{"359":{},"581":{},"582":{},"719":{},"753":{},"770":{},"819":{}}}],["extern",{"_index":1176,"title":{},"content":{"243":{},"311":{},"318":{},"328":{},"345":{},"370":{},"583":{},"666":{},"667":{},"695":{},"698":{},"751":{}}}],["extract",{"_index":308,"title":{},"content":{"77":{},"201":{},"263":{},"272":{},"306":{},"395":{},"432":{},"434":{}}}],["extract/2",{"_index":2257,"title":{"432":{}},"content":{}}],["f",{"_index":1090,"title":{},"content":{"228":{}}}],["f28c3d5b3828ad3f8682f1b1d14a8507b829f65f7be6c50427a6019ccb6801c",{"_index":2139,"title":{},"content":{"396":{}}}],["f9",{"_index":1410,"title":{},"content":{"281":{}}}],["fabric",{"_index":2916,"title":{},"content":{"628":{}}}],["face",{"_index":1878,"title":{},"content":{"359":{},"618":{},"641":{},"690":{},"818":{},"821":{}}}],["facial",{"_index":3591,"title":{},"content":{"821":{}}}],["facilit",{"_index":1882,"title":{},"content":{"359":{},"579":{},"593":{},"777":{},"829":{},"859":{}}}],["fact",{"_index":2920,"title":{},"content":{"628":{},"764":{}}}],["facto",{"_index":2932,"title":{},"content":{"630":{}}}],["factor",{"_index":3593,"title":{},"content":{"821":{}}}],["fail",{"_index":1681,"title":{},"content":{"309":{},"374":{},"518":{}}}],["failur",{"_index":1032,"title":{},"content":{"216":{},"298":{},"362":{}}}],["fair",{"_index":1684,"title":{},"content":{"310":{},"660":{}}}],["fallback",{"_index":1562,"title":{},"content":{"262":{}}}],["fals",{"_index":396,"title":{},"content":{"140":{},"358":{},"361":{},"374":{},"376":{},"407":{},"425":{},"426":{},"433":{},"437":{},"440":{},"468":{},"469":{}}}],["famili",{"_index":1465,"title":{},"content":{"256":{},"306":{},"621":{},"634":{}}}],["familiar",{"_index":3496,"title":{},"content":{"786":{}}}],["faq",{"_index":3498,"title":{},"content":{"787":{},"792":{}}}],["far",{"_index":3366,"title":{},"content":{"751":{}}}],["fashion",{"_index":3241,"title":{},"content":{"707":{}}}],["fast",{"_index":983,"title":{},"content":{"215":{},"216":{},"219":{},"258":{},"262":{},"295":{},"307":{},"335":{},"337":{},"338":{},"644":{},"719":{}}}],["faster",{"_index":1065,"title":{},"content":{"219":{},"230":{},"294":{},"309":{},"322":{},"349":{}}}],["faucet",{"_index":2546,"title":{},"content":{"505":{},"523":{},"525":{},"766":{}}}],["fault",{"_index":996,"title":{},"content":{"216":{},"622":{},"671":{}}}],["favorit",{"_index":3019,"title":{},"content":{"646":{}}}],["featur",{"_index":1031,"title":{"790":{},"818":{}},"content":{"216":{},"262":{},"329":{},"345":{},"347":{},"390":{},"509":{},"579":{},"610":{},"647":{},"657":{},"659":{},"685":{},"718":{},"759":{},"785":{},"795":{},"798":{},"818":{},"819":{}}}],["featuresdecentr",{"_index":3537,"title":{},"content":{"818":{}}}],["featuresloc",{"_index":3550,"title":{},"content":{"818":{}}}],["fee",{"_index":148,"title":{"344":{},"567":{},"660":{}},"content":{"31":{},"77":{},"322":{},"505":{},"558":{},"564":{},"567":{},"595":{},"604":{},"618":{},"644":{},"660":{},"661":{},"663":{},"664":{},"665":{},"668":{},"715":{},"750":{},"767":{},"770":{},"771":{},"772":{},"773":{},"781":{},"784":{},"793":{},"798":{}}}],["fee_for_complex",{"_index":3058,"title":{},"content":{"661":{}}}],["fee_for_storage(s",{"_index":3056,"title":{},"content":{"661":{}}}],["feed",{"_index":3082,"title":{},"content":{"668":{},"809":{}}}],["feedback",{"_index":2625,"title":{},"content":{"583":{}}}],["fetch",{"_index":1147,"title":{},"content":{"234":{},"272":{},"275":{},"279":{},"281":{},"282":{},"283":{},"284":{},"286":{},"287":{},"288":{},"308":{},"309":{},"311":{},"319":{},"325":{},"326":{},"328":{},"335":{},"338":{},"404":{},"479":{},"522":{},"668":{},"674":{},"706":{},"732":{},"751":{},"762":{},"780":{}}}],["fetch_id_from_address/1",{"_index":2390,"title":{"466":{}},"content":{}}],["fetchkey",{"_index":1369,"title":{},"content":{"272":{}}}],["fetchkey(keyindex",{"_index":1361,"title":{"272":{}},"content":{}}],["few",{"_index":268,"title":{},"content":{"67":{},"180":{},"220":{},"223":{},"227":{},"233":{},"452":{},"506":{},"583":{},"588":{},"726":{},"748":{},"752":{},"813":{}}}],["ff",{"_index":3228,"title":{},"content":{"705":{}}}],["fiat",{"_index":3599,"title":{},"content":{"822":{}}}],["fibonacci",{"_index":3331,"title":{"745":{}},"content":{}}],["fido2",{"_index":2953,"title":{},"content":{"641":{}}}],["field",{"_index":3,"title":{"13":{},"16":{},"20":{},"23":{},"26":{},"29":{},"32":{},"35":{},"38":{},"41":{},"44":{},"47":{},"50":{},"53":{},"56":{},"59":{},"62":{},"65":{},"68":{},"71":{},"74":{},"78":{},"81":{},"84":{},"87":{},"90":{},"93":{},"96":{},"99":{}},"content":{"2":{},"4":{},"205":{},"206":{},"209":{},"265":{},"297":{},"353":{},"375":{},"378":{},"386":{},"392":{},"393":{},"395":{},"398":{},"512":{},"513":{},"516":{},"517":{},"519":{},"652":{},"658":{},"725":{},"743":{},"792":{},"812":{}}}],["figur",{"_index":482,"title":{},"content":{"181":{}}}],["file",{"_index":584,"title":{"557":{},"558":{}},"content":{"188":{},"189":{},"190":{},"191":{},"216":{},"242":{},"257":{},"259":{},"261":{},"262":{},"263":{},"264":{},"265":{},"267":{},"297":{},"304":{},"557":{},"558":{},"751":{},"752":{},"761":{},"762":{},"765":{},"767":{},"770":{},"774":{}}}],["filesystem",{"_index":1494,"title":{},"content":{"258":{},"304":{}}}],["fill",{"_index":1557,"title":{},"content":{"262":{},"263":{},"335":{},"352":{},"507":{},"755":{},"784":{}}}],["filter",{"_index":1518,"title":{},"content":{"260":{},"263":{},"264":{},"265":{},"624":{},"796":{}}}],["final",{"_index":1189,"title":{},"content":{"244":{},"246":{},"248":{},"252":{},"253":{},"280":{},"281":{},"291":{},"298":{},"304":{},"619":{},"651":{},"658":{},"684":{},"695":{},"820":{},"821":{},"822":{},"828":{},"859":{}}}],["financ",{"_index":3041,"title":{},"content":{"647":{},"659":{}}}],["financi",{"_index":3302,"title":{},"content":{"715":{},"822":{}}}],["find",{"_index":356,"title":{},"content":{"101":{},"107":{},"112":{},"123":{},"126":{},"131":{},"137":{},"190":{},"191":{},"262":{},"328":{},"556":{},"621":{},"641":{},"816":{},"819":{},"820":{},"829":{},"859":{}}}],["fine",{"_index":1593,"title":{},"content":{"293":{},"801":{}}}],["finger",{"_index":3172,"title":{},"content":{"699":{}}}],["fingerprint",{"_index":3181,"title":{},"content":{"699":{},"821":{}}}],["finish",{"_index":3219,"title":{},"content":{"693":{}}}],["finit",{"_index":1720,"title":{},"content":{"328":{}}}],["fire",{"_index":1668,"title":{},"content":{"300":{}}}],["firmwar",{"_index":551,"title":{},"content":{"183":{}}}],["first",{"_index":643,"title":{"234":{},"770":{}},"content":{"189":{},"190":{},"191":{},"201":{},"212":{},"232":{},"233":{},"234":{},"244":{},"245":{},"251":{},"262":{},"271":{},"284":{},"290":{},"298":{},"309":{},"334":{},"336":{},"337":{},"338":{},"339":{},"357":{},"395":{},"445":{},"588":{},"628":{},"650":{},"653":{},"675":{},"679":{},"693":{},"702":{},"705":{},"706":{},"749":{},"763":{},"771":{},"772":{},"773":{},"787":{},"822":{}}}],["first'",{"_index":1519,"title":{},"content":{"261":{}}}],["first_cod",{"_index":2399,"title":{},"content":{"468":{}}}],["firstli",{"_index":1202,"title":{},"content":{"246":{},"509":{},"587":{},"588":{},"792":{}}}],["firstnam",{"_index":2282,"title":{},"content":{"436":{}}}],["firstpublickey",{"_index":160,"title":{},"content":{"37":{}}}],["fit",{"_index":1450,"title":{},"content":{"256":{},"761":{}}}],["fix",{"_index":646,"title":{},"content":{"189":{},"347":{},"583":{}}}],["flag",{"_index":595,"title":{},"content":{"188":{},"246":{}}}],["flags)*flag",{"_index":632,"title":{},"content":{"189":{}}}],["flags)first",{"_index":701,"title":{},"content":{"190":{},"191":{}}}],["flaw",{"_index":3562,"title":{},"content":{"819":{}}}],["flexibl",{"_index":2729,"title":{},"content":{"593":{}}}],["fli",{"_index":869,"title":{},"content":{"213":{},"650":{}}}],["float",{"_index":158,"title":{"151":{}},"content":{"37":{},"38":{},"80":{},"81":{},"151":{},"191":{},"296":{},"326":{},"358":{},"362":{},"452":{},"456":{},"457":{},"484":{},"516":{},"517":{}}}],["flow",{"_index":1142,"title":{},"content":{"232":{},"244":{}}}],["flush",{"_index":1307,"title":{},"content":{"248":{},"251":{},"252":{},"257":{}}}],["flutter",{"_index":509,"title":{},"content":{"181":{},"343":{},"768":{},"786":{},"819":{},"820":{},"821":{},"822":{},"823":{},"825":{},"826":{},"829":{}}}],["flutter'",{"_index":3557,"title":{},"content":{"819":{}}}],["fluttersecurestorag",{"_index":3611,"title":{},"content":{"822":{}}}],["fn",{"_index":721,"title":{},"content":{"190":{},"191":{}}}],["focu",{"_index":1458,"title":{},"content":{"256":{},"829":{},"859":{}}}],["fold",{"_index":1792,"title":{},"content":{"338":{}}}],["folder",{"_index":561,"title":{},"content":{"184":{},"298":{},"752":{},"761":{},"767":{},"771":{},"826":{}}}],["folder/fil",{"_index":3464,"title":{},"content":{"767":{}}}],["follow",{"_index":936,"title":{},"content":{"202":{},"205":{},"206":{},"209":{},"210":{},"244":{},"246":{},"262":{},"264":{},"297":{},"315":{},"316":{},"320":{},"321":{},"356":{},"391":{},"393":{},"504":{},"505":{},"511":{},"588":{},"607":{},"613":{},"620":{},"625":{},"658":{},"665":{},"693":{},"760":{},"764":{},"768":{},"774":{},"785":{},"818":{},"821":{},"822":{},"859":{}}}],["foo",{"_index":2298,"title":{},"content":{"439":{}}}],["foo\\\":\\\"bar",{"_index":2292,"title":{},"content":{"438":{}}}],["forc",{"_index":2616,"title":{},"content":{"583":{},"647":{},"657":{},"829":{}}}],["foreach",{"_index":3386,"title":{},"content":{"759":{}}}],["forfeit",{"_index":3162,"title":{},"content":{"698":{}}}],["forgeri",{"_index":2919,"title":{},"content":{"628":{}}}],["forget",{"_index":870,"title":{},"content":{"213":{},"580":{},"609":{}}}],["fork",{"_index":2619,"title":{},"content":{"583":{},"696":{}}}],["form",{"_index":427,"title":{"506":{},"510":{}},"content":{"165":{},"197":{},"211":{},"245":{},"499":{},"501":{},"506":{},"508":{},"510":{},"533":{},"534":{},"535":{},"587":{},"593":{},"622":{},"657":{},"658":{},"685":{},"691":{},"692":{},"693":{},"713":{},"755":{},"770":{},"784":{},"802":{},"815":{}}}],["form.therefor",{"_index":2819,"title":{},"content":{"620":{}}}],["formal",{"_index":2842,"title":{},"content":{"623":{}}}],["format",{"_index":370,"title":{"208":{},"209":{},"210":{}},"content":{"109":{},"144":{},"147":{},"163":{},"189":{},"191":{},"202":{},"203":{},"210":{},"244":{},"245":{},"246":{},"253":{},"254":{},"261":{},"304":{},"317":{},"320":{},"358":{},"401":{},"582":{}}}],["formula",{"_index":3054,"title":{},"content":{"661":{},"665":{}}}],["fortuna",{"_index":3610,"title":{},"content":{"822":{}}}],["forward",{"_index":1565,"title":{},"content":{"262":{},"347":{},"625":{}}}],["found",{"_index":493,"title":{},"content":{"181":{},"214":{},"307":{},"715":{},"753":{},"757":{}}}],["foundat",{"_index":2601,"title":{},"content":{"581":{},"627":{},"647":{}}}],["foundation/aeip/blob/main/aeip",{"_index":3655,"title":{},"content":{"859":{}}}],["foundation/aeweb",{"_index":2596,"title":{},"content":{"551":{},"552":{},"765":{},"768":{}}}],["foundation/archeth",{"_index":2582,"title":{},"content":{"522":{},"582":{},"800":{},"859":{}}}],["foundation/bridg",{"_index":3493,"title":{},"content":{"786":{}}}],["foundation/libj",{"_index":3658,"title":{},"content":{"859":{}}}],["four",{"_index":2473,"title":{},"content":{"488":{},"647":{}}}],["fr3049085",{"_index":3202,"title":{},"content":{"700":{}}}],["fr3049086",{"_index":3173,"title":{},"content":{"699":{}}}],["fr3049087",{"_index":3167,"title":{},"content":{"698":{}}}],["fr3049088",{"_index":3160,"title":{},"content":{"698":{}}}],["fr3049089",{"_index":3145,"title":{},"content":{"698":{}}}],["fr3049090",{"_index":3189,"title":{},"content":{"699":{}}}],["fr3049091",{"_index":3197,"title":{},"content":{"699":{}}}],["fr3049092",{"_index":3199,"title":{},"content":{"699":{}}}],["fr3049093",{"_index":3194,"title":{},"content":{"699":{}}}],["fr3049101",{"_index":3155,"title":{},"content":{"698":{}}}],["fr3049121",{"_index":3206,"title":{},"content":{"700":{}}}],["fr3098972",{"_index":3156,"title":{},"content":{"698":{}}}],["fraction",{"_index":406,"title":{},"content":{"151":{},"157":{},"645":{}}}],["fragment",{"_index":4,"title":{},"content":{"2":{},"4":{}}}],["framework",{"_index":3371,"title":{"819":{}},"content":{"751":{},"819":{}}}],["fraud",{"_index":2994,"title":{},"content":{"644":{}}}],["fred",{"_index":2167,"title":{},"content":{"407":{},"425":{}}}],["free",{"_index":115,"title":{},"content":{"25":{},"165":{},"525":{},"593":{},"821":{}}}],["freedom",{"_index":2940,"title":{},"content":{"630":{},"646":{}}}],["french",{"_index":3548,"title":{},"content":{"818":{},"820":{},"822":{}}}],["frequenc",{"_index":1131,"title":{},"content":{"238":{}}}],["frequent",{"_index":3381,"title":{},"content":{"759":{}}}],["fresh",{"_index":1733,"title":{},"content":{"328":{},"619":{}}}],["fresher",{"_index":3115,"title":{},"content":{"676":{}}}],["friendli",{"_index":2996,"title":{},"content":{"644":{}}}],["friendlier",{"_index":1862,"title":{},"content":{"358":{}}}],["from_number/1",{"_index":2177,"title":{"409":{}},"content":{}}],["front",{"_index":2597,"title":{"552":{},"553":{},"768":{},"786":{}},"content":{"551":{},"552":{},"553":{},"638":{},"751":{}}}],["frontend",{"_index":3362,"title":{},"content":{"751":{}}}],["fsm",{"_index":1670,"title":{"303":{}},"content":{"303":{}}}],["fucntion",{"_index":1389,"title":{},"content":{"275":{},"291":{}}}],["fuell",{"_index":3326,"title":{},"content":{"744":{}}}],["full",{"_index":3006,"title":{},"content":{"645":{}}}],["full_nam",{"_index":1973,"title":{},"content":{"352":{}}}],["fullfil",{"_index":1510,"title":{},"content":{"260":{}}}],["fulli",{"_index":2741,"title":{},"content":{"603":{},"747":{},"817":{}}}],["fun",{"_index":1937,"title":{},"content":{"368":{},"369":{},"370":{},"384":{},"386":{},"509":{}}}],["funcion",{"_index":777,"title":{},"content":{"191":{}}}],["function",{"_index":495,"title":{"368":{},"369":{},"370":{},"394":{},"509":{}},"content":{"181":{},"188":{},"189":{},"190":{},"191":{},"216":{},"220":{},"223":{},"227":{},"244":{},"246":{},"249":{},"253":{},"254":{},"299":{},"325":{},"326":{},"352":{},"358":{},"367":{},"368":{},"369":{},"370":{},"371":{},"374":{},"386":{},"394":{},"404":{},"434":{},"435":{},"468":{},"479":{},"482":{},"495":{},"496":{},"499":{},"506":{},"508":{},"509":{},"593":{},"619":{},"627":{},"643":{},"654":{},"658":{},"715":{},"770":{},"790":{},"822":{},"829":{}}}],["function/ar",{"_index":2156,"title":{},"content":{"404":{}}}],["function_nam",{"_index":2459,"title":{},"content":{"482":{}}}],["fund",{"_index":1839,"title":{"523":{},"525":{},"558":{}},"content":{"347":{},"398":{},"505":{},"523":{},"558":{},"561":{},"565":{},"567":{},"576":{},"587":{},"588":{},"602":{},"604":{},"606":{},"607":{},"767":{},"770":{},"771":{},"772":{},"773":{},"779":{},"781":{},"784":{},"785":{},"787":{},"794":{},"798":{}}}],["fundament",{"_index":3075,"title":{},"content":{"654":{}}}],["fungibl",{"_index":2359,"title":{"589":{},"722":{},"723":{},"724":{}},"content":{"455":{},"665":{},"722":{},"723":{},"724":{},"725":{},"818":{}}}],["fungible_token_address",{"_index":2353,"title":{},"content":{"455":{}}}],["further",{"_index":1152,"title":{"712":{}},"content":{"235":{},"628":{},"709":{}}}],["futur",{"_index":2545,"title":{},"content":{"505":{},"507":{},"513":{},"588":{},"642":{}}}],["g_amount",{"_index":790,"title":{},"content":{"191":{}}}],["g_bip44_path",{"_index":759,"title":{},"content":{"190":{},"191":{}}}],["g_io_apdu_buff",{"_index":607,"title":{},"content":{"188":{},"191":{}}}],["g_state",{"_index":1348,"title":{},"content":{"268":{}}}],["g_tx.recieveraddr",{"_index":787,"title":{},"content":{"191":{}}}],["g_wallet.encodedwallet",{"_index":724,"title":{},"content":{"190":{},"191":{}}}],["g_wallet.walletlen",{"_index":725,"title":{},"content":{"190":{},"191":{}}}],["gandi",{"_index":2643,"title":{},"content":{"556":{},"755":{}}}],["gateway",{"_index":3390,"title":{},"content":{"754":{}}}],["gather",{"_index":1138,"title":{},"content":{"232":{},"298":{},"326":{},"625":{},"658":{},"666":{},"674":{},"692":{}}}],["gener",{"_index":291,"title":{"353":{},"555":{},"560":{},"586":{},"592":{},"650":{},"766":{},"801":{}},"content":{"73":{},"136":{},"147":{},"181":{},"182":{},"183":{},"188":{},"189":{},"190":{},"191":{},"200":{},"213":{},"229":{},"238":{},"244":{},"245":{},"246":{},"247":{},"248":{},"251":{},"252":{},"254":{},"273":{},"275":{},"276":{},"278":{},"280":{},"282":{},"341":{},"342":{},"343":{},"345":{},"346":{},"353":{},"375":{},"392":{},"394":{},"536":{},"537":{},"538":{},"539":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"583":{},"618":{},"620":{},"621":{},"634":{},"636":{},"638":{},"647":{},"650":{},"651":{},"653":{},"667":{},"679":{},"680":{},"691":{},"692":{},"706":{},"715":{},"751":{},"761":{},"766":{},"785":{},"800":{},"801":{},"816":{},"819":{},"820":{},"822":{},"858":{}}}],["generatearchethicaddress(uint8_t",{"_index":763,"title":{},"content":{"190":{},"191":{}}}],["generatecertificate(ykindex",{"_index":1381,"title":{"274":{}},"content":{}}],["generatekey",{"_index":815,"title":{},"content":{"191":{}}}],["generatekey(ykindex",{"_index":1375,"title":{"273":{}},"content":{}}],["generatekeyfromwallet(address_index",{"_index":771,"title":{},"content":{"190":{}}}],["generatekeypair(extendedprivatekey",{"_index":930,"title":{},"content":{"201":{}}}],["generatepublickey(0",{"_index":1300,"title":{},"content":{"247":{}}}],["generatepublickey(int",{"_index":1198,"title":{"246":{}},"content":{}}],["generatese",{"_index":3573,"title":{},"content":{"820":{}}}],["generationtx_vers",{"_index":800,"title":{},"content":{"191":{}}}],["genesi",{"_index":204,"title":{},"content":{"55":{},"107":{},"125":{},"233":{},"261":{},"262":{},"264":{},"354":{},"378":{},"444":{},"446":{},"505":{},"506":{},"837":{},"855":{}}}],["genesisaddress",{"_index":363,"title":{"107":{}},"content":{"107":{},"145":{},"146":{},"837":{},"855":{}}}],["genesisaddress.address",{"_index":364,"title":{},"content":{"108":{}}}],["genrat",{"_index":1230,"title":{},"content":{"246":{}}}],["genserv",{"_index":1764,"title":{},"content":{"330":{}}}],["geo",{"_index":1790,"title":{},"content":{"336":{},"698":{}}}],["geograph",{"_index":1596,"title":{},"content":{"294":{},"334":{},"624":{},"688":{},"749":{}}}],["geoip",{"_index":1785,"title":{},"content":{"334":{}}}],["geoloc",{"_index":3143,"title":{},"content":{"698":{}}}],["geopatch",{"_index":161,"title":{},"content":{"37":{},"334":{}}}],["get",{"_index":575,"title":{},"content":{"186":{},"188":{},"189":{},"190":{},"191":{},"268":{},"292":{},"832":{},"835":{},"844":{},"853":{}}}],["get/2",{"_index":2202,"title":{"416":{}},"content":{}}],["get/3",{"_index":2206,"title":{"417":{}},"content":{}}],["get_account",{"_index":3638,"title":{"835":{}},"content":{}}],["get_balance/1",{"_index":2336,"title":{"452":{}},"content":{}}],["get_burn_address/0",{"_index":2318,"title":{"447":{}},"content":{}}],["get_current_account",{"_index":3650,"title":{"853":{}},"content":{}}],["get_current_count",{"_index":1950,"title":{},"content":{"370":{}}}],["get_endpoint",{"_index":3635,"title":{"832":{}},"content":{}}],["get_first_transaction_address/1",{"_index":2311,"title":{"445":{}},"content":{}}],["get_genesis_address/1",{"_index":2307,"title":{"444":{}},"content":{}}],["get_genesis_public_key/1",{"_index":2314,"title":{"446":{}},"content":{}}],["get_last_address/1",{"_index":2325,"title":{"449":{}},"content":{}}],["get_last_transaction/1",{"_index":2328,"title":{"450":{}},"content":{}}],["get_previous_address/1",{"_index":2331,"title":{"451":{}},"content":{}}],["get_services_from_keychain",{"_index":3643,"title":{"844":{}},"content":{}}],["get_token_balance/2",{"_index":2347,"title":{"454":{}},"content":{"452":{},"456":{},"457":{}}}],["get_token_balance/3",{"_index":2351,"title":{"455":{}},"content":{"454":{}}}],["get_tokens_balance/1",{"_index":2360,"title":{"456":{}},"content":{}}],["get_tokens_balance/2",{"_index":2348,"title":{"457":{}},"content":{"452":{}}}],["get_transaction/1",{"_index":2322,"title":{"448":{}},"content":{}}],["get_transfered_amount",{"_index":2062,"title":{},"content":{"384":{}}}],["get_uco_balance/1",{"_index":2346,"title":{"453":{}},"content":{"452":{}}}],["get_vot",{"_index":2094,"title":{},"content":{"386":{}}}],["getaddress.c",{"_index":695,"title":{},"content":{"190":{}}}],["getappvers",{"_index":566,"title":{},"content":{"185":{}}}],["getarchaddress",{"_index":568,"title":{},"content":{"185":{}}}],["getarchethicindex",{"_index":1401,"title":{"279":{}},"content":{}}],["getbip44path(address_index",{"_index":758,"title":{},"content":{"190":{},"191":{}}}],["getcurrentcertificate(certificates",{"_index":1421,"title":{"286":{}},"content":{}}],["getcurrentkey(publickeys",{"_index":1412,"title":{"282":{}},"content":{}}],["getecdhpoint",{"_index":1434,"title":{},"content":{"291":{}}}],["getecdhpoint(int",{"_index":1335,"title":{"254":{}},"content":{}}],["getecdhpoint(ykindex",{"_index":1398,"title":{"278":{}},"content":{}}],["getkeyindex",{"_index":1316,"title":{"250":{}},"content":{}}],["getnextcertificate(certificates",{"_index":1423,"title":{"287":{}},"content":{}}],["getnextkey",{"_index":1414,"title":{"283":{}},"content":{}}],["getoriginpublickey(cx_ecfp_public_key_t",{"_index":636,"title":{},"content":{"189":{}}}],["getpastcertificate(archethicindex",{"_index":1424,"title":{"288":{}},"content":{}}],["getpastkey(archethicindex",{"_index":1415,"title":{"284":{}},"content":{}}],["getpublickey",{"_index":567,"title":{},"content":{"185":{}}}],["getpublickey(int",{"_index":1320,"title":{"252":{}},"content":{}}],["getpublickey.c",{"_index":627,"title":{},"content":{"189":{}}}],["getrootcertif",{"_index":1417,"title":{"285":{}},"content":{}}],["getrootkey",{"_index":1409,"title":{"281":{}},"content":{}}],["gettransactionhash(uint8_t",{"_index":793,"title":{},"content":{"191":{}}}],["getversion.c",{"_index":585,"title":{},"content":{"188":{}}}],["getykindex",{"_index":1385,"title":{"275":{}},"content":{}}],["git",{"_index":1707,"title":{},"content":{"320":{},"522":{},"557":{},"583":{},"647":{},"657":{},"800":{}}}],["github",{"_index":494,"title":{},"content":{"181":{},"184":{},"341":{},"342":{},"343":{},"721":{},"724":{},"759":{},"814":{},"815":{},"823":{}}}],["github'",{"_index":3383,"title":{},"content":{"759":{}}}],["github.com/archeth",{"_index":3516,"title":{},"content":{"800":{}}}],["gitignor",{"_index":2646,"title":{"557":{}},"content":{"557":{},"770":{}}}],["give",{"_index":817,"title":{},"content":{"191":{},"201":{},"219":{},"262":{},"505":{},"511":{},"519":{},"571":{},"572":{},"588":{},"703":{},"727":{},"757":{},"805":{},"811":{}}}],["given",{"_index":50,"title":{},"content":{"12":{},"181":{},"201":{},"220":{},"222":{},"223":{},"225":{},"237":{},"252":{},"253":{},"254":{},"262":{},"263":{},"294":{},"296":{},"299":{},"306":{},"307":{},"310":{},"328":{},"336":{},"349":{},"386":{},"388":{},"395":{},"421":{},"464":{},"482":{},"495":{},"496":{},"508":{},"523":{},"619":{},"620":{},"625":{},"630":{},"633":{},"665":{},"690":{},"691":{},"693":{},"706":{},"707":{},"708":{},"710":{},"715":{},"801":{},"809":{},"830":{},"847":{},"849":{},"850":{},"858":{}}}],["global",{"_index":1085,"title":{"243":{},"351":{},"393":{}},"content":{"227":{},"243":{},"259":{},"334":{},"351":{},"375":{},"377":{},"379":{},"393":{},"643":{},"644":{},"647":{},"658":{},"689":{},"690":{},"822":{}}}],["globalproperti",{"_index":3279,"title":{},"content":{"723":{}}}],["globe",{"_index":3347,"title":{},"content":{"749":{}}}],["glossari",{"_index":878,"title":{"198":{}},"content":{}}],["gmp",{"_index":1603,"title":{},"content":{"296":{},"522":{}}}],["go",{"_index":1022,"title":{"341":{}},"content":{"216":{},"341":{},"499":{},"509":{},"523":{},"525":{},"590":{},"612":{},"658":{},"771":{},"772":{},"773":{},"800":{},"808":{},"812":{}}}],["goal",{"_index":1640,"title":{},"content":{"304":{},"353":{},"359":{},"510":{},"761":{}}}],["goe",{"_index":1079,"title":{},"content":{"226":{},"265":{},"682":{}}}],["golden",{"_index":3332,"title":{"745":{}},"content":{}}],["good",{"_index":1831,"title":{},"content":{"346":{},"721":{},"762":{}}}],["goods/suppli",{"_index":3152,"title":{},"content":{"698":{}}}],["googl",{"_index":3555,"title":{},"content":{"819":{}}}],["google'",{"_index":3563,"title":{},"content":{"819":{}}}],["gossip",{"_index":3091,"title":{"671":{}},"content":{"671":{},"675":{}}}],["gossip'",{"_index":3093,"title":{},"content":{"671":{}}}],["goto",{"_index":3618,"title":{},"content":{"826":{}}}],["govern",{"_index":1048,"title":{"647":{},"654":{}},"content":{"216":{},"297":{},"320":{},"321":{},"604":{},"647":{},"654":{},"655":{},"657":{},"658":{},"695":{},"781":{}}}],["gradual",{"_index":3066,"title":{},"content":{"665":{}}}],["grain",{"_index":1594,"title":{},"content":{"293":{}}}],["grammar",{"_index":2632,"title":{},"content":{"583":{}}}],["grant",{"_index":3501,"title":{},"content":{"790":{}}}],["granular",{"_index":2499,"title":{},"content":{"401":{}}}],["graph",{"_index":3603,"title":{},"content":{"822":{}}}],["graphql",{"_index":426,"title":{"526":{}},"content":{"165":{},"479":{},"526":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"816":{}}}],["grate",{"_index":2603,"title":{},"content":{"581":{}}}],["great",{"_index":2638,"title":{},"content":{"584":{},"759":{}}}],["greater",{"_index":2027,"title":{},"content":{"376":{},"593":{},"820":{}}}],["greatli",{"_index":3632,"title":{},"content":{"829":{}}}],["greet",{"_index":3499,"title":{},"content":{"788":{}}}],["ground",{"_index":2615,"title":{},"content":{"583":{},"669":{}}}],["group",{"_index":1685,"title":{},"content":{"310":{},"354":{},"434":{},"621":{},"647":{},"655":{},"673":{},"761":{},"822":{}}}],["grow",{"_index":3481,"title":{},"content":{"781":{}}}],["growth",{"_index":3334,"title":{},"content":{"745":{}}}],["guarante",{"_index":933,"title":{},"content":{"202":{},"216":{},"346":{},"619":{},"695":{}}}],["guard",{"_index":1826,"title":{},"content":{"346":{}}}],["gui",{"_index":510,"title":{},"content":{"181":{},"182":{},"183":{},"191":{}}}],["guid",{"_index":465,"title":{},"content":{"181":{},"182":{},"183":{},"794":{}}}],["guidelin",{"_index":2614,"title":{"583":{}},"content":{}}],["gzip",{"_index":3426,"title":{},"content":{"761":{}}}],["hack",{"_index":2047,"title":{},"content":{"378":{}}}],["halt",{"_index":3506,"title":{},"content":{"794":{}}}],["hand",{"_index":1888,"title":{},"content":{"359":{},"499":{},"505":{},"789":{},"822":{}}}],["handi",{"_index":3380,"title":{},"content":{"759":{}}}],["handl",{"_index":1308,"title":{},"content":{"248":{},"249":{},"251":{},"252":{},"253":{},"254":{},"330":{},"644":{},"645":{},"749":{}}}],["handlegetaddress(uint8_t",{"_index":700,"title":{},"content":{"190":{}}}],["handlegetpublickey(uint8_t",{"_index":631,"title":{},"content":{"189":{}}}],["handlegetversion(uint8_t",{"_index":586,"title":{},"content":{"188":{}}}],["handlesignhash(uint8_t",{"_index":778,"title":{},"content":{"191":{}}}],["happen",{"_index":1630,"title":{"574":{},"615":{}},"content":{"298":{},"309":{},"479":{}}}],["hard",{"_index":2679,"title":{},"content":{"565":{},"635":{},"779":{}}}],["hardwar",{"_index":455,"title":{"627":{},"628":{},"629":{},"700":{}},"content":{"181":{},"189":{},"209":{},"217":{},"240":{},"268":{},"315":{},"627":{},"628":{},"629":{},"634":{},"636":{},"639":{},"642":{},"669":{}}}],["hardware(devic",{"_index":628,"title":{},"content":{"189":{}}}],["harwar",{"_index":2898,"title":{"626":{}},"content":{}}],["hash",{"_index":312,"title":{"147":{},"206":{},"258":{},"602":{},"637":{},"779":{}},"content":{"77":{},"78":{},"95":{},"96":{},"147":{},"190":{},"191":{},"201":{},"204":{},"206":{},"210":{},"246":{},"247":{},"253":{},"258":{},"262":{},"359":{},"395":{},"460":{},"463":{},"464":{},"565":{},"593":{},"602":{},"606":{},"624":{},"630":{},"633":{},"637":{},"638":{},"653":{},"714":{},"715":{},"761":{},"779":{},"784":{},"785":{},"801":{},"846":{},"858":{}}}],["hash(contract.cod",{"_index":2127,"title":{},"content":{"395":{}}}],["hash(data",{"_index":2126,"title":{},"content":{"395":{}}}],["hash(encode(pub_key",{"_index":973,"title":{},"content":{"210":{}}}],["hash/1",{"_index":2372,"title":{"459":{}},"content":{}}],["hash/2",{"_index":2373,"title":{"460":{}},"content":{"459":{}}}],["hash_typ",{"_index":764,"title":{},"content":{"190":{},"191":{},"195":{},"196":{},"206":{}}}],["hashalg",{"_index":1286,"title":{},"content":{"246":{}}}],["hashalgo",{"_index":3645,"title":{},"content":{"846":{}}}],["hashedpath",{"_index":922,"title":{},"content":{"201":{}}}],["hashfunct",{"_index":3422,"title":{},"content":{"761":{}}}],["hashrat",{"_index":2865,"title":{},"content":{"621":{}}}],["hashtosign",{"_index":1328,"title":{"253":{},"290":{}},"content":{"277":{},"289":{}}}],["hasn't",{"_index":1711,"title":{},"content":{"321":{}}}],["have",{"_index":1182,"title":{},"content":{"244":{},"650":{},"699":{},"859":{}}}],["haystack",{"_index":2169,"title":{},"content":{"407":{},"425":{}}}],["header",{"_index":307,"title":{},"content":{"77":{},"244":{},"477":{},"479":{},"480":{},"789":{}}}],["health",{"_index":3153,"title":{},"content":{"698":{}}}],["heart",{"_index":3184,"title":{},"content":{"699":{}}}],["heartbeat",{"_index":1117,"title":{"237":{}},"content":{}}],["heavi",{"_index":1502,"title":{},"content":{"259":{}}}],["held",{"_index":1968,"title":{},"content":{"352":{},"781":{},"784":{}}}],["hellmen",{"_index":1338,"title":{},"content":{"254":{}}}],["hello",{"_index":1866,"title":{"383":{}},"content":{"358":{},"360":{},"369":{},"383":{},"392":{},"396":{},"497":{},"500":{},"584":{}}}],["help",{"_index":519,"title":{"577":{},"617":{}},"content":{"182":{},"210":{},"216":{},"227":{},"262":{},"264":{},"329":{},"330":{},"331":{},"341":{},"342":{},"343":{},"404":{},"577":{},"584":{},"617":{},"621":{},"637":{},"646":{},"652":{},"720":{},"752":{},"761":{},"799":{},"814":{},"821":{}}}],["helper",{"_index":1102,"title":{},"content":{"229":{},"822":{}}}],["henc",{"_index":702,"title":{},"content":{"190":{},"191":{},"211":{},"246":{},"349":{},"352":{},"641":{},"665":{},"749":{}}}],["here",{"_index":975,"title":{},"content":{"214":{},"240":{},"241":{},"262":{},"263":{},"348":{},"354":{},"355":{},"365":{},"484":{},"500":{},"504":{},"510":{},"571":{},"572":{},"646":{},"764":{},"786":{},"805":{},"819":{},"821":{},"822":{}}}],["here'",{"_index":1921,"title":{},"content":{"354":{},"365":{},"558":{},"613":{},"724":{},"725":{}}}],["heritag",{"_index":3138,"title":{},"content":{"696":{}}}],["heurist",{"_index":1591,"title":{"294":{},"709":{}},"content":{"293":{},"618":{},"620":{},"622":{},"644":{},"660":{},"682":{},"698":{},"715":{}}}],["hex",{"_index":55,"title":{"153":{}},"content":{"12":{},"13":{},"22":{},"23":{},"46":{},"47":{},"70":{},"71":{},"95":{},"96":{},"153":{},"205":{},"206":{},"209":{},"228":{},"271":{},"393":{},"410":{},"452":{},"456":{},"457":{}}}],["hexadecim",{"_index":113,"title":{"359":{}},"content":{"25":{},"142":{},"153":{},"228":{},"359":{},"360":{},"410":{},"463":{},"515":{},"516":{},"517":{}}}],["hid",{"_index":634,"title":{},"content":{"189":{}}}],["hidden",{"_index":2572,"title":{},"content":{"512":{}}}],["hierarch",{"_index":894,"title":{},"content":{"200":{}}}],["hierarchi",{"_index":1201,"title":{},"content":{"246":{}}}],["hierarchy6",{"_index":1297,"title":{},"content":{"246":{}}}],["hierarchy:tpma_object_restrict",{"_index":1239,"title":{},"content":{"246":{}}}],["high",{"_index":1016,"title":{},"content":{"216":{},"219":{},"299":{},"620":{},"622":{},"671":{},"675":{},"686":{},"746":{},"749":{},"750":{},"780":{}}}],["higher",{"_index":2976,"title":{},"content":{"653":{},"669":{},"820":{}}}],["highest",{"_index":2823,"title":{},"content":{"620":{},"654":{},"749":{}}}],["highlight",{"_index":3525,"title":{},"content":{"803":{},"805":{},"812":{},"813":{}}}],["hint",{"_index":2569,"title":{},"content":{"511":{},"727":{}}}],["his/her",{"_index":2948,"title":{},"content":{"641":{}}}],["histori",{"_index":1402,"title":{"795":{}},"content":{"279":{},"336":{},"583":{},"617":{},"638":{},"790":{},"795":{},"796":{},"797":{}}}],["hive",{"_index":3607,"title":{},"content":{"822":{}}}],["hmac",{"_index":747,"title":{},"content":{"190":{},"191":{},"201":{},"463":{}}}],["hmac(authkey",{"_index":745,"title":{},"content":{"190":{},"191":{}}}],["hmac/1",{"_index":2378,"title":{"461":{}},"content":{}}],["hmac/2",{"_index":2379,"title":{"462":{}},"content":{"461":{}}}],["hmac/3",{"_index":2380,"title":{"463":{}},"content":{"462":{}}}],["hmac256(key",{"_index":951,"title":{},"content":{"202":{}}}],["hold",{"_index":1491,"title":{},"content":{"258":{},"296":{},"322":{},"349":{},"565":{},"779":{},"784":{}}}],["holm",{"_index":2194,"title":{},"content":{"412":{}}}],["home",{"_index":3460,"title":{},"content":{"775":{}}}],["hood",{"_index":3384,"title":{},"content":{"759":{}}}],["hopefulli",{"_index":2548,"title":{},"content":{"505":{}}}],["host",{"_index":117,"title":{"558":{},"741":{},"755":{}},"content":{"25":{},"342":{},"483":{},"505":{},"558":{},"645":{},"647":{},"657":{},"700":{},"715":{},"746":{},"747":{},"749":{},"750":{},"751":{},"754":{},"755":{},"756":{},"759":{},"760":{},"761":{},"762":{},"771":{}}}],["hot",{"_index":1044,"title":{},"content":{"216":{},"657":{},"817":{}}}],["hour",{"_index":2082,"title":{},"content":{"385":{},"401":{},"563":{},"600":{}}}],["hrt",{"_index":1166,"title":{"629":{},"630":{}},"content":{"242":{},"267":{},"630":{}}}],["hsm",{"_index":2895,"title":{},"content":{"639":{}}}],["htlc",{"_index":2723,"title":{"602":{},"779":{}},"content":{"593":{},"602":{},"606":{},"607":{},"779":{},"780":{},"784":{},"785":{},"794":{}}}],["html",{"_index":3300,"title":{},"content":{"715":{},"751":{},"761":{}}}],["http",{"_index":1784,"title":{"475":{}},"content":{"334":{},"336":{},"479":{},"480":{},"752":{},"762":{},"764":{},"829":{}}}],["http.fetch/1",{"_index":2559,"title":{},"content":{"506":{}}}],["http.fetch_many/1",{"_index":2560,"title":{},"content":{"506":{}}}],["http.request(\"https://fakerapi.it/api/v1/addresses?_quantity=1&_seed=watermelon",{"_index":2434,"title":{},"content":{"479":{}}}],["http.request_mani",{"_index":2449,"title":{},"content":{"480":{}}}],["http://127.0.0.1:4000",{"_index":3463,"title":{},"content":{"767":{}}}],["http://localhost:4000/explorer/transaction/{type_your_address_in_hexadecim",{"_index":2590,"title":{},"content":{"523":{}}}],["http://localhost:4000/faucet",{"_index":2589,"title":{},"content":{"523":{}}}],["https://aeweb.archethic.net",{"_index":3447,"title":{},"content":{"768":{}}}],["https://app.uniswap.org",{"_index":2779,"title":{},"content":{"613":{}}}],["https://bridge.archethic.net",{"_index":2667,"title":{},"content":{"562":{}}}],["https://bridge.testnet.archethic.net",{"_index":2731,"title":{},"content":{"594":{},"786":{}}}],["https://chainlist.org/chain/11155111",{"_index":2761,"title":{},"content":{"612":{}}}],["https://chainlist.org/chain/80001",{"_index":2768,"title":{},"content":{"612":{}}}],["https://chainlist.org/chain/97",{"_index":2764,"title":{},"content":{"612":{}}}],["https://fakerapi.it/api/v1/users?_quantity=1&_gender=female&_seed=tomato",{"_index":2451,"title":{},"content":{"480":{}}}],["https://fakerapi.it/api/v1/users?_quantity=1&_gender=male&_seed=cucumb",{"_index":2450,"title":{},"content":{"480":{}}}],["https://github.com/archeth",{"_index":2581,"title":{},"content":{"522":{},"765":{},"768":{},"786":{},"800":{},"859":{}}}],["https://mainnet.archethic.net",{"_index":3416,"title":{},"content":{"758":{},"767":{}}}],["https://mainnet.archethic.net/api/web_hosting/0c19fd13......../image.jpg",{"_index":3441,"title":{},"content":{"762":{}}}],["https://metamask.zendesk.com/hc/en",{"_index":2688,"title":{},"content":{"571":{}}}],["https://mobiskill.fr/blog/conseil",{"_index":3567,"title":{},"content":{"819":{}}}],["https://mumbai.polygonscan.com",{"_index":2770,"title":{},"content":{"612":{}}}],["https://pancakeswap.finance/liquidity?chain=bsctestnet",{"_index":2782,"title":{},"content":{"613":{}}}],["https://playground.archethic.net",{"_index":2513,"title":{},"content":{"504":{}}}],["https://sepolia.etherscan.io",{"_index":2763,"title":{},"content":{"612":{}}}],["https://testnet.archethic.net",{"_index":2544,"title":{},"content":{"505":{},"524":{},"558":{},"767":{}}}],["https://testnet.archethic.net/api/web_hosting/00007d9167",{"_index":3473,"title":{},"content":{"767":{}}}],["https://testnet.archethic.net/explorer/transaction/000013c531",{"_index":3470,"title":{},"content":{"767":{}}}],["https://testnet.archethic.net/explorer/transaction/0000a78a35",{"_index":3471,"title":{},"content":{"767":{}}}],["https://testnet.archethic.net/explorer/transaction/0000f1126",{"_index":3472,"title":{},"content":{"767":{}}}],["https://testnet.bscscan.com",{"_index":2767,"title":{},"content":{"612":{}}}],["https://www.archethic.net/privaci",{"_index":2793,"title":{},"content":{"588":{}}}],["https://www.coindesk.com/learn/how",{"_index":2690,"title":{},"content":{"572":{}}}],["https://www.educative.io/answers/paramet",{"_index":1969,"title":{},"content":{"352":{}}}],["huge",{"_index":3073,"title":{},"content":{"654":{},"819":{}}}],["human",{"_index":428,"title":{},"content":{"165":{},"348":{},"647":{},"655":{}}}],["humanitarian",{"_index":3137,"title":{"696":{}},"content":{}}],["hundr",{"_index":3244,"title":{},"content":{"708":{}}}],["hybrid",{"_index":2935,"title":{},"content":{"630":{},"673":{},"754":{}}}],["hypergeometr",{"_index":1601,"title":{},"content":{"296":{},"623":{}}}],["hypergeomtr",{"_index":1600,"title":{"296":{}},"content":{}}],["i.",{"_index":832,"title":{},"content":{"194":{},"195":{},"196":{},"334":{},"621":{},"636":{},"637":{},"715":{}}}],["i/o",{"_index":1444,"title":{"444":{},"445":{},"446":{},"448":{},"449":{},"450":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"466":{},"476":{},"477":{},"478":{},"479":{},"480":{},"482":{}},"content":{"255":{},"257":{},"259":{},"261":{},"369":{},"370":{},"404":{},"687":{}}}],["ico",{"_index":2056,"title":{"384":{},"385":{},"389":{}},"content":{"384":{},"385":{}}}],["ico_contract",{"_index":2083,"title":{},"content":{"385":{}}}],["icon",{"_index":2683,"title":{},"content":{"568":{},"587":{},"770":{},"774":{}}}],["id",{"_index":212,"title":{},"content":{"52":{},"55":{},"73":{},"83":{},"92":{},"125":{},"136":{},"209":{},"272":{},"330":{},"332":{},"466":{},"612":{},"726":{},"804":{},"818":{},"821":{},"822":{}}}],["idea",{"_index":2957,"title":{},"content":{"642":{},"658":{},"815":{}}}],["ideal",{"_index":3327,"title":{},"content":{"744":{}}}],["idempot",{"_index":2442,"title":{},"content":{"479":{}}}],["ident",{"_index":1832,"title":{"640":{},"641":{},"646":{},"655":{}},"content":{"346":{},"479":{},"621":{},"628":{},"641":{},"642":{},"646":{},"647":{},"650":{},"652":{},"653":{},"695":{},"698":{},"839":{},"857":{}}}],["identi",{"_index":2955,"title":{},"content":{"642":{}}}],["identif",{"_index":214,"title":{"683":{}},"content":{"55":{},"125":{},"147":{},"197":{},"209":{},"262":{},"695":{},"698":{}}}],["identifi",{"_index":873,"title":{},"content":{"197":{},"221":{},"224":{},"228":{},"261":{},"262":{},"263":{},"265":{},"272":{},"328":{},"378":{},"452":{},"456":{},"457":{},"628":{},"637":{},"641":{},"642":{},"647":{},"655":{},"665":{},"698":{},"821":{},"848":{},"851":{}}}],["identitifi",{"_index":2967,"title":{},"content":{"652":{}}}],["idl",{"_index":1722,"title":{},"content":{"328":{}}}],["ie",{"_index":1451,"title":{},"content":{"256":{},"375":{},"805":{}}}],["ieee",{"_index":408,"title":{},"content":{"151":{}}}],["iex",{"_index":2587,"title":{},"content":{"522":{}}}],["ignor",{"_index":3072,"title":{},"content":{"654":{}}}],["ii",{"_index":2523,"title":{"499":{}},"content":{}}],["imag",{"_index":1623,"title":{"558":{}},"content":{"298":{},"304":{},"558":{},"582":{},"715":{},"723":{},"725":{},"751":{},"761":{}}}],["image.jpg",{"_index":3437,"title":{},"content":{"761":{}}}],["imagin",{"_index":2891,"title":{},"content":{"638":{}}}],["immedi",{"_index":3038,"title":{},"content":{"647":{},"657":{}}}],["immediately(sync",{"_index":603,"title":{},"content":{"188":{}}}],["immun",{"_index":2901,"title":{},"content":{"627":{}}}],["immut",{"_index":1472,"title":{},"content":{"257":{},"258":{},"259":{},"654":{}}}],["impact",{"_index":2777,"title":{},"content":{"613":{},"630":{},"644":{},"647":{},"657":{}}}],["imper",{"_index":1860,"title":{},"content":{"358":{}}}],["implement",{"_index":912,"title":{"242":{},"267":{},"629":{}},"content":{"201":{},"240":{},"241":{},"242":{},"256":{},"262":{},"267":{},"299":{},"312":{},"326":{},"330":{},"347":{},"627":{},"628":{},"629":{},"644":{},"695":{},"707":{},"720":{},"818":{},"819":{},"829":{}}}],["implementationtpm",{"_index":1163,"title":{},"content":{"240":{}}}],["impli",{"_index":2837,"title":{},"content":{"622":{}}}],["import",{"_index":484,"title":{},"content":{"181":{},"247":{},"262":{},"266":{},"331":{},"588":{},"590":{},"628":{},"718":{},"747":{}}}],["impos",{"_index":2571,"title":{},"content":{"511":{},"645":{}}}],["imposs",{"_index":1931,"title":{},"content":{"367":{},"485":{}}}],["improv",{"_index":1827,"title":{"712":{}},"content":{"346":{},"577":{},"581":{},"617":{},"645":{},"648":{}}}],["in",{"_index":696,"title":{},"content":{"190":{},"191":{},"194":{},"195":{},"196":{}}}],["in?/2",{"_index":2164,"title":{"407":{},"425":{}},"content":{}}],["inadvertedli",{"_index":1963,"title":{},"content":{"352":{}}}],["incent",{"_index":3040,"title":{"659":{}},"content":{"647":{}}}],["incentiv",{"_index":3033,"title":{},"content":{"647":{},"745":{}}}],["includ",{"_index":0,"title":{"2":{},"796":{}},"content":{"2":{},"3":{},"15":{},"22":{},"25":{},"31":{},"49":{},"52":{},"55":{},"73":{},"83":{},"92":{},"95":{},"103":{},"125":{},"130":{},"136":{},"141":{},"181":{},"190":{},"244":{},"309":{},"334":{},"380":{},"593":{},"599":{},"610":{},"630":{},"636":{},"679":{},"709":{},"770":{},"772":{},"784":{},"786":{},"789":{},"829":{}}}],["include.if",{"_index":9,"title":{},"content":{"3":{}}}],["inclus",{"_index":3032,"title":{},"content":{"647":{},"655":{}}}],["incom",{"_index":1737,"title":{},"content":{"325":{},"356":{},"389":{},"391":{},"392":{},"393":{},"398":{},"399":{},"620":{},"672":{},"674":{}}}],["inconsist",{"_index":2863,"title":{},"content":{"625":{},"715":{}}}],["incorpor",{"_index":2726,"title":{},"content":{"593":{}}}],["increas",{"_index":823,"title":{},"content":{"191":{},"202":{},"245":{},"628":{},"644":{},"660":{},"661":{},"665":{},"746":{},"781":{}}}],["increasingli",{"_index":3622,"title":{},"content":{"827":{}}}],["increment",{"_index":1306,"title":{"253":{}},"content":{"248":{},"264":{},"280":{},"386":{},"509":{}}}],["incrementindex",{"_index":1403,"title":{"280":{}},"content":{}}],["inde",{"_index":3401,"title":{},"content":{"756":{},"822":{}}}],["indeped",{"_index":3077,"title":{},"content":{"658":{}}}],["independ",{"_index":1757,"title":{},"content":{"330":{},"622":{}}}],["index",{"_index":657,"title":{"222":{},"225":{},"262":{}},"content":{"189":{},"190":{},"191":{},"200":{},"201":{},"221":{},"222":{},"224":{},"225":{},"226":{},"240":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{},"259":{},"262":{},"263":{},"264":{},"265":{},"266":{},"268":{},"272":{},"274":{},"276":{},"280":{},"282":{},"283":{},"286":{},"289":{},"291":{},"336":{},"376":{},"423":{},"455":{},"488":{},"517":{},"660":{},"766":{},"801":{},"802":{},"813":{},"830":{},"847":{},"848":{},"849":{},"850":{},"851":{}}}],["index.html",{"_index":3423,"title":{},"content":{"761":{}}}],["index/summari",{"_index":1564,"title":{},"content":{"262":{}}}],["index_yk",{"_index":1391,"title":{},"content":{"275":{},"279":{}}}],["indic",{"_index":1229,"title":{},"content":{"246":{},"307":{},"337":{},"404":{},"636":{},"644":{},"653":{},"712":{},"754":{},"822":{}}}],["individu",{"_index":3157,"title":{},"content":{"698":{},"699":{},"744":{}}}],["industri",{"_index":1004,"title":{},"content":{"216":{},"641":{},"652":{},"654":{}}}],["infinit",{"_index":2961,"title":{},"content":{"650":{}}}],["info",{"_index":539,"title":{},"content":{"183":{},"188":{},"189":{},"190":{},"191":{},"202":{},"237":{},"244":{},"246":{},"250":{},"254":{},"261":{},"307":{},"322":{},"328":{},"342":{},"343":{},"346":{},"347":{},"353":{},"362":{},"366":{},"369":{},"370":{},"374":{},"386":{},"395":{},"490":{},"492":{},"516":{},"621":{},"638":{},"661":{},"723":{},"750":{},"757":{},"758":{},"770":{},"786":{},"792":{},"802":{},"805":{},"822":{}}}],["inform",{"_index":197,"title":{"774":{}},"content":{"49":{},"130":{},"211":{},"216":{},"232":{},"234":{},"235":{},"244":{},"257":{},"262":{},"263":{},"265":{},"266":{},"322":{},"325":{},"327":{},"328":{},"334":{},"335":{},"336":{},"338":{},"556":{},"577":{},"579":{},"583":{},"588":{},"589":{},"590":{},"599":{},"607":{},"617":{},"618":{},"625":{},"636":{},"637":{},"638":{},"648":{},"651":{},"653":{},"657":{},"661":{},"667":{},"674":{},"675":{},"677":{},"680":{},"692":{},"693":{},"728":{},"732":{},"770":{},"771":{},"774":{},"785":{},"787":{},"789":{},"791":{},"793":{},"802":{},"805":{},"821":{},"822":{},"827":{},"828":{},"830":{},"848":{},"851":{},"857":{},"859":{}}}],["infrar",{"_index":3179,"title":{},"content":{"699":{}}}],["infrastructur",{"_index":3325,"title":{},"content":{"744":{}}}],["ingest",{"_index":1000,"title":{},"content":{"216":{}}}],["inher",{"_index":2900,"title":{},"content":{"627":{}}}],["inherit",{"_index":1825,"title":{"375":{}},"content":{"346":{},"356":{},"373":{},"375":{},"376":{},"381":{},"388":{},"389":{},"392":{},"393":{},"485":{}}}],["initi",{"_index":550,"title":{"384":{},"792":{}},"content":{"183":{},"216":{},"232":{},"233":{},"234":{},"247":{},"249":{},"251":{},"268":{},"300":{},"304":{},"404":{},"509":{},"589":{},"630":{},"698":{},"770":{},"784":{},"785":{},"791":{}}}],["initializetpm(int",{"_index":1314,"title":{"249":{}},"content":{}}],["initializeyk",{"_index":1347,"title":{"268":{}},"content":{}}],["initiziali",{"_index":1143,"title":{"233":{}},"content":{}}],["inject",{"_index":2914,"title":{},"content":{"628":{},"819":{}}}],["inmemori",{"_index":1477,"title":{},"content":{"257":{},"311":{}}}],["inner",{"_index":1181,"title":{},"content":{"244":{}}}],["innov",{"_index":2816,"title":{"620":{}},"content":{"646":{},"747":{}}}],["inpublicec",{"_index":1292,"title":{},"content":{"246":{}}}],["inpublicec.i",{"_index":1304,"title":{},"content":{"247":{}}}],["inpublicec.x",{"_index":1303,"title":{},"content":{"247":{}}}],["inpublicecc",{"_index":1204,"title":{},"content":{"246":{}}}],["input",{"_index":241,"title":{},"content":{"70":{},"73":{},"134":{},"136":{},"188":{},"220":{},"223":{},"246":{},"272":{},"274":{},"276":{},"346":{},"349":{},"389":{},"506":{},"508":{},"523":{},"686":{},"791":{},"816":{}}}],["input/outputs:transact",{"_index":3209,"title":{},"content":{"687":{}}}],["insecur",{"_index":3345,"title":{},"content":{"749":{}}}],["insert",{"_index":1587,"title":{},"content":{"266":{},"584":{},"589":{},"590":{},"785":{}}}],["insid",{"_index":1009,"title":{},"content":{"216":{},"311":{},"335":{},"376":{},"638":{},"666":{}}}],["inspir",{"_index":896,"title":{},"content":{"200":{},"201":{},"671":{}}}],["instal",{"_index":552,"title":{"184":{},"522":{},"572":{},"800":{}},"content":{"183":{},"184":{},"522":{},"572":{},"588":{},"654":{},"765":{},"786":{},"800":{},"819":{},"822":{},"826":{}}}],["instanc",{"_index":864,"title":{},"content":{"212":{},"217":{},"262":{},"521":{},"522":{},"693":{},"704":{},"750":{},"751":{},"759":{}}}],["instantli",{"_index":3136,"title":{},"content":{"695":{}}}],["instead",{"_index":1466,"title":{},"content":{"256":{},"348":{},"354":{},"428":{},"479":{},"575":{},"607":{},"616":{},"653":{},"751":{},"754":{},"776":{},"779":{}}}],["instruct",{"_index":556,"title":{"184":{},"826":{}},"content":{"348":{},"468":{},"613":{},"765":{}}}],["insuffici",{"_index":3507,"title":{},"content":{"794":{}}}],["int",{"_index":65,"title":{"157":{},"245":{},"252":{},"253":{}},"content":{"15":{},"16":{},"19":{},"20":{},"28":{},"29":{},"31":{},"32":{},"37":{},"38":{},"52":{},"53":{},"55":{},"56":{},"58":{},"59":{},"67":{},"68":{},"70":{},"71":{},"73":{},"74":{},"77":{},"78":{},"83":{},"84":{},"86":{},"87":{},"92":{},"93":{},"95":{},"96":{},"157":{},"188":{},"189":{},"190":{},"191":{},"820":{}}}],["integ",{"_index":419,"title":{},"content":{"155":{},"159":{},"188":{},"245":{},"358":{},"472":{},"479":{},"480":{},"484":{},"488":{}}}],["integr",{"_index":341,"title":{"295":{},"755":{}},"content":{"95":{},"202":{},"322":{},"593":{},"619":{},"641":{},"647":{},"655":{},"658":{},"698":{},"699":{},"704":{},"715":{},"752":{},"829":{},"859":{}}}],["intend",{"_index":651,"title":{},"content":{"189":{},"715":{}}}],["intens",{"_index":1052,"title":{},"content":{"217":{}}}],["intent",{"_index":3060,"title":{},"content":{"663":{},"773":{}}}],["intepret",{"_index":1841,"title":{},"content":{"348":{}}}],["interact",{"_index":124,"title":{"823":{}},"content":{"25":{},"181":{},"217":{},"347":{},"349":{},"598":{},"652":{},"786":{},"787":{},"799":{},"800":{},"819":{},"821":{},"823":{},"829":{},"859":{}}}],["interest",{"_index":1489,"title":{},"content":{"258":{},"260":{},"343":{},"452":{},"453":{},"455":{},"456":{},"457":{},"641":{},"648":{}}}],["interfac",{"_index":524,"title":{"765":{}},"content":{"182":{},"270":{},"359":{},"512":{},"577":{},"695":{},"752":{},"800":{},"816":{},"819":{},"829":{},"859":{}}}],["intermediari",{"_index":2724,"title":{},"content":{"593":{},"602":{},"779":{}}}],["intern",{"_index":1713,"title":{"369":{}},"content":{"311":{},"345":{},"347":{},"349":{},"368":{},"369":{},"370":{},"404":{},"479":{},"695":{},"823":{}}}],["internet",{"_index":3131,"title":{},"content":{"695":{},"786":{}}}],["interoper",{"_index":1363,"title":{},"content":{"272":{},"579":{},"593":{},"641":{},"646":{},"649":{}}}],["interpol",{"_index":1865,"title":{},"content":{"358":{}}}],["interpret",{"_index":1695,"title":{"348":{},"814":{}},"content":{"313":{},"317":{},"345":{},"348":{},"357":{},"715":{},"723":{},"799":{}}}],["interrog",{"_index":2827,"title":{},"content":{"620":{},"671":{}}}],["interrupt",{"_index":3510,"title":{},"content":{"797":{}}}],["interv",{"_index":1100,"title":{"401":{},"500":{}},"content":{"229":{},"328":{},"346":{},"385":{},"388":{},"391":{},"401":{},"403":{},"497":{},"500":{},"502":{},"507":{},"508":{},"691":{},"693":{},"703":{},"704":{}}}],["intervent",{"_index":3625,"title":{},"content":{"828":{}}}],["intrins",{"_index":3182,"title":{},"content":{"699":{}}}],["introduc",{"_index":1810,"title":{},"content":{"345":{},"359":{},"378":{},"509":{},"607":{},"673":{},"764":{},"781":{},"785":{}}}],["introduct",{"_index":438,"title":{"181":{},"618":{},"657":{}},"content":{}}],["invalid",{"_index":24,"title":{},"content":{"7":{},"109":{},"144":{},"147":{},"163":{},"307":{},"518":{}}}],["invalid_transact",{"_index":20,"title":{},"content":{"6":{}}}],["invent",{"_index":3140,"title":{},"content":{"696":{}}}],["inventori",{"_index":3134,"title":{},"content":{"695":{}}}],["investig",{"_index":2854,"title":{},"content":{"623":{}}}],["invit",{"_index":2789,"title":{},"content":{"587":{},"588":{}}}],["invoc",{"_index":1967,"title":{},"content":{"352":{}}}],["involv",{"_index":577,"title":{},"content":{"186":{},"257":{},"606":{},"607":{},"625":{},"628":{},"630":{},"648":{},"698":{},"707":{},"779":{},"781":{},"784":{},"791":{}}}],["invovl",{"_index":1493,"title":{},"content":{"258":{},"310":{}}}],["io",{"_index":3559,"title":{},"content":{"819":{},"822":{},"829":{}}}],["io_asynch_repli",{"_index":633,"title":{},"content":{"189":{}}}],["io_exchange_with_code(sw_ok",{"_index":621,"title":{},"content":{"188":{}}}],["ip",{"_index":132,"title":{},"content":{"28":{},"37":{},"110":{},"232":{},"315":{},"334":{},"336":{},"679":{},"753":{}}}],["ip/port/key",{"_index":3110,"title":{},"content":{"675":{}}}],["irrefut",{"_index":1849,"title":{},"content":{"349":{}}}],["is_same?/2",{"_index":2393,"title":{"468":{}},"content":{}}],["is_valid?/1",{"_index":2299,"title":{"440":{},"469":{}},"content":{}}],["isn't",{"_index":2497,"title":{},"content":{"400":{}}}],["isol",{"_index":1013,"title":{},"content":{"216":{},"231":{}}}],["issu",{"_index":1599,"title":{"573":{},"614":{}},"content":{"295":{},"347":{},"348":{},"349":{},"362":{},"390":{},"581":{},"583":{},"618":{},"620":{},"639":{},"641":{},"646":{},"686":{},"690":{},"759":{},"792":{},"815":{},"819":{}}}],["issuer",{"_index":3308,"title":{},"content":{"715":{}}}],["it'",{"_index":1093,"title":{},"content":{"228":{},"254":{},"258":{},"311":{},"328":{},"354":{},"359":{},"378":{},"500":{},"515":{},"557":{},"581":{},"635":{},"650":{},"653":{},"654":{},"665":{},"667":{},"671":{},"714":{},"724":{},"750":{},"759":{}}}],["item",{"_index":2591,"title":{},"content":{"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"665":{}}}],["iter",{"_index":2213,"title":{},"content":{"419":{}}}],["itself",{"_index":863,"title":{},"content":{"212":{},"259":{},"565":{},"641":{},"647":{},"651":{},"654":{},"657":{},"828":{}}}],["iv",{"_index":740,"title":{},"content":{"190":{},"191":{},"202":{}}}],["i’m",{"_index":2706,"title":{"580":{},"609":{}},"content":{}}],["javascript",{"_index":1802,"title":{"342":{}},"content":{"342":{},"761":{},"829":{},"859":{}}}],["jerri",{"_index":1916,"title":{},"content":{"365":{}}}],["job",{"_index":2482,"title":{},"content":{"490":{},"625":{}}}],["joe",{"_index":2252,"title":{},"content":{"430":{}}}],["john",{"_index":1896,"title":{},"content":{"361":{},"436":{},"584":{}}}],["join",{"_index":1137,"title":{"679":{}},"content":{"232":{},"233":{},"234":{},"315":{},"430":{},"653":{},"669":{},"679":{},"706":{},"715":{},"728":{}}}],["join/2",{"_index":2248,"title":{"430":{}},"content":{}}],["joins/rejoin",{"_index":3109,"title":{},"content":{"675":{}}}],["js",{"_index":3612,"title":{},"content":{"823":{},"829":{},"859":{}}}],["json",{"_index":367,"title":{"435":{}},"content":{"109":{},"144":{},"147":{},"163":{},"370":{},"380":{},"386":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"484":{},"500":{},"652":{},"721":{},"724":{},"829":{}}}],["json.is_valid?(\"\\\"str",{"_index":2301,"title":{},"content":{"440":{}}}],["json.is_valid?(\"str",{"_index":2300,"title":{},"content":{"440":{}}}],["json.parse(\"1",{"_index":2294,"title":{},"content":{"439":{}}}],["json.parse(\"[1,2,3",{"_index":2296,"title":{},"content":{"439":{}}}],["json.parse(\"\\\"str",{"_index":2295,"title":{},"content":{"439":{}}}],["json.parse(\"{\\\"foo\\\":\\\"bar",{"_index":2297,"title":{},"content":{"439":{}}}],["json.path_extract",{"_index":2281,"title":{},"content":{"436":{}}}],["json.path_extract(contract.cont",{"_index":2101,"title":{},"content":{"386":{}}}],["json.path_extract(next.cont",{"_index":2036,"title":{},"content":{"376":{}}}],["json.path_extract(previous.cont",{"_index":2034,"title":{},"content":{"376":{}}}],["json.path_extract(transaction.cont",{"_index":1980,"title":{},"content":{"353":{}}}],["json.path_match?(\"{\\\"1622541930\\\":{\\\"uco\\\":{\\\"eur\\\":0.176922,\\\"usd\\\":0.21642",{"_index":2285,"title":{},"content":{"437":{}}}],["json.path_match?(next.cont",{"_index":2032,"title":{},"content":{"376":{}}}],["json.path_match?(transaction.cont",{"_index":2048,"title":{},"content":{"380":{}}}],["json.to_string(\"str",{"_index":2289,"title":{},"content":{"438":{}}}],["json.to_string(1",{"_index":2288,"title":{},"content":{"438":{}}}],["json.to_string([1,2,3",{"_index":2290,"title":{},"content":{"438":{}}}],["json.to_string([count",{"_index":2553,"title":{},"content":{"509":{}}}],["json.to_string(foo",{"_index":2291,"title":{},"content":{"438":{}}}],["json_extract(\"$.uco.usd",{"_index":2137,"title":{},"content":{"395":{}}}],["json_extract(data",{"_index":2136,"title":{},"content":{"395":{}}}],["json_match",{"_index":2133,"title":{},"content":{"395":{}}}],["json_match?(\"$.uco.usd",{"_index":2135,"title":{},"content":{"395":{}}}],["json_path",{"_index":2031,"title":{},"content":{"376":{}}}],["jsonpath",{"_index":2134,"title":{},"content":{"395":{},"435":{}}}],["jsonrpc",{"_index":3287,"title":{},"content":{"726":{}}}],["kdf",{"_index":1290,"title":{},"content":{"246":{}}}],["keccak",{"_index":959,"title":{},"content":{"206":{}}}],["keccak256",{"_index":2377,"title":{},"content":{"460":{},"464":{}}}],["keep",{"_index":1387,"title":{},"content":{"257":{},"259":{},"262":{},"275":{},"276":{},"362":{},"638":{},"642":{},"673":{},"689":{},"763":{},"786":{},"819":{},"822":{}}}],["kept",{"_index":3298,"title":{},"content":{"714":{}}}],["key",{"_index":47,"title":{"189":{},"194":{},"201":{},"209":{},"306":{},"339":{},"601":{},"633":{},"636":{},"650":{},"778":{}},"content":{"12":{},"22":{},"25":{},"46":{},"49":{},"55":{},"95":{},"125":{},"129":{},"130":{},"163":{},"181":{},"186":{},"189":{},"190":{},"191":{},"194":{},"196":{},"197":{},"198":{},"200":{},"201":{},"202":{},"207":{},"209":{},"212":{},"213":{},"228":{},"240":{},"244":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"257":{},"258":{},"259":{},"261":{},"262":{},"263":{},"264":{},"266":{},"268":{},"271":{},"272":{},"273":{},"274":{},"275":{},"277":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"286":{},"287":{},"289":{},"290":{},"291":{},"292":{},"297":{},"305":{},"306":{},"307":{},"313":{},"315":{},"332":{},"334":{},"336":{},"337":{},"338":{},"339":{},"346":{},"359":{},"367":{},"373":{},"376":{},"393":{},"396":{},"415":{},"416":{},"417":{},"418":{},"419":{},"421":{},"424":{},"446":{},"452":{},"456":{},"457":{},"462":{},"463":{},"490":{},"505":{},"519":{},"621":{},"624":{},"627":{},"628":{},"630":{},"633":{},"634":{},"636":{},"637":{},"638":{},"642":{},"644":{},"646":{},"647":{},"650":{},"651":{},"652":{},"653":{},"669":{},"675":{},"679":{},"687":{},"692":{},"693":{},"698":{},"699":{},"714":{},"715":{},"757":{},"758":{},"770":{},"772":{},"786":{},"803":{},"805":{},"821":{},"822":{},"827":{},"828":{},"830":{},"847":{},"849":{},"858":{}}}],["key(enc(aes_key",{"_index":934,"title":{},"content":{"202":{}}}],["key.pem",{"_index":3415,"title":{},"content":{"758":{}}}],["key/valu",{"_index":1531,"title":{},"content":{"261":{}}}],["key1",{"_index":1923,"title":{},"content":{"367":{},"416":{},"417":{},"418":{},"419":{},"421":{}}}],["key2",{"_index":1924,"title":{},"content":{"367":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{}}}],["key3",{"_index":2204,"title":{},"content":{"416":{},"417":{},"418":{}}}],["key_certificates[ykindex",{"_index":1371,"title":{},"content":{"272":{}}}],["key_slots[ykindex",{"_index":1380,"title":{},"content":{"273":{},"277":{},"278":{}}}],["keybits.a",{"_index":1280,"title":{},"content":{"246":{}}}],["keyboard",{"_index":3523,"title":{},"content":{"802":{},"821":{},"822":{}}}],["keychain",{"_index":847,"title":{"213":{},"649":{},"664":{},"737":{},"809":{},"810":{},"811":{}},"content":{"197":{},"200":{},"202":{},"211":{},"212":{},"213":{},"533":{},"534":{},"535":{},"558":{},"587":{},"588":{},"638":{},"642":{},"649":{},"651":{},"652":{},"653":{},"664":{},"738":{},"752":{},"767":{},"770":{},"799":{},"800":{},"809":{},"810":{},"811":{},"813":{},"817":{},"818":{},"822":{},"829":{},"839":{},"841":{},"844":{},"857":{}}}],["keychain'",{"_index":862,"title":{},"content":{"201":{},"212":{},"651":{},"822":{},"844":{}}}],["keychain/wallet",{"_index":2962,"title":{},"content":{"651":{}}}],["keychain_access",{"_index":3324,"title":{"738":{}},"content":{}}],["keychain_derive_address",{"_index":3649,"title":{"850":{}},"content":{}}],["keychain_derive_keypair",{"_index":3646,"title":{"847":{}},"content":{}}],["keyindex",{"_index":1199,"title":{"246":{},"249":{},"251":{},"252":{},"253":{},"254":{}},"content":{"251":{},"252":{},"253":{}}}],["keyindex+1",{"_index":1318,"title":{},"content":{"251":{}}}],["keypair",{"_index":712,"title":{},"content":{"190":{},"191":{},"628":{},"847":{}}}],["keys/1",{"_index":2211,"title":{"419":{}},"content":{}}],["keys:secret",{"_index":2480,"title":{},"content":{"490":{}}}],["keys:to",{"_index":2467,"title":{},"content":{"486":{},"488":{}}}],["keystor",{"_index":1159,"title":{"240":{},"241":{}},"content":{"239":{},"240":{},"241":{},"822":{}}}],["keytoasn",{"_index":1178,"title":{"244":{}},"content":{"244":{}}}],["keytyp",{"_index":1185,"title":{},"content":{"244":{}}}],["keyvalu",{"_index":1482,"title":{},"content":{"257":{}}}],["keyword",{"_index":1938,"title":{"372":{}},"content":{"352":{},"368":{},"369":{}}}],["kind",{"_index":1099,"title":{},"content":{"229":{},"259":{},"262":{},"266":{},"331":{},"346":{},"621":{},"638":{},"673":{},"708":{},"715":{},"831":{}}}],["knigg",{"_index":1660,"title":{},"content":{"304":{}}}],["know",{"_index":1537,"title":{"568":{}},"content":{"261":{},"262":{},"620":{},"633":{},"638":{},"675":{},"681":{},"689":{},"748":{},"762":{},"822":{}}}],["knowledg",{"_index":536,"title":{},"content":{"182":{},"581":{},"641":{},"646":{},"671":{},"672":{},"698":{}}}],["known",{"_index":992,"title":{},"content":{"216":{},"246":{},"306":{},"332":{},"462":{},"561":{},"621":{},"634":{},"675":{},"688":{},"779":{}}}],["kyc",{"_index":3536,"title":{},"content":{"817":{}}}],["lack",{"_index":3342,"title":{},"content":{"747":{}}}],["languag",{"_index":981,"title":{"356":{},"390":{}},"content":{"215":{},"216":{},"217":{},"358":{},"367":{},"368":{},"371":{},"390":{},"469":{},"583":{},"818":{},"819":{},"820":{},"822":{}}}],["last",{"_index":361,"title":{},"content":{"104":{},"112":{},"120":{},"201":{},"232":{},"257":{},"259":{},"262":{},"264":{},"266":{},"294":{},"296":{},"334":{},"336":{},"339":{},"347":{},"563":{},"600":{},"624":{},"658":{},"683":{},"684":{},"691":{},"692":{},"714":{},"802":{},"822":{},"830":{}}}],["lastnam",{"_index":1972,"title":{},"content":{"352":{},"399":{},"436":{}}}],["lastpublickey",{"_index":162,"title":{},"content":{"37":{}}}],["lasttransact",{"_index":262,"title":{"112":{}},"content":{"72":{},"112":{},"146":{}}}],["lasttransaction.address",{"_index":377,"title":{},"content":{"113":{}}}],["latenc",{"_index":994,"title":{},"content":{"216":{},"262":{},"322":{},"329":{},"331":{},"334":{},"630":{},"671":{},"692":{},"693":{}}}],["later",{"_index":1553,"title":{},"content":{"262":{},"576":{},"580":{},"584":{},"609":{},"699":{},"709":{},"715":{},"722":{},"794":{}}}],["latest",{"_index":358,"title":{},"content":{"101":{},"183":{},"262":{},"320":{},"354":{},"449":{},"450":{},"622":{},"707":{},"763":{},"764":{},"771":{},"786":{},"818":{}}}],["latter",{"_index":3343,"title":{},"content":{"749":{}}}],["launch",{"_index":1136,"title":{},"content":{"232":{},"297":{},"345":{},"588":{},"604":{},"658":{},"695":{},"781":{},"800":{},"822":{}}}],["law",{"_index":2840,"title":{},"content":{"623":{},"654":{}}}],["layer",{"_index":1512,"title":{},"content":{"260":{},"329":{},"331":{},"334":{},"620":{},"628":{},"666":{},"669":{},"676":{},"698":{},"719":{},"817":{}}}],["layer.thu",{"_index":2825,"title":{},"content":{"620":{}}}],["layout",{"_index":2631,"title":{},"content":{"583":{}}}],["lc",{"_index":697,"title":{},"content":{"190":{},"194":{},"195":{},"196":{}}}],["leak",{"_index":1175,"title":{},"content":{"243":{},"819":{}}}],["learn",{"_index":2612,"title":{},"content":{"582":{},"819":{}}}],["led",{"_index":1524,"title":{},"content":{"261":{}}}],["ledger",{"_index":61,"title":{"34":{},"187":{},"221":{},"224":{},"533":{}},"content":{"15":{},"25":{},"26":{},"31":{},"34":{},"52":{},"61":{},"63":{},"83":{},"89":{},"91":{},"95":{},"103":{},"181":{},"182":{},"183":{},"188":{},"189":{},"190":{},"209":{},"523":{},"533":{},"534":{},"535":{},"642":{},"715":{},"719":{},"726":{}}}],["ledger.token",{"_index":141,"title":{},"content":{"35":{}}}],["ledger.uco",{"_index":142,"title":{},"content":{"35":{}}}],["ledger_cli",{"_index":564,"title":{},"content":{"184":{},"185":{}}}],["ledgeroper",{"_index":143,"title":{"31":{}},"content":{"31":{},"85":{},"94":{},"95":{},"96":{},"158":{}}}],["ledgeroperations.fe",{"_index":151,"title":{},"content":{"32":{}}}],["ledgeroperations.transactionmov",{"_index":152,"title":{},"content":{"32":{}}}],["ledgeroperations.unspentoutput",{"_index":153,"title":{},"content":{"32":{}}}],["left",{"_index":2527,"title":{},"content":{"499":{},"505":{},"509":{},"583":{},"790":{},"802":{},"822":{}}}],["legaci",{"_index":2049,"title":{"355":{},"381":{}},"content":{}}],["len(ewk{aes}+ew{a",{"_index":835,"title":{},"content":{"195":{}}}],["len(txhash+ewk{aes}+ew_{a",{"_index":840,"title":{},"content":{"196":{}}}],["length",{"_index":600,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"204":{},"261":{},"274":{},"480":{},"637":{}}}],["less",{"_index":1530,"title":{"642":{}},"content":{"261":{},"479":{},"642":{},"644":{}}}],["let",{"_index":1536,"title":{},"content":{"261":{}}}],["let'",{"_index":2515,"title":{},"content":{"497":{},"500":{},"508":{},"509":{},"757":{}}}],["level",{"_index":1060,"title":{"295":{}},"content":{"219":{},"295":{},"299":{},"512":{},"620":{},"638":{},"675":{},"710":{},"780":{}}}],["leveldb",{"_index":1452,"title":{},"content":{"256":{}}}],["leverag",{"_index":989,"title":{},"content":{"216":{},"241":{},"262":{},"266":{},"295":{},"330":{},"345":{},"565":{},"584":{},"631":{},"661":{},"675":{},"701":{},"751":{},"759":{},"761":{},"762":{}}}],["lib",{"_index":3657,"title":{},"content":{"859":{}}}],["libj",{"_index":3631,"title":{},"content":{"829":{},"859":{}}}],["librari",{"_index":1167,"title":{"371":{},"404":{}},"content":{"242":{},"267":{},"362":{},"366":{},"367":{},"369":{},"370":{},"371":{},"404":{},"630":{},"819":{},"820":{},"821":{},"822":{},"823":{},"829":{},"859":{}}}],["licens",{"_index":3142,"title":{},"content":{"696":{}}}],["life",{"_index":1806,"title":{},"content":{"345":{}}}],["lifecycl",{"_index":1173,"title":{},"content":{"243":{},"761":{}}}],["lifelong",{"_index":3169,"title":{},"content":{"699":{}}}],["light",{"_index":3177,"title":{},"content":{"699":{}}}],["lightweight",{"_index":1010,"title":{},"content":{"216":{}}}],["like",{"_index":2796,"title":{},"content":{"588":{}}}],["limit",{"_index":82,"title":{},"content":{"19":{},"70":{},"134":{},"252":{},"403":{},"620":{},"677":{},"698":{},"761":{},"770":{},"829":{},"831":{}}}],["limitless",{"_index":2803,"title":{"644":{}},"content":{"618":{},"644":{}}}],["line",{"_index":523,"title":{"765":{},"814":{}},"content":{"182":{},"327":{},"357":{},"358":{},"373":{},"468":{},"752":{},"759":{},"774":{},"799":{},"814":{}}}],["linear",{"_index":2806,"title":{},"content":{"618":{},"644":{},"686":{}}}],["link",{"_index":563,"title":{"558":{}},"content":{"184":{},"366":{},"422":{},"501":{},"505":{},"571":{},"572":{},"582":{},"708":{},"723":{},"756":{},"789":{},"859":{}}}],["linkag",{"_index":3306,"title":{},"content":{"715":{}}}],["linter",{"_index":1647,"title":{},"content":{"304":{}}}],["linux",{"_index":2733,"title":{},"content":{"597":{},"786":{},"819":{},"829":{}}}],["liquid",{"_index":2778,"title":{},"content":{"613":{},"781":{}}}],["list",{"_index":67,"title":{"366":{},"422":{},"697":{}},"content":{"16":{},"20":{},"25":{},"26":{},"32":{},"47":{},"55":{},"56":{},"62":{},"71":{},"78":{},"90":{},"110":{},"115":{},"118":{},"125":{},"134":{},"149":{},"197":{},"212":{},"220":{},"223":{},"262":{},"263":{},"269":{},"293":{},"305":{},"306":{},"307":{},"311":{},"331":{},"334":{},"338":{},"354":{},"366":{},"367":{},"369":{},"371":{},"378":{},"386":{},"392":{},"393":{},"398":{},"419":{},"420":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"452":{},"457":{},"480":{},"482":{},"487":{},"488":{},"489":{},"491":{},"493":{},"509":{},"516":{},"517":{},"518":{},"519":{},"587":{},"621":{},"624":{},"625":{},"651":{},"652":{},"665":{},"668":{},"675":{},"679":{},"681":{},"683":{},"684":{},"688":{},"693":{},"709":{},"714":{},"715":{},"725":{},"770":{},"803":{},"805":{},"811":{},"812":{},"818":{},"822":{},"830":{}}}],["list'",{"_index":2255,"title":{},"content":{"430":{}}}],["list.append",{"_index":2239,"title":{},"content":{"428":{}}}],["list.append([1",{"_index":2240,"title":{},"content":{"428":{}}}],["list.at",{"_index":2222,"title":{},"content":{"423":{}}}],["list.at([\"a",{"_index":2221,"title":{},"content":{"423":{}}}],["list.concat",{"_index":2232,"title":{},"content":{"427":{}}}],["list.concat([1,2",{"_index":2233,"title":{},"content":{"427":{}}}],["list.concat(sold_item",{"_index":2154,"title":{},"content":{"404":{}}}],["list.empti",{"_index":2229,"title":{},"content":{"426":{}}}],["list.empty?([\"appl",{"_index":2230,"title":{},"content":{"426":{}}}],["list.in?([\"bob",{"_index":2227,"title":{},"content":{"425":{}}}],["list.in?([\"pet",{"_index":2041,"title":{},"content":{"378":{}}}],["list.in?([\"x",{"_index":2092,"title":{},"content":{"386":{}}}],["list.join",{"_index":2249,"title":{},"content":{"430":{}}}],["list.join([\"mik",{"_index":2250,"title":{},"content":{"430":{}}}],["list.prepend",{"_index":2245,"title":{},"content":{"429":{}}}],["list.prepend([1",{"_index":2246,"title":{},"content":{"429":{}}}],["list.siz",{"_index":2225,"title":{},"content":{"424":{}}}],["list.size([1,2,3,4",{"_index":2226,"title":{},"content":{"424":{}}}],["list1",{"_index":2236,"title":{},"content":{"427":{}}}],["list2",{"_index":2237,"title":{},"content":{"427":{}}}],["listen",{"_index":3626,"title":{},"content":{"828":{},"830":{}}}],["live",{"_index":1782,"title":{},"content":{"332":{},"714":{}}}],["load",{"_index":553,"title":{"226":{},"230":{}},"content":{"183":{},"219":{},"226":{},"230":{},"263":{},"266":{},"322":{},"335":{},"805":{}}}],["local",{"_index":394,"title":{"521":{},"795":{}},"content":{"137":{},"237":{},"334":{},"401":{},"521":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"576":{},"577":{},"610":{},"617":{},"674":{},"762":{},"771":{},"790":{},"795":{},"796":{},"797":{},"821":{},"822":{},"829":{}}}],["locat",{"_index":1542,"title":{},"content":{"262":{},"590":{},"651":{}}}],["lock",{"_index":2674,"title":{"602":{},"779":{}},"content":{"565":{},"593":{},"602":{},"606":{},"779":{},"781":{},"784":{},"785":{},"822":{}}}],["log",{"_index":1463,"title":{"257":{},"258":{}},"content":{"256":{},"257":{},"258":{},"260":{},"262":{},"298":{},"304":{},"789":{},"790":{}}}],["log10(numb",{"_index":3065,"title":{},"content":{"665":{}}}],["logic",{"_index":1187,"title":{},"content":{"244":{},"330":{},"373":{},"751":{},"804":{},"805":{}}}],["login",{"_index":3125,"title":{},"content":{"695":{}}}],["long",{"_index":954,"title":{"563":{},"600":{}},"content":{"205":{},"206":{},"209":{},"262":{},"647":{},"667":{},"669":{},"750":{},"764":{},"820":{},"822":{}}}],["longer",{"_index":3133,"title":{},"content":{"695":{},"773":{}}}],["look",{"_index":1801,"title":{},"content":{"342":{},"343":{},"582":{}}}],["lookup",{"_index":1574,"title":{"307":{},"337":{},"339":{}},"content":{"263":{},"294":{},"296":{},"305":{},"338":{}}}],["loop",{"_index":1907,"title":{"364":{}},"content":{"419":{}}}],["lose",{"_index":2696,"title":{},"content":{"575":{},"616":{}}}],["loss",{"_index":3479,"title":{},"content":{"781":{}}}],["lost",{"_index":1855,"title":{},"content":{"349":{},"576":{}}}],["lot",{"_index":1500,"title":{},"content":{"259":{},"621":{},"751":{}}}],["low",{"_index":993,"title":{"295":{}},"content":{"216":{},"295":{},"329":{},"618":{},"673":{},"759":{}}}],["lower",{"_index":3484,"title":{},"content":{"781":{}}}],["lowercas",{"_index":2196,"title":{},"content":{"412":{}}}],["lowest",{"_index":2670,"title":{},"content":{"564":{},"595":{},"642":{}}}],["loyalti",{"_index":3303,"title":{},"content":{"715":{}}}],["lsm",{"_index":1471,"title":{},"content":{"257":{},"259":{}}}],["lupin",{"_index":2190,"title":{},"content":{"411":{}}}],["m/650'/0/0",{"_index":915,"title":{},"content":{"201":{},"653":{}}}],["m/650'/0/1",{"_index":919,"title":{},"content":{"201":{}}}],["m/650'/account/index",{"_index":904,"title":{},"content":{"200":{}}}],["m/650'/amazon/0",{"_index":2974,"title":{},"content":{"653":{}}}],["m/650'/johndoeuco@!/0",{"_index":2975,"title":{},"content":{"653":{}}}],["machin",{"_index":1721,"title":{},"content":{"328":{},"570":{},"596":{},"598":{},"750":{}}}],["maco",{"_index":2732,"title":{},"content":{"597":{},"786":{},"819":{},"829":{}}}],["made",{"_index":844,"title":{},"content":{"196":{},"650":{},"784":{},"819":{},"822":{}}}],["main",{"_index":877,"title":{},"content":{"197":{},"200":{},"258":{},"261":{},"305":{},"311":{},"328":{},"353":{},"568":{},"583":{},"587":{},"589":{},"652":{},"710":{},"770":{},"800":{},"802":{},"805":{},"808":{},"818":{},"819":{},"822":{}}}],["mainli",{"_index":1799,"title":{},"content":{"343":{},"517":{},"641":{}}}],["mainnet",{"_index":1724,"title":{"568":{},"575":{},"580":{},"609":{},"616":{}},"content":{"328":{},"505":{},"575":{},"580":{},"609":{},"616":{},"704":{},"822":{}}}],["mainnet.archethic.net",{"_index":3393,"title":{},"content":{"754":{},"755":{},"756":{}}}],["maintain",{"_index":988,"title":{},"content":{"216":{},"228":{},"239":{},"240":{},"243":{},"303":{},"322":{},"581":{},"620":{},"676":{},"823":{}}}],["mainten",{"_index":3001,"title":{},"content":{"645":{},"750":{},"819":{}}}],["major",{"_index":2714,"title":{},"content":{"593":{}}}],["make",{"_index":478,"title":{},"content":{"181":{},"183":{},"227":{},"262":{},"263":{},"264":{},"265":{},"296":{},"309":{},"311":{},"345":{},"346":{},"348":{},"349":{},"358":{},"402":{},"404":{},"582":{},"603":{},"613":{},"623":{},"627":{},"628":{},"642":{},"643":{},"649":{},"652":{},"660":{},"699":{},"719":{},"723":{},"749":{},"752":{},"753":{},"761":{},"767":{},"773":{},"780":{},"799":{},"820":{}}}],["makefil",{"_index":614,"title":{},"content":{"188":{}}}],["malciou",{"_index":2908,"title":{},"content":{"628":{}}}],["malici",{"_index":2851,"title":{},"content":{"623":{},"628":{},"644":{},"749":{},"819":{}}}],["malwar",{"_index":2902,"title":{},"content":{"627":{}}}],["manag",{"_index":443,"title":{"573":{},"614":{},"795":{},"809":{}},"content":{"181":{},"227":{},"229":{},"231":{},"257":{},"259":{},"271":{},"300":{},"604":{},"622":{},"623":{},"646":{},"663":{},"664":{},"695":{},"698":{},"751":{},"761":{},"768":{},"776":{},"781":{},"799":{},"800":{},"809":{},"817":{},"818":{},"822":{},"829":{},"859":{}}}],["mandatori",{"_index":1365,"title":{},"content":{"272":{},"354":{},"373":{},"770":{}}}],["mani",{"_index":480,"title":{},"content":{"181":{},"262":{},"330":{},"404":{},"442":{},"456":{},"457":{},"646":{},"704":{},"715":{},"720":{},"856":{}}}],["manipul",{"_index":1241,"title":{},"content":{"246":{},"366":{},"367":{},"435":{}}}],["manner",{"_index":2739,"title":{},"content":{"602":{},"779":{},"828":{}}}],["manual",{"_index":2759,"title":{},"content":{"612":{},"757":{},"798":{}}}],["map",{"_index":1736,"title":{"354":{},"367":{},"413":{}},"content":{"325":{},"326":{},"351":{},"354":{},"367":{},"373":{},"375":{},"377":{},"379":{},"393":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"451":{},"452":{},"456":{},"457":{},"479":{},"480":{},"486":{},"488":{},"490":{}}}],["map.delete([key1",{"_index":2219,"title":{},"content":{"421":{}}}],["map.get([key1",{"_index":2203,"title":{},"content":{"416":{},"417":{},"418":{}}}],["map.get(bal",{"_index":2363,"title":{},"content":{"456":{},"457":{}}}],["map.get(balance.token",{"_index":2341,"title":{},"content":{"452":{}}}],["map.get(contract.address",{"_index":2039,"title":{},"content":{"378":{}}}],["map.get(map",{"_index":1928,"title":{},"content":{"367":{}}}],["map.get(transaction.uco_mov",{"_index":2074,"title":{},"content":{"384":{}}}],["map.get(transaction.uco_transf",{"_index":2076,"title":{},"content":{"384":{}}}],["map.get(transf",{"_index":2079,"title":{},"content":{"384":{}}}],["map.key",{"_index":2205,"title":{},"content":{"416":{}}}],["map.keys(key1",{"_index":2212,"title":{},"content":{"419":{}}}],["map.keys(map",{"_index":2214,"title":{},"content":{"419":{}}}],["map.new",{"_index":1934,"title":{},"content":{"367":{},"414":{},"477":{},"479":{},"480":{},"490":{}}}],["map.properti",{"_index":1926,"title":{},"content":{"367":{}}}],["map.set([key1",{"_index":2208,"title":{},"content":{"418":{}}}],["map.set(authorized_key",{"_index":2476,"title":{},"content":{"490":{}}}],["map.set(vot",{"_index":2097,"title":{},"content":{"386":{}}}],["map.siz",{"_index":2014,"title":{},"content":{"373":{},"374":{},"376":{}}}],["map.size(key1",{"_index":2200,"title":{},"content":{"415":{}}}],["map.size(transaction.uco_transf",{"_index":2017,"title":{},"content":{"374":{}}}],["map.values(key1",{"_index":2217,"title":{},"content":{"420":{}}}],["map[\"properti",{"_index":1927,"title":{},"content":{"367":{}}}],["map[key",{"_index":2215,"title":{},"content":{"419":{}}}],["marathon",{"_index":3029,"title":{},"content":{"647":{}}}],["markdown",{"_index":2611,"title":{},"content":{"582":{},"583":{},"584":{}}}],["market",{"_index":2981,"title":{},"content":{"644":{}}}],["marketplac",{"_index":3009,"title":{},"content":{"645":{}}}],["mass",{"_index":1808,"title":{},"content":{"345":{},"618":{}}}],["master",{"_index":660,"title":{},"content":{"189":{},"197":{},"201":{},"695":{}}}],["masterse",{"_index":659,"title":{},"content":{"189":{}}}],["masterseedlen",{"_index":667,"title":{},"content":{"189":{}}}],["match",{"_index":339,"title":{},"content":{"95":{},"216":{},"252":{},"319":{},"346":{},"395":{},"433":{},"604":{},"695":{},"715":{},"748":{},"758":{},"781":{},"858":{}}}],["match?/2",{"_index":2263,"title":{"433":{}},"content":{}}],["materi",{"_index":965,"title":{},"content":{"209":{},"619":{},"652":{}}}],["math",{"_index":2405,"title":{"470":{}},"content":{}}],["math.pow(1.7",{"_index":2408,"title":{},"content":{"471":{}}}],["math.pow(2",{"_index":2407,"title":{},"content":{"471":{}}}],["math.rem",{"_index":2422,"title":{},"content":{"474":{}}}],["math.rem(10",{"_index":2421,"title":{},"content":{"474":{}}}],["math.rem(10.2",{"_index":2423,"title":{},"content":{"474":{}}}],["math.rem(2.1",{"_index":2419,"title":{},"content":{"474":{}}}],["math.sqrt(12.5",{"_index":2415,"title":{},"content":{"473":{}}}],["math.sqrt(16",{"_index":2414,"title":{},"content":{"473":{}}}],["math.trunc(8.32",{"_index":2412,"title":{},"content":{"472":{}}}],["mathemat",{"_index":3129,"title":{},"content":{"695":{}}}],["matic",{"_index":2669,"title":{"613":{}},"content":{"564":{},"593":{},"595":{},"612":{},"613":{}}}],["matter",{"_index":2241,"title":{},"content":{"428":{},"646":{},"764":{}}}],["max",{"_index":1323,"title":{},"content":{"252":{},"840":{},"843":{}}}],["maxconfirm",{"_index":276,"title":{},"content":{"67":{},"840":{},"843":{}}}],["maximum",{"_index":1857,"title":{},"content":{"356":{},"516":{},"589":{},"622":{},"761":{},"781":{}}}],["mb",{"_index":3453,"title":{},"content":{"770":{}}}],["mean",{"_index":1626,"title":{},"content":{"298":{},"347":{},"361":{},"375":{},"377":{},"379":{},"404":{},"518":{},"588":{},"671":{},"690":{},"706":{},"763":{},"774":{},"821":{}}}],["meant",{"_index":3062,"title":{},"content":{"664":{},"818":{}}}],["measur",{"_index":1480,"title":{},"content":{"257":{},"699":{}}}],["mechan",{"_index":1527,"title":{},"content":{"261":{},"262":{},"311":{},"620":{},"630":{},"633":{},"638":{},"660":{},"667":{},"682":{},"689":{},"700":{},"708":{},"715":{},"753":{},"813":{},"821":{}}}],["medium",{"_index":3609,"title":{},"content":{"822":{}}}],["meet",{"_index":2446,"title":{},"content":{"479":{},"505":{}}}],["member",{"_index":28,"title":{"8":{},"11":{},"14":{},"18":{},"24":{},"27":{},"33":{},"36":{},"45":{},"48":{},"54":{},"60":{},"63":{},"76":{},"79":{},"82":{},"85":{},"88":{},"91":{},"94":{},"97":{},"141":{},"143":{},"146":{},"148":{},"152":{},"154":{},"156":{},"158":{},"160":{},"162":{},"164":{},"166":{},"168":{},"170":{},"172":{}},"content":{"297":{},"321":{},"658":{},"698":{}}}],["memori",{"_index":1062,"title":{"322":{}},"content":{"219":{},"220":{},"223":{},"226":{},"258":{},"259":{},"262":{},"263":{},"264":{},"266":{},"322":{},"335":{},"576":{}}}],["memtableload",{"_index":1788,"title":{},"content":{"335":{}}}],["mention",{"_index":505,"title":{},"content":{"181":{},"201":{},"262":{},"346":{},"715":{},"724":{}}}],["menu",{"_index":2514,"title":{"789":{}},"content":{"504":{},"568":{},"770":{},"771":{},"772":{},"773":{},"789":{},"790":{},"800":{},"802":{},"809":{},"813":{}}}],["merchant",{"_index":1845,"title":{},"content":{"349":{},"646":{}}}],["merg",{"_index":1470,"title":{"257":{}},"content":{"257":{},"258":{},"583":{}}}],["mermaid",{"_index":2635,"title":{},"content":{"584":{}}}],["mermaidsequencediagram",{"_index":2637,"title":{},"content":{"584":{}}}],["mesh",{"_index":3201,"title":{},"content":{"700":{}}}],["messag",{"_index":1015,"title":{"329":{},"332":{}},"content":{"216":{},"298":{},"303":{},"329":{},"330":{},"331":{},"332":{},"505":{},"620":{},"645":{},"652":{},"674":{},"677":{},"698":{},"708":{}}}],["messageenvelop",{"_index":1780,"title":{},"content":{"332":{}}}],["metadata",{"_index":203,"title":{},"content":{"55":{},"125":{},"262":{},"635":{},"636":{},"761":{}}}],["metamask",{"_index":2684,"title":{"569":{},"570":{},"571":{},"572":{}},"content":{"571":{},"572":{}}}],["method",{"_index":476,"title":{"831":{}},"content":{"181":{},"476":{},"479":{},"480":{},"593":{},"619":{},"642":{},"651":{},"653":{},"670":{},"698":{},"699":{},"726":{},"779":{},"794":{},"817":{},"820":{},"822":{},"829":{},"831":{},"859":{}}}],["metric",{"_index":1637,"title":{},"content":{"298":{}}}],["migrat",{"_index":1838,"title":{},"content":{"347":{},"695":{}}}],["mike",{"_index":2253,"title":{},"content":{"430":{}}}],["million",{"_index":2982,"title":{},"content":{"644":{}}}],["min",{"_index":3217,"title":{},"content":{"693":{}}}],["mind",{"_index":1902,"title":{},"content":{"362":{},"819":{}}}],["mine",{"_index":1665,"title":{"299":{}},"content":{"299":{},"334":{},"621":{},"665":{},"668":{},"674":{},"714":{}}}],["miner",{"_index":1813,"title":{},"content":{"345":{},"348":{},"505":{},"628":{},"630":{},"644":{},"723":{}}}],["miner'",{"_index":3071,"title":{},"content":{"654":{}}}],["minim",{"_index":3045,"title":{},"content":{"660":{},"698":{}}}],["minimum",{"_index":1595,"title":{},"content":{"294":{},"401":{},"661":{},"665":{},"708":{}}}],["minimum_fe",{"_index":3055,"title":{},"content":{"661":{}}}],["mint",{"_index":293,"title":{},"content":{"73":{},"83":{},"92":{},"136":{},"317":{},"590":{},"606":{},"719":{},"722":{},"724":{},"725":{},"731":{},"784":{}}}],["mint_reward",{"_index":3318,"title":{"731":{}},"content":{}}],["minting'",{"_index":3264,"title":{},"content":{"720":{}}}],["minu",{"_index":3514,"title":{},"content":{"798":{}}}],["minut",{"_index":1727,"title":{},"content":{"328":{},"400":{},"401":{},"704":{},"732":{}}}],["mismatch",{"_index":3242,"title":{},"content":{"708":{}}}],["miss",{"_index":1158,"title":{},"content":{"235":{},"519":{},"583":{},"681":{},"682":{},"683":{}}}],["misus",{"_index":3596,"title":{},"content":{"821":{}}}],["misusag",{"_index":1823,"title":{},"content":{"346":{}}}],["mitig",{"_index":2744,"title":{},"content":{"604":{},"781":{},"819":{}}}],["mix",{"_index":2585,"title":{},"content":{"522":{},"821":{}}}],["mnemon",{"_index":3545,"title":{},"content":{"818":{},"820":{}}}],["mnft",{"_index":3274,"title":{},"content":{"723":{},"725":{}}}],["mobil",{"_index":458,"title":{"597":{}},"content":{"181":{},"183":{},"209":{},"818":{},"819":{},"821":{},"822":{},"829":{}}}],["mock",{"_index":2531,"title":{"506":{}},"content":{"499":{},"501":{},"506":{},"507":{},"508":{},"514":{},"515":{},"519":{}}}],["mode",{"_index":601,"title":{},"content":{"188":{},"189":{},"240":{},"518":{},"523":{},"672":{},"806":{},"807":{},"822":{}}}],["mode.sym",{"_index":1282,"title":{},"content":{"246":{}}}],["model",{"_index":1350,"title":{},"content":{"269":{},"328":{},"345":{},"346":{},"603":{},"638":{},"654":{},"686":{},"714":{},"719":{},"780":{}}}],["modern",{"_index":1755,"title":{},"content":{"329":{},"756":{},"819":{}}}],["modif",{"_index":2621,"title":{},"content":{"583":{},"771":{}}}],["modifi",{"_index":1207,"title":{"347":{}},"content":{"246":{},"345":{},"505":{},"583":{},"610":{},"647":{}}}],["modul",{"_index":1086,"title":{"604":{},"781":{}},"content":{"227":{},"328":{},"335":{},"353":{},"366":{},"367":{},"369":{},"370":{},"404":{},"484":{},"604":{},"627":{},"629":{},"657":{},"698":{},"781":{},"784":{}}}],["module.funct",{"_index":1957,"title":{},"content":{"371":{}}}],["module.function(arg1",{"_index":1954,"title":{},"content":{"371":{}}}],["modulo",{"_index":2427,"title":{},"content":{"474":{}}}],["moment",{"_index":2709,"title":{},"content":{"580":{},"609":{}}}],["monitor",{"_index":1116,"title":{},"content":{"236":{},"676":{}}}],["monopoli",{"_index":3018,"title":{},"content":{"646":{}}}],["month",{"_index":2107,"title":{},"content":{"388":{},"401":{},"750":{},"752":{}}}],["more",{"_index":540,"title":{},"content":{"183":{},"200":{},"216":{},"230":{},"240":{},"241":{},"256":{},"259":{},"297":{},"324":{},"369":{},"389":{},"468":{},"480":{},"501":{},"623":{},"628":{},"634":{},"638":{},"645":{},"646":{},"660":{},"661":{},"669":{},"695":{},"698":{},"709":{},"715":{},"719":{},"750":{},"751":{},"781":{},"820":{},"829":{},"859":{}}}],["moreov",{"_index":2725,"title":{},"content":{"593":{},"710":{}}}],["morpholog",{"_index":3170,"title":{},"content":{"699":{}}}],["mostli",{"_index":200,"title":{},"content":{"49":{},"130":{},"367":{}}}],["motiv",{"_index":2809,"title":{"619":{},"747":{}},"content":{"748":{}}}],["move",{"_index":726,"title":{"565":{},"566":{}},"content":{"190":{},"191":{},"245":{},"262":{},"645":{},"726":{},"819":{}}}],["movement",{"_index":144,"title":{},"content":{"31":{},"83":{},"354":{},"519":{},"579":{},"625":{},"687":{},"693":{},"715":{}}}],["movementsaddress",{"_index":310,"title":{},"content":{"77":{}}}],["mr.x",{"_index":2090,"title":{},"content":{"386":{}}}],["mrs.i",{"_index":2091,"title":{},"content":{"386":{}}}],["msb",{"_index":1195,"title":{},"content":{"245":{}}}],["msg",{"_index":1762,"title":{},"content":{"330":{}}}],["msgpack",{"_index":1775,"title":{},"content":{"331":{}}}],["much",{"_index":1443,"title":{},"content":{"255":{},"361":{}}}],["muco",{"_index":3316,"title":{},"content":{"730":{},"731":{}}}],["multi",{"_index":2009,"title":{},"content":{"373":{},"649":{},"673":{},"698":{},"818":{}}}],["multicast",{"_index":1753,"title":{},"content":{"329":{},"334":{},"620":{},"673":{},"678":{},"698":{}}}],["multichain",{"_index":874,"title":{},"content":{"197":{}}}],["multidimension",{"_index":3121,"title":{},"content":{"682":{}}}],["multilin",{"_index":2029,"title":{},"content":{"376":{}}}],["multimedia",{"_index":1001,"title":{},"content":{"216":{}}}],["multipl",{"_index":1120,"title":{"403":{}},"content":{"237":{},"238":{},"256":{},"257":{},"298":{},"303":{},"304":{},"309":{},"330":{},"398":{},"403":{},"506":{},"579":{},"634":{},"638":{},"658":{},"661":{},"665":{},"682":{},"693":{},"698":{},"762":{},"791":{},"818":{}}}],["multiplex",{"_index":1756,"title":{"330":{}},"content":{"329":{},"330":{},"332":{}}}],["multireferenti",{"_index":3187,"title":{},"content":{"699":{}}}],["multise",{"_index":2708,"title":{},"content":{"580":{},"609":{}}}],["multisignatur",{"_index":2749,"title":{},"content":{"604":{},"781":{}}}],["multitud",{"_index":2949,"title":{},"content":{"641":{}}}],["mumbai",{"_index":2758,"title":{"612":{}},"content":{"612":{}}}],["mutabl",{"_index":1909,"title":{},"content":{"365":{},"698":{}}}],["mutat",{"_index":1499,"title":{},"content":{"259":{},"404":{},"483":{},"484":{},"485":{},"486":{},"488":{},"490":{},"492":{},"816":{}}}],["my_websit",{"_index":3413,"title":{},"content":{"758":{}}}],["myamazingcontract",{"_index":1995,"title":{},"content":{"354":{}}}],["myimageaeweb",{"_index":2658,"title":{},"content":{"558":{}}}],["mynewservic",{"_index":1750,"title":{},"content":{"327":{}}}],["myseedphras",{"_index":2657,"title":{},"content":{"558":{},"766":{},"767":{}}}],["n",{"_index":953,"title":{},"content":{"204":{},"209":{},"210":{},"356":{},"365":{}}}],["name",{"_index":205,"title":{"352":{},"399":{},"556":{},"753":{}},"content":{"55":{},"125":{},"204":{},"261":{},"263":{},"304":{},"352":{},"358":{},"361":{},"364":{},"365":{},"369":{},"399":{},"403":{},"482":{},"588":{},"589":{},"590":{},"618":{},"624":{},"722":{},"723":{},"725":{},"752":{},"753":{},"754":{},"770":{},"812":{},"821":{},"837":{},"842":{},"848":{},"851":{},"855":{},"857":{}}}],["name}#{new_lin",{"_index":1918,"title":{},"content":{"365":{}}}],["nano",{"_index":468,"title":{},"content":{"181":{},"183":{}}}],["narr",{"_index":3023,"title":{},"content":{"646":{}}}],["nativ",{"_index":3008,"title":{"719":{}},"content":{"645":{},"672":{},"718":{},"719":{},"744":{},"752":{},"785":{},"819":{}}}],["natur",{"_index":3351,"title":{},"content":{"750":{}}}],["navig",{"_index":3521,"title":{},"content":{"802":{},"806":{},"807":{}}}],["nb",{"_index":952,"title":{},"content":{"204":{},"266":{},"298":{},"661":{}}}],["nb_replica",{"_index":3057,"title":{},"content":{"661":{}}}],["nbconfirm",{"_index":277,"title":{},"content":{"67":{},"840":{},"843":{}}}],["near",{"_index":2573,"title":{},"content":{"513":{},"642":{}}}],["nearbi",{"_index":3200,"title":{},"content":{"700":{}}}],["nearest",{"_index":378,"title":{},"content":{"110":{},"671":{}}}],["nearestendpoint",{"_index":136,"title":{"110":{}},"content":{"30":{},"110":{}}}],["necessari",{"_index":2653,"title":{},"content":{"558":{},"714":{},"715":{},"758":{},"770":{},"794":{},"822":{}}}],["need",{"_index":615,"title":{},"content":{"188":{},"189":{},"216":{},"217":{},"227":{},"229":{},"237":{},"256":{},"257":{},"258":{},"259":{},"260":{},"262":{},"266":{},"297":{},"313":{},"322":{},"327":{},"347":{},"348":{},"353":{},"360":{},"391":{},"392":{},"400":{},"401":{},"442":{},"452":{},"456":{},"457":{},"499":{},"507":{},"610":{},"612":{},"634":{},"638":{},"641":{},"644":{},"646":{},"682":{},"684":{},"695":{},"702":{},"714":{},"719":{},"734":{},"744":{},"748":{},"750":{},"753":{},"754":{},"755":{},"758":{},"759":{},"767":{},"802":{},"804":{},"805":{},"809":{},"817":{},"821":{},"822":{}}}],["needl",{"_index":2171,"title":{},"content":{"407":{},"425":{}}}],["neg",{"_index":418,"title":{},"content":{"155":{}}}],["neighbor",{"_index":3094,"title":{},"content":{"671":{},"672":{}}}],["nest",{"_index":1517,"title":{"710":{}},"content":{"260":{},"367":{}}}],["network",{"_index":26,"title":{"233":{},"570":{},"571":{},"580":{},"609":{},"644":{},"663":{},"675":{},"692":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{}},"content":{"7":{},"28":{},"37":{},"70":{},"101":{},"104":{},"107":{},"111":{},"112":{},"114":{},"115":{},"117":{},"118":{},"119":{},"120":{},"123":{},"126":{},"128":{},"129":{},"131":{},"133":{},"134":{},"137":{},"139":{},"147":{},"213":{},"215":{},"216":{},"227":{},"232":{},"233":{},"262":{},"266":{},"300":{},"304":{},"306":{},"315":{},"317":{},"320":{},"331":{},"332":{},"334":{},"335":{},"336":{},"404":{},"505":{},"521":{},"525":{},"567":{},"568":{},"571":{},"579":{},"580":{},"593":{},"598":{},"609":{},"612":{},"613":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"628":{},"631":{},"635":{},"639":{},"641":{},"645":{},"647":{},"657":{},"658":{},"659":{},"660":{},"661":{},"663":{},"665":{},"666":{},"669":{},"670":{},"671":{},"672":{},"673":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"683":{},"685":{},"686":{},"688":{},"689":{},"692":{},"693":{},"695":{},"696":{},"698":{},"699":{},"700":{},"704":{},"708":{},"713":{},"727":{},"728":{},"746":{},"749":{},"750":{},"758":{},"767":{},"787":{},"805":{},"822":{}}}],["network_issu",{"_index":21,"title":{},"content":{"6":{}}}],["networkarcheth",{"_index":2820,"title":{},"content":{"620":{}}}],["networkfe",{"_index":3307,"title":{},"content":{"715":{}}}],["networkpatch",{"_index":163,"title":{},"content":{"37":{},"334":{}}}],["networktransact",{"_index":263,"title":{"115":{}},"content":{"72":{},"115":{},"160":{},"172":{}}}],["networktransactions.pag",{"_index":382,"title":{},"content":{"116":{}}}],["networktransactions.typ",{"_index":383,"title":{},"content":{"116":{}}}],["never",{"_index":1498,"title":{},"content":{"259":{},"699":{},"722":{},"822":{}}}],["nevertheless",{"_index":1513,"title":{},"content":{"260":{},"687":{}}}],["new",{"_index":434,"title":{"579":{},"695":{}},"content":{"173":{},"212":{},"220":{},"223":{},"226":{},"228":{},"234":{},"247":{},"248":{},"254":{},"257":{},"260":{},"261":{},"262":{},"280":{},"298":{},"313":{},"316":{},"317":{},"318":{},"320":{},"325":{},"327":{},"328":{},"329":{},"345":{},"346":{},"347":{},"349":{},"353":{},"355":{},"359":{},"365":{},"378":{},"381":{},"383":{},"386":{},"389":{},"390":{},"396":{},"427":{},"428":{},"429":{},"485":{},"576":{},"579":{},"606":{},"618":{},"621":{},"622":{},"625":{},"630":{},"638":{},"642":{},"647":{},"649":{},"657":{},"658":{},"659":{},"664":{},"665":{},"667":{},"669":{},"673":{},"675":{},"680":{},"684":{},"685":{},"686":{},"687":{},"691":{},"695":{},"704":{},"707":{},"718":{},"721":{},"746":{},"753":{},"757":{},"763":{},"770":{},"771":{},"784":{},"785":{},"805":{},"810":{},"812":{},"813":{},"858":{}}}],["new/0",{"_index":2197,"title":{"414":{}},"content":{}}],["new_index",{"_index":2035,"title":{},"content":{"376":{}}}],["new_lin",{"_index":1917,"title":{},"content":{"365":{}}}],["new_pric",{"_index":1979,"title":{},"content":{"353":{}}}],["newarcheth",{"_index":1408,"title":{},"content":{"280":{}}}],["newer",{"_index":2941,"title":{},"content":{"630":{}}}],["newli",{"_index":2652,"title":{"558":{}},"content":{}}],["newykindex",{"_index":1406,"title":{},"content":{"280":{}}}],["next",{"_index":673,"title":{"235":{},"353":{}},"content":{"189":{},"191":{},"229":{},"232":{},"234":{},"238":{},"248":{},"251":{},"252":{},"254":{},"298":{},"304":{},"345":{},"346":{},"349":{},"375":{},"389":{},"393":{},"404":{},"483":{},"484":{},"485":{},"486":{},"488":{},"490":{},"492":{},"503":{},"505":{},"618":{},"620":{},"633":{},"638":{},"658":{},"684":{},"706":{},"707":{},"714":{},"752":{},"762":{}}}],["next.cod",{"_index":2021,"title":{},"content":{"375":{}}}],["next.timestamp",{"_index":2022,"title":{},"content":{"376":{}}}],["nextkey",{"_index":1313,"title":{},"content":{"248":{},"249":{},"251":{},"252":{}}}],["nextkeyhandl",{"_index":1309,"title":{},"content":{"248":{}}}],["nextkeyindex",{"_index":1310,"title":{},"content":{"248":{}}}],["nfc",{"_index":3589,"title":{},"content":{"821":{}}}],["nft",{"_index":451,"title":{"558":{},"590":{}},"content":{"181":{},"488":{},"517":{},"590":{},"645":{},"723":{},"725":{},"726":{},"818":{}}}],["nft1",{"_index":2369,"title":{},"content":{"457":{}}}],["nft2",{"_index":2370,"title":{},"content":{"457":{}}}],["nibbl",{"_index":3230,"title":{},"content":{"705":{}}}],["nice",{"_index":2613,"title":{},"content":{"582":{}}}],["nicer",{"_index":3388,"title":{},"content":{"753":{}}}],["nil",{"_index":1876,"title":{},"content":{"358":{},"384":{},"416":{},"423":{},"448":{},"450":{},"478":{},"479":{},"480":{}}}],["nist",{"_index":2886,"title":{},"content":{"636":{},"653":{}}}],["nistp256",{"_index":956,"title":{},"content":{"205":{}}}],["node",{"_index":99,"title":{"37":{},"118":{},"234":{},"240":{},"241":{},"310":{},"315":{},"316":{},"333":{},"338":{},"339":{},"692":{},"728":{}},"content":{"22":{},"37":{},"39":{},"49":{},"110":{},"118":{},"119":{},"130":{},"141":{},"146":{},"152":{},"158":{},"164":{},"166":{},"168":{},"178":{},"181":{},"209":{},"214":{},"215":{},"216":{},"219":{},"226":{},"228":{},"229":{},"230":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"262":{},"266":{},"293":{},"294":{},"296":{},"298":{},"299":{},"300":{},"303":{},"304":{},"306":{},"308":{},"309":{},"310":{},"311":{},"313":{},"315":{},"316":{},"317":{},"318":{},"319":{},"325":{},"328":{},"330":{},"332":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"346":{},"442":{},"462":{},"479":{},"505":{},"519":{},"603":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"628":{},"630":{},"641":{},"647":{},"657":{},"658":{},"660":{},"663":{},"665":{},"667":{},"668":{},"669":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"678":{},"679":{},"680":{},"681":{},"682":{},"684":{},"686":{},"687":{},"688":{},"691":{},"692":{},"693":{},"704":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"715":{},"727":{},"728":{},"729":{},"730":{},"734":{},"735":{},"744":{},"745":{},"754":{},"758":{},"762":{},"763":{},"764":{},"780":{},"802":{},"822":{}}}],["node'",{"_index":101,"title":{},"content":{"22":{},"28":{},"111":{},"628":{},"693":{},"715":{}}}],["node.author",{"_index":167,"title":{},"content":{"38":{}}}],["node.authorizationd",{"_index":166,"title":{},"content":{"38":{}}}],["node.avail",{"_index":168,"title":{},"content":{"38":{}}}],["node.averageavail",{"_index":169,"title":{},"content":{"38":{}}}],["node.enrollmentd",{"_index":170,"title":{},"content":{"38":{}}}],["node.firstpublickey",{"_index":171,"title":{},"content":{"38":{}}}],["node.geopatch",{"_index":172,"title":{},"content":{"38":{}}}],["node.git",{"_index":2583,"title":{},"content":{"522":{}}}],["node.ip",{"_index":173,"title":{},"content":{"38":{}}}],["node.lastpublickey",{"_index":174,"title":{},"content":{"38":{}}}],["node.networkpatch",{"_index":175,"title":{},"content":{"38":{}}}],["node.originpublickey",{"_index":176,"title":{},"content":{"38":{}}}],["node.port",{"_index":177,"title":{},"content":{"38":{}}}],["node.rewardaddress",{"_index":178,"title":{},"content":{"38":{}}}],["node_reward",{"_index":3314,"title":{"730":{}},"content":{}}],["node_shared_secret",{"_index":3312,"title":{"729":{}},"content":{}}],["nodej",{"_index":554,"title":{},"content":{"183":{},"522":{},"765":{}}}],["nodeproof",{"_index":3305,"title":{},"content":{"715":{}}}],["nodepublickey",{"_index":102,"title":{},"content":{"22":{}}}],["non",{"_index":10,"title":{"633":{},"723":{}},"content":{"3":{},"5":{},"25":{},"102":{},"108":{},"113":{},"116":{},"124":{},"127":{},"132":{},"135":{},"155":{},"157":{},"176":{},"179":{},"182":{},"330":{},"455":{},"510":{},"519":{},"583":{},"607":{},"633":{},"638":{},"647":{},"651":{},"665":{},"715":{},"723":{},"725":{},"785":{},"817":{}}}],["non_fungible_token_address",{"_index":2355,"title":{},"content":{"455":{}}}],["nonc",{"_index":199,"title":{},"content":{"49":{},"129":{},"130":{},"233":{},"234":{},"241":{},"266":{},"313":{},"505":{},"519":{},"619":{},"624":{},"688":{},"805":{}}}],["none",{"_index":1322,"title":{},"content":{"252":{}}}],["nonneginteg",{"_index":85,"title":{"155":{}},"content":{"19":{},"20":{},"70":{},"71":{},"134":{},"135":{},"155":{}}}],["nosql",{"_index":1459,"title":{},"content":{"256":{}}}],["notat",{"_index":2199,"title":{},"content":{"414":{},"416":{}}}],["note",{"_index":642,"title":{},"content":{"189":{},"328":{},"353":{},"367":{},"373":{},"376":{},"401":{},"434":{},"518":{},"715":{},"721":{},"732":{},"794":{},"798":{},"829":{}}}],["noth",{"_index":2973,"title":{},"content":{"653":{},"687":{}}}],["notic",{"_index":2044,"title":{},"content":{"378":{},"757":{}}}],["notif",{"_index":1566,"title":{"706":{},"711":{}},"content":{"262":{},"707":{},"709":{},"711":{},"818":{},"822":{}}}],["notifi",{"_index":433,"title":{},"content":{"173":{},"175":{},"178":{},"228":{},"262":{},"479":{},"625":{},"667":{},"707":{},"709":{},"710":{},"711":{}}}],["nouc",{"_index":3527,"title":{},"content":{"805":{}}}],["nounc",{"_index":3528,"title":{},"content":{"805":{}}}],["now",{"_index":720,"title":{},"content":{"190":{},"191":{},"201":{},"241":{},"266":{},"499":{},"501":{},"503":{},"505":{},"509":{},"518":{},"565":{},"588":{},"630":{},"638":{},"641":{},"646":{},"706":{},"726":{},"751":{},"752":{},"779":{},"785":{}}}],["now/0",{"_index":2302,"title":{"442":{}},"content":{}}],["nowaday",{"_index":3253,"title":{},"content":{"718":{},"747":{}}}],["npm",{"_index":560,"title":{},"content":{"184":{},"522":{}}}],["nuclear",{"_index":2857,"title":{},"content":{"623":{}}}],["null",{"_index":11,"title":{},"content":{"3":{},"5":{},"102":{},"108":{},"113":{},"116":{},"124":{},"127":{},"132":{},"135":{},"176":{},"179":{},"188":{},"189":{},"190":{},"249":{}}}],["number",{"_index":209,"title":{},"content":{"55":{},"125":{},"155":{},"159":{},"200":{},"201":{},"262":{},"264":{},"294":{},"296":{},"299":{},"307":{},"310":{},"367":{},"384":{},"386":{},"389":{},"404":{},"406":{},"408":{},"409":{},"415":{},"424":{},"468":{},"471":{},"472":{},"473":{},"474":{},"486":{},"488":{},"644":{},"650":{},"661":{},"665":{},"677":{},"698":{},"710":{},"820":{},"821":{},"822":{},"839":{},"840":{},"843":{},"848":{},"851":{},"857":{}}}],["number_of_tokens(amount_send",{"_index":2068,"title":{},"content":{"384":{}}}],["number_of_tokens(uco_amount",{"_index":2072,"title":{},"content":{"384":{}}}],["number_of_uco_s",{"_index":2064,"title":{},"content":{"384":{}}}],["numer",{"_index":414,"title":{},"content":{"157":{}}}],["o",{"_index":2979,"title":{},"content":{"653":{}}}],["o(1",{"_index":2243,"title":{},"content":{"428":{}}}],["o(n",{"_index":2244,"title":{},"content":{"428":{}}}],["o_{key",{"_index":652,"title":{},"content":{"189":{}}}],["o_{priv",{"_index":887,"title":{},"content":{"198":{},"202":{}}}],["o_{pub",{"_index":888,"title":{},"content":{"198":{},"202":{}}}],["object",{"_index":30,"title":{"547":{}},"content":{"8":{},"14":{},"16":{},"18":{},"20":{},"24":{},"26":{},"27":{},"32":{},"33":{},"35":{},"36":{},"41":{},"44":{},"45":{},"47":{},"48":{},"54":{},"56":{},"60":{},"62":{},"63":{},"71":{},"76":{},"79":{},"82":{},"85":{},"88":{},"90":{},"91":{},"94":{},"96":{},"97":{},"103":{},"106":{},"111":{},"114":{},"117":{},"119":{},"122":{},"125":{},"128":{},"130":{},"133":{},"136":{},"139":{},"141":{},"143":{},"146":{},"148":{},"150":{},"152":{},"154":{},"158":{},"162":{},"164":{},"166":{},"168":{},"170":{},"174":{},"177":{},"180":{},"246":{},"253":{},"272":{},"274":{},"279":{},"280":{},"286":{},"288":{},"298":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"583":{},"698":{},"745":{},"816":{},"822":{},"839":{},"857":{}}}],["objectattribut",{"_index":1236,"title":{},"content":{"246":{}}}],["observ",{"_index":3588,"title":{},"content":{"821":{}}}],["obtain",{"_index":1648,"title":{},"content":{"304":{},"623":{},"699":{},"785":{},"787":{}}}],["occas",{"_index":3122,"title":{},"content":{"682":{}}}],["occur",{"_index":2691,"title":{"574":{},"615":{}},"content":{"781":{}}}],["offer",{"_index":2057,"title":{"384":{}},"content":{"638":{},"648":{},"695":{},"706":{},"819":{},"822":{},"823":{}}}],["offic",{"_index":3367,"title":{},"content":{"751":{}}}],["offici",{"_index":498,"title":{},"content":{"181":{},"341":{},"342":{},"343":{}}}],["offlin",{"_index":463,"title":{},"content":{"181":{},"237":{},"309":{},"682":{},"822":{}}}],["offset",{"_index":1426,"title":{},"content":{"262":{},"263":{},"288":{},"290":{},"292":{}}}],["oin",{"_index":3139,"title":{},"content":{"696":{}}}],["old",{"_index":2788,"title":{},"content":{"587":{}}}],["omit",{"_index":1936,"title":{},"content":{"367":{}}}],["omp",{"_index":1605,"title":{},"content":{"296":{}}}],["on",{"_index":474,"title":{"538":{},"559":{},"561":{},"562":{}},"content":{"181":{},"228":{},"230":{},"246":{},"254":{},"262":{},"263":{},"273":{},"297":{},"347":{},"356":{},"359":{},"369":{},"376":{},"395":{},"492":{},"505":{},"507":{},"536":{},"537":{},"538":{},"539":{},"565":{},"576":{},"620":{},"633":{},"641":{},"645":{},"646":{},"647":{},"653":{},"654":{},"659":{},"698":{},"699":{},"702":{},"704":{},"739":{},"742":{},"748":{},"761":{},"767":{},"774":{},"779":{},"802":{},"805":{},"811":{},"813":{},"819":{},"822":{},"831":{}}}],["onc",{"_index":514,"title":{},"content":{"181":{},"183":{},"191":{},"201":{},"213":{},"234":{},"235":{},"262":{},"280":{},"299":{},"307":{},"383":{},"479":{},"505":{},"565":{},"587":{},"588":{},"625":{},"628":{},"651":{},"652":{},"679":{},"681":{},"684":{},"696":{},"707":{},"711":{},"714":{},"735":{},"750":{},"751":{},"762":{},"765":{},"770":{},"771":{},"772":{},"773":{},"779":{},"805":{},"826":{}}}],["onchain",{"_index":576,"title":{},"content":{"186":{},"191":{},"197":{},"198":{},"202":{},"209":{},"211":{},"533":{},"534":{},"535":{}}}],["one'",{"_index":2944,"title":{},"content":{"641":{}}}],["ongo",{"_index":3508,"title":{},"content":{"794":{}}}],["onlin",{"_index":2512,"title":{},"content":{"504":{},"652":{},"774":{},"822":{}}}],["open",{"_index":1783,"title":{"648":{}},"content":{"334":{},"499":{},"505":{},"509":{},"581":{},"589":{},"645":{},"648":{},"696":{},"744":{},"819":{},"822":{},"823":{}}}],["oper",{"_index":137,"title":{},"content":{"31":{},"34":{},"95":{},"189":{},"246":{},"257":{},"296":{},"345":{},"349":{},"597":{},"604":{},"622":{},"627":{},"630":{},"678":{},"698":{},"699":{},"715":{},"754":{},"781":{},"816":{}}}],["operationsuco",{"_index":3301,"title":{},"content":{"715":{}}}],["opportun",{"_index":3044,"title":{},"content":{"648":{}}}],["opposit",{"_index":3207,"title":{},"content":{"685":{}}}],["optim",{"_index":1511,"title":{},"content":{"260":{},"331":{},"620":{},"698":{},"786":{}}}],["option",{"_index":1367,"title":{"558":{},"796":{}},"content":{"272":{},"367":{},"371":{},"373":{},"488":{},"507":{},"517":{},"576":{},"577":{},"770":{},"789":{},"790":{},"792":{},"848":{},"851":{},"857":{}}}],["oracl",{"_index":180,"title":{"318":{},"324":{},"379":{},"402":{},"503":{},"732":{}},"content":{"40":{},"120":{},"122":{},"173":{},"174":{},"319":{},"322":{},"325":{},"328":{},"346":{},"351":{},"353":{},"356":{},"373":{},"379":{},"380":{},"381":{},"395":{},"402":{},"503":{},"579":{},"599":{},"660":{},"663":{},"667":{},"732":{},"733":{}}}],["oracle_summari",{"_index":3319,"title":{"733":{}},"content":{}}],["oraclechain",{"_index":1699,"title":{"311":{},"322":{},"328":{},"666":{}},"content":{"311":{},"318":{},"322":{},"324":{},"328":{},"345":{},"346":{},"666":{},"667":{},"668":{}}}],["oracledata",{"_index":179,"title":{"40":{},"120":{}},"content":{"40":{},"42":{},"45":{},"120":{},"122":{},"168":{},"173":{},"174":{}}}],["oracledata.servic",{"_index":183,"title":{},"content":{"41":{}}}],["oracledata.timestamp",{"_index":184,"title":{},"content":{"41":{},"121":{}}}],["oracleservic",{"_index":182,"title":{"43":{}},"content":{"40":{},"41":{},"43":{},"82":{}}}],["oracleservices.uco",{"_index":189,"title":{},"content":{"44":{}}}],["oraclesummari",{"_index":1703,"title":{"319":{}},"content":{}}],["oracleupd",{"_index":185,"title":{"173":{}},"content":{"42":{},"173":{}}}],["order",{"_index":33,"title":{},"content":{"9":{},"10":{},"131":{},"181":{},"190":{},"191":{},"201":{},"202":{},"213":{},"220":{},"223":{},"260":{},"261":{},"262":{},"264":{},"338":{},"339":{},"346":{},"349":{},"428":{},"480":{},"558":{},"588":{},"634":{},"635":{},"638":{},"651":{},"721":{},"725":{},"785":{},"802":{},"805":{},"820":{},"822":{},"823":{},"829":{}}}],["ordinari",{"_index":3389,"title":{},"content":{"754":{}}}],["organ",{"_index":2870,"title":{},"content":{"621":{},"635":{},"647":{},"654":{},"698":{}}}],["origin",{"_index":340,"title":{"189":{},"194":{},"306":{},"634":{},"736":{}},"content":{"95":{},"186":{},"189":{},"194":{},"198":{},"207":{},"209":{},"305":{},"306":{},"307":{},"315":{},"621":{},"623":{},"634":{},"636":{},"715":{},"780":{},"781":{},"792":{},"858":{}}}],["origin_famili",{"_index":2007,"title":{},"content":{"373":{},"392":{}}}],["origin_typ",{"_index":967,"title":{},"content":{"209":{}}}],["originprivatekey",{"_index":713,"title":{},"content":{"190":{},"191":{}}}],["originpublickey",{"_index":164,"title":{},"content":{"37":{}}}],["originsignatur",{"_index":243,"title":{},"content":{"70":{},"858":{}}}],["os_perso_derive_node_with_se",{"_index":675,"title":{},"content":{"189":{}}}],["other",{"_index":1588,"title":{},"content":{"266":{},"621":{},"641":{},"727":{}}}],["otherwis",{"_index":402,"title":{},"content":{"142":{},"237":{},"245":{},"253":{},"258":{},"265":{},"468":{},"469":{},"795":{}}}],["otp",{"_index":3542,"title":{},"content":{"818":{},"821":{},"822":{}}}],["ought",{"_index":2623,"title":{},"content":{"583":{}}}],["ourselv",{"_index":2942,"title":{},"content":{"641":{}}}],["out",{"_index":1041,"title":{},"content":{"216":{},"386":{},"630":{},"686":{},"749":{},"816":{},"821":{}}}],["outdat",{"_index":1663,"title":{},"content":{"304":{}}}],["outer",{"_index":1180,"title":{},"content":{"244":{}}}],["outgo",{"_index":1858,"title":{},"content":{"356":{},"671":{},"674":{}}}],["outperform",{"_index":2980,"title":{},"content":{"644":{},"701":{}}}],["output",{"_index":146,"title":{},"content":{"31":{},"92":{},"188":{},"309":{},"310":{},"500":{},"501":{},"507":{},"508":{},"523":{},"584":{},"625":{},"665":{},"693":{},"714":{},"715":{}}}],["outsid",{"_index":1941,"title":{},"content":{"369":{},"370":{},"404":{},"603":{},"714":{},"780":{},"785":{}}}],["over",{"_index":1098,"title":{},"content":{"229":{},"257":{},"630":{},"658":{},"674":{},"706":{},"707":{},"712":{},"781":{}}}],["overal",{"_index":3053,"title":{},"content":{"661":{},"712":{}}}],["overcom",{"_index":2804,"title":{},"content":{"618":{},"701":{}}}],["overhead",{"_index":943,"title":{},"content":{"202":{},"330":{},"701":{}}}],["overlap",{"_index":3211,"title":{},"content":{"687":{}}}],["overload",{"_index":3243,"title":{},"content":{"708":{}}}],["overview",{"_index":3223,"title":{},"content":{"702":{}}}],["overwritten",{"_index":825,"title":{},"content":{"191":{}}}],["ovh",{"_index":2645,"title":{},"content":{"556":{},"755":{}}}],["own",{"_index":3017,"title":{},"content":{"646":{}}}],["owner",{"_index":1822,"title":{},"content":{"346":{},"654":{},"698":{},"767":{}}}],["ownership",{"_index":59,"title":{"46":{},"519":{}},"content":{"14":{},"25":{},"26":{},"46":{},"55":{},"56":{},"125":{},"154":{},"207":{},"313":{},"353":{},"396":{},"490":{},"505":{},"519":{},"646":{},"715":{},"718":{},"724":{},"742":{},"757":{},"805":{}}}],["ownership.authorizedpublickey",{"_index":193,"title":{},"content":{"47":{}}}],["ownership.secret",{"_index":194,"title":{},"content":{"47":{}}}],["ownership_length",{"_index":804,"title":{},"content":{"191":{}}}],["p1",{"_index":587,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{}}}],["p2",{"_index":589,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{}}}],["p2p",{"_index":1005,"title":{"236":{},"323":{},"335":{},"669":{}},"content":{"216":{},"228":{},"234":{},"237":{},"238":{},"266":{},"303":{},"309":{},"329":{},"332":{},"334":{},"335":{},"336":{},"619":{},"620":{},"624":{},"669":{},"670":{},"675":{},"676":{},"678":{},"688":{},"693":{},"698":{},"715":{},"747":{},"749":{},"777":{}}}],["p2pavail",{"_index":78,"title":{"161":{}},"content":{"19":{},"20":{},"161":{}}}],["packag",{"_index":1796,"title":{},"content":{"343":{},"761":{},"800":{},"823":{},"826":{}}}],["pad",{"_index":3601,"title":{},"content":{"822":{}}}],["page",{"_index":380,"title":{},"content":{"115":{},"137":{},"371":{},"404":{},"582":{},"588":{},"715":{},"751":{},"755":{},"761":{},"800":{},"801":{},"815":{},"819":{},"822":{}}}],["pagin",{"_index":3236,"title":{},"content":{"706":{}}}],["pagingaddress",{"_index":387,"title":{},"content":{"131":{}}}],["pagingoffset",{"_index":84,"title":{},"content":{"19":{},"70":{},"134":{}}}],["pair",{"_index":891,"title":{},"content":{"198":{},"261":{},"263":{},"326":{},"628":{},"830":{}}}],["panel",{"_index":2524,"title":{},"content":{"499":{},"500":{},"505":{},"506":{},"509":{},"510":{}}}],["paradigm",{"_index":898,"title":{},"content":{"200":{},"685":{}}}],["parallel",{"_index":1606,"title":{},"content":{"296":{}}}],["param",{"_index":644,"title":{},"content":{"189":{},"726":{}}}],["paramet",{"_index":597,"title":{},"content":{"188":{},"246":{},"247":{},"248":{},"251":{},"352":{},"391":{},"395":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"436":{},"437":{},"438":{},"439":{},"440":{},"444":{},"445":{},"446":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"455":{},"456":{},"457":{},"460":{},"463":{},"464":{},"466":{},"468":{},"469":{},"471":{},"472":{},"473":{},"474":{},"479":{},"480":{},"482":{},"483":{},"484":{},"485":{},"486":{},"488":{},"490":{},"492":{},"495":{},"496":{},"643":{},"762":{},"767":{}}}],["parameters.eccdetail",{"_index":1278,"title":{},"content":{"246":{}}}],["params:coin_typ",{"_index":772,"title":{},"content":{"190":{}}}],["parent",{"_index":1232,"title":{},"content":{"246":{},"365":{}}}],["parent'",{"_index":1913,"title":{},"content":{"365":{}}}],["parenthesi",{"_index":1956,"title":{},"content":{"371":{},"373":{},"376":{}}}],["pariti",{"_index":3487,"title":{},"content":{"784":{},"785":{}}}],["pars",{"_index":371,"title":{},"content":{"109":{},"144":{},"147":{},"163":{},"313":{},"325":{},"326":{},"400":{},"762":{}}}],["parse/1",{"_index":2293,"title":{"439":{}},"content":{}}],["part",{"_index":736,"title":{},"content":{"190":{},"191":{},"216":{},"247":{},"254":{},"298":{},"304":{},"376":{},"398":{},"506":{},"565":{},"623":{},"628":{},"654":{},"658":{},"699":{},"759":{},"779":{},"829":{}}}],["parti",{"_index":580,"title":{},"content":{"186":{},"216":{},"641":{},"651":{},"652":{},"822":{}}}],["particip",{"_index":3080,"title":{},"content":{"658":{},"669":{},"675":{}}}],["particular",{"_index":2921,"title":{"662":{}},"content":{"628":{},"698":{}}}],["partit",{"_index":1571,"title":{},"content":{"263":{}}}],["pass",{"_index":1291,"title":{},"content":{"246":{},"247":{},"251":{},"304":{},"352":{},"374":{},"376":{},"378":{},"380":{},"658":{},"735":{},"761":{},"822":{}}}],["passphras",{"_index":2656,"title":{},"content":{"558":{},"642":{}}}],["password",{"_index":962,"title":{"642":{}},"content":{"207":{},"246":{},"588":{},"642":{},"652":{},"695":{},"817":{},"818":{},"821":{},"822":{}}}],["patch",{"_index":1597,"title":{},"content":{"294":{},"320":{},"336":{},"479":{}}}],["patent",{"_index":3123,"title":{"694":{},"695":{},"697":{}},"content":{"695":{},"696":{}}}],["path",{"_index":876,"title":{"200":{},"264":{},"265":{}},"content":{"197":{},"200":{},"201":{},"204":{},"264":{},"265":{},"436":{},"437":{},"558":{},"650":{},"653":{},"758":{},"762":{},"767":{},"812":{},"846":{},"848":{},"851":{},"857":{}}}],["path_extract/2",{"_index":2280,"title":{"436":{}},"content":{}}],["path_match?/2",{"_index":2284,"title":{"437":{}},"content":{}}],["pathsuffix",{"_index":3648,"title":{},"content":{"848":{},"851":{},"857":{}}}],["pattern",{"_index":2129,"title":{},"content":{"395":{},"432":{},"433":{},"434":{},"607":{},"785":{}}}],["pay",{"_index":2655,"title":{},"content":{"558":{},"567":{},"750":{},"767":{}}}],["payload",{"_index":2534,"title":{},"content":{"500":{},"501":{},"510":{},"833":{},"836":{},"845":{},"854":{}}}],["payment",{"_index":2661,"title":{},"content":{"561":{},"645":{},"695":{}}}],["peer",{"_index":1119,"title":{},"content":{"237":{},"330":{},"593":{},"602":{},"620":{},"779":{},"780":{}}}],["pend",{"_index":1610,"title":{"312":{},"716":{}},"content":{"297":{},"303":{},"308":{},"711":{},"715":{}}}],["peopl",{"_index":2580,"title":{},"content":{"521":{},"635":{},"645":{},"744":{}}}],["per",{"_index":678,"title":{},"content":{"189":{},"356":{},"403":{},"479":{},"499":{},"610":{},"644":{},"767":{},"794":{}}}],["perform",{"_index":138,"title":{},"content":{"31":{},"34":{},"61":{},"89":{},"95":{},"186":{},"189":{},"190":{},"191":{},"202":{},"213":{},"217":{},"230":{},"232":{},"236":{},"237":{},"250":{},"254":{},"260":{},"262":{},"264":{},"265":{},"295":{},"309":{},"312":{},"315":{},"316":{},"320":{},"321":{},"325":{},"338":{},"345":{},"395":{},"463":{},"479":{},"480":{},"558":{},"621":{},"630":{},"637":{},"658":{},"665":{},"671":{},"678":{},"684":{},"688":{},"699":{},"715":{},"719":{},"744":{},"757":{},"758":{},"785":{},"786":{},"819":{},"822":{},"828":{}}}],["performecdh",{"_index":705,"title":{},"content":{"190":{},"191":{}}}],["performecdh(uint8_t",{"_index":708,"title":{},"content":{"190":{},"191":{}}}],["performecdsa",{"_index":811,"title":{},"content":{"191":{}}}],["performecdsa(uint8_t",{"_index":812,"title":{},"content":{"191":{}}}],["period",{"_index":1118,"title":{},"content":{"237":{},"316":{},"319":{},"602":{},"671":{},"779":{},"784":{}}}],["peripheri",{"_index":3204,"title":{},"content":{"700":{}}}],["perman",{"_index":3161,"title":{},"content":{"698":{},"764":{},"770":{}}}],["permissionless",{"_index":3087,"title":{},"content":{"669":{}}}],["permit",{"_index":2636,"title":{},"content":{"584":{},"688":{},"715":{}}}],["persist",{"_index":1522,"title":{},"content":{"261":{},"266":{},"683":{},"684":{},"707":{},"822":{}}}],["person",{"_index":1555,"title":{},"content":{"262":{},"641":{},"647":{},"649":{},"655":{},"661":{},"762":{}}}],["perspect",{"_index":866,"title":{},"content":{"213":{},"259":{}}}],["phase",{"_index":1103,"title":{},"content":{"230":{},"298":{},"625":{},"658":{},"673":{},"752":{}}}],["photograph",{"_index":3175,"title":{},"content":{"699":{}}}],["photographi",{"_index":3198,"title":{},"content":{"699":{}}}],["phrase",{"_index":2799,"title":{},"content":{"588":{},"820":{},"822":{}}}],["physic",{"_index":460,"title":{},"content":{"181":{},"619":{}}}],["pick",{"_index":1578,"title":{},"content":{"263":{},"674":{}}}],["pillar",{"_index":3034,"title":{},"content":{"647":{}}}],["pin",{"_index":1353,"title":{},"content":{"270":{},"289":{},"290":{},"291":{},"292":{},"588":{},"817":{},"818":{},"821":{},"822":{}}}],["piv",{"_index":1355,"title":{},"content":{"270":{},"272":{},"629":{}}}],["place",{"_index":1476,"title":{},"content":{"257":{},"352":{},"510":{},"660":{}}}],["placehold",{"_index":1965,"title":{},"content":{"352":{}}}],["placement",{"_index":2929,"title":{"630":{}},"content":{}}],["plain",{"_index":400,"title":{},"content":{"142":{},"582":{}}}],["plane",{"_index":3382,"title":{},"content":{"759":{}}}],["platform",{"_index":2784,"title":{},"content":{"588":{},"613":{},"629":{},"645":{},"695":{},"786":{},"819":{},"829":{},"859":{}}}],["play",{"_index":2873,"title":{},"content":{"621":{}}}],["playbook",{"_index":1636,"title":{},"content":{"298":{}}}],["playground",{"_index":2511,"title":{"497":{},"504":{},"505":{},"506":{},"509":{},"510":{}},"content":{"504":{},"507":{},"509":{},"512":{},"519":{}}}],["pleas",{"_index":1800,"title":{},"content":{"342":{},"343":{},"505":{},"583":{},"648":{},"732":{},"815":{}}}],["plugin",{"_index":3561,"title":{},"content":{"819":{}}}],["point",{"_index":1196,"title":{"828":{},"829":{}},"content":{"245":{},"248":{},"251":{},"254":{},"273":{},"274":{},"277":{},"278":{},"280":{},"286":{},"287":{},"290":{},"291":{},"292":{},"362":{},"754":{},"755":{},"785":{}}}],["pointer",{"_index":727,"title":{},"content":{"190":{},"191":{},"761":{}}}],["pointx",{"_index":706,"title":{},"content":{"190":{},"191":{}}}],["polici",{"_index":1222,"title":{},"content":{"246":{},"588":{}}}],["poll",{"_index":1700,"title":{},"content":{"318":{},"328":{},"619":{},"667":{}}}],["pollut",{"_index":3126,"title":{},"content":{"695":{}}}],["polygon",{"_index":2717,"title":{"612":{}},"content":{"593":{},"612":{},"613":{},"777":{}}}],["polymorph",{"_index":2987,"title":{},"content":{"644":{}}}],["pool",{"_index":2678,"title":{},"content":{"565":{},"604":{},"683":{},"687":{},"779":{},"781":{},"784":{},"785":{}}}],["popul",{"_index":1319,"title":{},"content":{"251":{},"335":{}}}],["popular",{"_index":3556,"title":{},"content":{"819":{},"827":{}}}],["popup",{"_index":2795,"title":{},"content":{"588":{},"794":{}}}],["port",{"_index":133,"title":{},"content":{"28":{},"37":{},"232":{},"296":{},"315":{},"334":{},"336":{},"679":{}}}],["portal",{"_index":3363,"title":{},"content":{"751":{}}}],["portion",{"_index":1226,"title":{},"content":{"246":{}}}],["pos_int",{"_index":2345,"title":{},"content":{"452":{},"456":{},"457":{}}}],["pose",{"_index":3014,"title":{},"content":{"646":{}}}],["posinteg",{"_index":83,"title":{"159":{}},"content":{"19":{},"20":{},"70":{},"71":{},"115":{},"116":{},"134":{},"135":{},"137":{},"138":{},"159":{}}}],["posist",{"_index":1425,"title":{},"content":{"288":{}}}],["posit",{"_index":420,"title":{},"content":{"159":{},"262":{},"263":{},"265":{},"284":{},"288":{},"290":{},"679":{},"699":{}}}],["possibl",{"_index":35,"title":{},"content":{"9":{},"227":{},"255":{},"262":{},"329":{},"359":{},"367":{},"384":{},"451":{},"484":{},"580":{},"583":{},"609":{},"619":{},"623":{},"628":{},"630":{},"638":{},"642":{},"647":{},"650":{},"651":{},"652":{},"699":{},"723":{},"725":{},"761":{},"767":{},"813":{},"814":{},"821":{}}}],["post",{"_index":2439,"title":{},"content":{"479":{},"792":{},"793":{}}}],["potenti",{"_index":2746,"title":{},"content":{"604":{},"634":{}}}],["pow",{"_index":2815,"title":{},"content":{"619":{},"644":{}}}],["pow/2",{"_index":2406,"title":{"471":{}},"content":{}}],["power",{"_index":1642,"title":{},"content":{"304":{},"471":{},"654":{},"685":{},"771":{},"799":{}}}],["practic",{"_index":3265,"title":{},"content":{"721":{}}}],["pratic",{"_index":2894,"title":{},"content":{"638":{}}}],["pre",{"_index":3515,"title":{"825":{}},"content":{"800":{}}}],["precis",{"_index":405,"title":{},"content":{"151":{},"362":{},"455":{}}}],["preconfigur",{"_index":3116,"title":{},"content":{"679":{}}}],["predetermin",{"_index":2662,"title":{"563":{},"600":{}},"content":{"561":{}}}],["predict",{"_index":1490,"title":{},"content":{"258":{},"262":{},"622":{},"698":{}}}],["preemptiv",{"_index":2909,"title":{},"content":{"628":{}}}],["prefer",{"_index":479,"title":{},"content":{"181":{},"583":{},"757":{},"822":{}}}],["prefix",{"_index":1889,"title":{},"content":{"359":{},"360":{}}}],["preliminari",{"_index":2860,"title":{},"content":{"625":{}}}],["prepar",{"_index":2567,"title":{},"content":{"510":{}}}],["prepend",{"_index":964,"title":{},"content":{"209":{},"245":{},"261":{},"636":{},"638":{}}}],["prepend/2",{"_index":2242,"title":{"429":{}},"content":{"428":{}}}],["prerequisit",{"_index":538,"title":{"183":{},"787":{}},"content":{"647":{},"655":{}}}],["present",{"_index":1561,"title":{},"content":{"262":{},"265":{},"337":{},"338":{},"391":{},"583":{},"673":{},"771":{}}}],["preserv",{"_index":2454,"title":{},"content":{"480":{}}}],["preset",{"_index":1983,"title":{},"content":{"353":{}}}],["press",{"_index":3524,"title":{},"content":{"803":{},"805":{},"806":{},"807":{},"808":{},"810":{},"811":{},"812":{},"813":{}}}],["pretti",{"_index":1892,"title":{},"content":{"361":{},"500":{}}}],["prevail",{"_index":2630,"title":{},"content":{"583":{}}}],["prevent",{"_index":1174,"title":{},"content":{"243":{},"557":{},"642":{},"651":{},"653":{},"687":{},"821":{}}}],["previou",{"_index":342,"title":{},"content":{"95":{},"191":{},"229":{},"237":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"261":{},"262":{},"282":{},"297":{},"309":{},"310":{},"312":{},"353":{},"375":{},"376":{},"389":{},"393":{},"451":{},"510":{},"633":{},"634":{},"638":{},"680":{},"715":{},"731":{},"733":{},"764":{},"774":{},"858":{}}}],["previous",{"_index":1416,"title":{},"content":{"284":{}}}],["previous.cod",{"_index":2013,"title":{},"content":{"373":{},"375":{}}}],["previous_index",{"_index":2033,"title":{},"content":{"376":{}}}],["previous_public_key",{"_index":2119,"title":{},"content":{"392":{},"393":{},"451":{}}}],["previousaddress",{"_index":244,"title":{},"content":{"70":{}}}],["previouspublickey",{"_index":245,"title":{},"content":{"70":{},"858":{}}}],["previoussignatur",{"_index":246,"title":{},"content":{"70":{},"858":{}}}],["price",{"_index":1741,"title":{"599":{}},"content":{"326":{},"349":{},"380":{},"599":{},"660":{},"661":{},"668":{},"732":{},"818":{},"822":{}}}],["primari",{"_index":1294,"title":{},"content":{"246":{},"247":{},"822":{}}}],["primarili",{"_index":1061,"title":{},"content":{"219":{}}}],["principl",{"_index":1059,"title":{"714":{}},"content":{"218":{},"262":{},"628":{},"744":{}}}],["prior",{"_index":535,"title":{},"content":{"182":{},"312":{}}}],["prioriti",{"_index":3598,"title":{},"content":{"822":{}}}],["privaci",{"_index":1213,"title":{},"content":{"246":{},"332":{},"588":{},"675":{},"695":{},"698":{}}}],["privat",{"_index":477,"title":{},"content":{"181":{},"189":{},"196":{},"198":{},"201":{},"213":{},"246":{},"254":{},"346":{},"565":{},"634":{},"642":{},"669":{},"698":{},"715":{},"758":{},"770":{},"772":{},"779":{},"827":{},"828":{}}}],["privateket",{"_index":821,"title":{},"content":{"191":{}}}],["privatekey",{"_index":669,"title":{},"content":{"189":{},"190":{},"191":{}}}],["probabl",{"_index":2537,"title":{},"content":{"500":{},"801":{}}}],["problem",{"_index":27,"title":{"574":{},"577":{},"615":{},"617":{}},"content":{"7":{},"262":{}}}],["proce",{"_index":2677,"title":{},"content":{"565":{},"567":{},"762":{},"771":{},"779":{}}}],["proceed",{"_index":3495,"title":{},"content":{"786":{}}}],["process",{"_index":604,"title":{"565":{},"576":{},"606":{},"607":{},"674":{},"706":{},"798":{}},"content":{"188":{},"216":{},"217":{},"226":{},"228":{},"231":{},"296":{},"297":{},"299":{},"300":{},"303":{},"304":{},"312":{},"328":{},"349":{},"557":{},"588":{},"603":{},"606":{},"620":{},"627":{},"648":{},"658":{},"679":{},"685":{},"686":{},"698":{},"760":{},"780":{},"784":{},"785":{},"791":{},"794":{}}}],["processor",{"_index":2904,"title":{},"content":{"627":{}}}],["produc",{"_index":963,"title":{},"content":{"209":{},"298":{},"304":{},"442":{},"621":{},"624":{},"653":{},"676":{},"752":{}}}],["product",{"_index":1020,"title":{},"content":{"216":{},"342":{},"540":{},"541":{},"542":{},"543":{},"799":{},"815":{}}}],["profit",{"_index":3026,"title":{},"content":{"647":{}}}],["progess",{"_index":2883,"title":{},"content":{"635":{}}}],["program",{"_index":980,"title":{},"content":{"215":{},"216":{},"295":{},"296":{},"819":{},"826":{}}}],["programm",{"_index":3048,"title":{},"content":{"660":{}}}],["progress",{"_index":2698,"title":{},"content":{"576":{},"659":{},"791":{}}}],["prohibit",{"_index":2866,"title":{},"content":{"621":{},"698":{}}}],["project",{"_index":562,"title":{"696":{}},"content":{"184":{},"188":{},"304":{},"581":{},"647":{},"648":{},"814":{},"823":{}}}],["prometheu",{"_index":1629,"title":{},"content":{"298":{}}}],["promot",{"_index":1036,"title":{},"content":{"216":{},"647":{}}}],["prompt",{"_index":810,"title":{},"content":{"191":{},"770":{},"771":{},"772":{},"773":{},"794":{}}}],["proof",{"_index":121,"title":{"305":{},"621":{},"655":{}},"content":{"25":{},"55":{},"95":{},"125":{},"305":{},"307":{},"561":{},"621":{},"624":{},"634":{},"647":{},"715":{},"718":{},"785":{},"858":{}}}],["proofofintegr",{"_index":344,"title":{},"content":{"95":{}}}],["proofofwork",{"_index":345,"title":{},"content":{"95":{}}}],["prop",{"_index":1645,"title":{},"content":{"304":{},"373":{}}}],["prop1",{"_index":2003,"title":{},"content":{"373":{}}}],["prop2",{"_index":2004,"title":{},"content":{"373":{}}}],["prop3",{"_index":2005,"title":{},"content":{"373":{}}}],["prop4",{"_index":2006,"title":{},"content":{"373":{}}}],["prop_{proposal_address",{"_index":1654,"title":{},"content":{"304":{}}}],["propag",{"_index":3090,"title":{"677":{}},"content":{"670":{},"671":{}}}],["proper",{"_index":1111,"title":{},"content":{"231":{},"658":{}}}],["properti",{"_index":210,"title":{},"content":{"55":{},"125":{},"169":{},"334":{},"347":{},"367":{},"373":{},"374":{},"622":{},"653":{},"661":{},"665":{},"671":{},"673":{},"677":{},"722":{},"723":{},"725":{}}}],["property_nam",{"_index":3270,"title":{},"content":{"722":{}}}],["property_valu",{"_index":3271,"title":{},"content":{"722":{}}}],["propos",{"_index":1607,"title":{"297":{},"320":{}},"content":{"297":{},"298":{},"304":{},"316":{},"318":{},"320":{},"321":{},"581":{},"648":{},"658":{},"859":{}}}],["protect",{"_index":2798,"title":{},"content":{"588":{},"817":{},"822":{},"827":{},"828":{}}}],["protobuf",{"_index":1772,"title":{},"content":{"331":{}}}],["protocol",{"_index":343,"title":{"331":{}},"content":{"95":{},"98":{},"149":{},"150":{},"329":{},"331":{},"332":{},"334":{},"479":{},"647":{},"648":{},"673":{},"679":{},"698":{},"750":{},"780":{},"827":{},"829":{},"859":{}}}],["protocolvers",{"_index":346,"title":{},"content":{"95":{}}}],["prove",{"_index":1559,"title":{},"content":{"262":{},"715":{},"724":{},"757":{},"767":{}}}],["proven",{"_index":1848,"title":{},"content":{"349":{}}}],["provid",{"_index":679,"title":{"755":{}},"content":{"189":{},"201":{},"216":{},"219":{},"220":{},"222":{},"223":{},"225":{},"227":{},"229":{},"241":{},"256":{},"257":{},"259":{},"262":{},"263":{},"293":{},"296":{},"309":{},"311":{},"312":{},"322":{},"324":{},"325":{},"337":{},"347":{},"348":{},"352":{},"389":{},"565":{},"587":{},"593":{},"604":{},"612":{},"618":{},"620":{},"634":{},"635":{},"638":{},"641":{},"644":{},"645":{},"646":{},"647":{},"649":{},"654":{},"675":{},"676":{},"708":{},"709":{},"729":{},"732":{},"747":{},"749":{},"751":{},"754":{},"770":{},"771":{},"772":{},"773":{},"779":{},"780":{},"785":{},"789":{},"794":{},"802":{},"810":{},"820":{},"821":{},"822":{},"829":{}}}],["provis",{"_index":2654,"title":{},"content":{"558":{},"785":{}}}],["pseudo",{"_index":2002,"title":{},"content":{"373":{},"621":{}}}],["pub",{"_index":3619,"title":{},"content":{"826":{}}}],["pub.dev",{"_index":1797,"title":{},"content":{"343":{},"823":{}}}],["public",{"_index":46,"title":{"189":{},"194":{},"209":{},"306":{},"524":{},"633":{},"636":{}},"content":{"12":{},"22":{},"25":{},"46":{},"49":{},"55":{},"95":{},"125":{},"129":{},"130":{},"163":{},"182":{},"183":{},"186":{},"189":{},"191":{},"194":{},"196":{},"197":{},"198":{},"201":{},"202":{},"207":{},"209":{},"212":{},"228":{},"240":{},"244":{},"246":{},"248":{},"251":{},"252":{},"254":{},"261":{},"262":{},"264":{},"272":{},"281":{},"297":{},"305":{},"306":{},"307":{},"313":{},"315":{},"332":{},"334":{},"336":{},"337":{},"338":{},"339":{},"359":{},"386":{},"393":{},"396":{},"446":{},"505":{},"509":{},"519":{},"524":{},"565":{},"621":{},"624":{},"628":{},"633":{},"636":{},"637":{},"638":{},"647":{},"650":{},"652":{},"675":{},"687":{},"692":{},"693":{},"698":{},"714":{},"715":{},"744":{},"770":{},"771":{},"772":{},"779":{},"805":{},"830":{},"847":{},"849":{},"858":{}}}],["public_key",{"_index":2317,"title":{},"content":{"446":{},"490":{}}}],["publicarea",{"_index":1210,"title":{},"content":{"246":{}}}],["publicationstatu",{"_index":3445,"title":{},"content":{"764":{}}}],["publickey",{"_index":56,"title":{"163":{}},"content":{"12":{},"13":{},"22":{},"23":{},"37":{},"38":{},"49":{},"50":{},"70":{},"71":{},"95":{},"96":{},"163":{},"189":{},"190":{},"191":{},"201":{},"244":{},"849":{}}}],["publickeys",{"_index":1321,"title":{"252":{},"283":{},"284":{}},"content":{}}],["publish",{"_index":515,"title":{},"content":{"181":{},"234":{},"343":{},"681":{},"770":{},"771":{},"772":{}}}],["pull",{"_index":2608,"title":{},"content":{"581":{},"583":{},"706":{},"759":{}}}],["pure",{"_index":2939,"title":{},"content":{"630":{}}}],["purpos",{"_index":905,"title":{"557":{}},"content":{"200":{},"262":{},"322":{},"337":{},"373":{},"375":{},"377":{},"379":{},"567":{},"630":{},"647":{},"659":{},"789":{},"792":{},"819":{}}}],["push",{"_index":1819,"title":{},"content":{"346":{},"583":{},"674":{},"759":{}}}],["put",{"_index":1575,"title":{},"content":{"263":{},"479":{},"588":{},"660":{}}}],["qr",{"_index":2792,"title":{},"content":{"587":{},"818":{}}}],["qualif",{"_index":1786,"title":{},"content":{"334":{}}}],["qualifi",{"_index":2831,"title":{},"content":{"620":{},"676":{}}}],["quantiti",{"_index":3504,"title":{},"content":{"793":{}}}],["quantum",{"_index":2876,"title":{"632":{}},"content":{"631":{},"634":{},"714":{}}}],["queri",{"_index":43,"title":{"548":{}},"content":{"11":{},"17":{},"21":{},"30":{},"39":{},"42":{},"51":{},"57":{},"72":{},"75":{},"100":{},"101":{},"104":{},"107":{},"112":{},"115":{},"120":{},"123":{},"126":{},"129":{},"131":{},"134":{},"137":{},"145":{},"146":{},"156":{},"160":{},"168":{},"172":{},"220":{},"223":{},"309":{},"310":{},"335":{},"349":{},"386":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"623":{},"816":{}}}],["question",{"_index":3533,"title":{},"content":{"815":{}}}],["queue",{"_index":1768,"title":{},"content":{"330":{}}}],["quick",{"_index":3595,"title":{},"content":{"821":{}}}],["quicker",{"_index":1725,"title":{},"content":{"328":{}}}],["quickli",{"_index":1122,"title":{},"content":{"237":{},"262":{},"322":{}}}],["quit",{"_index":3344,"title":{},"content":{"749":{}}}],["quorum",{"_index":3036,"title":{},"content":{"647":{},"657":{}}}],["quot",{"_index":1864,"title":{},"content":{"358":{},"359":{}}}],["r",{"_index":1191,"title":{"245":{}},"content":{"245":{},"464":{},"480":{}}}],["r.bodi",{"_index":2453,"title":{},"content":{"480":{}}}],["r.statu",{"_index":2452,"title":{},"content":{"480":{}}}],["race",{"_index":3030,"title":{},"content":{"647":{}}}],["rais",{"_index":2445,"title":{},"content":{"479":{}}}],["ran",{"_index":1674,"title":{},"content":{"303":{}}}],["random",{"_index":1469,"title":{},"content":{"256":{},"506":{},"621":{},"820":{},"822":{}}}],["random.secur",{"_index":3577,"title":{},"content":{"820":{}}}],["randomli",{"_index":2960,"title":{},"content":{"650":{},"671":{},"820":{}}}],["rang",{"_index":1003,"title":{"363":{}},"content":{"216":{},"676":{}}}],["rar",{"_index":3451,"title":{},"content":{"770":{}}}],["rare",{"_index":3047,"title":{},"content":{"660":{},"750":{}}}],["rate",{"_index":3185,"title":{},"content":{"699":{},"781":{}}}],["rational",{"_index":1445,"title":{"256":{}},"content":{}}],["raw",{"_index":692,"title":{},"content":{"189":{},"198":{},"244":{},"245":{},"247":{},"354":{},"519":{}}}],["rawprivatekey",{"_index":676,"title":{},"content":{"189":{}}}],["re",{"_index":1342,"title":{},"content":{"254":{}}}],["reach",{"_index":1579,"title":{},"content":{"263":{},"331":{},"334":{},"396":{},"479":{},"625":{},"644":{},"679":{}}}],["react",{"_index":2517,"title":{},"content":{"497":{},"498":{},"819":{}}}],["read",{"_index":849,"title":{"265":{}},"content":{"211":{},"255":{},"256":{},"258":{},"261":{},"262":{},"263":{},"264":{},"265":{},"281":{},"285":{},"349":{},"484":{},"511":{},"533":{},"534":{},"535":{},"588":{},"741":{},"749":{},"768":{},"820":{}}}],["read/writ",{"_index":1912,"title":{},"content":{"365":{}}}],["readabl",{"_index":429,"title":{},"content":{"165":{},"346":{}}}],["reader",{"_index":534,"title":{"263":{}},"content":{"182":{},"265":{}}}],["readi",{"_index":2541,"title":{},"content":{"505":{},"565":{},"643":{},"681":{},"779":{}}}],["readm",{"_index":3461,"title":{},"content":{"765":{},"814":{}}}],["real",{"_index":1716,"title":{},"content":{"322":{},"345":{},"620":{},"647":{},"657":{},"658":{},"660":{},"695":{},"707":{}}}],["realiti",{"_index":1814,"title":{},"content":{"345":{},"686":{},"714":{}}}],["realiz",{"_index":3015,"title":{},"content":{"646":{}}}],["realli",{"_index":1054,"title":{},"content":{"217":{},"257":{},"258":{},"262":{},"266":{},"331":{},"337":{},"638":{},"759":{}}}],["realtim",{"_index":3237,"title":{"707":{}},"content":{}}],["reason",{"_index":282,"title":{},"content":{"64":{},"348":{},"367":{},"505":{},"638":{},"642":{},"714":{},"819":{},"822":{}}}],["rebind",{"_index":1962,"title":{},"content":{"352":{}}}],["rebuild",{"_index":2829,"title":{},"content":{"620":{}}}],["receiv",{"_index":269,"title":{"613":{}},"content":{"67":{},"180":{},"182":{},"213":{},"262":{},"304":{},"309":{},"346":{},"384":{},"391":{},"479":{},"587":{},"598":{},"625":{},"667":{},"668":{},"674":{},"709":{},"725":{},"763":{},"784":{},"785":{},"798":{},"818":{},"840":{},"843":{}}}],["receive/send",{"_index":3323,"title":{},"content":{"737":{}}}],["receiveaddr",{"_index":796,"title":{},"content":{"191":{}}}],["receiveaddrlen",{"_index":797,"title":{},"content":{"191":{}}}],["recent",{"_index":3538,"title":{},"content":{"818":{}}}],["recept",{"_index":3605,"title":{},"content":{"822":{}}}],["recertif",{"_index":3159,"title":{},"content":{"698":{}}}],["recieveraddr",{"_index":806,"title":{},"content":{"191":{}}}],["recieveraddress",{"_index":784,"title":{},"content":{"191":{}}}],["recipi",{"_index":122,"title":{"518":{},"725":{},"805":{}},"content":{"25":{},"83":{},"191":{},"221":{},"222":{},"224":{},"225":{},"226":{},"262":{},"332":{},"377":{},"393":{},"398":{},"492":{},"565":{},"606":{},"625":{},"661":{},"687":{},"710":{},"715":{},"720":{},"725":{},"739":{},"779":{},"784":{},"805":{}}}],["recipient'",{"_index":3289,"title":{},"content":{"726":{},"784":{},"785":{}}}],["recipient/send",{"_index":1071,"title":{},"content":{"221":{}}}],["recipient/sender/token",{"_index":1074,"title":{},"content":{"224":{}}}],["recipient_address",{"_index":2071,"title":{},"content":{"384":{},"393":{}}}],["recognit",{"_index":3592,"title":{},"content":{"821":{}}}],["recommand",{"_index":3402,"title":{},"content":{"757":{}}}],["recommend",{"_index":3492,"title":{},"content":{"786":{},"787":{}}}],["record",{"_index":3171,"title":{},"content":{"699":{},"755":{},"822":{}}}],["recoveri",{"_index":3633,"title":{},"content":{"830":{}}}],["recur",{"_index":2081,"title":{"385":{}},"content":{}}],["recurr",{"_index":2106,"title":{"388":{}},"content":{}}],["red",{"_index":3458,"title":{},"content":{"774":{},"775":{}}}],["redefin",{"_index":3005,"title":{},"content":{"645":{},"745":{}}}],["redesign",{"_index":3089,"title":{},"content":{"669":{}}}],["redi",{"_index":1457,"title":{},"content":{"256":{}}}],["redirect",{"_index":1677,"title":{"556":{}},"content":{"303":{},"754":{},"756":{}}}],["reduc",{"_index":941,"title":{},"content":{"202":{},"259":{},"330":{},"331":{},"359":{},"620":{},"677":{},"695":{},"712":{},"713":{},"819":{},"821":{}}}],["redund",{"_index":1483,"title":{},"content":{"257":{}}}],["ref",{"_index":3144,"title":{},"content":{"698":{},"699":{},"700":{}}}],["refer",{"_index":582,"title":{},"content":{"187":{},"240":{},"242":{},"253":{},"254":{},"267":{},"347":{},"587":{},"689":{},"698":{},"754":{},"758":{},"761":{},"762":{},"763":{},"764":{},"770":{},"771":{},"772":{},"773":{},"792":{}}}],["referenc",{"_index":2959,"title":{},"content":{"650":{},"691":{},"724":{}}}],["refin",{"_index":3213,"title":{},"content":{"688":{}}}],["refund",{"_index":2665,"title":{"798":{}},"content":{"561":{},"574":{},"615":{},"779":{},"790":{},"797":{},"798":{}}}],["refus",{"_index":2692,"title":{"574":{},"615":{}},"content":{"622":{}}}],["regard",{"_index":1701,"title":{},"content":{"318":{},"328":{},"338":{},"556":{},"638":{},"660":{},"750":{},"774":{},"785":{},"802":{}}}],["regardless",{"_index":2811,"title":{},"content":{"619":{}}}],["regener",{"_index":1326,"title":{},"content":{"252":{}}}],["regex",{"_index":2256,"title":{"431":{}},"content":{"432":{},"434":{}}}],["regex.extract(\"123456abc",{"_index":2258,"title":{},"content":{"432":{}}}],["regex.extract(\"voodoo",{"_index":2261,"title":{},"content":{"432":{}}}],["regex.match?(\"123456",{"_index":2264,"title":{},"content":{"433":{}}}],["regex.match?(\"123456abc",{"_index":2265,"title":{},"content":{"433":{}}}],["regex.scan(\"a0b1c2,123\\nd3e4f5,456\\n",{"_index":2274,"title":{},"content":{"434":{}}}],["regex.scan(\"foo",{"_index":2267,"title":{},"content":{"434":{}}}],["regex.scan(\"toto,123\\ntutu,456\\n",{"_index":2269,"title":{},"content":{"434":{}}}],["regex_extract(data",{"_index":2132,"title":{},"content":{"395":{}}}],["regex_match?(\"hello",{"_index":2131,"title":{},"content":{"395":{}}}],["regex_match?(data",{"_index":2128,"title":{},"content":{"395":{}}}],["regist",{"_index":384,"title":{},"content":{"118":{},"785":{}}}],["registr",{"_index":3158,"title":{},"content":{"698":{}}}],["registri",{"_index":1676,"title":{},"content":{"303":{}}}],["regular",{"_index":2130,"title":{},"content":{"395":{},"661":{}}}],["reimagin",{"_index":3010,"title":{},"content":{"645":{}}}],["reintegr",{"_index":3299,"title":{},"content":{"714":{}}}],["reject",{"_index":376,"title":{},"content":{"109":{},"144":{},"147":{},"163":{}}}],["rejoin",{"_index":2913,"title":{},"content":{"628":{},"680":{}}}],["rel",{"_index":3280,"title":{},"content":{"723":{}}}],["relat",{"_index":52,"title":{},"content":{"12":{},"328":{},"623":{},"638":{},"650":{},"698":{},"699":{},"762":{},"787":{},"822":{},"830":{}}}],["relay",{"_index":1682,"title":{},"content":{"309":{},"654":{}}}],["releas",{"_index":541,"title":{},"content":{"183":{},"298":{},"304":{},"759":{},"800":{}}}],["relev",{"_index":3035,"title":{},"content":{"647":{},"655":{}}}],["reli",{"_index":1056,"title":{},"content":{"217":{},"347":{},"349":{},"394":{},"479":{},"561":{},"695":{},"779":{},"780":{}}}],["reliabl",{"_index":984,"title":{},"content":{"215":{},"699":{},"819":{},"827":{}}}],["reload",{"_index":1045,"title":{},"content":{"216":{},"657":{}}}],["rem/2",{"_index":2418,"title":{"474":{}},"content":{}}],["remain",{"_index":147,"title":{},"content":{"31":{},"92":{},"583":{},"651":{},"674":{},"715":{},"761":{},"764":{},"784":{},"785":{},"792":{}}}],["remaind",{"_index":2426,"title":{},"content":{"474":{}}}],["rememb",{"_index":2774,"title":{},"content":{"613":{},"822":{}}}],["remind",{"_index":2797,"title":{},"content":{"588":{},"638":{},"683":{}}}],["remot",{"_index":511,"title":{},"content":{"181":{},"330":{}}}],["remov",{"_index":1341,"title":{"812":{}},"content":{"254":{},"421":{},"580":{},"609":{},"695":{},"696":{},"698":{},"719":{},"797":{},"809":{}}}],["render",{"_index":399,"title":{},"content":{"142":{},"582":{},"756":{},"762":{},"819":{}}}],["renew",{"_index":1697,"title":{},"content":{"316":{},"621":{},"624":{},"698":{}}}],["rent",{"_index":3352,"title":{},"content":{"750":{}}}],["repair",{"_index":1134,"title":{"682":{}},"content":{"234":{},"235":{},"238":{},"673":{},"681":{},"682":{},"683":{},"698":{}}}],["repaireveri",{"_index":2824,"title":{},"content":{"620":{}}}],["replac",{"_index":527,"title":{},"content":{"182":{},"201":{},"645":{},"695":{}}}],["repli",{"_index":3408,"title":{},"content":{"757":{}}}],["replic",{"_index":275,"title":{"708":{},"710":{}},"content":{"67":{},"180":{},"226":{},"228":{},"230":{},"262":{},"309":{},"620":{},"625":{},"644":{},"661":{},"674":{},"675":{},"677":{},"684":{},"687":{},"698":{},"704":{},"706":{},"707":{},"709":{},"710":{},"712":{},"727":{},"784":{}}}],["replica",{"_index":1076,"title":{},"content":{"226":{},"661":{},"710":{},"750":{}}}],["replicast",{"_index":1598,"title":{},"content":{"294":{}}}],["repo",{"_index":3617,"title":{},"content":{"826":{}}}],["repositori",{"_index":500,"title":{},"content":{"181":{},"184":{},"187":{},"214":{},"522":{},"557":{},"582":{},"648":{},"765":{}}}],["repository//github.com/archeth",{"_index":2595,"title":{},"content":{"551":{},"552":{}}}],["repres",{"_index":32,"title":{},"content":{"9":{},"12":{},"15":{},"19":{},"22":{},"25":{},"28":{},"31":{},"34":{},"37":{},"40":{},"46":{},"49":{},"52":{},"55":{},"58":{},"61":{},"64":{},"67":{},"70":{},"73":{},"77":{},"83":{},"86":{},"89":{},"92":{},"95":{},"98":{},"103":{},"106":{},"109":{},"111":{},"114":{},"117":{},"119":{},"122":{},"125":{},"128":{},"130":{},"133":{},"136":{},"139":{},"140":{},"142":{},"144":{},"147":{},"150":{},"151":{},"153":{},"155":{},"157":{},"159":{},"163":{},"165":{},"167":{},"169":{},"171":{},"174":{},"177":{},"180":{},"322":{},"328":{},"393":{},"439":{},"514":{},"638":{},"781":{},"822":{}}}],["represent",{"_index":961,"title":{"207":{}},"content":{"360":{},"408":{},"409":{},"410":{},"438":{},"500":{},"628":{},"652":{}}}],["reproduc",{"_index":1552,"title":{},"content":{"262":{},"624":{},"638":{},"688":{},"699":{},"706":{},"715":{}}}],["repudi",{"_index":2751,"title":{},"content":{"607":{},"785":{}}}],["reput",{"_index":3154,"title":{},"content":{"698":{}}}],["request",{"_index":1584,"title":{"833":{},"836":{},"839":{},"842":{},"845":{},"848":{},"851":{},"854":{},"857":{}},"content":{"265":{},"309":{},"326":{},"386":{},"404":{},"479":{},"480":{},"581":{},"583":{},"607":{},"620":{},"623":{},"679":{},"681":{},"683":{},"684":{},"688":{},"695":{},"707":{},"756":{},"757":{},"759":{},"762":{},"763":{},"784":{},"785":{},"833":{}}}],["request/1",{"_index":2429,"title":{"476":{}},"content":{}}],["request/1,2,3,4",{"_index":2443,"title":{},"content":{"479":{}}}],["request/2",{"_index":2430,"title":{"477":{}},"content":{"476":{}}}],["request/3",{"_index":2431,"title":{"478":{}},"content":{"477":{}}}],["request/4",{"_index":2432,"title":{"479":{}},"content":{"478":{},"480":{}}}],["request_many/1",{"_index":2444,"title":{"480":{}},"content":{"479":{}}}],["requir",{"_index":599,"title":{"558":{}},"content":{"188":{},"190":{},"191":{},"216":{},"235":{},"244":{},"256":{},"258":{},"259":{},"260":{},"261":{},"270":{},"271":{},"349":{},"402":{},"434":{},"479":{},"500":{},"501":{},"516":{},"517":{},"519":{},"588":{},"621":{},"661":{},"669":{},"678":{},"715":{},"757":{},"767":{},"770":{},"800":{},"822":{},"828":{},"830":{}}}],["requisit",{"_index":3614,"title":{"825":{}},"content":{}}],["research",{"_index":2882,"title":{},"content":{"635":{},"695":{}}}],["resend",{"_index":1835,"title":{},"content":{"347":{}}}],["reserv",{"_index":749,"title":{"372":{}},"content":{"190":{},"191":{},"202":{},"352":{},"604":{},"647":{},"659":{},"770":{},"781":{}}}],["reset",{"_index":2697,"title":{"576":{}},"content":{"576":{},"698":{},"802":{}}}],["resid",{"_index":491,"title":{},"content":{"181":{}}}],["resili",{"_index":2923,"title":{},"content":{"628":{},"695":{},"746":{}}}],["resist",{"_index":2848,"title":{},"content":{"623":{},"714":{}}}],["resolut",{"_index":1549,"title":{},"content":{"262":{},"714":{}}}],["resolv",{"_index":1547,"title":{},"content":{"262":{},"354":{},"390":{},"641":{},"715":{},"753":{},"759":{}}}],["resourc",{"_index":1026,"title":{},"content":{"216":{},"435":{},"581":{},"618":{},"647":{},"661":{},"665":{}}}],["respect",{"_index":1368,"title":{},"content":{"272":{},"317":{},"346":{},"375":{},"606":{},"613":{},"625":{},"709":{},"727":{}}}],["respond",{"_index":602,"title":{},"content":{"188":{},"237":{},"309":{}}}],["respond(async",{"_index":605,"title":{},"content":{"188":{}}}],["respons",{"_index":368,"title":{"834":{},"837":{},"840":{},"843":{},"846":{},"849":{},"852":{},"855":{},"858":{}},"content":{"109":{},"144":{},"147":{},"163":{},"189":{},"191":{},"194":{},"195":{},"196":{},"218":{},"228":{},"236":{},"298":{},"310":{},"334":{},"479":{},"480":{},"622":{},"625":{},"703":{},"762":{}}}],["response.bodi",{"_index":2437,"title":{},"content":{"479":{}}}],["response.statu",{"_index":2436,"title":{},"content":{"479":{}}}],["rest",{"_index":748,"title":{},"content":{"190":{},"191":{},"357":{}}}],["restart",{"_index":1028,"title":{},"content":{"216":{}}}],["restor",{"_index":3120,"title":{},"content":{"682":{},"820":{}}}],["restrict",{"_index":1211,"title":{},"content":{"246":{},"346":{}}}],["result",{"_index":34,"title":{},"content":{"9":{},"190":{},"191":{},"201":{},"216":{},"356":{},"471":{},"479":{},"482":{},"501":{},"564":{},"595":{},"784":{},"819":{},"820":{},"828":{}}}],["result.touppercas",{"_index":3579,"title":{},"content":{"820":{}}}],["resum",{"_index":2699,"title":{},"content":{"576":{},"790":{},"794":{},"797":{}}}],["resuppli",{"_index":3262,"title":{"724":{}},"content":{"720":{},"722":{},"724":{},"725":{}}}],["resync",{"_index":1157,"title":{},"content":{"235":{}}}],["retain",{"_index":2946,"title":{},"content":{"641":{}}}],["retriev",{"_index":865,"title":{"213":{},"308":{},"309":{},"587":{}},"content":{"213":{},"219":{},"222":{},"225":{},"263":{},"265":{},"266":{},"309":{},"310":{},"328":{},"367":{},"452":{},"456":{},"457":{},"505":{},"506":{},"558":{},"603":{},"651":{},"761":{},"762":{},"780":{},"798":{},"828":{},"829":{},"830":{}}}],["return",{"_index":69,"title":{"17":{},"21":{},"30":{},"39":{},"42":{},"51":{},"57":{},"66":{},"69":{},"72":{},"75":{},"100":{},"145":{}},"content":{"188":{},"189":{},"190":{},"191":{},"246":{},"250":{},"252":{},"253":{},"254":{},"269":{},"271":{},"274":{},"275":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"287":{},"288":{},"291":{},"292":{},"325":{},"373":{},"374":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"436":{},"437":{},"438":{},"439":{},"440":{},"442":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"455":{},"456":{},"457":{},"460":{},"463":{},"464":{},"466":{},"468":{},"469":{},"471":{},"472":{},"473":{},"474":{},"479":{},"480":{},"482":{},"509":{},"658":{},"711":{},"775":{},"820":{}}}],["reveal",{"_index":2675,"title":{},"content":{"565":{},"602":{},"607":{},"699":{},"779":{},"780":{},"784":{},"785":{}}}],["revers",{"_index":1793,"title":{},"content":{"339":{},"602":{},"607":{},"779":{},"785":{}}}],["review",{"_index":3503,"title":{},"content":{"793":{}}}],["revoc",{"_index":3149,"title":{},"content":{"698":{}}}],["revok",{"_index":3166,"title":{},"content":{"698":{}}}],["reward",{"_index":1140,"title":{},"content":{"232":{},"334":{},"336":{},"658":{},"660":{},"668":{},"679":{},"730":{}}}],["rewardaddress",{"_index":165,"title":{},"content":{"37":{}}}],["right",{"_index":1105,"title":{},"content":{"230":{},"241":{},"262":{},"303":{},"357":{},"500":{},"590":{},"621":{},"624":{},"641":{},"646":{},"647":{},"651":{},"657":{},"691":{},"706":{},"723":{},"789":{},"802":{}}}],["rise",{"_index":3340,"title":{},"content":{"747":{}}}],["risk",{"_index":2745,"title":{},"content":{"604":{},"623":{},"644":{},"696":{},"781":{},"819":{},"821":{}}}],["rng",{"_index":3576,"title":{},"content":{"820":{}}}],["roadmap",{"_index":3373,"title":{"752":{},"776":{}},"content":{}}],["robert",{"_index":2251,"title":{},"content":{"430":{}}}],["robot",{"_index":1805,"title":{},"content":{"345":{}}}],["rocksdb",{"_index":1453,"title":{},"content":{"256":{}}}],["role",{"_index":1221,"title":{},"content":{"246":{},"647":{},"658":{},"715":{}}}],["root",{"_index":471,"title":{"626":{},"627":{},"628":{},"629":{}},"content":{"181":{},"184":{},"246":{},"247":{},"249":{},"252":{},"253":{},"254":{},"281":{},"315":{},"473":{},"512":{},"627":{},"628":{},"629":{},"630":{},"650":{},"669":{}}}],["rootkey",{"_index":1302,"title":{},"content":{"247":{},"285":{}}}],["rotat",{"_index":1590,"title":{"624":{},"688":{}},"content":{"293":{},"618":{},"620":{},"622":{},"624":{},"625":{},"684":{},"686":{},"688":{},"698":{},"707":{},"715":{}}}],["round",{"_index":1635,"title":{},"content":{"298":{},"400":{}}}],["row",{"_index":1567,"title":{},"content":{"263":{},"771":{},"772":{},"773":{}}}],["royalti",{"_index":3258,"title":{},"content":{"718":{}}}],["rpc",{"_index":1949,"title":{"831":{}},"content":{"370":{},"571":{},"612":{},"822":{},"829":{}}}],["rsa_root_key",{"_index":1411,"title":{},"content":{"281":{}}}],["rule",{"_index":1815,"title":{"374":{}},"content":{"345":{},"375":{},"480":{},"511":{},"565":{},"583":{},"654":{},"770":{},"771":{},"779":{}}}],["run",{"_index":558,"title":{},"content":{"184":{},"216":{},"298":{},"300":{},"304":{},"328":{},"402":{},"442":{},"523":{},"728":{},"729":{},"744":{},"745":{},"758":{},"759":{},"767":{},"819":{},"826":{}}}],["s",{"_index":469,"title":{"245":{}},"content":{"181":{},"183":{},"223":{},"245":{},"464":{},"522":{}}}],["s1",{"_index":3248,"title":{},"content":{"710":{}}}],["s2",{"_index":3249,"title":{},"content":{"710":{}}}],["s3",{"_index":3250,"title":{},"content":{"710":{}}}],["safe",{"_index":2672,"title":{"632":{}},"content":{"565":{},"631":{},"817":{}}}],["safest",{"_index":2989,"title":{},"content":{"644":{}}}],["safeti",{"_index":1479,"title":{"604":{},"781":{}},"content":{"257":{},"348":{},"604":{},"644":{},"781":{},"784":{}}}],["same",{"_index":1078,"title":{},"content":{"226":{},"246":{},"310":{},"315":{},"338":{},"347":{},"349":{},"354":{},"359":{},"369":{},"374":{},"375":{},"381":{},"398":{},"442":{},"452":{},"454":{},"456":{},"457":{},"462":{},"468":{},"564":{},"565":{},"575":{},"595":{},"616":{},"623":{},"628":{},"687":{},"690":{},"699":{},"724":{},"731":{},"732":{},"748":{},"750":{},"755":{},"762":{},"763":{},"767":{},"784":{},"804":{},"805":{},"813":{}}}],["sampl",{"_index":1113,"title":{"236":{}},"content":{"237":{},"238":{},"676":{},"693":{}}}],["satisfi",{"_index":3454,"title":{},"content":{"771":{}}}],["saturday",{"_index":2506,"title":{},"content":{"401":{}}}],["save",{"_index":1383,"title":{},"content":{"274":{},"279":{},"280":{}}}],["saveindex(ykindex",{"_index":1392,"title":{"276":{}},"content":{}}],["saw",{"_index":2538,"title":{},"content":{"500":{}}}],["sc",{"_index":2104,"title":{},"content":{"355":{},"398":{},"399":{}}}],["scalabl",{"_index":987,"title":{},"content":{"216":{},"331":{},"618":{},"620":{},"622":{},"630":{},"638":{},"644":{},"685":{},"686":{},"689":{},"690":{},"691":{}}}],["scalar",{"_index":12,"title":{"549":{}},"content":{"3":{},"5":{},"13":{},"16":{},"20":{},"23":{},"26":{},"29":{},"32":{},"38":{},"41":{},"47":{},"50":{},"53":{},"56":{},"59":{},"65":{},"68":{},"71":{},"74":{},"78":{},"81":{},"84":{},"87":{},"93":{},"96":{},"99":{},"102":{},"105":{},"108":{},"109":{},"113":{},"116":{},"121":{},"124":{},"127":{},"132":{},"135":{},"138":{},"140":{},"142":{},"144":{},"147":{},"151":{},"153":{},"155":{},"157":{},"159":{},"161":{},"163":{},"165":{},"167":{},"169":{},"171":{},"176":{},"179":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"816":{}}}],["scale",{"_index":1505,"title":{},"content":{"259":{},"672":{},"744":{},"822":{}}}],["scan",{"_index":1678,"title":{},"content":{"307":{}}}],["scan/2",{"_index":2266,"title":{"434":{}},"content":{}}],["scenario",{"_index":1047,"title":{},"content":{"216":{},"398":{},"399":{},"402":{},"785":{}}}],["scene",{"_index":3239,"title":{},"content":{"707":{}}}],["schedul",{"_index":1097,"title":{"229":{},"328":{}},"content":{"229":{},"311":{},"322":{},"324":{},"327":{},"328":{},"346":{}}}],["schema",{"_index":1529,"title":{"544":{},"816":{}},"content":{"261":{},"328":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"721":{},"724":{},"816":{}}}],["schemaless",{"_index":1535,"title":{},"content":{"261":{}}}],["scheme",{"_index":895,"title":{},"content":{"200":{},"201":{},"202":{},"246":{},"685":{},"821":{}}}],["scientif",{"_index":1871,"title":{},"content":{"358":{}}}],["scope",{"_index":1586,"title":{"365":{}},"content":{"266":{},"365":{}}}],["scratch",{"_index":1440,"title":{},"content":{"255":{},"260":{}}}],["screen",{"_index":573,"title":{"788":{}},"content":{"186":{},"588":{},"775":{},"788":{},"793":{},"822":{}}}],["screenshot",{"_index":2563,"title":{},"content":{"508":{}}}],["script",{"_index":1644,"title":{},"content":{"304":{},"751":{}}}],["scripts/main.j",{"_index":3428,"title":{},"content":{"761":{}}}],["scripts/proposal_ci_job.sh",{"_index":1643,"title":{},"content":{"304":{}}}],["scylladb",{"_index":1455,"title":{},"content":{"256":{}}}],["sdk",{"_index":609,"title":{"340":{},"341":{},"342":{},"343":{},"530":{}},"content":{"188":{},"341":{},"342":{},"343":{},"519":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"823":{},"826":{}}}],["se",{"_index":2927,"title":{},"content":{"629":{}}}],["seal",{"_index":3227,"title":{},"content":{"704":{}}}],["seamless",{"_index":1812,"title":{},"content":{"345":{},"593":{},"761":{},"786":{}}}],["search",{"_index":3222,"title":{},"content":{"701":{}}}],["sec",{"_index":2983,"title":{},"content":{"644":{}}}],["second",{"_index":431,"title":{},"content":{"167":{},"189":{},"244":{},"298":{},"400":{},"401":{},"442":{},"459":{},"461":{},"479":{},"507":{},"565":{},"588":{},"628":{},"644":{},"821":{},"822":{}}}],["second_cod",{"_index":2400,"title":{},"content":{"468":{}}}],["secp256k1",{"_index":957,"title":{},"content":{"205":{},"636":{},"638":{}}}],["secret",{"_index":49,"title":{"241":{},"316":{}},"content":{"12":{},"25":{},"46":{},"49":{},"55":{},"125":{},"130":{},"190":{},"191":{},"207":{},"212":{},"233":{},"241":{},"254":{},"313":{},"316":{},"335":{},"392":{},"393":{},"396":{},"462":{},"490":{},"519":{},"565":{},"588":{},"602":{},"606":{},"607":{},"624":{},"663":{},"688":{},"715":{},"729":{},"772":{},"779":{},"784":{},"785":{},"805":{}}}],["secret'",{"_index":3489,"title":{},"content":{"785":{}}}],["secret_key",{"_index":2145,"title":{},"content":{"396":{},"463":{}}}],["section",{"_index":107,"title":{},"content":{"25":{},"212":{},"242":{},"267":{},"297":{},"523":{},"556":{},"715":{},"770":{},"775":{},"787":{}}}],["section\"how",{"_index":2790,"title":{},"content":{"587":{}}}],["secur",{"_index":274,"title":{"749":{},"821":{}},"content":{"67":{},"180":{},"181":{},"183":{},"202":{},"211":{},"332":{},"346":{},"348":{},"389":{},"390":{},"505":{},"565":{},"588":{},"593":{},"602":{},"603":{},"606":{},"607":{},"618":{},"620":{},"621":{},"622":{},"627":{},"628":{},"629":{},"630":{},"641":{},"642":{},"644":{},"645":{},"646":{},"651":{},"653":{},"658":{},"669":{},"675":{},"679":{},"682":{},"698":{},"709":{},"714":{},"746":{},"749":{},"756":{},"777":{},"779":{},"780":{},"817":{},"819":{},"820":{},"821":{},"822":{},"827":{},"859":{}}}],["securitysecur",{"_index":3540,"title":{},"content":{"818":{}}}],["see",{"_index":1095,"title":{"774":{}},"content":{"228":{},"315":{},"318":{},"320":{},"321":{},"351":{},"371":{},"373":{},"375":{},"377":{},"379":{},"448":{},"450":{},"480":{},"498":{},"499":{},"500":{},"505":{},"507":{},"508":{},"509":{},"513":{},"584":{},"634":{},"669":{},"687":{},"703":{},"715":{},"767":{},"784":{},"821":{}}}],["seed",{"_index":630,"title":{"820":{}},"content":{"189":{},"197":{},"201":{},"204":{},"213":{},"232":{},"234":{},"266":{},"462":{},"505":{},"519":{},"558":{},"580":{},"609":{},"650":{},"679":{},"758":{},"766":{},"767":{},"801":{},"802":{},"805":{},"809":{},"810":{},"813":{},"820":{},"822":{},"827":{}}}],["seek",{"_index":1475,"title":{},"content":{"257":{},"261":{},"263":{}}}],["seem",{"_index":1050,"title":{},"content":{"217":{}}}],["select",{"_index":2529,"title":{},"content":{"499":{},"501":{},"587":{},"588":{},"590":{},"771":{},"772":{},"792":{},"800":{},"802":{},"805":{},"809":{},"813":{},"822":{},"853":{}}}],["selector",{"_index":2530,"title":{},"content":{"499":{},"501":{},"511":{}}}],["self",{"_index":1133,"title":{"682":{}},"content":{"234":{},"235":{},"238":{},"261":{},"620":{},"646":{},"673":{},"681":{},"682":{},"683":{},"698":{},"744":{},"745":{}}}],["selfrepair",{"_index":3117,"title":{},"content":{"679":{}}}],["semant",{"_index":1933,"title":{},"content":{"367":{}}}],["send",{"_index":286,"title":{"558":{},"802":{},"808":{}},"content":{"73":{},"92":{},"136":{},"182":{},"248":{},"331":{},"332":{},"347":{},"349":{},"384":{},"388":{},"389":{},"398":{},"484":{},"523":{},"558":{},"598":{},"625":{},"661":{},"671":{},"674":{},"687":{},"691":{},"726":{},"730":{},"762":{},"763":{},"764":{},"767":{},"789":{},"799":{},"800":{},"802":{},"809":{},"818":{},"829":{},"830":{},"838":{}}}],["send/sign",{"_index":3606,"title":{},"content":{"822":{}}}],["send_transact",{"_index":3286,"title":{"838":{}},"content":{"726":{}}}],["sender",{"_index":1072,"title":{},"content":{"221":{},"222":{},"224":{},"225":{},"332":{},"714":{}}}],["senderaddr",{"_index":794,"title":{},"content":{"191":{}}}],["senderaddrlen",{"_index":795,"title":{},"content":{"191":{}}}],["sendtxn",{"_index":569,"title":{},"content":{"185":{}}}],["sens",{"_index":3043,"title":{},"content":{"648":{}}}],["sensit",{"_index":1234,"title":{},"content":{"246":{},"822":{}}}],["sent",{"_index":1706,"title":{"575":{},"616":{}},"content":{"320":{},"321":{},"330":{},"334":{},"352":{},"378":{},"384":{},"677":{},"707":{},"728":{},"732":{},"764":{},"840":{}}}],["sentenc",{"_index":3583,"title":{},"content":{"820":{}}}],["separ",{"_index":2254,"title":{},"content":{"430":{},"497":{}}}],["sepolia",{"_index":2756,"title":{"612":{}},"content":{"612":{}}}],["sequenc",{"_index":425,"title":{},"content":{"165":{},"245":{},"500":{},"681":{}}}],["sequence_no",{"_index":767,"title":{},"content":{"190":{},"191":{}}}],["sequenti",{"_index":1577,"title":{},"content":{"263":{}}}],["seri",{"_index":3581,"title":{},"content":{"820":{}}}],["serial",{"_index":1523,"title":{},"content":{"261":{},"325":{},"330":{},"331":{},"349":{},"484":{}}}],["serv",{"_index":2647,"title":{},"content":{"557":{},"764":{},"781":{}}}],["server",{"_index":2760,"title":{},"content":{"612":{},"751":{},"753":{},"758":{},"762":{},"822":{},"829":{}}}],["servic",{"_index":181,"title":{"324":{},"668":{},"812":{},"813":{}},"content":{"40":{},"197":{},"201":{},"204":{},"311":{},"318":{},"322":{},"324":{},"325":{},"326":{},"327":{},"328":{},"330":{},"479":{},"504":{},"556":{},"558":{},"587":{},"642":{},"649":{},"650":{},"651":{},"653":{},"668":{},"695":{},"698":{},"809":{},"811":{},"812":{},"813":{},"817":{},"821":{},"822":{},"828":{},"829":{},"830":{},"841":{},"842":{},"844":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"857":{}}}],["servicenam",{"_index":3647,"title":{},"content":{"848":{},"851":{},"857":{}}}],["session",{"_index":1223,"title":{},"content":{"246":{},"776":{}}}],["set",{"_index":191,"title":{"612":{}},"content":{"46":{},"189":{},"190":{},"191":{},"228":{},"247":{},"249":{},"251":{},"253":{},"353":{},"396":{},"418":{},"500":{},"507":{},"572":{},"610":{},"612":{},"613":{},"620":{},"621":{},"622":{},"658":{},"686":{},"721":{},"745":{},"770":{},"792":{},"802":{},"805":{},"806":{},"807":{},"822":{}}}],["set/3",{"_index":2207,"title":{"418":{}},"content":{}}],["set_cod",{"_index":2143,"title":{},"content":{"396":{}}}],["set_code/1",{"_index":2462,"title":{"485":{}},"content":{}}],["set_cont",{"_index":2142,"title":{},"content":{"396":{}}}],["set_content/1",{"_index":2461,"title":{"484":{}},"content":{}}],["set_typ",{"_index":2110,"title":{},"content":{"388":{},"389":{},"396":{}}}],["set_type/1",{"_index":2460,"title":{"483":{}},"content":{}}],["setkeyindex",{"_index":1332,"title":{},"content":{"253":{}}}],["setkeyindex(int",{"_index":1317,"title":{"251":{}},"content":{}}],["setrootkey",{"_index":1299,"title":{"247":{}},"content":{}}],["setup",{"_index":2584,"title":{"824":{}},"content":{"522":{}}}],["seven",{"_index":1364,"title":{},"content":{"272":{}}}],["sever",{"_index":872,"title":{},"content":{"197":{},"240":{},"256":{},"264":{},"299":{},"310":{},"312":{},"330":{},"634":{},"642":{},"649":{},"654":{},"673":{},"687":{},"699":{},"715":{},"805":{},"828":{},"829":{}}}],["sha",{"_index":2887,"title":{},"content":{"637":{},"761":{}}}],["sha2",{"_index":958,"title":{},"content":{"206":{}}}],["sha2/sha3",{"_index":2934,"title":{},"content":{"630":{}}}],["sha256",{"_index":743,"title":{},"content":{"190":{},"191":{},"201":{},"206":{},"459":{},"460":{},"461":{},"463":{},"653":{}}}],["sha256(auth_se",{"_index":950,"title":{},"content":{"202":{}}}],["sha256(replacederivationpath(derivationpath",{"_index":923,"title":{},"content":{"201":{}}}],["sha256(sha256(wk_{a",{"_index":938,"title":{},"content":{"202":{}}}],["sha3",{"_index":2977,"title":{},"content":{"653":{}}}],["sha3_256",{"_index":780,"title":{},"content":{"191":{},"206":{},"460":{},"463":{}}}],["sha3_512",{"_index":782,"title":{},"content":{"191":{},"206":{},"460":{},"463":{}}}],["sha512",{"_index":734,"title":{},"content":{"190":{},"191":{},"206":{},"460":{},"463":{}}}],["sha512(key=masterse",{"_index":925,"title":{},"content":{"201":{}}}],["sha512(sha512(ecdh\\_secret",{"_index":947,"title":{},"content":{"202":{}}}],["sha512(sha512(ecdh_secret",{"_index":735,"title":{},"content":{"190":{},"191":{}}}],["shard",{"_index":1083,"title":{"685":{}},"content":{"227":{},"228":{},"262":{},"347":{},"620":{},"676":{},"677":{},"682":{},"685":{},"686":{},"688":{},"689":{},"690":{},"701":{},"703":{},"707":{},"708":{},"709":{},"710":{},"762":{}}}],["share",{"_index":196,"title":{"241":{},"316":{}},"content":{"49":{},"130":{},"233":{},"241":{},"254":{},"306":{},"313":{},"316":{},"330":{},"335":{},"580":{},"588":{},"609":{},"624":{},"663":{},"729":{},"818":{},"823":{}}}],["sharedprefer",{"_index":3608,"title":{},"content":{"822":{}}}],["sharedsecret",{"_index":195,"title":{"49":{},"129":{}},"content":{"49":{},"51":{},"129":{},"130":{},"164":{}}}],["sharedsecrets.storagenoncepublickey",{"_index":202,"title":{},"content":{"50":{}}}],["sherlock",{"_index":2195,"title":{},"content":{"412":{}}}],["shield",{"_index":2754,"title":{},"content":{"610":{},"774":{}}}],["ship",{"_index":1437,"title":{},"content":{"255":{},"257":{}}}],["short",{"_index":1039,"title":{},"content":{"216":{},"337":{}}}],["shorter",{"_index":3113,"title":{},"content":{"676":{}}}],["shorthand",{"_index":2198,"title":{},"content":{"414":{},"416":{}}}],["show",{"_index":571,"title":{},"content":{"186":{},"822":{}}}],["showcas",{"_index":3364,"title":{},"content":{"751":{}}}],["shown",{"_index":574,"title":{},"content":{"186":{},"587":{}}}],["shuffl",{"_index":3602,"title":{},"content":{"822":{}}}],["side",{"_index":2528,"title":{},"content":{"499":{},"505":{},"506":{},"565":{},"751":{},"762":{},"785":{},"790":{}}}],["sidebar",{"_index":3659,"title":{},"content":{"816":{}}}],["sign",{"_index":403,"title":{"191":{}},"content":{"151":{},"157":{},"181":{},"191":{},"246":{},"253":{},"277":{},"289":{},"290":{},"297":{},"321":{},"464":{},"625":{},"699":{},"712":{},"770":{},"771":{},"772":{},"773":{},"791":{},"794":{},"828":{},"829":{},"830":{},"838":{},"856":{},"857":{}}}],["sign/encrypt",{"_index":3410,"title":{},"content":{"758":{}}}],["sign_encrypt",{"_index":1242,"title":{},"content":{"246":{}}}],["sign_len",{"_index":814,"title":{},"content":{"191":{}}}],["sign_transact",{"_index":3651,"title":{"856":{}},"content":{}}],["sign_with_recovery/1",{"_index":2384,"title":{"464":{}},"content":{}}],["signatur",{"_index":100,"title":{"196":{}},"content":{"22":{},"95":{},"186":{},"188":{},"189":{},"190":{},"191":{},"196":{},"230":{},"245":{},"250":{},"253":{},"305":{},"306":{},"307":{},"312":{},"346":{},"369":{},"464":{},"495":{},"496":{},"607":{},"621":{},"630":{},"634":{},"639":{},"698":{},"709":{},"712":{},"715":{},"776":{},"785":{},"830":{},"858":{}}}],["signature_payload",{"_index":2385,"title":{},"content":{"464":{}}}],["signcurrentkey(hashtosign",{"_index":1428,"title":{"289":{}},"content":{}}],["signecdsa",{"_index":1334,"title":{},"content":{"253":{},"289":{}}}],["signecdsa(hashtosign",{"_index":1395,"title":{"277":{}},"content":{}}],["signecdsa(int",{"_index":1327,"title":{"253":{}},"content":{}}],["signedtx",{"_index":3652,"title":{},"content":{"858":{}}}],["signhash.c",{"_index":773,"title":{},"content":{"191":{}}}],["signifi",{"_index":819,"title":{},"content":{"191":{},"246":{}}}],["signific",{"_index":2620,"title":{},"content":{"583":{}}}],["significantli",{"_index":2728,"title":{},"content":{"593":{},"628":{}}}],["signpastkey(archethicindex",{"_index":1430,"title":{"290":{}},"content":{}}],["signtoasn",{"_index":1194,"title":{},"content":{"245":{}}}],["signtoasn(byt",{"_index":1190,"title":{"245":{}},"content":{}}],["signup",{"_index":3535,"title":{},"content":{"817":{}}}],["similar",{"_index":816,"title":{},"content":{"191":{},"263":{},"476":{},"477":{},"478":{},"502":{},"503":{},"607":{},"779":{},"785":{}}}],["similarli",{"_index":1197,"title":{},"content":{"245":{},"619":{},"784":{}}}],["simpl",{"_index":654,"title":{},"content":{"189":{},"261":{},"266":{},"307":{},"383":{},"719":{},"751":{},"754":{},"759":{},"763":{},"777":{},"821":{},"859":{}}}],["simpli",{"_index":3448,"title":{},"content":{"770":{},"775":{}}}],["simplifi",{"_index":913,"title":{},"content":{"201":{},"390":{},"819":{},"820":{}}}],["simul",{"_index":1602,"title":{},"content":{"296":{},"328":{},"506":{},"507":{},"704":{}}}],["singl",{"_index":578,"title":{},"content":{"186":{},"218":{},"257":{},"300":{},"619":{},"654":{},"661":{},"708":{},"709":{},"712":{},"723":{},"750":{},"751":{},"761":{},"762":{},"767":{},"819":{}}}],["site",{"_index":3020,"title":{"770":{},"771":{},"773":{}},"content":{"646":{},"751":{},"768":{},"770":{},"771":{},"772":{},"773":{},"823":{}}}],["site'",{"_index":3456,"title":{"774":{}},"content":{"776":{}}}],["situat",{"_index":3350,"title":{},"content":{"750":{}}}],["size",{"_index":375,"title":{"245":{}},"content":{"109":{},"144":{},"147":{},"163":{},"201":{},"204":{},"244":{},"245":{},"246":{},"261":{},"262":{},"263":{},"312":{},"331":{},"389":{},"404":{},"479":{},"660":{},"661":{},"712":{},"761":{}}}],["size/1",{"_index":2159,"title":{"406":{},"415":{},"424":{}},"content":{"404":{}}}],["sizeof(ecdhpointx",{"_index":723,"title":{},"content":{"190":{},"191":{}}}],["sizer",{"_index":1192,"title":{"245":{}},"content":{}}],["skip",{"_index":13,"title":{"4":{}},"content":{"4":{},"5":{},"141":{}}}],["skip.if",{"_index":14,"title":{},"content":{"5":{}}}],["sla",{"_index":1702,"title":{},"content":{"318":{}}}],["slash",{"_index":2157,"title":{},"content":{"404":{}}}],["slippag",{"_index":2775,"title":{},"content":{"613":{}}}],["slot",{"_index":1091,"title":{"693":{},"703":{}},"content":{"228":{},"229":{},"230":{},"237":{},"238":{},"273":{},"274":{},"278":{},"280":{},"281":{},"284":{},"285":{},"288":{},"290":{},"691":{},"693":{},"703":{},"704":{},"706":{},"707":{}}}],["slotposiot",{"_index":1436,"title":{},"content":{"292":{}}}],["slotposit",{"_index":1431,"title":{},"content":{"290":{},"292":{}}}],["slotvalid",{"_index":1108,"title":{},"content":{"230":{}}}],["slow",{"_index":2813,"title":{},"content":{"619":{}}}],["small",{"_index":2516,"title":{},"content":{"497":{},"509":{},"583":{},"623":{},"672":{},"822":{}}}],["smallest",{"_index":2604,"title":{},"content":{"581":{},"761":{}}}],["smart",{"_index":111,"title":{"313":{},"344":{},"345":{},"350":{},"355":{},"356":{},"373":{},"382":{},"387":{},"390":{},"397":{},"404":{},"497":{},"504":{},"505":{},"506":{},"509":{},"510":{},"531":{},"807":{}},"content":{"25":{},"49":{},"130":{},"262":{},"306":{},"312":{},"313":{},"345":{},"346":{},"347":{},"348":{},"349":{},"353":{},"354":{},"356":{},"359":{},"367":{},"368":{},"369":{},"370":{},"371":{},"375":{},"384":{},"390":{},"393":{},"394":{},"399":{},"404":{},"442":{},"468":{},"469":{},"479":{},"482":{},"484":{},"492":{},"497":{},"498":{},"499":{},"503":{},"504":{},"505":{},"506":{},"507":{},"509":{},"512":{},"513":{},"518":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"579":{},"598":{},"606":{},"612":{},"661":{},"666":{},"667":{},"695":{},"698":{},"710":{},"715":{},"719":{},"726":{},"751":{},"784":{},"785":{},"805":{},"807":{},"839":{},"857":{}}}],["smartphon",{"_index":2869,"title":{},"content":{"621":{},"651":{}}}],["snapshot",{"_index":1851,"title":{},"content":{"349":{},"676":{}}}],["sobelow",{"_index":1659,"title":{},"content":{"304":{}}}],["soc",{"_index":2906,"title":{},"content":{"627":{}}}],["social",{"_index":3092,"title":{},"content":{"671":{}}}],["sofia",{"_index":2042,"title":{},"content":{"378":{}}}],["soft",{"_index":3240,"title":{},"content":{"707":{}}}],["softwar",{"_index":454,"title":{},"content":{"181":{},"209":{},"216":{},"240":{},"241":{},"311":{},"621":{},"628":{},"630":{},"634":{},"636":{},"715":{}}}],["sold_item",{"_index":2152,"title":{},"content":{"404":{}}}],["sole",{"_index":2947,"title":{},"content":{"641":{}}}],["solicit",{"_index":2624,"title":{},"content":{"583":{},"828":{}}}],["solid",{"_index":3027,"title":{},"content":{"647":{}}}],["solut",{"_index":1446,"title":{"670":{},"709":{}},"content":{"256":{},"262":{},"331":{},"618":{},"646":{},"746":{},"747":{},"748":{},"749":{},"750":{},"751":{},"753":{},"829":{},"859":{}}}],["solv",{"_index":2817,"title":{},"content":{"620":{}}}],["someth",{"_index":2116,"title":{},"content":{"391":{},"401":{},"402":{},"479":{},"480":{},"653":{}}}],["sometim",{"_index":1554,"title":{},"content":{"262":{},"295":{},"685":{}}}],["somewher",{"_index":1854,"title":{},"content":{"349":{}}}],["soon",{"_index":526,"title":{},"content":{"182":{},"183":{},"378":{},"645":{},"661":{}}}],["sort",{"_index":2858,"title":{},"content":{"624":{}}}],["sortord",{"_index":31,"title":{"9":{}},"content":{"9":{},"131":{},"132":{}}}],["sortorder.asc",{"_index":38,"title":{},"content":{"10":{}}}],["sortorder.desc",{"_index":40,"title":{},"content":{"10":{}}}],["sound",{"_index":2885,"title":{},"content":{"635":{}}}],["sourc",{"_index":464,"title":{},"content":{"181":{},"188":{},"189":{},"190":{},"191":{},"304":{},"328":{},"348":{},"349":{},"352":{},"581":{},"599":{},"627":{},"648":{},"667":{},"696":{},"744":{},"768":{},"786":{},"792":{},"819":{},"823":{}}}],["sovereign",{"_index":3016,"title":{},"content":{"646":{}}}],["spa",{"_index":3370,"title":{},"content":{"751":{}}}],["space",{"_index":942,"title":{},"content":{"202":{},"822":{}}}],["spawn",{"_index":1627,"title":{},"content":{"298":{},"300":{},"303":{}}}],["speak",{"_index":2958,"title":{},"content":{"650":{}}}],["special",{"_index":2160,"title":{},"content":{"404":{},"630":{}}}],["specif",{"_index":360,"title":{"197":{},"400":{},"401":{},"535":{},"605":{},"783":{}},"content":{"104":{},"120":{},"181":{},"189":{},"200":{},"210":{},"259":{},"261":{},"262":{},"355":{},"356":{},"360":{},"375":{},"378":{},"399":{},"400":{},"401":{},"452":{},"456":{},"457":{},"500":{},"533":{},"534":{},"535":{},"557":{},"593":{},"647":{},"657":{},"660":{},"720":{},"779":{},"780":{},"784":{},"801":{},"802":{},"809":{},"813":{},"829":{},"859":{}}}],["specifi",{"_index":407,"title":{},"content":{"147":{},"151":{},"201":{},"306":{},"354":{},"357":{},"375":{},"383":{},"384":{},"391":{},"392":{},"399":{},"400":{},"401":{},"488":{},"505":{},"508":{},"602":{},"714":{},"725":{},"770":{},"779":{},"784":{},"785":{},"804":{},"809":{}}}],["specificatonfn",{"_index":757,"title":{},"content":{"190":{},"191":{}}}],["spectrometri",{"_index":3188,"title":{},"content":{"699":{}}}],["speed",{"_index":2594,"title":{},"content":{"540":{},"541":{},"542":{},"543":{},"799":{}}}],["spend",{"_index":1067,"title":{},"content":{"220":{},"223":{}}}],["spent",{"_index":288,"title":{},"content":{"73":{},"136":{},"220":{},"221":{},"223":{},"224":{}}}],["split",{"_index":1088,"title":{},"content":{"228":{},"310":{},"685":{},"708":{},"710":{},"749":{}}}],["spot",{"_index":2539,"title":{},"content":{"500":{}}}],["sqrt/1",{"_index":2413,"title":{"473":{}},"content":{}}],["squar",{"_index":2417,"title":{},"content":{"473":{}}}],["squential",{"_index":1188,"title":{},"content":{"244":{}}}],["ssl",{"_index":3400,"title":{"756":{},"772":{}},"content":{"756":{},"758":{},"772":{},"774":{}}}],["stabl",{"_index":3212,"title":{},"content":{"688":{}}}],["stack",{"_index":977,"title":{"215":{}},"content":{}}],["stage",{"_index":2700,"title":{},"content":{"576":{}}}],["stamp",{"_index":97,"title":{},"content":{"22":{},"95":{},"621":{},"625":{},"715":{}}}],["stamp'",{"_index":3311,"title":{},"content":{"715":{}}}],["stamp.nod",{"_index":3310,"title":{},"content":{"715":{}}}],["stand",{"_index":2738,"title":{},"content":{"602":{},"627":{}}}],["standalon",{"_index":1667,"title":{"300":{}},"content":{}}],["standard",{"_index":1742,"title":{"652":{},"720":{}},"content":{"326":{},"505":{},"623":{},"641":{},"642":{},"644":{},"652":{},"720":{}}}],["start",{"_index":547,"title":{},"content":{"183":{},"190":{},"228":{},"234":{},"262":{},"298":{},"312":{},"358":{},"367":{},"429":{},"522":{},"576":{},"588":{},"625":{},"658":{},"679":{},"681":{},"685":{},"690":{},"692":{},"752":{},"777":{},"806":{},"807":{},"809":{}}}],["stat",{"_index":1563,"title":{},"content":{"262":{},"264":{}}}],["state",{"_index":1030,"title":{},"content":{"216":{},"232":{},"303":{},"328":{},"345":{},"347":{},"349":{},"354":{},"386":{},"404":{},"479":{},"484":{},"513":{},"577":{},"617":{},"682":{},"686":{},"690":{},"714":{}}}],["stateless",{"_index":1843,"title":{"349":{}},"content":{"714":{}}}],["statement",{"_index":2030,"title":{"396":{}},"content":{"376":{},"394":{}}}],["static",{"_index":1172,"title":{"770":{},"771":{},"773":{},"774":{}},"content":{"243":{},"247":{},"661":{},"751":{},"752":{},"768":{},"770":{},"773":{},"820":{}}}],["statist",{"_index":1589,"title":{},"content":{"266":{},"693":{}}}],["statu",{"_index":623,"title":{"692":{},"797":{}},"content":{"188":{},"349":{},"479":{},"480":{},"603":{},"692":{},"709":{},"711":{},"764":{},"780":{}}}],["stem",{"_index":2937,"title":{},"content":{"630":{}}}],["step",{"_index":786,"title":{"792":{},"793":{},"794":{}},"content":{"191":{},"298":{},"304":{},"348":{},"503":{},"505":{},"590":{},"607":{},"628":{},"665":{},"748":{},"784":{},"785":{},"791":{},"792":{}}}],["still",{"_index":2051,"title":{},"content":{"355":{},"381":{},"558":{},"587":{},"621":{},"624":{},"630":{},"651":{},"747":{},"751":{},"754":{},"757":{}}}],["stock",{"_index":1846,"title":{},"content":{"349":{}}}],["storag",{"_index":198,"title":{"261":{},"266":{},"687":{}},"content":{"49":{},"129":{},"130":{},"181":{},"226":{},"234":{},"241":{},"255":{},"256":{},"259":{},"260":{},"262":{},"263":{},"266":{},"293":{},"294":{},"309":{},"310":{},"313":{},"335":{},"479":{},"505":{},"519":{},"576":{},"577":{},"620":{},"625":{},"644":{},"661":{},"665":{},"683":{},"684":{},"685":{},"687":{},"688":{},"689":{},"691":{},"692":{},"706":{},"708":{},"709":{},"805":{}}}],["storagenoncepublickey",{"_index":201,"title":{},"content":{"49":{}}}],["store",{"_index":267,"title":{"822":{}},"content":{"67":{},"137":{},"173":{},"178":{},"180":{},"181":{},"189":{},"190":{},"191":{},"197":{},"202":{},"211":{},"212":{},"226":{},"240":{},"241":{},"247":{},"248":{},"251":{},"254":{},"259":{},"272":{},"280":{},"284":{},"294":{},"335":{},"349":{},"513":{},"533":{},"534":{},"535":{},"588":{},"598":{},"620":{},"622":{},"641":{},"649":{},"650":{},"657":{},"661":{},"684":{},"690":{},"699":{},"706":{},"709":{},"710":{},"714":{},"749":{},"762":{},"772":{},"821":{},"822":{}}}],["storesit",{"_index":770,"title":{},"content":{"190":{}}}],["str",{"_index":2163,"title":{},"content":{"406":{},"408":{},"410":{},"411":{},"412":{},"438":{},"439":{},"460":{}}}],["str1",{"_index":2168,"title":{},"content":{"407":{}}}],["str2",{"_index":2170,"title":{},"content":{"407":{}}}],["straighforward",{"_index":1521,"title":{},"content":{"261":{}}}],["straightforward",{"_index":2722,"title":{},"content":{"593":{}}}],["strategi",{"_index":1035,"title":{},"content":{"216":{},"259":{},"261":{}}}],["stream",{"_index":1525,"title":{"330":{}},"content":{"261":{},"329":{},"330":{},"332":{}}}],["strengthen",{"_index":2742,"title":{},"content":{"603":{},"780":{},"781":{}}}],["strict",{"_index":2852,"title":{},"content":{"623":{}}}],["string",{"_index":118,"title":{"165":{},"360":{},"405":{}},"content":{"25":{},"26":{},"28":{},"29":{},"37":{},"38":{},"55":{},"56":{},"64":{},"65":{},"70":{},"71":{},"73":{},"74":{},"77":{},"78":{},"83":{},"84":{},"92":{},"93":{},"98":{},"99":{},"109":{},"144":{},"147":{},"163":{},"165":{},"354":{},"358":{},"360":{},"367":{},"380":{},"393":{},"401":{},"406":{},"408":{},"410":{},"411":{},"412":{},"430":{},"435":{},"436":{},"437":{},"439":{},"440":{},"468":{},"469":{},"479":{},"480":{},"484":{},"820":{},"834":{},"837":{},"839":{},"840":{},"842":{},"843":{},"846":{},"848":{},"849":{},"851":{},"852":{},"855":{},"857":{},"858":{}}}],["string.from_number(13",{"_index":2178,"title":{},"content":{"409":{}}}],["string.from_number(13.2",{"_index":2180,"title":{},"content":{"409":{}}}],["string.from_number(count",{"_index":2552,"title":{},"content":{"509":{}}}],["string.in?(\"bob,alice,julia",{"_index":2165,"title":{},"content":{"407":{}}}],["string.siz",{"_index":2162,"title":{},"content":{"406":{}}}],["string.size(\"hello",{"_index":2161,"title":{},"content":{"406":{}}}],["string.to_hex(\"592ac76afa",{"_index":2183,"title":{},"content":{"410":{}}}],["string.to_hex(\"hello",{"_index":2185,"title":{},"content":{"410":{}}}],["string.to_lowercase(\"#{firstnam",{"_index":1974,"title":{},"content":{"352":{}}}],["string.to_lowercase(\"sherlock",{"_index":2193,"title":{},"content":{"412":{}}}],["string.to_numb",{"_index":1951,"title":{},"content":{"370":{},"408":{}}}],["string.to_number(\"12",{"_index":2173,"title":{},"content":{"408":{}}}],["string.to_number(\"12.1",{"_index":2175,"title":{},"content":{"408":{}}}],["string.to_number(contract.cont",{"_index":1978,"title":{},"content":{"353":{},"509":{}}}],["string.to_uppercase(\"arsèn",{"_index":2189,"title":{},"content":{"411":{}}}],["string_bip_44",{"_index":762,"title":{},"content":{"190":{},"191":{}}}],["strong",{"_index":2743,"title":{},"content":{"603":{},"780":{},"821":{}}}],["struct",{"_index":1781,"title":{},"content":{"332":{}}}],["structu",{"_index":1464,"title":{},"content":{"256":{}}}],["structur",{"_index":329,"title":{"218":{},"257":{},"258":{},"334":{},"715":{}},"content":{"92":{},"189":{},"190":{},"238":{},"244":{},"246":{},"247":{},"254":{},"257":{},"258":{},"259":{},"260":{},"262":{},"263":{},"334":{},"366":{},"367":{},"468":{},"484":{},"645":{},"715":{},"719":{},"767":{},"774":{}}}],["style",{"_index":1037,"title":{},"content":{"216":{},"583":{},"658":{}}}],["stylesheet",{"_index":3360,"title":{},"content":{"751":{}}}],["sub",{"_index":1209,"title":{},"content":{"246":{},"263":{}}}],["subdomain",{"_index":3397,"title":{},"content":{"754":{}}}],["subexpress",{"_index":2279,"title":{},"content":{"434":{}}}],["subject",{"_index":1833,"title":{},"content":{"347":{},"392":{},"583":{},"621":{},"671":{},"686":{},"688":{},"747":{},"749":{}}}],["submit",{"_index":1696,"title":{},"content":{"315":{},"316":{},"317":{},"319":{},"328":{},"501":{},"577":{},"617":{},"667":{},"711":{}}}],["subnet",{"_index":1633,"title":{},"content":{"298":{}}}],["subpart",{"_index":2568,"title":{},"content":{"510":{}}}],["subscrib",{"_index":432,"title":{},"content":{"173":{},"175":{},"178":{},"479":{},"707":{},"711":{}}}],["subscript",{"_index":186,"title":{"550":{}},"content":{"42":{},"66":{},"69":{},"146":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"831":{}}}],["subsequ",{"_index":940,"title":{},"content":{"202":{},"784":{}}}],["subset",{"_index":1087,"title":{"228":{},"705":{}},"content":{"228":{},"229":{},"236":{},"237":{},"262":{},"264":{},"265":{},"456":{},"457":{},"687":{},"690":{},"691":{},"692":{},"693":{},"701":{},"704":{},"705":{},"707":{}}}],["substructur",{"_index":1245,"title":{},"content":{"246":{}}}],["subtract",{"_index":616,"title":{},"content":{"188":{}}}],["succeed",{"_index":3079,"title":{},"content":{"658":{}}}],["success",{"_index":775,"title":{"834":{},"837":{},"840":{},"843":{},"846":{},"849":{},"852":{},"855":{},"858":{}},"content":{"191":{},"234":{},"268":{},"505":{},"647":{},"658":{},"795":{}}}],["successfulli",{"_index":266,"title":{},"content":{"67":{},"180":{},"216":{},"589":{},"590":{},"610":{}}}],["successor",{"_index":1612,"title":{},"content":{"297":{}}}],["such",{"_index":445,"title":{},"content":{"181":{},"246":{},"326":{},"334":{},"479":{},"583":{},"590":{},"593":{},"619":{},"627":{},"641":{},"652":{},"663":{},"669":{},"676":{},"688":{},"692":{},"726":{},"744":{},"747":{},"750":{},"751":{},"753":{},"780":{},"819":{}}}],["suffer",{"_index":1468,"title":{},"content":{"256":{}}}],["suffici",{"_index":3246,"title":{},"content":{"709":{}}}],["sugar",{"_index":2015,"title":{},"content":{"374":{}}}],["suggest",{"_index":1929,"title":{},"content":{"367":{},"428":{},"583":{},"648":{},"754":{}}}],["suit",{"_index":1661,"title":{},"content":{"304":{},"645":{},"751":{}}}],["sum",{"_index":3328,"title":{},"content":{"744":{}}}],["sum(a",{"_index":1942,"title":{},"content":{"369":{}}}],["sum(list",{"_index":1943,"title":{},"content":{"369":{}}}],["summar",{"_index":309,"title":{},"content":{"77":{},"319":{},"706":{}}}],["summari",{"_index":73,"title":{},"content":{"19":{},"77":{},"104":{},"106":{},"228":{},"229":{},"230":{},"238":{},"262":{},"264":{},"265":{},"319":{},"322":{},"328":{},"590":{},"676":{},"683":{},"691":{},"692":{},"693":{},"704":{},"706":{},"708":{},"793":{}}}],["summarytim",{"_index":79,"title":{},"content":{"19":{}}}],["sunday",{"_index":2505,"title":{},"content":{"401":{}}}],["super",{"_index":2986,"title":{},"content":{"644":{}}}],["supervis",{"_index":1084,"title":{},"content":{"227":{},"231":{},"329":{},"334":{},"620":{},"673":{},"678":{},"698":{}}}],["supervisor",{"_index":1027,"title":{"231":{}},"content":{"216":{}}}],["suppli",{"_index":207,"title":{},"content":{"55":{},"125":{},"190":{},"191":{},"589":{},"722":{},"723":{},"724":{},"725":{},"744":{}}}],["supplier",{"_index":3135,"title":{},"content":{"695":{}}}],["support",{"_index":486,"title":{"596":{}},"content":{"181":{},"183":{},"190":{},"191":{},"197":{},"202":{},"205":{},"206":{},"211":{},"228":{},"241":{},"255":{},"257":{},"259":{},"260":{},"262":{},"325":{},"331":{},"332":{},"335":{},"509":{},"584":{},"596":{},"618":{},"622":{},"623":{},"630":{},"638":{},"647":{},"665":{},"666":{},"668":{},"669":{},"685":{},"710":{},"712":{},"719":{},"756":{},"818":{},"819":{},"821":{},"829":{}}}],["sure",{"_index":548,"title":{},"content":{"183":{},"262":{},"309":{},"310":{},"313":{},"402":{}}}],["sustain",{"_index":2907,"title":{},"content":{"628":{},"647":{},"744":{},"745":{}}}],["susten",{"_index":3338,"title":{},"content":{"745":{}}}],["sw_ok",{"_index":625,"title":{},"content":{"188":{},"191":{}}}],["swap",{"_index":1161,"title":{},"content":{"240":{},"241":{},"561":{},"565":{},"579":{},"593":{},"602":{},"603":{},"606":{},"613":{},"779":{},"780":{}}}],["swap'",{"_index":3485,"title":{},"content":{"784":{}}}],["switch",{"_index":2707,"title":{"580":{},"609":{}},"content":{"580":{},"609":{}}}],["symbol",{"_index":206,"title":{},"content":{"55":{},"125":{},"589":{},"590":{},"612":{},"722":{},"723":{},"725":{}}}],["symmetr",{"_index":935,"title":{},"content":{"202":{},"246":{}}}],["sync",{"_index":1151,"title":{},"content":{"234":{},"266":{},"681":{},"682":{},"683":{},"684":{},"771":{}}}],["sync/r",{"_index":3119,"title":{},"content":{"682":{}}}],["synchron",{"_index":1141,"title":{"681":{},"684":{}},"content":{"232":{},"347":{},"557":{},"678":{},"681":{},"686":{},"689":{},"693":{}}}],["synchronizationnod",{"_index":3220,"title":{},"content":{"693":{}}}],["synopsi",{"_index":518,"title":{"182":{}},"content":{}}],["syntax",{"_index":1874,"title":{"381":{}},"content":{"358":{},"359":{},"366":{},"367":{},"370":{},"371":{},"373":{},"378":{},"381":{},"582":{}}}],["system",{"_index":998,"title":{"386":{}},"content":{"216":{},"227":{},"261":{},"335":{},"386":{},"597":{},"620":{},"621":{},"627":{},"645":{},"646":{},"685":{},"689":{},"698":{},"700":{},"749":{},"750":{},"752":{},"753":{},"754":{},"786":{},"821":{}}}],["t.t.,([0",{"_index":2272,"title":{},"content":{"434":{}}}],["tab",{"_index":2791,"title":{},"content":{"587":{},"589":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{}}}],["tabl",{"_index":1063,"title":{"258":{},"322":{},"335":{},"336":{},"337":{},"338":{},"339":{}},"content":{"219":{},"220":{},"222":{},"223":{},"225":{},"226":{},"258":{},"262":{},"294":{},"322":{},"335":{},"336":{},"337":{},"338":{},"339":{},"771":{},"772":{},"773":{}}}],["tag",{"_index":1947,"title":{},"content":{"369":{},"370":{},"404":{}}}],["take",{"_index":716,"title":{},"content":{"190":{},"191":{},"201":{},"216":{},"246":{},"252":{},"254":{},"257":{},"272":{},"273":{},"274":{},"276":{},"309":{},"508":{},"648":{},"699":{},"762":{},"820":{}}}],["taken",{"_index":719,"title":{},"content":{"190":{},"583":{},"686":{},"715":{},"785":{}}}],["talk",{"_index":3372,"title":{},"content":{"751":{}}}],["target",{"_index":1546,"title":{"751":{}},"content":{"262":{},"263":{},"297":{},"298":{},"304":{},"309":{},"661":{},"715":{},"752":{},"792":{},"805":{}}}],["task",{"_index":1053,"title":{},"content":{"217":{},"232":{},"235":{},"300":{},"634":{},"757":{},"819":{}}}],["tbnb",{"_index":2766,"title":{},"content":{"612":{}}}],["tcp",{"_index":1763,"title":{},"content":{"330":{},"334":{}}}],["team",{"_index":3511,"title":{},"content":{"797":{},"823":{}}}],["tech",{"_index":529,"title":{},"content":{"182":{}}}],["tech/pourquoi",{"_index":3569,"title":{},"content":{"819":{}}}],["technic",{"_index":1617,"title":{"829":{}},"content":{"297":{},"321":{},"643":{},"647":{},"648":{},"650":{},"654":{},"658":{},"797":{},"831":{}}}],["techniqu",{"_index":2727,"title":{},"content":{"593":{},"621":{},"780":{}}}],["technolog",{"_index":976,"title":{"215":{}},"content":{"216":{},"345":{},"561":{},"579":{},"593":{},"618":{},"620":{},"629":{},"641":{},"695":{},"696":{},"698":{},"779":{}}}],["telemetri",{"_index":1679,"title":{},"content":{"307":{}}}],["tell",{"_index":2695,"title":{},"content":{"574":{},"615":{}}}],["temp",{"_index":1325,"title":{},"content":{"252":{}}}],["templat",{"_index":1203,"title":{},"content":{"246":{}}}],["temporari",{"_index":2878,"title":{},"content":{"634":{}}}],["term",{"_index":1474,"title":{},"content":{"257":{},"259":{},"261":{},"262":{},"335":{},"519":{},"647":{},"658":{},"661":{},"688":{},"689":{},"698":{}}}],["termin",{"_index":565,"title":{},"content":{"185":{},"540":{},"541":{},"542":{},"543":{},"799":{},"800":{},"826":{}}}],["terminolog",{"_index":906,"title":{},"content":{"200":{}}}],["test",{"_index":467,"title":{"185":{},"499":{},"500":{},"501":{},"502":{},"503":{}},"content":{"181":{},"183":{},"240":{},"297":{},"298":{},"304":{},"365":{},"497":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"509":{},"514":{},"515":{},"521":{},"647":{},"657":{},"658":{},"699":{},"752":{},"792":{},"819":{}}}],["testcoin_bal",{"_index":2340,"title":{},"content":{"452":{}}}],["testnet",{"_index":470,"title":{"520":{},"532":{},"568":{},"580":{},"609":{},"611":{},"612":{}},"content":{"181":{},"182":{},"240":{},"298":{},"328":{},"523":{},"524":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"553":{},"558":{},"580":{},"609":{},"612":{},"658":{},"704":{},"766":{},"777":{},"786":{},"787":{},"792":{},"822":{}}}],["testnet'",{"_index":3475,"title":{},"content":{"777":{}}}],["testnet/mainnet",{"_index":3225,"title":{},"content":{"703":{}}}],["text",{"_index":401,"title":{},"content":{"142":{},"165":{},"365":{},"408":{},"409":{},"410":{},"432":{},"433":{},"434":{},"460":{},"463":{},"498":{},"512":{},"513":{},"582":{},"587":{},"715":{},"822":{}}}],["textual",{"_index":421,"title":{},"content":{"165":{}}}],["thank",{"_index":1580,"title":{},"content":{"263":{},"623":{},"685":{},"859":{}}}],["that'",{"_index":2540,"title":{},"content":{"503":{},"505":{}}}],["the:transact",{"_index":3084,"title":{},"content":{"668":{}}}],["theft",{"_index":2867,"title":{},"content":{"621":{}}}],["theme",{"_index":3549,"title":{},"content":{"818":{},"822":{}}}],["themselv",{"_index":2956,"title":{},"content":{"642":{},"654":{}}}],["therefor",{"_index":1675,"title":{},"content":{"303":{},"540":{},"541":{},"542":{},"543":{},"558":{},"581":{},"623":{},"627":{},"633":{},"645":{},"676":{},"683":{},"707":{},"799":{},"829":{},"859":{}}}],["thier",{"_index":704,"title":{},"content":{"190":{},"191":{}}}],["thing",{"_index":1021,"title":{},"content":{"216":{},"313":{},"354":{},"362":{},"575":{},"616":{},"756":{},"763":{}}}],["think",{"_index":1006,"title":{},"content":{"216":{},"750":{}}}],["third",{"_index":1025,"title":{},"content":{"216":{},"462":{},"641":{},"647":{},"659":{},"822":{}}}],["those",{"_index":1008,"title":{},"content":{"216":{},"217":{},"226":{},"229":{},"231":{},"238":{},"257":{},"259":{},"260":{},"263":{},"266":{},"309":{},"310":{},"329":{},"509":{},"647":{},"654":{},"683":{},"693":{},"706":{},"715":{}}}],["thread",{"_index":1011,"title":{},"content":{"216":{}}}],["threat",{"_index":3013,"title":{},"content":{"646":{}}}],["three",{"_index":1715,"title":{},"content":{"311":{},"328":{},"488":{},"622":{},"774":{}}}],["threshhold",{"_index":1619,"title":{},"content":{"297":{}}}],["threshold",{"_index":1693,"title":{},"content":{"312":{},"326":{},"735":{}}}],["thrift",{"_index":1774,"title":{},"content":{"331":{}}}],["through",{"_index":875,"title":{},"content":{"197":{},"201":{},"239":{},"240":{},"274":{},"277":{},"291":{},"306":{},"309":{},"316":{},"319":{},"330":{},"331":{},"349":{},"370":{},"584":{},"607":{},"631":{},"647":{},"665":{},"666":{},"667":{},"671":{},"672":{},"674":{},"675":{},"677":{},"695":{},"698":{},"699":{},"706":{},"720":{},"751":{},"780":{},"784":{},"785":{},"786":{},"794":{},"795":{},"798":{},"829":{}}}],["throughput",{"_index":2834,"title":{},"content":{"622":{}}}],["throught",{"_index":3377,"title":{},"content":{"752":{}}}],["throw",{"_index":3108,"title":{},"content":{"675":{}}}],["thu",{"_index":528,"title":{},"content":{"182":{},"354":{},"628":{},"650":{},"820":{}}}],["ti",{"_index":2922,"title":{},"content":{"628":{}}}],["tick",{"_index":1723,"title":{},"content":{"328":{}}}],["time",{"_index":290,"title":{"235":{},"400":{},"441":{},"563":{},"600":{},"602":{},"770":{},"779":{}},"content":{"73":{},"92":{},"104":{},"120":{},"136":{},"186":{},"229":{},"257":{},"258":{},"261":{},"262":{},"307":{},"349":{},"353":{},"365":{},"376":{},"384":{},"391":{},"400":{},"442":{},"452":{},"456":{},"457":{},"479":{},"506":{},"507":{},"514":{},"561":{},"565":{},"576":{},"583":{},"593":{},"602":{},"628":{},"644":{},"646":{},"647":{},"657":{},"672":{},"674":{},"676":{},"679":{},"680":{},"691":{},"693":{},"698":{},"703":{},"704":{},"706":{},"707":{},"709":{},"724":{},"762":{},"779":{},"781":{},"784":{},"819":{},"831":{}}}],["time(timeout",{"_index":1765,"title":{},"content":{"330":{}}}],["time.now",{"_index":2011,"title":{},"content":{"373":{},"376":{},"442":{}}}],["time.now/0",{"_index":2557,"title":{"507":{}},"content":{"506":{},"507":{}}}],["timefram",{"_index":1683,"title":{},"content":{"309":{}}}],["timelock",{"_index":2663,"title":{},"content":{"561":{},"563":{},"600":{}}}],["timeout",{"_index":1126,"title":{},"content":{"237":{},"822":{}}}],["timer",{"_index":1096,"title":{"229":{}},"content":{"229":{},"704":{}}}],["timespan",{"_index":1123,"title":{},"content":{"237":{}}}],["timestamp",{"_index":80,"title":{"167":{},"514":{},"691":{}},"content":{"19":{},"20":{},"37":{},"38":{},"40":{},"41":{},"73":{},"74":{},"77":{},"78":{},"92":{},"93":{},"95":{},"96":{},"104":{},"105":{},"120":{},"121":{},"136":{},"167":{},"262":{},"297":{},"322":{},"346":{},"354":{},"376":{},"383":{},"691":{},"693":{},"715":{},"822":{}}}],["tini",{"_index":2822,"title":{},"content":{"620":{}}}],["tip",{"_index":531,"title":{},"content":{"182":{},"187":{},"189":{},"242":{},"245":{},"248":{},"252":{},"267":{},"367":{},"371":{},"373":{},"398":{},"416":{},"419":{},"428":{},"484":{},"485":{},"587":{},"768":{},"786":{},"792":{}}}],["tmp",{"_index":1632,"title":{},"content":{"298":{},"304":{}}}],["to_hex/1",{"_index":2182,"title":{"410":{}},"content":{}}],["to_lowercase/1",{"_index":2192,"title":{"412":{}},"content":{}}],["to_number/1",{"_index":2172,"title":{"408":{}},"content":{}}],["to_string/1",{"_index":2287,"title":{"438":{}},"content":{}}],["to_uppercase/1",{"_index":2188,"title":{"411":{}},"content":{}}],["toc",{"_index":583,"title":{},"content":{"187":{}}}],["today",{"_index":3369,"title":{},"content":{"751":{}}}],["todo",{"_index":1856,"title":{},"content":{"344":{},"389":{},"519":{},"736":{},"782":{}}}],["token",{"_index":63,"title":{"55":{},"123":{},"223":{},"317":{},"465":{},"517":{},"575":{},"589":{},"616":{},"665":{},"718":{},"724":{},"740":{},"744":{},"745":{},"804":{}},"content":{"15":{},"34":{},"48":{},"52":{},"55":{},"57":{},"73":{},"83":{},"92":{},"103":{},"123":{},"125":{},"136":{},"146":{},"158":{},"166":{},"170":{},"189":{},"223":{},"224":{},"225":{},"233":{},"317":{},"326":{},"354":{},"384":{},"385":{},"389":{},"393":{},"396":{},"452":{},"455":{},"456":{},"457":{},"466":{},"488":{},"517":{},"575":{},"587":{},"589":{},"593":{},"598":{},"604":{},"606":{},"616":{},"647":{},"659":{},"660":{},"665":{},"668":{},"715":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"737":{},"740":{},"745":{},"777":{},"781":{},"784":{},"785":{},"792":{},"793":{},"802":{},"804":{},"818":{}}}],["token'",{"_index":385,"title":{},"content":{"123":{},"169":{},"466":{},"517":{},"721":{}}}],["token.address",{"_index":386,"title":{},"content":{"124":{}}}],["token.collect",{"_index":216,"title":{},"content":{"56":{}}}],["token.decim",{"_index":217,"title":{},"content":{"56":{}}}],["token.fetch_id_from_address(\"000012345",{"_index":2391,"title":{},"content":{"466":{}}}],["token.fetch_id_from_address/1",{"_index":2558,"title":{},"content":{"506":{}}}],["token.genesi",{"_index":218,"title":{},"content":{"56":{}}}],["token.id",{"_index":219,"title":{},"content":{"56":{}}}],["token.nam",{"_index":220,"title":{},"content":{"56":{}}}],["token.ownership",{"_index":221,"title":{},"content":{"56":{}}}],["token.properti",{"_index":222,"title":{},"content":{"56":{}}}],["token.suppli",{"_index":223,"title":{},"content":{"56":{}}}],["token.symbol",{"_index":224,"title":{},"content":{"56":{}}}],["token.typ",{"_index":225,"title":{},"content":{"56":{}}}],["token_address",{"_index":1988,"title":{},"content":{"354":{},"384":{},"389":{},"393":{},"396":{},"452":{},"455":{},"456":{},"457":{},"488":{},"517":{}}}],["token_id",{"_index":1990,"title":{},"content":{"354":{},"393":{},"452":{},"454":{},"455":{},"456":{},"457":{},"488":{},"517":{}}}],["token_mov",{"_index":1987,"title":{},"content":{"354":{}}}],["token_nam",{"_index":3269,"title":{},"content":{"722":{}}}],["token_refer",{"_index":3283,"title":{},"content":{"724":{},"725":{}}}],["token_symbol",{"_index":3268,"title":{},"content":{"722":{}}}],["token_to_credit",{"_index":2067,"title":{},"content":{"384":{},"389":{}}}],["token_to_transf",{"_index":2123,"title":{},"content":{"393":{}}}],["token_transf",{"_index":1992,"title":{},"content":{"354":{},"376":{},"389":{},"392":{},"393":{},"488":{},"739":{}}}],["tokenaddress",{"_index":233,"title":{},"content":{"58":{},"73":{},"83":{},"92":{},"726":{}}}],["tokenbal",{"_index":64,"title":{"52":{}},"content":{"15":{},"16":{},"52":{},"146":{},"158":{}}}],["tokenbalance.address",{"_index":228,"title":{},"content":{"53":{}}}],["tokenbalance.amount",{"_index":229,"title":{},"content":{"53":{}}}],["tokenbalance.tokenid",{"_index":230,"title":{},"content":{"53":{}}}],["tokenid",{"_index":227,"title":{},"content":{"52":{},"58":{},"73":{},"83":{},"92":{},"726":{}}}],["tokenledg",{"_index":139,"title":{"61":{}},"content":{"34":{},"35":{},"60":{},"61":{}}}],["tokenledger.transf",{"_index":232,"title":{},"content":{"62":{}}}],["tokenproperti",{"_index":215,"title":{"169":{}},"content":{"55":{},"56":{},"169":{}}}],["tokens_identifi",{"_index":2371,"title":{},"content":{"457":{}}}],["tokentransf",{"_index":231,"title":{"58":{}},"content":{"58":{},"61":{},"62":{},"146":{},"158":{}}}],["tokentransfer.amount",{"_index":234,"title":{},"content":{"59":{}}}],["tokentransfer.to",{"_index":235,"title":{},"content":{"59":{}}}],["tokentransfer.tokenaddress",{"_index":236,"title":{},"content":{"59":{}}}],["tokentransfer.tokenid",{"_index":237,"title":{},"content":{"59":{}}}],["toler",{"_index":997,"title":{},"content":{"216":{},"622":{},"671":{}}}],["tom",{"_index":1915,"title":{},"content":{"365":{}}}],["tom\\njerry\\n",{"_index":1920,"title":{},"content":{"365":{}}}],["took",{"_index":1514,"title":{},"content":{"260":{}}}],["tool",{"_index":1639,"title":{},"content":{"304":{},"576":{},"751":{},"759":{},"765":{},"799":{},"814":{},"826":{}}}],["top",{"_index":1798,"title":{},"content":{"341":{},"342":{},"343":{},"521":{},"618":{}}}],["torrent",{"_index":3346,"title":{},"content":{"749":{}}}],["total",{"_index":826,"title":{},"content":{"191":{},"220":{},"223":{},"623":{},"767":{}}}],["total_token_transf",{"_index":807,"title":{},"content":{"191":{}}}],["total_uco_transf",{"_index":805,"title":{},"content":{"191":{}}}],["toto,([0",{"_index":2270,"title":{},"content":{"434":{}}}],["touch",{"_index":3543,"title":{},"content":{"818":{},"821":{}}}],["toward",{"_index":3255,"title":{},"content":{"718":{}}}],["tp",{"_index":1017,"title":{},"content":{"216":{},"266":{},"644":{},"669":{},"686":{}}}],["tpm",{"_index":969,"title":{"242":{}},"content":{"209":{},"217":{},"242":{},"244":{},"245":{},"246":{},"249":{},"252":{},"629":{},"630":{}}}],["tpm.c",{"_index":1169,"title":{},"content":{"242":{}}}],["tpm.h",{"_index":1170,"title":{},"content":{"242":{}}}],["tpm/yubikey",{"_index":2936,"title":{},"content":{"630":{}}}],["tpm2_alg_a",{"_index":1279,"title":{},"content":{"246":{}}}],["tpm2_alg_cfb",{"_index":1283,"title":{},"content":{"246":{}}}],["tpm2_alg_nul",{"_index":1284,"title":{},"content":{"246":{}}}],["tpm2_alg_sha256",{"_index":1287,"title":{},"content":{"246":{}}}],["tpm2_ecc_nist_p256",{"_index":1289,"title":{},"content":{"246":{}}}],["tpm2b_hash",{"_index":1331,"title":{},"content":{"253":{}}}],["tpma_object_adminwithpolici",{"_index":1219,"title":{},"content":{"246":{}}}],["tpma_object_decrypt",{"_index":1237,"title":{},"content":{"246":{}}}],["tpma_object_decrypt:th",{"_index":1227,"title":{},"content":{"246":{}}}],["tpma_object_fixedpar",{"_index":1238,"title":{},"content":{"246":{}}}],["tpma_object_fixedparent:ind",{"_index":1231,"title":{},"content":{"246":{}}}],["tpma_object_fixedtpm",{"_index":1228,"title":{},"content":{"246":{}}}],["tpma_object_restrict",{"_index":1243,"title":{},"content":{"246":{}}}],["tpma_object_sensitivedataorigin",{"_index":1233,"title":{},"content":{"246":{}}}],["tpma_object_sign_encrypt",{"_index":1224,"title":{},"content":{"246":{}}}],["tpma_object_userwithauth",{"_index":1216,"title":{},"content":{"246":{}}}],["tracer/mark",{"_index":3214,"title":{},"content":{"690":{}}}],["track",{"_index":1551,"title":{"691":{}},"content":{"262":{},"791":{},"794":{}}}],["tradit",{"_index":899,"title":{},"content":{"200":{},"646":{},"685":{},"749":{}}}],["traffic",{"_index":3097,"title":{},"content":{"671":{},"677":{}}}],["transact",{"_index":16,"title":{"70":{},"126":{},"137":{},"191":{},"207":{},"230":{},"308":{},"312":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"353":{},"354":{},"377":{},"398":{},"399":{},"402":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"501":{},"510":{},"574":{},"615":{},"638":{},"660":{},"674":{},"675":{},"691":{},"706":{},"707":{},"713":{},"715":{},"716":{},"717":{},"727":{},"761":{},"802":{},"808":{},"813":{}},"content":{"6":{},"7":{},"18":{},"24":{},"25":{},"27":{},"31":{},"67":{},"70":{},"72":{},"73":{},"76":{},"77":{},"83":{},"92":{},"95":{},"97":{},"98":{},"101":{},"107":{},"112":{},"114":{},"115":{},"117":{},"126":{},"128":{},"131":{},"133":{},"134":{},"136":{},"137":{},"139":{},"142":{},"146":{},"149":{},"150":{},"154":{},"158":{},"160":{},"164":{},"166":{},"171":{},"175":{},"178":{},"180":{},"181":{},"186":{},"191":{},"197":{},"200":{},"207":{},"211":{},"212":{},"213":{},"226":{},"228":{},"230":{},"233":{},"234":{},"235":{},"237":{},"238":{},"240":{},"241":{},"259":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"294":{},"299":{},"300":{},"303":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"325":{},"328":{},"341":{},"342":{},"343":{},"345":{},"346":{},"347":{},"349":{},"351":{},"352":{},"353":{},"354":{},"356":{},"370":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"381":{},"383":{},"384":{},"386":{},"389":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"398":{},"399":{},"402":{},"403":{},"404":{},"442":{},"444":{},"445":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"455":{},"456":{},"457":{},"468":{},"469":{},"479":{},"483":{},"484":{},"485":{},"486":{},"488":{},"490":{},"492":{},"497":{},"500":{},"501":{},"503":{},"505":{},"509":{},"510":{},"511":{},"514":{},"518":{},"533":{},"534":{},"535":{},"558":{},"561":{},"576":{},"587":{},"589":{},"593":{},"603":{},"606":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"624":{},"625":{},"633":{},"634":{},"638":{},"641":{},"644":{},"645":{},"647":{},"649":{},"651":{},"653":{},"657":{},"658":{},"660":{},"661":{},"663":{},"664":{},"665":{},"666":{},"667":{},"669":{},"673":{},"674":{},"675":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{},"692":{},"693":{},"698":{},"700":{},"701":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"718":{},"719":{},"721":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{},"743":{},"745":{},"748":{},"750":{},"755":{},"756":{},"758":{},"760":{},"761":{},"762":{},"763":{},"764":{},"767":{},"770":{},"771":{},"772":{},"773":{},"774":{},"776":{},"780":{},"790":{},"791":{},"794":{},"798":{},"799":{},"800":{},"802":{},"803":{},"805":{},"806":{},"807":{},"808":{},"809":{},"813":{},"818":{},"822":{},"828":{},"829":{},"830":{},"838":{},"839":{},"840":{},"843":{},"856":{},"857":{},"858":{}}}],["transactio'",{"_index":1698,"title":{},"content":{"316":{}}}],["transaction'",{"_index":365,"title":{"662":{}},"content":{"109":{},"144":{},"201":{},"212":{},"213":{},"230":{},"262":{},"264":{},"315":{},"322":{},"354":{},"374":{},"380":{},"395":{},"451":{},"484":{},"511":{},"513":{},"515":{},"625":{},"638":{},"660":{},"661":{},"663":{},"684":{},"687":{},"690":{},"693":{},"715":{},"719":{},"721":{},"724":{},"725":{},"727":{},"761":{}}}],["transaction(",{"_index":3452,"title":{},"content":{"770":{},"771":{}}}],["transaction(aka",{"_index":3297,"title":{},"content":{"714":{}}}],["transaction(nod",{"_index":1787,"title":{},"content":{"335":{}}}],["transaction.address",{"_index":247,"title":{},"content":{"71":{},"127":{},"359":{},"389":{}}}],["transaction.bal",{"_index":248,"title":{},"content":{"71":{}}}],["transaction.chainlength",{"_index":249,"title":{},"content":{"71":{}}}],["transaction.cod",{"_index":2398,"title":{},"content":{"468":{}}}],["transaction.cont",{"_index":2507,"title":{},"content":{"402":{}}}],["transaction.crossvalidationstamp",{"_index":250,"title":{},"content":{"71":{}}}],["transaction.data",{"_index":251,"title":{},"content":{"71":{}}}],["transaction.input",{"_index":252,"title":{},"content":{"71":{}}}],["transaction.inputs.limit",{"_index":253,"title":{},"content":{"71":{}}}],["transaction.inputs.pagingoffset",{"_index":254,"title":{},"content":{"71":{}}}],["transaction.originsignatur",{"_index":255,"title":{},"content":{"71":{}}}],["transaction.previousaddress",{"_index":256,"title":{},"content":{"71":{}}}],["transaction.previouspublickey",{"_index":257,"title":{},"content":{"71":{}}}],["transaction.previoussignatur",{"_index":258,"title":{},"content":{"71":{}}}],["transaction.typ",{"_index":259,"title":{},"content":{"71":{}}}],["transaction.uco_transfers[contract.address",{"_index":2113,"title":{},"content":{"389":{}}}],["transaction.validationstamp",{"_index":260,"title":{},"content":{"71":{}}}],["transaction.vers",{"_index":261,"title":{},"content":{"71":{}}}],["transaction:previ",{"_index":2861,"title":{},"content":{"625":{}}}],["transaction_address",{"_index":2352,"title":{},"content":{"455":{}}}],["transactionaddress",{"_index":3641,"title":{},"content":{"840":{},"843":{}}}],["transactionattest",{"_index":264,"title":{"67":{}},"content":{"67":{},"146":{},"158":{},"178":{},"180":{}}}],["transactionattestation.address",{"_index":278,"title":{},"content":{"68":{}}}],["transactionattestation.maxconfirm",{"_index":279,"title":{},"content":{"68":{}}}],["transactionattestation.nbconfirm",{"_index":280,"title":{},"content":{"68":{}}}],["transactionchain",{"_index":42,"title":{"131":{}},"content":{"11":{},"72":{},"131":{},"146":{},"345":{},"347":{},"618":{},"631":{},"633":{}}}],["transactionchain.address",{"_index":388,"title":{},"content":{"132":{}}}],["transactionchain.ord",{"_index":389,"title":{},"content":{"132":{}}}],["transactionchain.pagingaddress",{"_index":390,"title":{},"content":{"132":{}}}],["transactionchainsinstead",{"_index":2818,"title":{},"content":{"620":{}}}],["transactionconfirm",{"_index":281,"title":{"178":{}},"content":{"69":{},"146":{},"178":{}}}],["transactionconfirmed.address",{"_index":437,"title":{},"content":{"179":{}}}],["transactiondata",{"_index":106,"title":{},"content":{"25":{}}}],["transactionerror",{"_index":29,"title":{"64":{},"175":{}},"content":{"8":{},"64":{},"66":{},"146":{},"166":{},"175":{},"177":{}}}],["transactionerror.address",{"_index":283,"title":{},"content":{"65":{},"176":{}}}],["transactionerror.context",{"_index":284,"title":{},"content":{"65":{}}}],["transactionerror.reason",{"_index":285,"title":{},"content":{"65":{}}}],["transactionhashfunct",{"_index":792,"title":{},"content":{"191":{}}}],["transactioninput",{"_index":242,"title":{"73":{},"134":{}},"content":{"70":{},"71":{},"73":{},"75":{},"134":{},"136":{},"141":{},"146":{},"156":{},"158":{},"160":{},"166":{},"168":{}}}],["transactioninput.amount",{"_index":294,"title":{},"content":{"74":{}}}],["transactioninput.from",{"_index":295,"title":{},"content":{"74":{}}}],["transactioninput.sp",{"_index":296,"title":{},"content":{"74":{}}}],["transactioninput.timestamp",{"_index":297,"title":{},"content":{"74":{}}}],["transactioninput.tokenaddress",{"_index":298,"title":{},"content":{"74":{}}}],["transactioninput.tokenid",{"_index":299,"title":{},"content":{"74":{}}}],["transactioninput.typ",{"_index":300,"title":{},"content":{"74":{}}}],["transactioninputs.address",{"_index":391,"title":{},"content":{"135":{}}}],["transactioninputs.limit",{"_index":392,"title":{},"content":{"135":{}}}],["transactioninputs.pagingoffset",{"_index":393,"title":{},"content":{"135":{}}}],["transactionmov",{"_index":149,"title":{"83":{}},"content":{"31":{},"32":{},"83":{},"146":{},"158":{},"166":{}}}],["transactionmovement.amount",{"_index":302,"title":{},"content":{"84":{}}}],["transactionmovement.to",{"_index":303,"title":{},"content":{"84":{}}}],["transactionmovement.tokenaddress",{"_index":304,"title":{},"content":{"84":{}}}],["transactionmovement.tokenid",{"_index":305,"title":{},"content":{"84":{}}}],["transactionmovement.typ",{"_index":306,"title":{},"content":{"84":{}}}],["transactions.pag",{"_index":395,"title":{},"content":{"138":{}}}],["transactions.th",{"_index":2830,"title":{},"content":{"620":{}}}],["transactionsaddress",{"_index":3218,"title":{},"content":{"693":{}}}],["transactionsummari",{"_index":81,"title":{"77":{}},"content":{"19":{},"20":{},"77":{},"146":{},"148":{},"158":{},"166":{},"168":{}}}],["transactionsummary.address",{"_index":313,"title":{},"content":{"78":{}}}],["transactionsummary.fe",{"_index":314,"title":{},"content":{"78":{}}}],["transactionsummary.movementsaddress",{"_index":315,"title":{},"content":{"78":{}}}],["transactionsummary.timestamp",{"_index":316,"title":{},"content":{"78":{}}}],["transactionsummary.typ",{"_index":317,"title":{},"content":{"78":{}}}],["transactionsummary.validationstampchecksum",{"_index":318,"title":{},"content":{"78":{}}}],["transactiontyp",{"_index":381,"title":{"171":{}},"content":{"115":{},"116":{},"171":{}}}],["transfer",{"_index":109,"title":{"388":{},"516":{},"517":{},"574":{},"615":{},"726":{},"739":{},"792":{},"794":{},"797":{},"803":{},"804":{}},"content":{"25":{},"31":{},"58":{},"61":{},"83":{},"86":{},"89":{},"186":{},"354":{},"376":{},"384":{},"385":{},"388":{},"389":{},"393":{},"396":{},"404":{},"483":{},"505":{},"516":{},"517":{},"523":{},"557":{},"561":{},"565":{},"567":{},"576":{},"579":{},"593":{},"604":{},"606":{},"607":{},"661":{},"665":{},"696":{},"710":{},"711":{},"715":{},"719":{},"723":{},"726":{},"767":{},"770":{},"771":{},"772":{},"773":{},"779":{},"781":{},"784":{},"785":{},"791":{},"792":{},"794":{},"795":{},"797":{},"802":{},"803":{},"804":{}}}],["transfered_amount",{"_index":2078,"title":{},"content":{"384":{}}}],["transform",{"_index":3254,"title":{},"content":{"718":{},"748":{}}}],["transient",{"_index":1324,"title":{},"content":{"252":{}}}],["transmiss",{"_index":1754,"title":{},"content":{"329":{}}}],["transmit",{"_index":2862,"title":{},"content":{"625":{},"691":{}}}],["transpar",{"_index":1828,"title":{},"content":{"346":{},"348":{},"654":{},"761":{}}}],["transport",{"_index":1139,"title":{},"content":{"232":{},"330":{},"331":{},"336":{}}}],["travers",{"_index":1794,"title":{},"content":{"339":{}}}],["tree",{"_index":1112,"title":{},"content":{"231":{},"256":{},"309":{},"365":{},"625":{}}}],["trend",{"_index":3257,"title":{},"content":{"718":{}}}],["tri",{"_index":2562,"title":{},"content":{"508":{}}}],["trigger",{"_index":1156,"title":{"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"499":{},"500":{},"501":{},"502":{},"503":{}},"content":{"235":{},"296":{},"328":{},"345":{},"346":{},"350":{},"351":{},"352":{},"356":{},"373":{},"377":{},"378":{},"379":{},"383":{},"390":{},"391":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"492":{},"497":{},"499":{},"500":{},"501":{},"502":{},"503":{},"505":{},"506":{},"507":{},"510":{},"518":{}}}],["trigger'",{"_index":1816,"title":{},"content":{"345":{}}}],["trigger_bi",{"_index":1970,"title":{},"content":{"352":{}}}],["triggered_bi",{"_index":1976,"title":{},"content":{"353":{},"373":{},"377":{},"378":{},"379":{},"380":{},"383":{},"384":{},"385":{},"386":{},"388":{},"389":{},"391":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"468":{},"469":{},"497":{},"507":{},"508":{},"509":{}}}],["triggers/act",{"_index":2115,"title":{"391":{}},"content":{}}],["trivial",{"_index":2626,"title":{},"content":{"583":{}}}],["troubleshoot",{"_index":3500,"title":{},"content":{"789":{}}}],["true",{"_index":6,"title":{},"content":{"2":{},"3":{},"4":{},"5":{},"140":{},"269":{},"280":{},"335":{},"358":{},"360":{},"361":{},"373":{},"374":{},"407":{},"425":{},"426":{},"433":{},"437":{},"440":{},"468":{},"469":{},"722":{},"762":{}}}],["truli",{"_index":2802,"title":{},"content":{"618":{}}}],["trunc/1",{"_index":2411,"title":{"472":{}},"content":{}}],["truncat",{"_index":1903,"title":{},"content":{"362":{},"472":{}}}],["trust",{"_index":472,"title":{"626":{},"627":{},"628":{},"629":{}},"content":{"181":{},"315":{},"621":{},"627":{},"628":{},"629":{},"630":{},"645":{},"669":{},"747":{},"780":{}}}],["truth",{"_index":1019,"title":{},"content":{"216":{},"349":{}}}],["tui",{"_index":3520,"title":{},"content":{"800":{}}}],["tupl",{"_index":1070,"title":{},"content":{"221":{},"224":{},"495":{},"496":{}}}],["tutori",{"_index":2687,"title":{"769":{},"786":{}},"content":{"571":{},"572":{},"768":{}}}],["twenti",{"_index":1366,"title":{},"content":{"272":{}}}],["twist",{"_index":1861,"title":{},"content":{"358":{}}}],["two",{"_index":452,"title":{"593":{}},"content":{"181":{},"229":{},"263":{},"305":{},"329":{},"394":{},"452":{},"468":{},"486":{},"490":{},"497":{},"499":{},"501":{},"553":{},"565":{},"593":{},"628":{},"629":{},"638":{},"670":{},"695":{},"705":{},"754":{},"756":{},"786":{},"829":{},"831":{}}}],["tx",{"_index":2519,"title":{},"content":{"497":{},"857":{}}}],["tx_hash",{"_index":839,"title":{},"content":{"196":{}}}],["tx_type",{"_index":801,"title":{},"content":{"191":{}}}],["txhash",{"_index":798,"title":{},"content":{"191":{}}}],["txhashlen",{"_index":799,"title":{},"content":{"191":{}}}],["txnhash",{"_index":820,"title":{},"content":{"191":{}}}],["txt",{"_index":3395,"title":{},"content":{"754":{},"755":{}}}],["ty",{"_index":2912,"title":{},"content":{"628":{}}}],["type",{"_index":53,"title":{"103":{},"106":{},"109":{},"111":{},"114":{},"117":{},"119":{},"122":{},"125":{},"128":{},"130":{},"133":{},"136":{},"139":{},"150":{},"174":{},"177":{},"180":{},"205":{},"206":{},"314":{},"358":{},"511":{},"566":{},"662":{},"727":{}},"content":{"12":{},"15":{},"19":{},"22":{},"25":{},"28":{},"31":{},"34":{},"37":{},"40":{},"43":{},"46":{},"49":{},"52":{},"55":{},"58":{},"61":{},"64":{},"67":{},"70":{},"73":{},"77":{},"80":{},"83":{},"86":{},"89":{},"92":{},"95":{},"98":{},"109":{},"115":{},"125":{},"136":{},"140":{},"142":{},"144":{},"147":{},"151":{},"153":{},"155":{},"157":{},"159":{},"163":{},"165":{},"167":{},"171":{},"181":{},"189":{},"190":{},"204":{},"209":{},"210":{},"244":{},"262":{},"264":{},"312":{},"315":{},"317":{},"353":{},"354":{},"365":{},"368":{},"373":{},"376":{},"388":{},"389":{},"391":{},"392":{},"393":{},"396":{},"403":{},"483":{},"503":{},"511":{},"513":{},"602":{},"638":{},"663":{},"665":{},"715":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"754":{},"755":{},"792":{},"802":{},"803":{},"806":{},"807":{},"812":{},"816":{},"839":{},"857":{}}}],["typo",{"_index":2605,"title":{},"content":{"581":{},"583":{}}}],["uco",{"_index":62,"title":{"220":{},"516":{},"538":{},"559":{},"561":{},"562":{},"564":{},"595":{},"599":{},"613":{},"744":{},"803":{}},"content":{"15":{},"34":{},"43":{},"61":{},"89":{},"103":{},"181":{},"182":{},"186":{},"189":{},"200":{},"220":{},"233":{},"322":{},"326":{},"327":{},"353":{},"354":{},"376":{},"378":{},"380":{},"384":{},"385":{},"389":{},"393":{},"396":{},"452":{},"453":{},"486":{},"488":{},"516":{},"523":{},"525":{},"536":{},"537":{},"538":{},"539":{},"561":{},"565":{},"566":{},"567":{},"589":{},"590":{},"593":{},"599":{},"613":{},"660":{},"661":{},"665":{},"668":{},"715":{},"719":{},"731":{},"732":{},"737":{},"744":{},"750":{},"767":{},"777":{},"802":{},"803":{},"811":{},"818":{},"822":{}}}],["uco'",{"_index":3046,"title":{},"content":{"660":{},"661":{}}}],["uco(becaus",{"_index":3052,"title":{},"content":{"661":{}}}],["uco.aud",{"_index":2286,"title":{},"content":{"437":{}}}],["uco.usd",{"_index":1981,"title":{},"content":{"353":{},"380":{},"437":{}}}],["uco/token",{"_index":301,"title":{},"content":{"83":{},"92":{}}}],["uco/token/cal",{"_index":287,"title":{},"content":{"73":{},"136":{}}}],["uco_amount",{"_index":2073,"title":{},"content":{"384":{}}}],["uco_bal",{"_index":2338,"title":{},"content":{"452":{}}}],["uco_mov",{"_index":1984,"title":{},"content":{"354":{}}}],["uco_transf",{"_index":1991,"title":{},"content":{"354":{},"373":{},"374":{},"376":{},"378":{},"384":{},"388":{},"389":{},"392":{},"393":{},"448":{},"450":{},"486":{},"739":{}}}],["ucodata",{"_index":188,"title":{"80":{}},"content":{"43":{},"44":{},"80":{},"152":{}}}],["ucodata.eur",{"_index":321,"title":{},"content":{"81":{}}}],["ucodata.usd",{"_index":322,"title":{},"content":{"81":{}}}],["ucoledg",{"_index":140,"title":{"89":{}},"content":{"34":{},"35":{},"88":{},"89":{}}}],["ucoledger.transf",{"_index":324,"title":{},"content":{"90":{}}}],["ucotransf",{"_index":323,"title":{"86":{}},"content":{"86":{},"89":{},"90":{},"146":{},"158":{}}}],["ucotransfer.amount",{"_index":325,"title":{},"content":{"87":{}}}],["ucotransfer.to",{"_index":326,"title":{},"content":{"87":{}}}],["ui",{"_index":1558,"title":{},"content":{"262":{},"297":{},"818":{},"819":{}}}],["uint16_t",{"_index":591,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["uint32_t",{"_index":664,"title":{},"content":{"189":{},"190":{},"191":{}}}],["uint8_t",{"_index":588,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["ultrason",{"_index":3195,"title":{},"content":{"699":{}}}],["ultrasound",{"_index":3174,"title":{},"content":{"699":{}}}],["unambigu",{"_index":1850,"title":{},"content":{"349":{}}}],["unauthor",{"_index":2964,"title":{},"content":{"651":{},"698":{},"828":{}}}],["unavail",{"_index":3512,"title":{},"content":{"798":{}}}],["unavoid",{"_index":1018,"title":{},"content":{"216":{}}}],["uncompress",{"_index":687,"title":{},"content":{"189":{},"244":{},"245":{},"254":{}}}],["uncompromis",{"_index":2833,"title":{},"content":{"622":{}}}],["under",{"_index":1214,"title":{},"content":{"246":{},"299":{},"308":{},"312":{},"629":{},"647":{},"759":{},"784":{}}}],["underli",{"_index":1758,"title":{},"content":{"330":{}}}],["understand",{"_index":1840,"title":{},"content":{"348":{},"354":{},"588":{},"702":{},"720":{},"723":{},"762":{},"768":{}}}],["unexpect",{"_index":3478,"title":{},"content":{"781":{}}}],["unfalsifi",{"_index":3128,"title":{},"content":{"695":{}}}],["unfinish",{"_index":2704,"title":{},"content":{"576":{}}}],["unicast",{"_index":3103,"title":{},"content":{"673":{}}}],["unifi",{"_index":3260,"title":{},"content":{"720":{},"829":{}}}],["union",{"_index":3660,"title":{},"content":{"816":{}}}],["uniqu",{"_index":213,"title":{},"content":{"55":{},"125":{},"221":{},"224":{},"246":{},"247":{},"261":{},"593":{},"628":{},"643":{},"647":{},"655":{},"665":{},"698":{}}}],["unique.ecc",{"_index":1293,"title":{},"content":{"246":{}}}],["uniri",{"_index":1168,"title":{},"content":{"242":{},"267":{},"630":{},"818":{}}}],["unit",{"_index":1646,"title":{},"content":{"304":{}}}],["unitari",{"_index":238,"title":{},"content":{"70":{},"114":{},"117":{},"128":{},"133":{},"139":{},"698":{}}}],["univers",{"_index":2810,"title":{},"content":{"619":{},"620":{},"695":{}}}],["unix",{"_index":430,"title":{},"content":{"167":{},"383":{},"400":{}}}],["unless",{"_index":2150,"title":{},"content":{"404":{},"619":{}}}],["unlik",{"_index":1953,"title":{},"content":{"370":{},"819":{}}}],["unlimit",{"_index":1770,"title":{"645":{}},"content":{"331":{},"669":{},"685":{},"718":{}}}],["unlock",{"_index":3491,"title":{},"content":{"785":{}}}],["unmatch",{"_index":3564,"title":{},"content":{"819":{}}}],["unnecessari",{"_index":3096,"title":{},"content":{"671":{}}}],["unpredict",{"_index":2841,"title":{},"content":{"621":{},"623":{},"624":{}}}],["unpubl",{"_index":3443,"title":{"764":{}},"content":{}}],["unpublish",{"_index":3444,"title":{"773":{}},"content":{"764":{},"773":{}}}],["unsign",{"_index":594,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["unspent",{"_index":145,"title":{},"content":{"31":{},"92":{},"220":{},"223":{},"309":{},"310":{},"523":{},"625":{},"665":{},"714":{},"715":{}}}],["unspentoutput",{"_index":150,"title":{"92":{}},"content":{"31":{},"32":{},"92":{},"146":{},"158":{},"166":{},"168":{}}}],["unspentoutput.amount",{"_index":330,"title":{},"content":{"93":{}}}],["unspentoutput.from",{"_index":331,"title":{},"content":{"93":{}}}],["unspentoutput.timestamp",{"_index":332,"title":{},"content":{"93":{}}}],["unspentoutput.tokenaddress",{"_index":333,"title":{},"content":{"93":{}}}],["unspentoutput.tokenid",{"_index":334,"title":{},"content":{"93":{}}}],["unspentoutput.typ",{"_index":335,"title":{},"content":{"93":{}}}],["unspentoutput.vers",{"_index":336,"title":{},"content":{"93":{}}}],["until",{"_index":1449,"title":{},"content":{"256":{},"565":{},"583":{},"602":{},"624":{},"633":{},"706":{},"714":{},"760":{},"762":{},"779":{}}}],["up",{"_index":1634,"title":{"612":{}},"content":{"298":{},"331":{},"335":{},"540":{},"541":{},"542":{},"543":{},"572":{},"644":{},"650":{},"708":{},"799":{},"803":{}}}],["updat",{"_index":1153,"title":{"680":{},"763":{},"771":{},"772":{}},"content":{"235":{},"244":{},"248":{},"257":{},"259":{},"321":{},"345":{},"347":{},"349":{},"365":{},"500":{},"509":{},"621":{},"647":{},"657":{},"659":{},"664":{},"667":{},"714":{},"763":{},"767":{},"771":{},"772":{},"773":{},"785":{},"786":{}}}],["update_contract",{"_index":1948,"title":{},"content":{"369":{}}}],["updatehandlesindex",{"_index":1305,"title":{"248":{}},"content":{}}],["upgrad",{"_index":1608,"title":{},"content":{"297":{},"298":{},"304":{},"320":{},"403":{},"641":{},"658":{},"761":{}}}],["upload",{"_index":2649,"title":{},"content":{"557":{},"767":{},"776":{}}}],["upon",{"_index":674,"title":{},"content":{"189":{},"784":{},"788":{},"798":{}}}],["uppercas",{"_index":2187,"title":{},"content":{"410":{},"411":{}}}],["uptim",{"_index":3317,"title":{},"content":{"730":{}}}],["upto",{"_index":785,"title":{},"content":{"191":{}}}],["url",{"_index":2438,"title":{},"content":{"479":{},"480":{},"612":{},"753":{},"763":{},"802":{},"809":{},"829":{},"832":{},"834":{}}}],["us",{"_index":411,"title":{"514":{},"515":{},"558":{},"567":{},"579":{},"580":{},"609":{}},"content":{"147":{},"165":{},"181":{},"184":{},"185":{},"189":{},"197":{},"198":{},"200":{},"201":{},"202":{},"210":{},"211":{},"215":{},"216":{},"217":{},"219":{},"234":{},"237":{},"238":{},"240":{},"241":{},"246":{},"250":{},"253":{},"254":{},"256":{},"257":{},"258":{},"259":{},"261":{},"262":{},"269":{},"270":{},"272":{},"273":{},"274":{},"275":{},"277":{},"278":{},"280":{},"288":{},"289":{},"290":{},"292":{},"294":{},"296":{},"297":{},"307":{},"322":{},"326":{},"329":{},"331":{},"332":{},"334":{},"335":{},"342":{},"343":{},"346":{},"349":{},"352":{},"353":{},"354":{},"356":{},"357":{},"358":{},"359":{},"360":{},"367":{},"369":{},"370":{},"371":{},"373":{},"378":{},"381":{},"393":{},"394":{},"398":{},"399":{},"402":{},"419":{},"428":{},"435":{},"452":{},"456":{},"457":{},"460":{},"463":{},"479":{},"484":{},"488":{},"492":{},"499":{},"500":{},"504":{},"505":{},"506":{},"507":{},"509":{},"511":{},"513":{},"514":{},"515":{},"517":{},"519":{},"540":{},"541":{},"542":{},"543":{},"557":{},"558":{},"561":{},"564":{},"565":{},"576":{},"579":{},"583":{},"584":{},"588":{},"595":{},"597":{},"599":{},"602":{},"606":{},"607":{},"612":{},"613":{},"618":{},"620":{},"621":{},"622":{},"627":{},"628":{},"629":{},"630":{},"633":{},"636":{},"637":{},"638":{},"639":{},"642":{},"644":{},"646":{},"647":{},"651":{},"653":{},"657":{},"658":{},"660":{},"666":{},"667":{},"668":{},"671":{},"673":{},"675":{},"677":{},"678":{},"682":{},"684":{},"685":{},"686":{},"689":{},"690":{},"698":{},"699":{},"701":{},"707":{},"714":{},"715":{},"718":{},"727":{},"735":{},"737":{},"747":{},"754":{},"757":{},"758":{},"759":{},"760":{},"765":{},"766":{},"767":{},"768":{},"770":{},"771":{},"772":{},"773":{},"779":{},"781":{},"786":{},"799":{},"802":{},"803":{},"810":{},"814":{},"816":{},"818":{},"819":{},"820":{},"821":{},"822":{},"828":{},"829":{},"832":{},"839":{},"848":{},"851":{},"857":{},"858":{},"859":{}}}],["us/articles/360043227612",{"_index":2689,"title":{},"content":{"571":{}}}],["us2019044735",{"_index":3147,"title":{},"content":{"698":{}}}],["us2019089539",{"_index":3192,"title":{},"content":{"699":{}}}],["usag",{"_index":1240,"title":{"782":{},"828":{}},"content":{"246":{},"346":{},"434":{},"618":{},"630":{},"631":{},"652":{},"759":{}}}],["usb",{"_index":2874,"title":{},"content":{"621":{},"642":{},"651":{},"821":{}}}],["usd",{"_index":320,"title":{},"content":{"80":{},"380":{}}}],["usd/eur",{"_index":1740,"title":{},"content":{"326":{},"668":{}}}],["useless",{"_index":1732,"title":{},"content":{"328":{}}}],["user",{"_index":481,"title":{},"content":{"181":{},"182":{},"186":{},"189":{},"191":{},"197":{},"246":{},"297":{},"346":{},"359":{},"384":{},"479":{},"509":{},"512":{},"606":{},"621":{},"645":{},"654":{},"695":{},"698":{},"701":{},"718":{},"720":{},"745":{},"751":{},"752":{},"761":{},"763":{},"784":{},"785":{},"799":{},"800":{},"817":{},"819":{},"822":{},"828":{},"829":{},"830":{}}}],["user'",{"_index":1824,"title":{},"content":{"346":{},"776":{},"785":{},"821":{}}}],["user/blockchain",{"_index":504,"title":{},"content":{"181":{}}}],["user’",{"_index":3623,"title":{},"content":{"828":{},"830":{},"859":{}}}],["usual",{"_index":1994,"title":{},"content":{"354":{},"451":{},"484":{},"512":{},"653":{},"751":{},"820":{}}}],["utc",{"_index":1730,"title":{},"content":{"328":{},"401":{}}}],["utf",{"_index":422,"title":{},"content":{"165":{}}}],["util",{"_index":2125,"title":{"395":{}},"content":{"394":{},"558":{},"579":{},"593":{}}}],["utilis",{"_index":3570,"title":{},"content":{"819":{}}}],["utxo",{"_index":327,"title":{},"content":{"92":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"345":{},"346":{},"347":{},"349":{},"354":{},"665":{},"686":{},"714":{},"719":{},"723":{}}}],["v",{"_index":2389,"title":{},"content":{"464":{}}}],["v1",{"_index":3247,"title":{},"content":{"710":{}}}],["v14.0",{"_index":555,"title":{},"content":{"183":{}}}],["valid",{"_index":96,"title":{"300":{},"301":{},"312":{},"514":{},"674":{},"686":{},"717":{}},"content":{"22":{},"67":{},"95":{},"180":{},"228":{},"230":{},"235":{},"241":{},"262":{},"293":{},"294":{},"297":{},"298":{},"299":{},"300":{},"303":{},"304":{},"305":{},"308":{},"309":{},"310":{},"312":{},"313":{},"320":{},"325":{},"345":{},"346":{},"349":{},"354":{},"355":{},"373":{},"374":{},"440":{},"442":{},"469":{},"479":{},"514":{},"518":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"644":{},"658":{},"660":{},"665":{},"667":{},"669":{},"674":{},"675":{},"681":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{},"693":{},"698":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"723":{},"749":{},"757":{},"758":{},"759":{},"762":{},"767":{},"798":{},"803":{}}}],["validat",{"_index":1738,"title":{},"content":{"325":{}}}],["validation/repl",{"_index":3104,"title":{},"content":{"673":{}}}],["validationstamp",{"_index":154,"title":{"95":{}},"content":{"33":{},"70":{},"71":{},"95":{},"148":{},"154":{},"158":{},"164":{},"168":{}}}],["validationstamp.ledgeroper",{"_index":347,"title":{},"content":{"96":{}}}],["validationstamp.proofofintegr",{"_index":348,"title":{},"content":{"96":{}}}],["validationstamp.proofofwork",{"_index":349,"title":{},"content":{"96":{}}}],["validationstamp.protocolvers",{"_index":350,"title":{},"content":{"96":{}}}],["validationstamp.signatur",{"_index":351,"title":{},"content":{"96":{}}}],["validationstamp.timestamp",{"_index":352,"title":{},"content":{"96":{}}}],["validationstampchecksum",{"_index":311,"title":{},"content":{"77":{}}}],["validit",{"_index":2888,"title":{},"content":{"637":{}}}],["valu",{"_index":22,"title":{"7":{},"10":{}},"content":{"9":{},"104":{},"120":{},"151":{},"157":{},"189":{},"245":{},"246":{},"248":{},"251":{},"258":{},"259":{},"261":{},"263":{},"266":{},"294":{},"296":{},"328":{},"352":{},"353":{},"358":{},"359":{},"361":{},"365":{},"367":{},"373":{},"374":{},"375":{},"395":{},"404":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"437":{},"439":{},"442":{},"452":{},"456":{},"457":{},"482":{},"490":{},"506":{},"508":{},"514":{},"515":{},"660":{},"698":{},"723":{},"754":{},"801":{},"805":{},"822":{}}}],["value2",{"_index":2201,"title":{},"content":{"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{}}}],["value3",{"_index":2210,"title":{},"content":{"418":{}}}],["values/1",{"_index":2216,"title":{"420":{}},"content":{}}],["valuex",{"_index":2209,"title":{},"content":{"418":{}}}],["vari",{"_index":3505,"title":{},"content":{"794":{}}}],["variabl",{"_index":917,"title":{"243":{},"351":{},"365":{},"393":{}},"content":{"201":{},"243":{},"268":{},"328":{},"351":{},"352":{},"365":{},"375":{},"376":{},"377":{},"379":{},"393":{},"398":{},"399":{},"402":{},"416":{}}}],["variat",{"_index":3480,"title":{},"content":{"781":{}}}],["variou",{"_index":572,"title":{},"content":{"186":{},"593":{},"596":{},"599":{},"658":{},"790":{},"819":{}}}],["venou",{"_index":3180,"title":{},"content":{"699":{}}}],["veri",{"_index":1769,"title":{},"content":{"331":{},"367":{},"501":{},"513":{},"620":{},"628":{}}}],["verif",{"_index":1115,"title":{"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"603":{},"780":{}},"content":{"236":{},"312":{},"346":{},"348":{},"593":{},"603":{},"606":{},"621":{},"630":{},"699":{},"784":{}}}],["verifi",{"_index":516,"title":{},"content":{"181":{},"270":{},"289":{},"290":{},"291":{},"292":{},"305":{},"307":{},"313":{},"325":{},"326":{},"345":{},"348":{},"349":{},"395":{},"588":{},"603":{},"606":{},"624":{},"625":{},"652":{},"658":{},"679":{},"756":{},"821":{}}}],["verifypinyk",{"_index":1352,"title":{"270":{}},"content":{"289":{}}}],["version",{"_index":86,"title":{"98":{},"149":{},"188":{},"357":{}},"content":{"19":{},"70":{},"92":{},"95":{},"98":{},"100":{},"149":{},"150":{},"166":{},"183":{},"188":{},"204":{},"210":{},"261":{},"297":{},"298":{},"355":{},"356":{},"357":{},"383":{},"384":{},"385":{},"386":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"468":{},"469":{},"497":{},"507":{},"508":{},"509":{},"557":{},"568":{},"588":{},"635":{},"636":{},"637":{},"647":{},"657":{},"658":{},"726":{},"752":{},"754":{},"764":{},"770":{},"771":{},"772":{},"773":{},"774":{},"777":{},"786":{},"822":{},"839":{},"857":{}}}],["version.cod",{"_index":353,"title":{},"content":{"99":{}}}],["version.protocol",{"_index":354,"title":{},"content":{"99":{}}}],["version.transact",{"_index":355,"title":{},"content":{"99":{}}}],["veto",{"_index":3037,"title":{},"content":{"647":{},"657":{}}}],["via",{"_index":1014,"title":{},"content":{"216":{},"370":{},"432":{},"434":{},"479":{},"505":{},"507":{},"508":{},"587":{},"657":{},"726":{},"767":{},"770":{},"821":{},"822":{},"823":{},"829":{}}}],["vibrant",{"_index":3031,"title":{},"content":{"647":{}}}],["vibrat",{"_index":3604,"title":{},"content":{"822":{}}}],["video",{"_index":3418,"title":{},"content":{"761":{}}}],["view",{"_index":1077,"title":{"335":{},"828":{},"829":{}},"content":{"226":{},"227":{},"257":{},"259":{},"266":{},"309":{},"332":{},"335":{},"349":{},"505":{},"674":{},"774":{},"790":{},"795":{},"818":{}}}],["view:avail",{"_index":3221,"title":{},"content":{"693":{}}}],["virtual",{"_index":2685,"title":{},"content":{"570":{},"596":{},"598":{},"750":{},"819":{}}}],["visibl",{"_index":3176,"title":{},"content":{"699":{}}}],["vision",{"_index":2832,"title":{},"content":{"620":{},"647":{},"676":{}}}],["visit",{"_index":3442,"title":{},"content":{"762":{},"777":{},"815":{}}}],["visual",{"_index":2640,"title":{},"content":{"584":{}}}],["visualis",{"_index":1615,"title":{},"content":{"297":{}}}],["vital",{"_index":3196,"title":{},"content":{"699":{}}}],["vm",{"_index":991,"title":{},"content":{"216":{}}}],["void",{"_index":1177,"title":{"244":{},"245":{},"246":{}},"content":{}}],["volatil",{"_index":593,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["vote",{"_index":1710,"title":{"386":{}},"content":{"321":{},"386":{},"647":{},"648":{},"657":{},"698":{}}}],["vote(candid",{"_index":2040,"title":{},"content":{"378":{},"386":{}}}],["vote(firstnam",{"_index":1971,"title":{},"content":{"352":{}}}],["vote_for_class_president(firstnam",{"_index":2496,"title":{},"content":{"399":{}}}],["voter",{"_index":2871,"title":{},"content":{"621":{}}}],["votes.i",{"_index":2099,"title":{},"content":{"386":{}}}],["votes.x",{"_index":2098,"title":{},"content":{"386":{}}}],["vp",{"_index":3353,"title":{},"content":{"750":{}}}],["vs",{"_index":1964,"title":{},"content":{"352":{},"751":{}}}],["vscode",{"_index":3621,"title":{},"content":{"826":{}}}],["w+),(\\\\d",{"_index":2275,"title":{},"content":{"434":{}}}],["w3c",{"_index":2952,"title":{},"content":{"641":{},"652":{}}}],["w_{e",{"_index":879,"title":{},"content":{"198":{},"202":{}}}],["w_{key",{"_index":655,"title":{},"content":{"189":{}}}],["wafer",{"_index":2915,"title":{},"content":{"628":{}}}],["wait",{"_index":1638,"title":{},"content":{"298":{},"328":{},"574":{},"588":{},"615":{},"709":{},"767":{}}}],["wallet",{"_index":441,"title":{"197":{},"204":{},"211":{},"533":{},"534":{},"535":{},"539":{},"543":{},"568":{},"580":{},"585":{},"587":{},"588":{},"589":{},"590":{},"598":{},"608":{},"609":{},"610":{},"612":{},"817":{}},"content":{"181":{},"182":{},"183":{},"186":{},"190":{},"191":{},"197":{},"198":{},"202":{},"203":{},"207":{},"209":{},"211":{},"212":{},"213":{},"233":{},"343":{},"505":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"558":{},"561":{},"568":{},"572":{},"574":{},"576":{},"580":{},"587":{},"588":{},"589":{},"598":{},"604":{},"606":{},"609":{},"610":{},"612":{},"613":{},"615":{},"638":{},"642":{},"645":{},"649":{},"650":{},"651":{},"653":{},"664":{},"726":{},"737":{},"767":{},"770":{},"771":{},"772":{},"773":{},"775":{},"776":{},"781":{},"784":{},"785":{},"786":{},"787":{},"791":{},"792":{},"794":{},"798":{},"799":{},"817":{},"818":{},"819":{},"820":{},"822":{},"827":{},"828":{},"829":{},"830":{},"859":{}}}],["wallet'",{"_index":2651,"title":{"558":{}},"content":{"558":{},"612":{}}}],["wallet/](th",{"_index":2794,"title":{},"content":{"588":{}}}],["wallet_iv",{"_index":937,"title":{},"content":{"202":{}}}],["wallet_len",{"_index":766,"title":{},"content":{"190":{},"191":{}}}],["walletlen",{"_index":827,"title":{},"content":{"191":{}}}],["walletprivatekey",{"_index":681,"title":{},"content":{"189":{}}}],["wallet’",{"_index":3630,"title":{},"content":{"829":{}}}],["want",{"_index":857,"title":{"568":{},"576":{}},"content":{"212":{},"216":{},"256":{},"262":{},"263":{},"331":{},"347":{},"354":{},"499":{},"505":{},"576":{},"588":{},"638":{},"642":{},"653":{},"708":{},"710":{},"749":{},"767":{},"770":{},"775":{},"805":{},"806":{},"807":{},"809":{},"859":{}}}],["warn",{"_index":1657,"title":{},"content":{"304":{},"576":{},"756":{}}}],["way",{"_index":442,"title":{"537":{},"538":{},"559":{},"561":{},"562":{},"591":{},"593":{},"673":{}},"content":{"181":{},"197":{},"200":{},"261":{},"262":{},"297":{},"305":{},"306":{},"310":{},"322":{},"324":{},"326":{},"330":{},"346":{},"352":{},"367":{},"536":{},"537":{},"538":{},"539":{},"553":{},"565":{},"580":{},"593":{},"609":{},"620":{},"622":{},"628":{},"633":{},"638":{},"641":{},"642":{},"653":{},"658":{},"660":{},"675":{},"681":{},"689":{},"698":{},"726":{},"744":{},"751":{},"759":{},"777":{},"786":{},"821":{},"822":{},"828":{}}}],["we'd",{"_index":2052,"title":{},"content":{"381":{}}}],["we'll",{"_index":2046,"title":{},"content":{"378":{},"497":{},"501":{},"510":{}}}],["weaken",{"_index":3127,"title":{},"content":{"695":{}}}],["web",{"_index":456,"title":{"540":{},"746":{}},"content":{"181":{},"216":{},"334":{},"342":{},"522":{},"540":{},"541":{},"542":{},"543":{},"747":{},"749":{},"751":{},"752":{},"759":{},"760":{},"762":{},"768":{},"786":{},"819":{},"821":{},"829":{}}}],["web3",{"_index":3341,"title":{},"content":{"747":{},"750":{}}}],["webapp",{"_index":3359,"title":{},"content":{"751":{}}}],["webauthn",{"_index":2954,"title":{},"content":{"641":{},"652":{}}}],["webhost",{"_index":3378,"title":{},"content":{"752":{}}}],["webpag",{"_index":3411,"title":{},"content":{"758":{}}}],["websit",{"_index":2641,"title":{"556":{},"763":{},"764":{}},"content":{"557":{},"558":{},"588":{},"645":{},"652":{},"746":{},"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"767":{},"770":{},"774":{}}}],["website'",{"_index":3387,"title":{},"content":{"753":{}}}],["websocket",{"_index":3627,"title":{},"content":{"829":{}}}],["week",{"_index":2503,"title":{},"content":{"401":{}}}],["welcom",{"_index":436,"title":{"788":{}},"content":{"178":{},"581":{},"625":{},"709":{},"710":{},"711":{},"762":{},"788":{},"815":{}}}],["well",{"_index":966,"title":{},"content":{"209":{},"262":{},"264":{},"266":{},"268":{},"307":{},"367":{},"371":{},"646":{},"651":{},"665":{},"689":{},"692":{},"753":{},"787":{},"819":{}}}],["what'",{"_index":2570,"title":{},"content":{"511":{}}}],["wheel",{"_index":3164,"title":{},"content":{"698":{}}}],["whenev",{"_index":1887,"title":{},"content":{"359":{}}}],["wherea",{"_index":1993,"title":{},"content":{"354":{}}}],["whether",{"_index":1340,"title":{},"content":{"254":{},"407":{},"425":{},"426":{},"433":{},"440":{},"770":{},"821":{},"822":{}}}],["whole",{"_index":413,"title":{},"content":{"157":{}}}],["whose",{"_index":843,"title":{},"content":{"196":{},"647":{},"654":{},"822":{}}}],["wide",{"_index":1002,"title":{},"content":{"216":{},"259":{},"260":{},"263":{},"751":{}}}],["widget",{"_index":3566,"title":{},"content":{"819":{}}}],["will",{"_index":2859,"title":{},"content":{"625":{}}}],["win",{"_index":3028,"title":{},"content":{"647":{}}}],["window",{"_index":2734,"title":{},"content":{"597":{},"786":{},"819":{},"829":{}}}],["wise",{"_index":3654,"title":{},"content":{"859":{}}}],["wish",{"_index":2008,"title":{},"content":{"373":{},"587":{},"787":{},"815":{}}}],["withdraw",{"_index":3494,"title":{},"content":{"786":{}}}],["within",{"_index":1539,"title":{},"content":{"261":{},"262":{},"332":{},"349":{},"389":{},"442":{},"588":{},"593":{},"627":{},"629":{},"658":{},"687":{},"704":{},"779":{},"785":{},"827":{},"829":{}}}],["without",{"_index":1049,"title":{},"content":{"216":{},"262":{},"304":{},"310":{},"339":{},"345":{},"376":{},"398":{},"421":{},"501":{},"602":{},"620":{},"625":{},"630":{},"641":{},"644":{},"646":{},"650":{},"652":{},"698":{},"699":{},"700":{},"748":{},"756":{},"779":{},"785":{},"827":{},"828":{},"859":{}}}],["wk_{ae",{"_index":880,"title":{},"content":{"198":{},"202":{}}}],["wo2017162930",{"_index":3193,"title":{},"content":{"699":{}}}],["wo2017162931",{"_index":3148,"title":{},"content":{"698":{}}}],["won't",{"_index":3634,"title":{},"content":{"831":{}}}],["wonder",{"_index":2890,"title":{},"content":{"638":{},"646":{}}}],["won’t",{"_index":2680,"title":{},"content":{"567":{}}}],["word",{"_index":2712,"title":{},"content":{"580":{},"588":{},"609":{},"635":{},"651":{},"818":{},"820":{},"822":{}}}],["worflow",{"_index":1669,"title":{"302":{}},"content":{}}],["work",{"_index":338,"title":{"305":{},"603":{},"606":{},"621":{},"667":{},"760":{}},"content":{"95":{},"216":{},"262":{},"305":{},"307":{},"361":{},"366":{},"367":{},"371":{},"381":{},"587":{},"621":{},"634":{},"647":{},"659":{},"660":{},"661":{},"665":{},"715":{},"741":{},"748":{},"753":{},"768":{},"800":{},"858":{}}}],["workflow",{"_index":1666,"title":{"300":{},"625":{}},"content":{"299":{},"303":{},"312":{},"625":{}}}],["world",{"_index":1717,"title":{"383":{}},"content":{"322":{},"369":{},"383":{},"404":{},"646":{},"658":{},"718":{}}}],["worldwid",{"_index":2997,"title":{},"content":{"644":{}}}],["worri",{"_index":2787,"title":{},"content":{"587":{},"756":{}}}],["worth",{"_index":2066,"title":{},"content":{"384":{},"389":{},"829":{}}}],["wrap",{"_index":1528,"title":{},"content":{"261":{},"296":{},"332":{},"784":{},"785":{}}}],["write",{"_index":1038,"title":{"264":{},"498":{}},"content":{"216":{},"255":{},"256":{},"257":{},"258":{},"261":{},"262":{},"263":{},"264":{},"359":{},"479":{},"498":{},"504":{},"518":{},"588":{},"622":{},"767":{},"859":{}}}],["writes/read",{"_index":1516,"title":{},"content":{"260":{}}}],["written",{"_index":489,"title":{},"content":{"181":{},"261":{},"264":{},"404":{},"505":{},"582":{},"667":{},"829":{},"859":{}}}],["wrong",{"_index":1023,"title":{"575":{},"616":{}},"content":{"216":{}}}],["wrote",{"_index":2045,"title":{},"content":{"378":{}}}],["x",{"_index":688,"title":{},"content":{"189":{},"244":{},"246":{},"247":{},"254":{},"360":{},"386":{},"709":{}}}],["x509",{"_index":1372,"title":{},"content":{"272":{}}}],["x509_get0_pubkey_bitstr",{"_index":1373,"title":{},"content":{"272":{}}}],["x68\\x65\\x6c\\x6c\\x6f",{"_index":1891,"title":{},"content":{"360":{}}}],["xxx",{"_index":3412,"title":{},"content":{"758":{}}}],["y",{"_index":690,"title":{},"content":{"189":{},"244":{},"246":{},"247":{},"254":{},"386":{},"403":{}}}],["yarn",{"_index":559,"title":{},"content":{"184":{}}}],["ye",{"_index":1583,"title":{},"content":{"265":{},"767":{}}}],["year",{"_index":3124,"title":{},"content":{"695":{}}}],["yes/no",{"_index":3469,"title":{},"content":{"767":{}}}],["yk",{"_index":1407,"title":{},"content":{"280":{}}}],["ykcertif",{"_index":1420,"title":{},"content":{"285":{}}}],["ykindex",{"_index":1370,"title":{"277":{}},"content":{"272":{},"273":{},"274":{},"276":{},"277":{},"278":{},"280":{},"283":{},"287":{}}}],["ykpiv_algo_eccp256",{"_index":1397,"title":{},"content":{"277":{}}}],["ykpiv_attest",{"_index":1382,"title":{},"content":{"274":{}}}],["ykpiv_authent",{"_index":1360,"title":{},"content":{"271":{}}}],["ykpiv_decipher_data",{"_index":1400,"title":{},"content":{"278":{}}}],["ykpiv_fetch_object",{"_index":1390,"title":{},"content":{"275":{}}}],["ykpiv_obj_histori",{"_index":1394,"title":{},"content":{"276":{}}}],["ykpiv_obj_key_histori",{"_index":1386,"title":{},"content":{"275":{},"279":{}}}],["ykpiv_save_object",{"_index":1384,"title":{},"content":{"274":{}}}],["ykpiv_sign_data",{"_index":1396,"title":{},"content":{"277":{}}}],["ykpiv_util_generate_key",{"_index":1377,"title":{},"content":{"273":{}}}],["ykpiv_verifi",{"_index":1354,"title":{},"content":{"270":{}}}],["you'll",{"_index":2000,"title":{},"content":{"354":{},"499":{},"505":{},"610":{},"612":{}}}],["you'r",{"_index":2344,"title":{},"content":{"452":{},"453":{},"455":{},"456":{},"457":{},"758":{}}}],["your",{"_index":3025,"title":{},"content":{"646":{}}}],["yourself",{"_index":3497,"title":{},"content":{"786":{},"800":{},"821":{}}}],["you’r",{"_index":3530,"title":{},"content":{"805":{},"808":{}}}],["you’v",{"_index":549,"title":{},"content":{"183":{}}}],["yubicloud",{"_index":3541,"title":{},"content":{"818":{},"821":{},"822":{}}}],["yubico",{"_index":1351,"title":{},"content":{"269":{},"629":{},"821":{}}}],["yubico’",{"_index":3594,"title":{},"content":{"821":{}}}],["yubikey",{"_index":970,"title":{"267":{}},"content":{"209":{},"240":{},"267":{},"268":{},"269":{},"272":{},"275":{},"280":{},"289":{},"290":{},"291":{},"292":{},"588":{},"629":{},"630":{},"817":{},"821":{},"822":{}}}],["yubikey.c",{"_index":1345,"title":{},"content":{"267":{}}}],["yubikey.h",{"_index":1346,"title":{},"content":{"267":{}}}],["zero",{"_index":2223,"title":{},"content":{"423":{}}}],["zip",{"_index":3449,"title":{},"content":{"770":{}}}],["zone",{"_index":116,"title":{},"content":{"25":{},"839":{},"857":{}}}],["zpoint",{"_index":1344,"title":{},"content":{"254":{}}}]],"pipeline":["stemmer"]}} \ No newline at end of file +{"documents":[{"id":1,"pageTitle":"include","sectionTitle":"include","sectionRoute":"/build/api/schema/directives/include","type":"docs"},{"id":2,"pageTitle":"include","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/directives/include#arguments","type":"docs"},{"id":3,"pageTitle":"skip","sectionTitle":"skip","sectionRoute":"/build/api/schema/directives/skip","type":"docs"},{"id":4,"pageTitle":"skip","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/directives/skip#arguments","type":"docs"},{"id":8,"pageTitle":"ErrorContext","sectionTitle":"ErrorContext","sectionRoute":"/build/api/schema/enums/error-context","type":"docs"},{"id":9,"pageTitle":"ErrorContext","sectionTitle":"Values","sectionRoute":"/build/api/schema/enums/error-context#values","type":"docs"},{"id":10,"pageTitle":"ErrorContext","sectionTitle":"Member of","sectionRoute":"/build/api/schema/enums/error-context#member-of","type":"docs"},{"id":5,"pageTitle":"SortOrder","sectionTitle":"SortOrder","sectionRoute":"/build/api/schema/enums/sort-order","type":"docs"},{"id":6,"pageTitle":"SortOrder","sectionTitle":"Values","sectionRoute":"/build/api/schema/enums/sort-order#values","type":"docs"},{"id":7,"pageTitle":"SortOrder","sectionTitle":"Member of","sectionRoute":"/build/api/schema/enums/sort-order#member-of","type":"docs"},{"id":18,"pageTitle":"AuthorizedKey","sectionTitle":"AuthorizedKey","sectionRoute":"/build/api/schema/objects/authorized-key","type":"docs"},{"id":19,"pageTitle":"AuthorizedKey","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/authorized-key#fields","type":"docs"},{"id":20,"pageTitle":"AuthorizedKey","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/authorized-key#member-of","type":"docs"},{"id":11,"pageTitle":"Balance","sectionTitle":"Balance","sectionRoute":"/build/api/schema/objects/balance","type":"docs"},{"id":12,"pageTitle":"Balance","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/balance#fields","type":"docs"},{"id":13,"pageTitle":"Balance","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/balance#returned-by","type":"docs"},{"id":14,"pageTitle":"Balance","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/balance#member-of","type":"docs"},{"id":15,"pageTitle":"BeaconChainSummary","sectionTitle":"BeaconChainSummary","sectionRoute":"/build/api/schema/objects/beacon-chain-summary","type":"docs"},{"id":16,"pageTitle":"BeaconChainSummary","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/beacon-chain-summary#fields","type":"docs"},{"id":17,"pageTitle":"BeaconChainSummary","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/beacon-chain-summary#returned-by","type":"docs"},{"id":21,"pageTitle":"CrossValidationStamp","sectionTitle":"CrossValidationStamp","sectionRoute":"/build/api/schema/objects/cross-validation-stamp","type":"docs"},{"id":22,"pageTitle":"CrossValidationStamp","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/cross-validation-stamp#fields","type":"docs"},{"id":23,"pageTitle":"CrossValidationStamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/cross-validation-stamp#member-of","type":"docs"},{"id":28,"pageTitle":"Data","sectionTitle":"Data","sectionRoute":"/build/api/schema/objects/data","type":"docs"},{"id":29,"pageTitle":"Data","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/data#fields","type":"docs"},{"id":30,"pageTitle":"Data","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/data#member-of","type":"docs"},{"id":25,"pageTitle":"Endpoint","sectionTitle":"Endpoint","sectionRoute":"/build/api/schema/objects/endpoint","type":"docs"},{"id":26,"pageTitle":"Endpoint","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/endpoint#fields","type":"docs"},{"id":27,"pageTitle":"Endpoint","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/endpoint#returned-by","type":"docs"},{"id":31,"pageTitle":"Ledger","sectionTitle":"Ledger","sectionRoute":"/build/api/schema/objects/ledger","type":"docs"},{"id":32,"pageTitle":"Ledger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ledger#fields","type":"docs"},{"id":33,"pageTitle":"Ledger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ledger#member-of","type":"docs"},{"id":34,"pageTitle":"LedgerOperations","sectionTitle":"LedgerOperations","sectionRoute":"/build/api/schema/objects/ledger-operations","type":"docs"},{"id":35,"pageTitle":"LedgerOperations","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ledger-operations#fields","type":"docs"},{"id":36,"pageTitle":"LedgerOperations","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ledger-operations#member-of","type":"docs"},{"id":37,"pageTitle":"Node","sectionTitle":"Node","sectionRoute":"/build/api/schema/objects/node","type":"docs"},{"id":38,"pageTitle":"Node","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/node#fields","type":"docs"},{"id":39,"pageTitle":"Node","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/node#returned-by","type":"docs"},{"id":40,"pageTitle":"OracleData","sectionTitle":"OracleData","sectionRoute":"/build/api/schema/objects/oracle-data","type":"docs"},{"id":41,"pageTitle":"OracleData","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/oracle-data#fields","type":"docs"},{"id":42,"pageTitle":"OracleData","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/oracle-data#returned-by","type":"docs"},{"id":43,"pageTitle":"OracleServices","sectionTitle":"OracleServices","sectionRoute":"/build/api/schema/objects/oracle-services","type":"docs"},{"id":44,"pageTitle":"OracleServices","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/oracle-services#fields","type":"docs"},{"id":45,"pageTitle":"OracleServices","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/oracle-services#member-of","type":"docs"},{"id":46,"pageTitle":"Ownership","sectionTitle":"Ownership","sectionRoute":"/build/api/schema/objects/ownership","type":"docs"},{"id":47,"pageTitle":"Ownership","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/ownership#fields","type":"docs"},{"id":48,"pageTitle":"Ownership","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/ownership#member-of","type":"docs"},{"id":52,"pageTitle":"SharedSecrets","sectionTitle":"SharedSecrets","sectionRoute":"/build/api/schema/objects/shared-secrets","type":"docs"},{"id":53,"pageTitle":"SharedSecrets","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/shared-secrets#fields","type":"docs"},{"id":54,"pageTitle":"SharedSecrets","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/shared-secrets#returned-by","type":"docs"},{"id":49,"pageTitle":"Token","sectionTitle":"Token","sectionRoute":"/build/api/schema/objects/token","type":"docs"},{"id":50,"pageTitle":"Token","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token#fields","type":"docs"},{"id":51,"pageTitle":"Token","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/token#returned-by","type":"docs"},{"id":61,"pageTitle":"TokenBalance","sectionTitle":"TokenBalance","sectionRoute":"/build/api/schema/objects/token-balance","type":"docs"},{"id":62,"pageTitle":"TokenBalance","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-balance#fields","type":"docs"},{"id":63,"pageTitle":"TokenBalance","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-balance#member-of","type":"docs"},{"id":55,"pageTitle":"TokenLedger","sectionTitle":"TokenLedger","sectionRoute":"/build/api/schema/objects/token-ledger","type":"docs"},{"id":56,"pageTitle":"TokenLedger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-ledger#fields","type":"docs"},{"id":57,"pageTitle":"TokenLedger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-ledger#member-of","type":"docs"},{"id":58,"pageTitle":"TokenTransfer","sectionTitle":"TokenTransfer","sectionRoute":"/build/api/schema/objects/token-transfer","type":"docs"},{"id":59,"pageTitle":"TokenTransfer","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/token-transfer#fields","type":"docs"},{"id":60,"pageTitle":"TokenTransfer","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/token-transfer#member-of","type":"docs"},{"id":64,"pageTitle":"Transaction","sectionTitle":"Transaction","sectionRoute":"/build/api/schema/objects/transaction","type":"docs"},{"id":65,"pageTitle":"Transaction","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction#fields","type":"docs"},{"id":66,"pageTitle":"Transaction","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction#returned-by","type":"docs"},{"id":67,"pageTitle":"TransactionAttestation","sectionTitle":"TransactionAttestation","sectionRoute":"/build/api/schema/objects/transaction-attestation","type":"docs"},{"id":68,"pageTitle":"TransactionAttestation","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-attestation#fields","type":"docs"},{"id":69,"pageTitle":"TransactionAttestation","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-attestation#returned-by","type":"docs"},{"id":73,"pageTitle":"TransactionError","sectionTitle":"TransactionError","sectionRoute":"/build/api/schema/objects/transaction-error","type":"docs"},{"id":74,"pageTitle":"TransactionError","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-error#fields","type":"docs"},{"id":75,"pageTitle":"TransactionError","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-error#returned-by","type":"docs"},{"id":76,"pageTitle":"TransactionInput","sectionTitle":"TransactionInput","sectionRoute":"/build/api/schema/objects/transaction-input","type":"docs"},{"id":77,"pageTitle":"TransactionInput","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-input#fields","type":"docs"},{"id":78,"pageTitle":"TransactionInput","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/transaction-input#returned-by","type":"docs"},{"id":79,"pageTitle":"TransactionInput","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-input#member-of","type":"docs"},{"id":70,"pageTitle":"TransactionMovement","sectionTitle":"TransactionMovement","sectionRoute":"/build/api/schema/objects/transaction-movement","type":"docs"},{"id":71,"pageTitle":"TransactionMovement","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-movement#fields","type":"docs"},{"id":72,"pageTitle":"TransactionMovement","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-movement#member-of","type":"docs"},{"id":80,"pageTitle":"TransactionSummary","sectionTitle":"TransactionSummary","sectionRoute":"/build/api/schema/objects/transaction-summary","type":"docs"},{"id":81,"pageTitle":"TransactionSummary","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/transaction-summary#fields","type":"docs"},{"id":82,"pageTitle":"TransactionSummary","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/transaction-summary#member-of","type":"docs"},{"id":83,"pageTitle":"UcoData","sectionTitle":"UcoData","sectionRoute":"/build/api/schema/objects/uco-data","type":"docs"},{"id":84,"pageTitle":"UcoData","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-data#fields","type":"docs"},{"id":85,"pageTitle":"UcoData","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-data#member-of","type":"docs"},{"id":86,"pageTitle":"UcoLedger","sectionTitle":"UcoLedger","sectionRoute":"/build/api/schema/objects/uco-ledger","type":"docs"},{"id":87,"pageTitle":"UcoLedger","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-ledger#fields","type":"docs"},{"id":88,"pageTitle":"UcoLedger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-ledger#member-of","type":"docs"},{"id":92,"pageTitle":"UcoTransfer","sectionTitle":"UcoTransfer","sectionRoute":"/build/api/schema/objects/uco-transfer","type":"docs"},{"id":93,"pageTitle":"UcoTransfer","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/uco-transfer#fields","type":"docs"},{"id":94,"pageTitle":"UcoTransfer","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/uco-transfer#member-of","type":"docs"},{"id":89,"pageTitle":"UnspentOutput","sectionTitle":"UnspentOutput","sectionRoute":"/build/api/schema/objects/unspent-output","type":"docs"},{"id":90,"pageTitle":"UnspentOutput","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/unspent-output#fields","type":"docs"},{"id":91,"pageTitle":"UnspentOutput","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/unspent-output#member-of","type":"docs"},{"id":95,"pageTitle":"ValidationStamp","sectionTitle":"ValidationStamp","sectionRoute":"/build/api/schema/objects/validation-stamp","type":"docs"},{"id":96,"pageTitle":"ValidationStamp","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/validation-stamp#fields","type":"docs"},{"id":97,"pageTitle":"ValidationStamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/objects/validation-stamp#member-of","type":"docs"},{"id":98,"pageTitle":"Version","sectionTitle":"Version","sectionRoute":"/build/api/schema/objects/version","type":"docs"},{"id":99,"pageTitle":"Version","sectionTitle":"Fields","sectionRoute":"/build/api/schema/objects/version#fields","type":"docs"},{"id":100,"pageTitle":"Version","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/objects/version#returned-by","type":"docs"},{"id":115,"pageTitle":"balance","sectionTitle":"balance","sectionRoute":"/build/api/schema/queries/balance","type":"docs"},{"id":116,"pageTitle":"balance","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/balance#arguments","type":"docs"},{"id":117,"pageTitle":"balance","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/balance#type","type":"docs"},{"id":101,"pageTitle":"beaconChainSummary","sectionTitle":"beaconChainSummary","sectionRoute":"/build/api/schema/queries/beacon-chain-summary","type":"docs"},{"id":102,"pageTitle":"beaconChainSummary","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/beacon-chain-summary#arguments","type":"docs"},{"id":103,"pageTitle":"beaconChainSummary","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/beacon-chain-summary#type","type":"docs"},{"id":104,"pageTitle":"genesisAddress","sectionTitle":"genesisAddress","sectionRoute":"/build/api/schema/queries/genesis-address","type":"docs"},{"id":105,"pageTitle":"genesisAddress","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/genesis-address#arguments","type":"docs"},{"id":106,"pageTitle":"genesisAddress","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/genesis-address#type","type":"docs"},{"id":107,"pageTitle":"lastTransaction","sectionTitle":"lastTransaction","sectionRoute":"/build/api/schema/queries/last-transaction","type":"docs"},{"id":108,"pageTitle":"lastTransaction","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/last-transaction#arguments","type":"docs"},{"id":109,"pageTitle":"lastTransaction","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/last-transaction#type","type":"docs"},{"id":110,"pageTitle":"nearestEndpoints","sectionTitle":"nearestEndpoints","sectionRoute":"/build/api/schema/queries/nearest-endpoints","type":"docs"},{"id":111,"pageTitle":"nearestEndpoints","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/nearest-endpoints#type","type":"docs"},{"id":112,"pageTitle":"networkTransactions","sectionTitle":"networkTransactions","sectionRoute":"/build/api/schema/queries/network-transactions","type":"docs"},{"id":113,"pageTitle":"networkTransactions","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/network-transactions#arguments","type":"docs"},{"id":114,"pageTitle":"networkTransactions","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/network-transactions#type","type":"docs"},{"id":118,"pageTitle":"nodes","sectionTitle":"nodes","sectionRoute":"/build/api/schema/queries/nodes","type":"docs"},{"id":119,"pageTitle":"nodes","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/nodes#type","type":"docs"},{"id":120,"pageTitle":"oracleData","sectionTitle":"oracleData","sectionRoute":"/build/api/schema/queries/oracle-data","type":"docs"},{"id":121,"pageTitle":"oracleData","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/oracle-data#arguments","type":"docs"},{"id":122,"pageTitle":"oracleData","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/oracle-data#type","type":"docs"},{"id":123,"pageTitle":"sharedSecrets","sectionTitle":"sharedSecrets","sectionRoute":"/build/api/schema/queries/shared-secrets","type":"docs"},{"id":124,"pageTitle":"sharedSecrets","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/shared-secrets#type","type":"docs"},{"id":125,"pageTitle":"token","sectionTitle":"token","sectionRoute":"/build/api/schema/queries/token","type":"docs"},{"id":126,"pageTitle":"token","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/token#arguments","type":"docs"},{"id":127,"pageTitle":"token","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/token#type","type":"docs"},{"id":128,"pageTitle":"transaction","sectionTitle":"transaction","sectionRoute":"/build/api/schema/queries/transaction","type":"docs"},{"id":129,"pageTitle":"transaction","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction#arguments","type":"docs"},{"id":130,"pageTitle":"transaction","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction#type","type":"docs"},{"id":131,"pageTitle":"transactionChain","sectionTitle":"transactionChain","sectionRoute":"/build/api/schema/queries/transaction-chain","type":"docs"},{"id":132,"pageTitle":"transactionChain","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction-chain#arguments","type":"docs"},{"id":133,"pageTitle":"transactionChain","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction-chain#type","type":"docs"},{"id":139,"pageTitle":"transactionInputs","sectionTitle":"transactionInputs","sectionRoute":"/build/api/schema/queries/transaction-inputs","type":"docs"},{"id":140,"pageTitle":"transactionInputs","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transaction-inputs#arguments","type":"docs"},{"id":141,"pageTitle":"transactionInputs","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transaction-inputs#type","type":"docs"},{"id":136,"pageTitle":"transactions","sectionTitle":"transactions","sectionRoute":"/build/api/schema/queries/transactions","type":"docs"},{"id":137,"pageTitle":"transactions","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/queries/transactions#arguments","type":"docs"},{"id":138,"pageTitle":"transactions","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/transactions#type","type":"docs"},{"id":134,"pageTitle":"version","sectionTitle":"version","sectionRoute":"/build/api/schema/queries/version","type":"docs"},{"id":135,"pageTitle":"version","sectionTitle":"Type","sectionRoute":"/build/api/schema/queries/version#type","type":"docs"},{"id":142,"pageTitle":"Address","sectionTitle":"Address","sectionRoute":"/build/api/schema/scalars/address","type":"docs"},{"id":143,"pageTitle":"Address","sectionTitle":"Returned by","sectionRoute":"/build/api/schema/scalars/address#returned-by","type":"docs"},{"id":144,"pageTitle":"Address","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/address#member-of","type":"docs"},{"id":145,"pageTitle":"Boolean","sectionTitle":"Boolean","sectionRoute":"/build/api/schema/scalars/boolean","type":"docs"},{"id":146,"pageTitle":"Boolean","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/boolean#member-of","type":"docs"},{"id":149,"pageTitle":"Content","sectionTitle":"Content","sectionRoute":"/build/api/schema/scalars/content","type":"docs"},{"id":150,"pageTitle":"Content","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/content#member-of","type":"docs"},{"id":147,"pageTitle":"Float","sectionTitle":"Float","sectionRoute":"/build/api/schema/scalars/float","type":"docs"},{"id":148,"pageTitle":"Float","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/float#member-of","type":"docs"},{"id":157,"pageTitle":"Hash","sectionTitle":"Hash","sectionRoute":"/build/api/schema/scalars/hash","type":"docs"},{"id":158,"pageTitle":"Hash","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/hash#member-of","type":"docs"},{"id":151,"pageTitle":"Hex","sectionTitle":"Hex","sectionRoute":"/build/api/schema/scalars/hex","type":"docs"},{"id":152,"pageTitle":"Hex","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/hex#member-of","type":"docs"},{"id":153,"pageTitle":"Int","sectionTitle":"Int","sectionRoute":"/build/api/schema/scalars/int","type":"docs"},{"id":154,"pageTitle":"Int","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/int#member-of","type":"docs"},{"id":155,"pageTitle":"NonNegInteger","sectionTitle":"NonNegInteger","sectionRoute":"/build/api/schema/scalars/non-neg-integer","type":"docs"},{"id":156,"pageTitle":"NonNegInteger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/non-neg-integer#member-of","type":"docs"},{"id":159,"pageTitle":"P2pAvailabilities","sectionTitle":"P2pAvailabilities","sectionRoute":"/build/api/schema/scalars/p2-p-availabilities","type":"docs"},{"id":160,"pageTitle":"P2pAvailabilities","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/p2-p-availabilities#member-of","type":"docs"},{"id":161,"pageTitle":"PosInteger","sectionTitle":"PosInteger","sectionRoute":"/build/api/schema/scalars/pos-integer","type":"docs"},{"id":162,"pageTitle":"PosInteger","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/pos-integer#member-of","type":"docs"},{"id":163,"pageTitle":"PublicKey","sectionTitle":"PublicKey","sectionRoute":"/build/api/schema/scalars/public-key","type":"docs"},{"id":164,"pageTitle":"PublicKey","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/public-key#member-of","type":"docs"},{"id":165,"pageTitle":"String","sectionTitle":"String","sectionRoute":"/build/api/schema/scalars/string","type":"docs"},{"id":166,"pageTitle":"String","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/string#member-of","type":"docs"},{"id":167,"pageTitle":"Timestamp","sectionTitle":"Timestamp","sectionRoute":"/build/api/schema/scalars/timestamp","type":"docs"},{"id":168,"pageTitle":"Timestamp","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/timestamp#member-of","type":"docs"},{"id":169,"pageTitle":"TokenProperties","sectionTitle":"TokenProperties","sectionRoute":"/build/api/schema/scalars/token-properties","type":"docs"},{"id":170,"pageTitle":"TokenProperties","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/token-properties#member-of","type":"docs"},{"id":171,"pageTitle":"TransactionType","sectionTitle":"TransactionType","sectionRoute":"/build/api/schema/scalars/transaction-type","type":"docs"},{"id":172,"pageTitle":"TransactionType","sectionTitle":"Member of","sectionRoute":"/build/api/schema/scalars/transaction-type#member-of","type":"docs"},{"id":176,"pageTitle":"oracleUpdate","sectionTitle":"oracleUpdate","sectionRoute":"/build/api/schema/subscriptions/oracle-update","type":"docs"},{"id":177,"pageTitle":"oracleUpdate","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/oracle-update#type","type":"docs"},{"id":173,"pageTitle":"transactionConfirmed","sectionTitle":"transactionConfirmed","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed","type":"docs"},{"id":174,"pageTitle":"transactionConfirmed","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed#arguments","type":"docs"},{"id":175,"pageTitle":"transactionConfirmed","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/transaction-confirmed#type","type":"docs"},{"id":178,"pageTitle":"transactionError","sectionTitle":"transactionError","sectionRoute":"/build/api/schema/subscriptions/transaction-error","type":"docs"},{"id":179,"pageTitle":"transactionError","sectionTitle":"Arguments","sectionRoute":"/build/api/schema/subscriptions/transaction-error#arguments","type":"docs"},{"id":180,"pageTitle":"transactionError","sectionTitle":"Type","sectionRoute":"/build/api/schema/subscriptions/transaction-error#type","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Introduction","sectionRoute":"/build/clients/ledger-wallet/","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"Synopsis","sectionRoute":"/build/clients/ledger-wallet/#synopsis","type":"docs"},{"id":183,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/build/clients/ledger-wallet/#prerequisites","type":"docs"},{"id":184,"pageTitle":"","sectionTitle":"Installation Instructions","sectionRoute":"/build/clients/ledger-wallet/#installation-instructions","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"Testing","sectionRoute":"/build/clients/ledger-wallet/#testing","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"Demo","sectionRoute":"/build/clients/ledger-wallet/#demo","type":"docs"},{"id":187,"pageTitle":"Ledger Application API","sectionTitle":"Ledger Application API","sectionRoute":"/build/clients/ledger-wallet/api","type":"docs"},{"id":188,"pageTitle":"Ledger Application API","sectionTitle":"GET VERSION","sectionRoute":"/build/clients/ledger-wallet/api#get-version","type":"docs"},{"id":189,"pageTitle":"Ledger Application API","sectionTitle":"GET DEVICE ORIGIN PUBLIC KEY","sectionRoute":"/build/clients/ledger-wallet/api#get-device-origin-public-key","type":"docs"},{"id":190,"pageTitle":"Ledger Application API","sectionTitle":"GET ARCHETHIC ADDRESS","sectionRoute":"/build/clients/ledger-wallet/api#get-archethic-address","type":"docs"},{"id":191,"pageTitle":"Ledger Application API","sectionTitle":"SIGN TRANSACTION","sectionRoute":"/build/clients/ledger-wallet/api#sign-transaction","type":"docs"},{"id":192,"pageTitle":"ADPU commands","sectionTitle":"ADPU commands","sectionRoute":"/build/clients/ledger-wallet/commands","type":"docs"},{"id":193,"pageTitle":"ADPU commands","sectionTitle":"APDU commands","sectionRoute":"/build/clients/ledger-wallet/commands#apdu-commands","type":"docs"},{"id":194,"pageTitle":"ADPU commands","sectionTitle":"Get Origin Public Key","sectionRoute":"/build/clients/ledger-wallet/commands#get-origin-public-key","type":"docs"},{"id":195,"pageTitle":"ADPU commands","sectionTitle":"Get Archethic Account Address","sectionRoute":"/build/clients/ledger-wallet/commands#get-archethic-account-address","type":"docs"},{"id":196,"pageTitle":"ADPU commands","sectionTitle":"Get Signature","sectionRoute":"/build/clients/ledger-wallet/commands#get-signature","type":"docs"},{"id":211,"pageTitle":"Archethic's wallet access","sectionTitle":"Archethic's wallet access","sectionRoute":"/build/clients/wallet-access","type":"docs"},{"id":212,"pageTitle":"Archethic's wallet access","sectionTitle":"Access enrollment","sectionRoute":"/build/clients/wallet-access#access-enrollment","type":"docs"},{"id":213,"pageTitle":"Archethic's wallet access","sectionTitle":"Keychain retrieval","sectionRoute":"/build/clients/wallet-access#keychain-retrieval","type":"docs"},{"id":197,"pageTitle":"Archethic's wallet specification","sectionTitle":"Archethic's wallet specification","sectionRoute":"/build/clients/wallet-spec","type":"docs"},{"id":198,"pageTitle":"Archethic's wallet specification","sectionTitle":"Glossary","sectionRoute":"/build/clients/wallet-spec#glossary","type":"docs"},{"id":199,"pageTitle":"Archethic's wallet specification","sectionTitle":"Cryptography","sectionRoute":"/build/clients/wallet-spec#cryptography","type":"docs"},{"id":200,"pageTitle":"Archethic's wallet specification","sectionTitle":"Derivation path","sectionRoute":"/build/clients/wallet-spec#derivation-path","type":"docs"},{"id":201,"pageTitle":"Archethic's wallet specification","sectionTitle":"Key derivation","sectionRoute":"/build/clients/wallet-spec#key-derivation","type":"docs"},{"id":202,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encryption","sectionRoute":"/build/clients/wallet-spec#encryption","type":"docs"},{"id":203,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding","sectionRoute":"/build/clients/wallet-spec#encoding","type":"docs"},{"id":204,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of wallet","sectionRoute":"/build/clients/wallet-spec#encoding-of-wallet","type":"docs"},{"id":205,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of Curve Types","sectionRoute":"/build/clients/wallet-spec#encoding-of-curve-types","type":"docs"},{"id":206,"pageTitle":"Archethic's wallet specification","sectionTitle":"Encoding of Hash Types","sectionRoute":"/build/clients/wallet-spec#encoding-of-hash-types","type":"docs"},{"id":207,"pageTitle":"Archethic's wallet specification","sectionTitle":"Transaction representation","sectionRoute":"/build/clients/wallet-spec#transaction-representation","type":"docs"},{"id":208,"pageTitle":"Archethic's wallet specification","sectionTitle":"Format","sectionRoute":"/build/clients/wallet-spec#format","type":"docs"},{"id":209,"pageTitle":"Archethic's wallet specification","sectionTitle":"Public Key Format","sectionRoute":"/build/clients/wallet-spec#public-key-format","type":"docs"},{"id":210,"pageTitle":"Archethic's wallet specification","sectionTitle":"Account Address Format","sectionRoute":"/build/clients/wallet-spec#account-address-format","type":"docs"},{"id":214,"pageTitle":"Core development","sectionTitle":"Core development","sectionRoute":"/build/core/","type":"docs"},{"id":215,"pageTitle":"Core development","sectionTitle":"Technology Stack","sectionRoute":"/build/core/#technology-stack","type":"docs"},{"id":216,"pageTitle":"Core development","sectionTitle":"Why Elixir ?","sectionRoute":"/build/core/#why-elixir-","type":"docs"},{"id":217,"pageTitle":"Core development","sectionTitle":"Why C ?","sectionRoute":"/build/core/#why-c-","type":"docs"},{"id":218,"pageTitle":"Core development","sectionTitle":"Structure","sectionRoute":"/build/core/#structure","type":"docs"},{"id":222,"pageTitle":"Account","sectionTitle":"Account","sectionRoute":"/build/core/account","type":"docs"},{"id":223,"pageTitle":"Account","sectionTitle":"UCO","sectionRoute":"/build/core/account#uco","type":"docs"},{"id":224,"pageTitle":"Account","sectionTitle":"Ledger","sectionRoute":"/build/core/account#ledger","type":"docs"},{"id":225,"pageTitle":"Account","sectionTitle":"Index","sectionRoute":"/build/core/account#index","type":"docs"},{"id":226,"pageTitle":"Account","sectionTitle":"Token","sectionRoute":"/build/core/account#token","type":"docs"},{"id":227,"pageTitle":"Account","sectionTitle":"Ledger","sectionRoute":"/build/core/account#ledger-1","type":"docs"},{"id":228,"pageTitle":"Account","sectionTitle":"Index","sectionRoute":"/build/core/account#index-1","type":"docs"},{"id":229,"pageTitle":"Account","sectionTitle":"Loading","sectionRoute":"/build/core/account#loading","type":"docs"},{"id":230,"pageTitle":"BeaconChain","sectionTitle":"BeaconChain","sectionRoute":"/build/core/beacon-chain/","type":"docs"},{"id":231,"pageTitle":"BeaconChain","sectionTitle":"Subsets","sectionRoute":"/build/core/beacon-chain/#subsets","type":"docs"},{"id":232,"pageTitle":"BeaconChain","sectionTitle":"Timers and schedulers","sectionRoute":"/build/core/beacon-chain/#timers-and-schedulers","type":"docs"},{"id":233,"pageTitle":"BeaconChain","sectionTitle":"Transaction loading","sectionRoute":"/build/core/beacon-chain/#transaction-loading","type":"docs"},{"id":234,"pageTitle":"BeaconChain","sectionTitle":"Supervisor","sectionRoute":"/build/core/beacon-chain/#supervisor","type":"docs"},{"id":219,"pageTitle":"P2P availability sampling","sectionTitle":"P2P availability sampling","sectionRoute":"/build/core/beacon-chain/p2p-sampling","type":"docs"},{"id":220,"pageTitle":"P2P availability sampling","sectionTitle":"Heartbeat","sectionRoute":"/build/core/beacon-chain/p2p-sampling#heartbeat","type":"docs"},{"id":221,"pageTitle":"P2P availability sampling","sectionTitle":"Aggregation","sectionRoute":"/build/core/beacon-chain/p2p-sampling#aggregation","type":"docs"},{"id":235,"pageTitle":"Bootstrap","sectionTitle":"Bootstrap","sectionRoute":"/build/core/bootstrap","type":"docs"},{"id":236,"pageTitle":"Bootstrap","sectionTitle":"Network initizialiation","sectionRoute":"/build/core/bootstrap#network-initizialiation","type":"docs"},{"id":237,"pageTitle":"Bootstrap","sectionTitle":"First node bootstrapping","sectionRoute":"/build/core/bootstrap#first-node-bootstrapping","type":"docs"},{"id":238,"pageTitle":"Bootstrap","sectionTitle":"Next time bootstraps","sectionRoute":"/build/core/bootstrap#next-time-bootstraps","type":"docs"},{"id":297,"pageTitle":"Cryptography","sectionTitle":"Cryptography","sectionRoute":"/build/core/cryptography/","type":"docs"},{"id":298,"pageTitle":"Cryptography","sectionTitle":"Node Keystore","sectionRoute":"/build/core/cryptography/#node-keystore","type":"docs"},{"id":299,"pageTitle":"Cryptography","sectionTitle":"Node Shared Secrets Keystore","sectionRoute":"/build/core/cryptography/#node-shared-secrets-keystore","type":"docs"},{"id":269,"pageTitle":"TPM Implementation","sectionTitle":"TPM Implementation","sectionRoute":"/build/core/cryptography/tpm","type":"docs"},{"id":270,"pageTitle":"TPM Implementation","sectionTitle":"Global Variables","sectionRoute":"/build/core/cryptography/tpm#global-variables","type":"docs"},{"id":271,"pageTitle":"TPM Implementation","sectionTitle":"void keyToASN():","sectionRoute":"/build/core/cryptography/tpm#void-keytoasn","type":"docs"},{"id":272,"pageTitle":"TPM Implementation","sectionTitle":"void signToASN(BYTE r, INT sizeR, BYTE s, INT sizeS, INT *asnSignSize)","sectionRoute":"/build/core/cryptography/tpm#void-signtoasnbyte-r-int-sizer-byte-s-int-sizes-int-asnsignsize","type":"docs"},{"id":273,"pageTitle":"TPM Implementation","sectionTitle":"void generatePublicKey(INT keyIndex)","sectionRoute":"/build/core/cryptography/tpm#void-generatepublickeyint-keyindex","type":"docs"},{"id":274,"pageTitle":"TPM Implementation","sectionTitle":"setRootKey()","sectionRoute":"/build/core/cryptography/tpm#setrootkey","type":"docs"},{"id":275,"pageTitle":"TPM Implementation","sectionTitle":"updateHandlesIndexes()","sectionRoute":"/build/core/cryptography/tpm#updatehandlesindexes","type":"docs"},{"id":276,"pageTitle":"TPM Implementation","sectionTitle":"initializeTPM(INT keyIndex):","sectionRoute":"/build/core/cryptography/tpm#initializetpmint-keyindex","type":"docs"},{"id":277,"pageTitle":"TPM Implementation","sectionTitle":"getKeyIndex():","sectionRoute":"/build/core/cryptography/tpm#getkeyindex","type":"docs"},{"id":278,"pageTitle":"TPM Implementation","sectionTitle":"setKeyIndex(INT keyIndex):","sectionRoute":"/build/core/cryptography/tpm#setkeyindexint-keyindex","type":"docs"},{"id":279,"pageTitle":"TPM Implementation","sectionTitle":"getPublicKey(INT keyIndex, INT *publicKeySize):","sectionRoute":"/build/core/cryptography/tpm#getpublickeyint-keyindex-int-publickeysize","type":"docs"},{"id":280,"pageTitle":"TPM Implementation","sectionTitle":"signECDSA(INT keyIndex, BYTE hashToSign, INT eccSignSize, bool increment):","sectionRoute":"/build/core/cryptography/tpm#signecdsaint-keyindex-byte-hashtosign-int-eccsignsize-bool-increment","type":"docs"},{"id":281,"pageTitle":"TPM Implementation","sectionTitle":"getECDHPoint(INT keyIndex, BYTE *euphemeralKey):","sectionRoute":"/build/core/cryptography/tpm#getecdhpointint-keyindex-byte-euphemeralkey","type":"docs"},{"id":239,"pageTitle":"Yubikey implementation","sectionTitle":"Yubikey implementation","sectionRoute":"/build/core/cryptography/yubikey","type":"docs"},{"id":240,"pageTitle":"Yubikey implementation","sectionTitle":"initializeYK() :","sectionRoute":"/build/core/cryptography/yubikey#initializeyk-","type":"docs"},{"id":241,"pageTitle":"Yubikey implementation","sectionTitle":"bool checkYK():","sectionRoute":"/build/core/cryptography/yubikey#bool-checkyk","type":"docs"},{"id":242,"pageTitle":"Yubikey implementation","sectionTitle":"verifyPinYK():","sectionRoute":"/build/core/cryptography/yubikey#verifypinyk","type":"docs"},{"id":243,"pageTitle":"Yubikey implementation","sectionTitle":"authenticateYK():","sectionRoute":"/build/core/cryptography/yubikey#authenticateyk","type":"docs"},{"id":244,"pageTitle":"Yubikey implementation","sectionTitle":"fetchKey(keyIndex):","sectionRoute":"/build/core/cryptography/yubikey#fetchkeykeyindex","type":"docs"},{"id":245,"pageTitle":"Yubikey implementation","sectionTitle":"generateKey(ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#generatekeyykindex","type":"docs"},{"id":246,"pageTitle":"Yubikey implementation","sectionTitle":"generateCertificate(ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#generatecertificateykindex","type":"docs"},{"id":247,"pageTitle":"Yubikey implementation","sectionTitle":"getYKIndex():","sectionRoute":"/build/core/cryptography/yubikey#getykindex","type":"docs"},{"id":248,"pageTitle":"Yubikey implementation","sectionTitle":"saveIndex(ykIndex, archethicIndex):","sectionRoute":"/build/core/cryptography/yubikey#saveindexykindex-archethicindex","type":"docs"},{"id":249,"pageTitle":"Yubikey implementation","sectionTitle":"signECDSA(hashtoSign, ykIndex):","sectionRoute":"/build/core/cryptography/yubikey#signecdsahashtosign-ykindex","type":"docs"},{"id":250,"pageTitle":"Yubikey implementation","sectionTitle":"getECDHPoint(ykIndex, euphermerakley) :","sectionRoute":"/build/core/cryptography/yubikey#getecdhpointykindex-euphermerakley-","type":"docs"},{"id":251,"pageTitle":"Yubikey implementation","sectionTitle":"getArchEthicIndex():","sectionRoute":"/build/core/cryptography/yubikey#getarchethicindex","type":"docs"},{"id":252,"pageTitle":"Yubikey implementation","sectionTitle":"incrementIndex():","sectionRoute":"/build/core/cryptography/yubikey#incrementindex","type":"docs"},{"id":253,"pageTitle":"Yubikey implementation","sectionTitle":"getRootKey():","sectionRoute":"/build/core/cryptography/yubikey#getrootkey","type":"docs"},{"id":254,"pageTitle":"Yubikey implementation","sectionTitle":"getCurrentKey(publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getcurrentkeypublickeysize","type":"docs"},{"id":255,"pageTitle":"Yubikey implementation","sectionTitle":"getNextKey( publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getnextkey-publickeysize","type":"docs"},{"id":256,"pageTitle":"Yubikey implementation","sectionTitle":"getPastKey(archEthicIndex, publicKeySize):","sectionRoute":"/build/core/cryptography/yubikey#getpastkeyarchethicindex-publickeysize","type":"docs"},{"id":257,"pageTitle":"Yubikey implementation","sectionTitle":"getRootCertificate( certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getrootcertificate-certificatesize","type":"docs"},{"id":258,"pageTitle":"Yubikey implementation","sectionTitle":"getCurrentCertificate(certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getcurrentcertificatecertificatesize","type":"docs"},{"id":259,"pageTitle":"Yubikey implementation","sectionTitle":"getNextCertificate(certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getnextcertificatecertificatesize","type":"docs"},{"id":260,"pageTitle":"Yubikey implementation","sectionTitle":"getPastCertificate(archEthicIndex, certificateSize):","sectionRoute":"/build/core/cryptography/yubikey#getpastcertificatearchethicindex-certificatesize","type":"docs"},{"id":261,"pageTitle":"Yubikey implementation","sectionTitle":"signCurrentKey(hashToSign, eccSignSize):","sectionRoute":"/build/core/cryptography/yubikey#signcurrentkeyhashtosign-eccsignsize","type":"docs"},{"id":262,"pageTitle":"Yubikey implementation","sectionTitle":"signPastKey(archEthicIndex, hashToSign, eccSignSize):","sectionRoute":"/build/core/cryptography/yubikey#signpastkeyarchethicindex-hashtosign-eccsignsize","type":"docs"},{"id":263,"pageTitle":"Yubikey implementation","sectionTitle":"ecdhCurrentKey(euphemeralKey, eccPointSize):","sectionRoute":"/build/core/cryptography/yubikey#ecdhcurrentkeyeuphemeralkey-eccpointsize","type":"docs"},{"id":264,"pageTitle":"Yubikey implementation","sectionTitle":"ecdhPastKey( archEthicIndex, euphemeralKey, eccPointSize):","sectionRoute":"/build/core/cryptography/yubikey#ecdhpastkey-archethicindex-euphemeralkey-eccpointsize","type":"docs"},{"id":283,"pageTitle":"Archethic's database","sectionTitle":"Archethic's database","sectionRoute":"/build/core/database","type":"docs"},{"id":284,"pageTitle":"Archethic's database","sectionTitle":"Rationale","sectionRoute":"/build/core/database#rationale","type":"docs"},{"id":285,"pageTitle":"Archethic's database","sectionTitle":"Log Structured Merge","sectionRoute":"/build/core/database#log-structured-merge","type":"docs"},{"id":286,"pageTitle":"Archethic's database","sectionTitle":"Log Structured Hash Tables","sectionRoute":"/build/core/database#log-structured-hash-tables","type":"docs"},{"id":287,"pageTitle":"Archethic's database","sectionTitle":"Our approach","sectionRoute":"/build/core/database#our-approach","type":"docs"},{"id":288,"pageTitle":"Archethic's database","sectionTitle":"Design","sectionRoute":"/build/core/database#design","type":"docs"},{"id":289,"pageTitle":"Archethic's database","sectionTitle":"Chains storage","sectionRoute":"/build/core/database#chains-storage","type":"docs"},{"id":290,"pageTitle":"Archethic's database","sectionTitle":"Chain indexing","sectionRoute":"/build/core/database#chain-indexing","type":"docs"},{"id":291,"pageTitle":"Archethic's database","sectionTitle":"Chain reader","sectionRoute":"/build/core/database#chain-reader","type":"docs"},{"id":292,"pageTitle":"Archethic's database","sectionTitle":"Write path","sectionRoute":"/build/core/database#write-path","type":"docs"},{"id":293,"pageTitle":"Archethic's database","sectionTitle":"Read path","sectionRoute":"/build/core/database#read-path","type":"docs"},{"id":294,"pageTitle":"Archethic's database","sectionTitle":"Additional of-chain storage","sectionRoute":"/build/core/database#additional-of-chain-storage","type":"docs"},{"id":265,"pageTitle":"Election","sectionTitle":"Election","sectionRoute":"/build/core/election","type":"docs"},{"id":266,"pageTitle":"Election","sectionTitle":"Heuristic constraints","sectionRoute":"/build/core/election#heuristic-constraints","type":"docs"},{"id":267,"pageTitle":"Election","sectionTitle":"Low-Level integrations","sectionRoute":"/build/core/election#low-level-integrations","type":"docs"},{"id":268,"pageTitle":"Election","sectionTitle":"Hypergeomtric distribution","sectionRoute":"/build/core/election#hypergeomtric-distribution","type":"docs"},{"id":282,"pageTitle":"Code Proposals","sectionTitle":"Code Proposals","sectionRoute":"/build/core/governance/code-proposals","type":"docs"},{"id":296,"pageTitle":"CD","sectionTitle":"CD","sectionRoute":"/build/core/governance/code-proposals-cd","type":"docs"},{"id":295,"pageTitle":"CI","sectionTitle":"CI","sectionRoute":"/build/core/governance/code-proposals-ci","type":"docs"},{"id":300,"pageTitle":"Mining","sectionTitle":"Mining","sectionRoute":"/build/core/mining/","type":"docs"},{"id":301,"pageTitle":"Mining","sectionTitle":"Standalone validation workflow","sectionRoute":"/build/core/mining/#standalone-validation-workflow","type":"docs"},{"id":302,"pageTitle":"Mining","sectionTitle":"Distributed validation","sectionRoute":"/build/core/mining/#distributed-validation","type":"docs"},{"id":303,"pageTitle":"Mining","sectionTitle":"Worflow","sectionRoute":"/build/core/mining/#worflow","type":"docs"},{"id":304,"pageTitle":"Mining","sectionTitle":"FSM","sectionRoute":"/build/core/mining/#fsm","type":"docs"},{"id":325,"pageTitle":"Proof of Work algorithm","sectionTitle":"Proof of Work algorithm","sectionRoute":"/build/core/mining/proof-of-work","type":"docs"},{"id":326,"pageTitle":"Proof of Work algorithm","sectionTitle":"Origin public key candidates","sectionRoute":"/build/core/mining/proof-of-work#origin-public-key-candidates","type":"docs"},{"id":327,"pageTitle":"Proof of Work algorithm","sectionTitle":"Lookup","sectionRoute":"/build/core/mining/proof-of-work#lookup","type":"docs"},{"id":306,"pageTitle":"Transaction context retrieval","sectionTitle":"Transaction context retrieval","sectionRoute":"/build/core/mining/transaction-context","type":"docs"},{"id":307,"pageTitle":"Transaction context retrieval","sectionTitle":"Retrieval","sectionRoute":"/build/core/mining/transaction-context#retrieval","type":"docs"},{"id":308,"pageTitle":"Transaction context retrieval","sectionTitle":"Node distribution","sectionRoute":"/build/core/mining/transaction-context#node-distribution","type":"docs"},{"id":309,"pageTitle":"Pending transaction validation","sectionTitle":"Pending transaction validation","sectionRoute":"/build/core/mining/transaction-validation","type":"docs"},{"id":310,"pageTitle":"Pending transaction validation","sectionTitle":"Smart contract verification","sectionRoute":"/build/core/mining/transaction-validation#smart-contract-verification","type":"docs"},{"id":311,"pageTitle":"Pending transaction validation","sectionTitle":"Transaction type verification","sectionRoute":"/build/core/mining/transaction-validation#transaction-type-verification","type":"docs"},{"id":312,"pageTitle":"Pending transaction validation","sectionTitle":"Node transaction verification","sectionRoute":"/build/core/mining/transaction-validation#node-transaction-verification","type":"docs"},{"id":313,"pageTitle":"Pending transaction validation","sectionTitle":"Node shared secrets transaction verification","sectionRoute":"/build/core/mining/transaction-validation#node-shared-secrets-transaction-verification","type":"docs"},{"id":314,"pageTitle":"Pending transaction validation","sectionTitle":"Token transaction verification","sectionRoute":"/build/core/mining/transaction-validation#token-transaction-verification","type":"docs"},{"id":315,"pageTitle":"Pending transaction validation","sectionTitle":"Oracle transaction verification","sectionRoute":"/build/core/mining/transaction-validation#oracle-transaction-verification","type":"docs"},{"id":316,"pageTitle":"Pending transaction validation","sectionTitle":"OracleSummary transaction verification","sectionRoute":"/build/core/mining/transaction-validation#oraclesummary-transaction-verification","type":"docs"},{"id":317,"pageTitle":"Pending transaction validation","sectionTitle":"Code proposal transaction verification","sectionRoute":"/build/core/mining/transaction-validation#code-proposal-transaction-verification","type":"docs"},{"id":318,"pageTitle":"Pending transaction validation","sectionTitle":"Code approval transaction verification","sectionRoute":"/build/core/mining/transaction-validation#code-approval-transaction-verification","type":"docs"},{"id":305,"pageTitle":"OracleChain","sectionTitle":"OracleChain","sectionRoute":"/build/core/oracle-chain/","type":"docs"},{"id":319,"pageTitle":"OracleChain Memory Tables","sectionTitle":"OracleChain Memory Tables","sectionRoute":"/build/core/oracle-chain/memory-table","type":"docs"},{"id":320,"pageTitle":"OracleChain Scheduler","sectionTitle":"OracleChain Scheduler","sectionRoute":"/build/core/oracle-chain/scheduler","type":"docs"},{"id":321,"pageTitle":"Oracle Chain Service","sectionTitle":"Oracle Chain Service","sectionRoute":"/build/core/oracle-chain/service","type":"docs"},{"id":322,"pageTitle":"Oracle Chain Service","sectionTitle":"Behavior","sectionRoute":"/build/core/oracle-chain/service#behavior","type":"docs"},{"id":323,"pageTitle":"Oracle Chain Service","sectionTitle":"Example","sectionRoute":"/build/core/oracle-chain/service#example","type":"docs"},{"id":324,"pageTitle":"Oracle Chain Service","sectionTitle":"Configuration","sectionRoute":"/build/core/oracle-chain/service#configuration","type":"docs"},{"id":332,"pageTitle":"P2P","sectionTitle":"P2P","sectionRoute":"/build/core/p2p/","type":"docs"},{"id":328,"pageTitle":"Messaging","sectionTitle":"Messaging","sectionRoute":"/build/core/p2p/messaging","type":"docs"},{"id":329,"pageTitle":"Messaging","sectionTitle":"Stream Multiplexer","sectionRoute":"/build/core/p2p/messaging#stream-multiplexer","type":"docs"},{"id":330,"pageTitle":"Messaging","sectionTitle":"Binary Protocol","sectionRoute":"/build/core/p2p/messaging#binary-protocol","type":"docs"},{"id":331,"pageTitle":"Messaging","sectionTitle":"Message envelop","sectionRoute":"/build/core/p2p/messaging#message-envelop","type":"docs"},{"id":335,"pageTitle":"Node","sectionTitle":"Node","sectionRoute":"/build/core/p2p/node","type":"docs"},{"id":336,"pageTitle":"Node","sectionTitle":"Data structure","sectionRoute":"/build/core/p2p/node#data-structure","type":"docs"},{"id":337,"pageTitle":"Node","sectionTitle":"P2P tables view","sectionRoute":"/build/core/p2p/node#p2p-tables-view","type":"docs"},{"id":338,"pageTitle":"Node","sectionTitle":"Discovery table","sectionRoute":"/build/core/p2p/node#discovery-table","type":"docs"},{"id":339,"pageTitle":"Node","sectionTitle":"Availability lookup table","sectionRoute":"/build/core/p2p/node#availability-lookup-table","type":"docs"},{"id":340,"pageTitle":"Node","sectionTitle":"Authorized nodes table","sectionRoute":"/build/core/p2p/node#authorized-nodes-table","type":"docs"},{"id":341,"pageTitle":"Node","sectionTitle":"Nodes key lookup table","sectionRoute":"/build/core/p2p/node#nodes-key-lookup-table","type":"docs"},{"id":333,"pageTitle":"SDK","sectionTitle":"SDK","sectionRoute":"/build/sdk/","type":"docs"},{"id":334,"pageTitle":"Dart SDK","sectionTitle":"Dart SDK","sectionRoute":"/build/sdk/dart","type":"docs"},{"id":342,"pageTitle":"Go SDK","sectionTitle":"Go SDK","sectionRoute":"/build/sdk/go","type":"docs"},{"id":343,"pageTitle":"Javascript SDK","sectionTitle":"Javascript SDK","sectionRoute":"/build/sdk/js","type":"docs"},{"id":345,"pageTitle":"Smart Contracts","sectionTitle":"Smart Contracts","sectionRoute":"/build/smart-contracts/","type":"docs"},{"id":346,"pageTitle":"Smart Contracts","sectionTitle":"Autonomous","sectionRoute":"/build/smart-contracts/#autonomous","type":"docs"},{"id":347,"pageTitle":"Smart Contracts","sectionTitle":"Modifiable:","sectionRoute":"/build/smart-contracts/#modifiable","type":"docs"},{"id":348,"pageTitle":"Smart Contracts","sectionTitle":"Interpreted","sectionRoute":"/build/smart-contracts/#interpreted","type":"docs"},{"id":349,"pageTitle":"Smart Contracts","sectionTitle":"Stateless","sectionRoute":"/build/smart-contracts/#stateless","type":"docs"},{"id":344,"pageTitle":"Smart Contracts - Fees","sectionTitle":"Smart Contracts - Fees","sectionRoute":"/build/smart-contracts/fees","type":"docs"},{"id":350,"pageTitle":"Smart Contracts - Language","sectionTitle":"Smart Contracts - Language","sectionRoute":"/build/smart-contracts/language/","type":"docs"},{"id":351,"pageTitle":"Smart Contracts - Language","sectionTitle":"Version attribute","sectionRoute":"/build/smart-contracts/language/#version-attribute","type":"docs"},{"id":352,"pageTitle":"Smart Contracts - Language","sectionTitle":"Basic Types","sectionRoute":"/build/smart-contracts/language/#basic-types","type":"docs"},{"id":353,"pageTitle":"Smart Contracts - Language","sectionTitle":"Hexadecimals","sectionRoute":"/build/smart-contracts/language/#hexadecimals","type":"docs"},{"id":354,"pageTitle":"Smart Contracts - Language","sectionTitle":"ASCII character in string","sectionRoute":"/build/smart-contracts/language/#ascii-character-in-string","type":"docs"},{"id":355,"pageTitle":"Smart Contracts - Language","sectionTitle":"Comparaison","sectionRoute":"/build/smart-contracts/language/#comparaison","type":"docs"},{"id":356,"pageTitle":"Smart Contracts - Language","sectionTitle":"Arithmetic","sectionRoute":"/build/smart-contracts/language/#arithmetic","type":"docs"},{"id":357,"pageTitle":"Smart Contracts - Language","sectionTitle":"Ranges","sectionRoute":"/build/smart-contracts/language/#ranges","type":"docs"},{"id":358,"pageTitle":"Smart Contracts - Language","sectionTitle":"Loop","sectionRoute":"/build/smart-contracts/language/#loop","type":"docs"},{"id":359,"pageTitle":"Smart Contracts - Language","sectionTitle":"Variables & Scopes","sectionRoute":"/build/smart-contracts/language/#variables--scopes","type":"docs"},{"id":360,"pageTitle":"Smart Contracts - Language","sectionTitle":"Lists","sectionRoute":"/build/smart-contracts/language/#lists","type":"docs"},{"id":361,"pageTitle":"Smart Contracts - Language","sectionTitle":"Maps","sectionRoute":"/build/smart-contracts/language/#maps","type":"docs"},{"id":362,"pageTitle":"Smart Contracts - Language","sectionTitle":"Functions","sectionRoute":"/build/smart-contracts/language/#functions","type":"docs"},{"id":363,"pageTitle":"Smart Contracts - Language","sectionTitle":"Internal Functions","sectionRoute":"/build/smart-contracts/language/#internal-functions","type":"docs"},{"id":364,"pageTitle":"Smart Contracts - Language","sectionTitle":"Exported Functions","sectionRoute":"/build/smart-contracts/language/#exported-functions","type":"docs"},{"id":365,"pageTitle":"Smart Contracts - Language","sectionTitle":"Library","sectionRoute":"/build/smart-contracts/language/#library","type":"docs"},{"id":366,"pageTitle":"Smart Contracts - Language","sectionTitle":"Reserved keywords","sectionRoute":"/build/smart-contracts/language/#reserved-keywords","type":"docs"},{"id":367,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Smart Contracts - Actions block","sectionRoute":"/build/smart-contracts/language/actions","type":"docs"},{"id":368,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Global variables","sectionRoute":"/build/smart-contracts/language/actions#global-variables","type":"docs"},{"id":369,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Named action arguments","sectionRoute":"/build/smart-contracts/language/actions#named-action-arguments","type":"docs"},{"id":370,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Generating the next transaction","sectionRoute":"/build/smart-contracts/language/actions#generating-the-next-transaction","type":"docs"},{"id":371,"pageTitle":"Smart Contracts - Actions block","sectionTitle":"Appendix 1: The transaction map","sectionRoute":"/build/smart-contracts/language/actions#appendix-1-the-transaction-map","type":"docs"},{"id":377,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Smart Contracts - Condition block","sectionRoute":"/build/smart-contracts/language/condition","type":"docs"},{"id":378,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Rules","sectionRoute":"/build/smart-contracts/language/condition#rules","type":"docs"},{"id":379,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition inherit","sectionRoute":"/build/smart-contracts/language/condition#condition-inherit","type":"docs"},{"id":380,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples","type":"docs"},{"id":381,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition transaction","sectionRoute":"/build/smart-contracts/language/condition#condition-transaction","type":"docs"},{"id":382,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples-1","type":"docs"},{"id":383,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Condition oracle","sectionRoute":"/build/smart-contracts/language/condition#condition-oracle","type":"docs"},{"id":384,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Examples","sectionRoute":"/build/smart-contracts/language/condition#examples-2","type":"docs"},{"id":385,"pageTitle":"Smart Contracts - Condition block","sectionTitle":"Legacy syntax","sectionRoute":"/build/smart-contracts/language/condition#legacy-syntax","type":"docs"},{"id":372,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Smart Contracts - Examples","sectionRoute":"/build/smart-contracts/language/examples","type":"docs"},{"id":373,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Hello World","sectionRoute":"/build/smart-contracts/language/examples#hello-world","type":"docs"},{"id":374,"pageTitle":"Smart Contracts - Examples","sectionTitle":"ICO (Initial Coin Offering)","sectionRoute":"/build/smart-contracts/language/examples#ico-initial-coin-offering","type":"docs"},{"id":375,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Recurring ICO","sectionRoute":"/build/smart-contracts/language/examples#recurring-ico","type":"docs"},{"id":376,"pageTitle":"Smart Contracts - Examples","sectionTitle":"Vote system","sectionRoute":"/build/smart-contracts/language/examples#vote-system","type":"docs"},{"id":386,"pageTitle":"Smart Contracts (Legacy)","sectionTitle":"Smart Contracts (Legacy)","sectionRoute":"/build/smart-contracts/language/legacy/","type":"docs"},{"id":387,"pageTitle":"Smart Contract examples","sectionTitle":"Smart Contract examples","sectionRoute":"/build/smart-contracts/language/legacy/examples","type":"docs"},{"id":388,"pageTitle":"Smart Contract examples","sectionTitle":"Recurrent transfer","sectionRoute":"/build/smart-contracts/language/legacy/examples#recurrent-transfer","type":"docs"},{"id":389,"pageTitle":"Smart Contract examples","sectionTitle":"ICO / Crowdfunding","sectionRoute":"/build/smart-contracts/language/legacy/examples#ico--crowdfunding","type":"docs"},{"id":390,"pageTitle":"Smart Contract Language","sectionTitle":"Smart Contract Language","sectionRoute":"/build/smart-contracts/language/legacy/language","type":"docs"},{"id":391,"pageTitle":"Smart Contract Language","sectionTitle":"Triggers/Actions","sectionRoute":"/build/smart-contracts/language/legacy/language#triggersactions","type":"docs"},{"id":392,"pageTitle":"Smart Contract Language","sectionTitle":"Conditions","sectionRoute":"/build/smart-contracts/language/legacy/language#conditions","type":"docs"},{"id":393,"pageTitle":"Smart Contract Language","sectionTitle":"Global variables","sectionRoute":"/build/smart-contracts/language/legacy/language#global-variables","type":"docs"},{"id":394,"pageTitle":"Smart Contract Language","sectionTitle":"Functions","sectionRoute":"/build/smart-contracts/language/legacy/language#functions","type":"docs"},{"id":395,"pageTitle":"Smart Contract Language","sectionTitle":"Utilities","sectionRoute":"/build/smart-contracts/language/legacy/language#utilities","type":"docs"},{"id":396,"pageTitle":"Smart Contract Language","sectionTitle":"Statements","sectionRoute":"/build/smart-contracts/language/legacy/language#statements","type":"docs"},{"id":413,"pageTitle":"Smart Contracts - Library","sectionTitle":"Smart Contracts - Library","sectionRoute":"/build/smart-contracts/language/library","type":"docs"},{"id":414,"pageTitle":"Smart Contracts - Library","sectionTitle":"String","sectionRoute":"/build/smart-contracts/language/library#string","type":"docs"},{"id":415,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1","type":"docs"},{"id":416,"pageTitle":"Smart Contracts - Library","sectionTitle":"in?/2","sectionRoute":"/build/smart-contracts/language/library#in2","type":"docs"},{"id":417,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_number/1","sectionRoute":"/build/smart-contracts/language/library#to_number1","type":"docs"},{"id":418,"pageTitle":"Smart Contracts - Library","sectionTitle":"from_number/1","sectionRoute":"/build/smart-contracts/language/library#from_number1","type":"docs"},{"id":419,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_hex/1","sectionRoute":"/build/smart-contracts/language/library#to_hex1","type":"docs"},{"id":420,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_uppercase/1","sectionRoute":"/build/smart-contracts/language/library#to_uppercase1","type":"docs"},{"id":421,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_lowercase/1","sectionRoute":"/build/smart-contracts/language/library#to_lowercase1","type":"docs"},{"id":422,"pageTitle":"Smart Contracts - Library","sectionTitle":"Map","sectionRoute":"/build/smart-contracts/language/library#map","type":"docs"},{"id":423,"pageTitle":"Smart Contracts - Library","sectionTitle":"new/0","sectionRoute":"/build/smart-contracts/language/library#new0","type":"docs"},{"id":424,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1-1","type":"docs"},{"id":425,"pageTitle":"Smart Contracts - Library","sectionTitle":"get/2","sectionRoute":"/build/smart-contracts/language/library#get2","type":"docs"},{"id":426,"pageTitle":"Smart Contracts - Library","sectionTitle":"get/3","sectionRoute":"/build/smart-contracts/language/library#get3","type":"docs"},{"id":427,"pageTitle":"Smart Contracts - Library","sectionTitle":"set/3","sectionRoute":"/build/smart-contracts/language/library#set3","type":"docs"},{"id":428,"pageTitle":"Smart Contracts - Library","sectionTitle":"keys/1","sectionRoute":"/build/smart-contracts/language/library#keys1","type":"docs"},{"id":429,"pageTitle":"Smart Contracts - Library","sectionTitle":"values/1","sectionRoute":"/build/smart-contracts/language/library#values1","type":"docs"},{"id":430,"pageTitle":"Smart Contracts - Library","sectionTitle":"delete/2","sectionRoute":"/build/smart-contracts/language/library#delete2","type":"docs"},{"id":431,"pageTitle":"Smart Contracts - Library","sectionTitle":"List","sectionRoute":"/build/smart-contracts/language/library#list","type":"docs"},{"id":432,"pageTitle":"Smart Contracts - Library","sectionTitle":"at/2","sectionRoute":"/build/smart-contracts/language/library#at2","type":"docs"},{"id":433,"pageTitle":"Smart Contracts - Library","sectionTitle":"size/1","sectionRoute":"/build/smart-contracts/language/library#size1-2","type":"docs"},{"id":434,"pageTitle":"Smart Contracts - Library","sectionTitle":"in?/2","sectionRoute":"/build/smart-contracts/language/library#in2-1","type":"docs"},{"id":435,"pageTitle":"Smart Contracts - Library","sectionTitle":"empty?/1","sectionRoute":"/build/smart-contracts/language/library#empty1","type":"docs"},{"id":436,"pageTitle":"Smart Contracts - Library","sectionTitle":"concat/2","sectionRoute":"/build/smart-contracts/language/library#concat2","type":"docs"},{"id":437,"pageTitle":"Smart Contracts - Library","sectionTitle":"append/2","sectionRoute":"/build/smart-contracts/language/library#append2","type":"docs"},{"id":438,"pageTitle":"Smart Contracts - Library","sectionTitle":"prepend/2","sectionRoute":"/build/smart-contracts/language/library#prepend2","type":"docs"},{"id":439,"pageTitle":"Smart Contracts - Library","sectionTitle":"join/2","sectionRoute":"/build/smart-contracts/language/library#join2","type":"docs"},{"id":440,"pageTitle":"Smart Contracts - Library","sectionTitle":"Regex","sectionRoute":"/build/smart-contracts/language/library#regex","type":"docs"},{"id":441,"pageTitle":"Smart Contracts - Library","sectionTitle":"extract/2","sectionRoute":"/build/smart-contracts/language/library#extract2","type":"docs"},{"id":442,"pageTitle":"Smart Contracts - Library","sectionTitle":"match?/2","sectionRoute":"/build/smart-contracts/language/library#match2","type":"docs"},{"id":443,"pageTitle":"Smart Contracts - Library","sectionTitle":"scan/2","sectionRoute":"/build/smart-contracts/language/library#scan2","type":"docs"},{"id":444,"pageTitle":"Smart Contracts - Library","sectionTitle":"Json","sectionRoute":"/build/smart-contracts/language/library#json","type":"docs"},{"id":445,"pageTitle":"Smart Contracts - Library","sectionTitle":"path_extract/2","sectionRoute":"/build/smart-contracts/language/library#path_extract2","type":"docs"},{"id":446,"pageTitle":"Smart Contracts - Library","sectionTitle":"path_match?/2","sectionRoute":"/build/smart-contracts/language/library#path_match2","type":"docs"},{"id":447,"pageTitle":"Smart Contracts - Library","sectionTitle":"to_string/1","sectionRoute":"/build/smart-contracts/language/library#to_string1","type":"docs"},{"id":448,"pageTitle":"Smart Contracts - Library","sectionTitle":"parse/1","sectionRoute":"/build/smart-contracts/language/library#parse1","type":"docs"},{"id":449,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_valid?/1","sectionRoute":"/build/smart-contracts/language/library#is_valid1","type":"docs"},{"id":450,"pageTitle":"Smart Contracts - Library","sectionTitle":"Time","sectionRoute":"/build/smart-contracts/language/library#time","type":"docs"},{"id":451,"pageTitle":"Smart Contracts - Library","sectionTitle":"now/0","sectionRoute":"/build/smart-contracts/language/library#now0","type":"docs"},{"id":452,"pageTitle":"Smart Contracts - Library","sectionTitle":"Chain","sectionRoute":"/build/smart-contracts/language/library#chain","type":"docs"},{"id":453,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_genesis_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_genesis_address1-io","type":"docs"},{"id":454,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_first_transaction_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_first_transaction_address1-io","type":"docs"},{"id":455,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_genesis_public_key/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_genesis_public_key1-io","type":"docs"},{"id":456,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_burn_address/0","sectionRoute":"/build/smart-contracts/language/library#get_burn_address0","type":"docs"},{"id":457,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_transaction/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_transaction1--io","type":"docs"},{"id":458,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_last_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_last_address1-io","type":"docs"},{"id":459,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_last_transaction/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_last_transaction1-io","type":"docs"},{"id":460,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_previous_address/1","sectionRoute":"/build/smart-contracts/language/library#get_previous_address1","type":"docs"},{"id":461,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_balance1-io","type":"docs"},{"id":462,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_uco_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_uco_balance1-io","type":"docs"},{"id":463,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_token_balance/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_token_balance2-io","type":"docs"},{"id":464,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_token_balance/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_token_balance3-io","type":"docs"},{"id":465,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_tokens_balance/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_tokens_balance1-io","type":"docs"},{"id":466,"pageTitle":"Smart Contracts - Library","sectionTitle":"get_tokens_balance/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#get_tokens_balance2-io","type":"docs"},{"id":467,"pageTitle":"Smart Contracts - Library","sectionTitle":"Crypto","sectionRoute":"/build/smart-contracts/language/library#crypto","type":"docs"},{"id":468,"pageTitle":"Smart Contracts - Library","sectionTitle":"hash/1","sectionRoute":"/build/smart-contracts/language/library#hash1","type":"docs"},{"id":469,"pageTitle":"Smart Contracts - Library","sectionTitle":"hash/2","sectionRoute":"/build/smart-contracts/language/library#hash2","type":"docs"},{"id":470,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/1","sectionRoute":"/build/smart-contracts/language/library#hmac1","type":"docs"},{"id":471,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/2","sectionRoute":"/build/smart-contracts/language/library#hmac2","type":"docs"},{"id":472,"pageTitle":"Smart Contracts - Library","sectionTitle":"hmac/3","sectionRoute":"/build/smart-contracts/language/library#hmac3","type":"docs"},{"id":473,"pageTitle":"Smart Contracts - Library","sectionTitle":"sign_with_recovery/1","sectionRoute":"/build/smart-contracts/language/library#sign_with_recovery1","type":"docs"},{"id":474,"pageTitle":"Smart Contracts - Library","sectionTitle":"Token","sectionRoute":"/build/smart-contracts/language/library#token","type":"docs"},{"id":475,"pageTitle":"Smart Contracts - Library","sectionTitle":"fetch_id_from_address/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#fetch_id_from_address1-io","type":"docs"},{"id":476,"pageTitle":"Smart Contracts - Library","sectionTitle":"Code","sectionRoute":"/build/smart-contracts/language/library#code","type":"docs"},{"id":477,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_same?/2","sectionRoute":"/build/smart-contracts/language/library#is_same2","type":"docs"},{"id":478,"pageTitle":"Smart Contracts - Library","sectionTitle":"is_valid?/1","sectionRoute":"/build/smart-contracts/language/library#is_valid1-1","type":"docs"},{"id":479,"pageTitle":"Smart Contracts - Library","sectionTitle":"Math","sectionRoute":"/build/smart-contracts/language/library#math","type":"docs"},{"id":480,"pageTitle":"Smart Contracts - Library","sectionTitle":"pow/2","sectionRoute":"/build/smart-contracts/language/library#pow2","type":"docs"},{"id":481,"pageTitle":"Smart Contracts - Library","sectionTitle":"trunc/1","sectionRoute":"/build/smart-contracts/language/library#trunc1","type":"docs"},{"id":482,"pageTitle":"Smart Contracts - Library","sectionTitle":"sqrt/1","sectionRoute":"/build/smart-contracts/language/library#sqrt1","type":"docs"},{"id":483,"pageTitle":"Smart Contracts - Library","sectionTitle":"rem/2","sectionRoute":"/build/smart-contracts/language/library#rem2","type":"docs"},{"id":484,"pageTitle":"Smart Contracts - Library","sectionTitle":"Http","sectionRoute":"/build/smart-contracts/language/library#http","type":"docs"},{"id":485,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request1-io","type":"docs"},{"id":486,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/2 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request2-io","type":"docs"},{"id":487,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request3-io","type":"docs"},{"id":488,"pageTitle":"Smart Contracts - Library","sectionTitle":"request/4 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request4-io","type":"docs"},{"id":489,"pageTitle":"Smart Contracts - Library","sectionTitle":"request_many/1 [I/O]","sectionRoute":"/build/smart-contracts/language/library#request_many1-io","type":"docs"},{"id":490,"pageTitle":"Smart Contracts - Library","sectionTitle":"Contract","sectionRoute":"/build/smart-contracts/language/library#contract","type":"docs"},{"id":491,"pageTitle":"Smart Contracts - Library","sectionTitle":"call_function/3 [I/O]","sectionRoute":"/build/smart-contracts/language/library#call_function3-io","type":"docs"},{"id":492,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_type/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_type1-transaction","type":"docs"},{"id":493,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_content/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_content1-transaction","type":"docs"},{"id":494,"pageTitle":"Smart Contracts - Library","sectionTitle":"set_code/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#set_code1-transaction","type":"docs"},{"id":495,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_uco_transfer/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_uco_transfer1-transaction","type":"docs"},{"id":496,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_uco_transfers/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_uco_transfers1-transaction","type":"docs"},{"id":497,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_token_transfer/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_token_transfer1-transaction","type":"docs"},{"id":498,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_token_transfers/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_token_transfers1-transaction","type":"docs"},{"id":499,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_ownership/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_ownership1-transaction","type":"docs"},{"id":500,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_ownerships/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_ownerships1-transaction","type":"docs"},{"id":501,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_recipient/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_recipient1-transaction","type":"docs"},{"id":502,"pageTitle":"Smart Contracts - Library","sectionTitle":"add_recipients/1 [Transaction]","sectionRoute":"/build/smart-contracts/language/library#add_recipients1-transaction","type":"docs"},{"id":503,"pageTitle":"Smart Contracts - Library","sectionTitle":"Evm","sectionRoute":"/build/smart-contracts/language/library#evm","type":"docs"},{"id":504,"pageTitle":"Smart Contracts - Library","sectionTitle":"abi_encode/2","sectionRoute":"/build/smart-contracts/language/library#abi_encode2","type":"docs"},{"id":505,"pageTitle":"Smart Contracts - Library","sectionTitle":"abi_decode/2","sectionRoute":"/build/smart-contracts/language/library#abi_decode2","type":"docs"},{"id":397,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Smart Contracts - Triggers","sectionRoute":"/build/smart-contracts/language/triggers","type":"docs"},{"id":398,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered by a transaction","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-by-a-transaction","type":"docs"},{"id":399,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered by a transaction with a named action","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-by-a-transaction-with-a-named-action","type":"docs"},{"id":400,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered at a specific date and time","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-at-a-specific-date-and-time","type":"docs"},{"id":401,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered at a specific interval","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-at-a-specific-interval","type":"docs"},{"id":402,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Contract triggered on every Oracle transaction","sectionRoute":"/build/smart-contracts/language/triggers#contract-triggered-on-every-oracle-transaction","type":"docs"},{"id":403,"pageTitle":"Smart Contracts - Triggers","sectionTitle":"Multiple triggers","sectionRoute":"/build/smart-contracts/language/triggers#multiple-triggers","type":"docs"},{"id":411,"pageTitle":"Smart Contracts Playground","sectionTitle":"Smart Contracts Playground","sectionRoute":"/build/smart-contracts/playground/","type":"docs"},{"id":404,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Smart Contracts Playground - Build","sectionRoute":"/build/smart-contracts/playground/build","type":"docs"},{"id":405,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"I. Write the contract","sectionRoute":"/build/smart-contracts/playground/build#i-write-the-contract","type":"docs"},{"id":406,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"II. Test the triggers","sectionRoute":"/build/smart-contracts/playground/build#ii-test-the-triggers","type":"docs"},{"id":407,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'interval'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-interval","type":"docs"},{"id":408,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'transaction'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-transaction","type":"docs"},{"id":409,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'datetime'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-datetime","type":"docs"},{"id":410,"pageTitle":"Smart Contracts Playground - Build","sectionTitle":"Test trigger 'oracle'","sectionRoute":"/build/smart-contracts/playground/build#test-trigger-oracle","type":"docs"},{"id":412,"pageTitle":"Smart Contracts Playground - Deploy","sectionTitle":"Smart Contracts Playground - Deploy","sectionRoute":"/build/smart-contracts/playground/deploy","type":"docs"},{"id":506,"pageTitle":"Smart Contracts Playground - Functions","sectionTitle":"Smart Contracts Playground - Functions","sectionRoute":"/build/smart-contracts/playground/functions","type":"docs"},{"id":524,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Smart Contracts Playground - Mock form","sectionRoute":"/build/smart-contracts/playground/mock-form","type":"docs"},{"id":525,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Example: Time.now/0","sectionRoute":"/build/smart-contracts/playground/mock-form#example-timenow0","type":"docs"},{"id":526,"pageTitle":"Smart Contracts Playground - Mock form","sectionTitle":"Example: Chain.get_genesis_address/1","sectionRoute":"/build/smart-contracts/playground/mock-form#example-chainget_genesis_address1","type":"docs"},{"id":513,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"Smart Contracts Playground - Transaction form","sectionRoute":"/build/smart-contracts/playground/transaction-form","type":"docs"},{"id":514,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"type","sectionRoute":"/build/smart-contracts/playground/transaction-form#type","type":"docs"},{"id":515,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"code","sectionRoute":"/build/smart-contracts/playground/transaction-form#code","type":"docs"},{"id":516,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"content","sectionRoute":"/build/smart-contracts/playground/transaction-form#content","type":"docs"},{"id":517,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"validation timestamp (not used in deployment)","sectionRoute":"/build/smart-contracts/playground/transaction-form#validation-timestamp-not-used-in-deployment","type":"docs"},{"id":518,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"address (not used in deployment)","sectionRoute":"/build/smart-contracts/playground/transaction-form#address-not-used-in-deployment","type":"docs"},{"id":519,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"uco transfers","sectionRoute":"/build/smart-contracts/playground/transaction-form#uco-transfers","type":"docs"},{"id":520,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"token transfers","sectionRoute":"/build/smart-contracts/playground/transaction-form#token-transfers","type":"docs"},{"id":521,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"recipients","sectionRoute":"/build/smart-contracts/playground/transaction-form#recipients","type":"docs"},{"id":522,"pageTitle":"Smart Contracts Playground - Transaction form","sectionTitle":"ownerships","sectionRoute":"/build/smart-contracts/playground/transaction-form#ownerships","type":"docs"},{"id":507,"pageTitle":"Testnet","sectionTitle":"Testnet","sectionRoute":"/build/testnet","type":"docs"},{"id":508,"pageTitle":"Testnet","sectionTitle":"Local","sectionRoute":"/build/testnet#local","type":"docs"},{"id":509,"pageTitle":"Testnet","sectionTitle":"Installation","sectionRoute":"/build/testnet#installation","type":"docs"},{"id":510,"pageTitle":"Testnet","sectionTitle":"Get some funds","sectionRoute":"/build/testnet#get-some-funds","type":"docs"},{"id":511,"pageTitle":"Testnet","sectionTitle":"Public","sectionRoute":"/build/testnet#public","type":"docs"},{"id":512,"pageTitle":"Testnet","sectionTitle":"Get some funds","sectionRoute":"/build/testnet#get-some-funds-1","type":"docs"},{"id":523,"pageTitle":"","sectionTitle":"🗃️ GraphQL","sectionRoute":"/category/api","type":"docs"},{"id":527,"pageTitle":"","sectionTitle":"🗃️ Clients","sectionRoute":"/category/build","type":"docs"},{"id":528,"pageTitle":"","sectionTitle":"🗃️ API","sectionRoute":"/category/build","type":"docs"},{"id":529,"pageTitle":"","sectionTitle":"🗃️ Core development","sectionRoute":"/category/build","type":"docs"},{"id":530,"pageTitle":"","sectionTitle":"🗃️ SDK","sectionRoute":"/category/build","type":"docs"},{"id":531,"pageTitle":"","sectionTitle":"🗃️ Smart Contracts","sectionRoute":"/category/build","type":"docs"},{"id":532,"pageTitle":"","sectionTitle":"📄️ Testnet","sectionRoute":"/category/build","type":"docs"},{"id":533,"pageTitle":"","sectionTitle":"🗃️ Ledger wallet","sectionRoute":"/category/clients","type":"docs"},{"id":534,"pageTitle":"","sectionTitle":"📄️ Archethic's wallet access","sectionRoute":"/category/clients","type":"docs"},{"id":535,"pageTitle":"","sectionTitle":"📄️ Archethic's wallet specification","sectionRoute":"/category/clients","type":"docs"},{"id":540,"pageTitle":"","sectionTitle":"📄️ AEWeb","sectionRoute":"/category/faq","type":"docs"},{"id":541,"pageTitle":"","sectionTitle":"📄️ Archethic Bridge 2-ways","sectionRoute":"/category/faq","type":"docs"},{"id":542,"pageTitle":"","sectionTitle":"📄️ Archethic Bridge $UCO one-way","sectionRoute":"/category/faq","type":"docs"},{"id":543,"pageTitle":"","sectionTitle":"📄️ Wallet","sectionRoute":"/category/faq","type":"docs"},{"id":544,"pageTitle":"","sectionTitle":"📄️ Schema Documentation","sectionRoute":"/category/graphql","type":"docs"},{"id":545,"pageTitle":"","sectionTitle":"🗃️ Directives","sectionRoute":"/category/graphql","type":"docs"},{"id":546,"pageTitle":"","sectionTitle":"🗃️ Enums","sectionRoute":"/category/graphql","type":"docs"},{"id":547,"pageTitle":"","sectionTitle":"🗃️ Objects","sectionRoute":"/category/graphql","type":"docs"},{"id":548,"pageTitle":"","sectionTitle":"🗃️ Queries","sectionRoute":"/category/graphql","type":"docs"},{"id":549,"pageTitle":"","sectionTitle":"🗃️ Scalars","sectionRoute":"/category/graphql","type":"docs"},{"id":550,"pageTitle":"","sectionTitle":"🗃️ Subscriptions","sectionRoute":"/category/graphql","type":"docs"},{"id":536,"pageTitle":"","sectionTitle":"🗃️ Archethic Web (AEWeb)","sectionRoute":"/category/participate","type":"docs"},{"id":537,"pageTitle":"","sectionTitle":"🗃️ Archethic's bridge","sectionRoute":"/category/participate","type":"docs"},{"id":538,"pageTitle":"","sectionTitle":"📄️ Archethic's CLI","sectionRoute":"/category/participate","type":"docs"},{"id":539,"pageTitle":"","sectionTitle":"🗃️ Archethic Wallet","sectionRoute":"/category/participate","type":"docs"},{"id":556,"pageTitle":"","sectionTitle":"📄️ CLI","sectionRoute":"/category/usage","type":"docs"},{"id":557,"pageTitle":"","sectionTitle":"📄️ AEWeb Front End","sectionRoute":"/category/usage","type":"docs"},{"id":551,"pageTitle":"","sectionTitle":"📄️ Bridge Front End","sectionRoute":"/category/usage-1","type":"docs"},{"id":552,"pageTitle":"Contributing","sectionTitle":"Contributing","sectionRoute":"/contributing","type":"docs"},{"id":553,"pageTitle":"Contributing","sectionTitle":"How to contribute","sectionRoute":"/contributing#how-to-contribute","type":"docs"},{"id":554,"pageTitle":"Contributing","sectionTitle":"Guidelines","sectionRoute":"/contributing#guidelines","type":"docs"},{"id":555,"pageTitle":"Contributing","sectionTitle":"Diagrams","sectionRoute":"/contributing#diagrams","type":"docs"},{"id":580,"pageTitle":"AEWeb","sectionTitle":"AEWeb","sectionRoute":"/FAQ/aeweb","type":"docs"},{"id":581,"pageTitle":"AEWeb","sectionTitle":"General","sectionRoute":"/FAQ/aeweb#general","type":"docs"},{"id":582,"pageTitle":"AEWeb","sectionTitle":" How do I redirect my domain names to my websites deployed on the Archethic Blockchain?","sectionRoute":"/FAQ/aeweb#-how-do-i-redirect-my-domain-names-to-my-websites-deployed-on-the-archethic-blockchain","type":"docs"},{"id":583,"pageTitle":"AEWeb","sectionTitle":"What is the purpose of a .gitignore file?","sectionRoute":"/FAQ/aeweb#what-is-the-purpose-of-a-gitignore-file","type":"docs"},{"id":584,"pageTitle":"AEWeb","sectionTitle":"When using the Archethic wallet's \"link to a file hosted on AEWeb\" option to create an NFT with an image, does it require sending funds to the newly created address using AEWeb CLI?","sectionRoute":"/FAQ/aeweb#when-using-the-archethic-wallets-link-to-a-file-hosted-on-aeweb-option-to-create-an-nft-with-an-image-does-it-require-sending-funds-to-the-newly-created-address-using-aeweb-cli","type":"docs"},{"id":558,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Archethic Bridge $UCO one-way","sectionRoute":"/FAQ/bridge","type":"docs"},{"id":559,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"General","sectionRoute":"/FAQ/bridge#general","type":"docs"},{"id":560,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What is Archethic Bridge $UCO one-way?","sectionRoute":"/FAQ/bridge#what-is-archethic-bridge-uco-one-way","type":"docs"},{"id":561,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"how to access the Archethic Bridge $UCO one-way?","sectionRoute":"/FAQ/bridge#how-to-access-the-archethic-bridge-uco-one-way","type":"docs"},{"id":562,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How long is the predetermined time?","sectionRoute":"/FAQ/bridge#how-long-is-the-predetermined-time","type":"docs"},{"id":563,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Which blockchain is better to bridge my UCOs?","sectionRoute":"/FAQ/bridge#which-blockchain-is-better-to-bridge-my-ucos","type":"docs"},{"id":564,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Can you explain the process of moving assets across the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#can-you-explain-the-process-of-moving-assets-across-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":565,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What types of assets can be moved across the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#what-types-of-assets-can-be-moved-across-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":566,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What are the fees associated with using the crypto bridge on the Archethic blockchain?","sectionRoute":"/FAQ/bridge#what-are-the-fees-associated-with-using-the-crypto-bridge-on-the-archethic-blockchain","type":"docs"},{"id":567,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"I want to get the Archethic address from the Wallet app, how can I know it is the Testnet or the Mainnet address?","sectionRoute":"/FAQ/bridge#i-want-to-get-the-archethic-address-from-the-wallet-app-how-can-i-know-it-is-the-testnet-or-the-mainnet-address","type":"docs"},{"id":568,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Metamask","sectionRoute":"/FAQ/bridge#metamask","type":"docs"},{"id":569,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Will the Archethic Network be available on Metamask?","sectionRoute":"/FAQ/bridge#will-the-archethic-network-be-available-on-metamask","type":"docs"},{"id":570,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How can I add a network on Metamask?","sectionRoute":"/FAQ/bridge#how-can-i-add-a-network-on-metamask","type":"docs"},{"id":571,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How to install Metamask?","sectionRoute":"/FAQ/bridge#how-to-install-metamask","type":"docs"},{"id":572,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Issues management","sectionRoute":"/FAQ/bridge#issues-management","type":"docs"},{"id":573,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What happens if a problem occurs, or I refuse a transaction during the transfer?","sectionRoute":"/FAQ/bridge#what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer","type":"docs"},{"id":574,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"If I sent the tokens to a wrong Mainnet address, what to do?","sectionRoute":"/FAQ/bridge#if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do","type":"docs"},{"id":575,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"What if I want to reset the process?","sectionRoute":"/FAQ/bridge#what-if-i-want-to-reset-the-process","type":"docs"},{"id":576,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Can I help the developers analyze the problems?","sectionRoute":"/FAQ/bridge#can-i-help-the-developers-analyze-the-problems","type":"docs"},{"id":577,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"Dev","sectionRoute":"/FAQ/bridge#dev","type":"docs"},{"id":578,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"How can developers use Archethic bridge to create new decentralized applications?","sectionRoute":"/FAQ/bridge#how-can-developers-use-archethic-bridge-to-create-new-decentralized-applications","type":"docs"},{"id":579,"pageTitle":"Archethic Bridge $UCO one-way","sectionTitle":"I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?","sectionRoute":"/FAQ/bridge#im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet","type":"docs"},{"id":591,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Archethic Bridge 2-ways","sectionRoute":"/FAQ/bridge-2-ways","type":"docs"},{"id":592,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"General","sectionRoute":"/FAQ/bridge-2-ways#general","type":"docs"},{"id":593,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is Archethic Bridge two-ways?","sectionRoute":"/FAQ/bridge-2-ways#what-is-archethic-bridge-two-ways","type":"docs"},{"id":594,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How to access the Archethic Bridge ?","sectionRoute":"/FAQ/bridge-2-ways#how-to-access-the-archethic-bridge-","type":"docs"},{"id":595,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Which blockchain is better to bridge my UCOs?","sectionRoute":"/FAQ/bridge-2-ways#which-blockchain-is-better-to-bridge-my-ucos","type":"docs"},{"id":596,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What blockchains does the Archethic Bridge support?","sectionRoute":"/FAQ/bridge-2-ways#what-blockchains-does-the-archethic-bridge-support","type":"docs"},{"id":597,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Is the Archethic Bridge available on mobile devices?","sectionRoute":"/FAQ/bridge-2-ways#is-the-archethic-bridge-available-on-mobile-devices","type":"docs"},{"id":598,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is an EVM wallet?","sectionRoute":"/FAQ/bridge-2-ways#what-is-an-evm-wallet","type":"docs"},{"id":599,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How is the price of $UCO estimated?","sectionRoute":"/FAQ/bridge-2-ways#how-is-the-price-of-uco-estimated","type":"docs"},{"id":600,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How long is the predetermined time?","sectionRoute":"/FAQ/bridge-2-ways#how-long-is-the-predetermined-time","type":"docs"},{"id":601,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Key Concepts","sectionRoute":"/FAQ/bridge-2-ways#key-concepts","type":"docs"},{"id":602,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is an HTLC (Hash Time Lock Contract) in the context of Archethic's bridge?","sectionRoute":"/FAQ/bridge-2-ways#what-is-an-htlc-hash-time-lock-contract-in-the-context-of-archethics-bridge","type":"docs"},{"id":603,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How does Archethic's cross-chain verification work?","sectionRoute":"/FAQ/bridge-2-ways#how-does-archethics-cross-chain-verification-work","type":"docs"},{"id":604,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is the Safety Module in Archethic's bridge?","sectionRoute":"/FAQ/bridge-2-ways#what-is-the-safety-module-in-archethics-bridge","type":"docs"},{"id":605,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Specifics of Bridging","sectionRoute":"/FAQ/bridge-2-ways#specifics-of-bridging","type":"docs"},{"id":606,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How does the process of bridging from EVM to Archethic work?","sectionRoute":"/FAQ/bridge-2-ways#how-does-the-process-of-bridging-from-evm-to-archethic-work","type":"docs"},{"id":607,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What is the process for bridging from Archethic to EVM?","sectionRoute":"/FAQ/bridge-2-ways#what-is-the-process-for-bridging-from-archethic-to-evm","type":"docs"},{"id":608,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Wallet","sectionRoute":"/FAQ/bridge-2-ways#wallet","type":"docs"},{"id":609,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"I’m using the Mainnet network in the Wallet, how can I switch on the Testnet?","sectionRoute":"/FAQ/bridge-2-ways#im-using-the-mainnet-network-in-the-wallet-how-can-i-switch-on-the-testnet","type":"docs"},{"id":610,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Why can't I connect to the Archethic wallet with my Brave browser?","sectionRoute":"/FAQ/bridge-2-ways#why-cant-i-connect-to-the-archethic-wallet-with-my-brave-browser","type":"docs"},{"id":611,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Testnet","sectionRoute":"/FAQ/bridge-2-ways#testnet","type":"docs"},{"id":612,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How do I set up Ethereum Sepolia, Binance Testnet and Polygon Mumbai in my EVM Wallet?","sectionRoute":"/FAQ/bridge-2-ways#how-do-i-set-up-ethereum-sepolia-binance-testnet-and-polygon-mumbai-in-my-evm-wallet","type":"docs"},{"id":613,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"How can I buy $UCO after receiving $ETH, $MATIC, or $BNB?","sectionRoute":"/FAQ/bridge-2-ways#how-can-i-buy-uco-after-receiving-eth-matic-or-bnb","type":"docs"},{"id":614,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Issues management","sectionRoute":"/FAQ/bridge-2-ways#issues-management","type":"docs"},{"id":615,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"What happens if a problem occurs, or I refuse a transaction during the transfer?","sectionRoute":"/FAQ/bridge-2-ways#what-happens-if-a-problem-occurs-or-i-refuse-a-transaction-during-the-transfer","type":"docs"},{"id":616,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"If I sent the tokens to a wrong Mainnet address, what to do?","sectionRoute":"/FAQ/bridge-2-ways#if-i-sent-the-tokens-to-a-wrong-mainnet-address-what-to-do","type":"docs"},{"id":617,"pageTitle":"Archethic Bridge 2-ways","sectionTitle":"Can I help the developers analyze the problems?","sectionRoute":"/FAQ/bridge-2-ways#can-i-help-the-developers-analyze-the-problems","type":"docs"},{"id":585,"pageTitle":"Wallet","sectionTitle":"Wallet","sectionRoute":"/FAQ/wallet","type":"docs"},{"id":586,"pageTitle":"Wallet","sectionTitle":"General","sectionRoute":"/FAQ/wallet#general","type":"docs"},{"id":587,"pageTitle":"Wallet","sectionTitle":" How to retrieve the address of my Archethic wallet?","sectionRoute":"/FAQ/wallet#-how-to-retrieve-the-address-of-my-archethic-wallet","type":"docs"},{"id":588,"pageTitle":"Wallet","sectionTitle":" How to create a wallet on the Archethic blockchain?","sectionRoute":"/FAQ/wallet#-how-to-create-a-wallet-on-the-archethic-blockchain","type":"docs"},{"id":589,"pageTitle":"Wallet","sectionTitle":" How to create a fungible token on the Archethic Wallet?","sectionRoute":"/FAQ/wallet#-how-to-create-a-fungible-token-on-the-archethic-wallet","type":"docs"},{"id":590,"pageTitle":"Wallet","sectionTitle":" How to create a NFT on the Archethic Wallet?","sectionRoute":"/FAQ/wallet#-how-to-create-a-nft-on-the-archethic-wallet","type":"docs"},{"id":618,"pageTitle":"Archethic introduction","sectionTitle":"Archethic introduction","sectionRoute":"/learn/","type":"docs"},{"id":619,"pageTitle":"Archethic introduction","sectionTitle":"Motivations","sectionRoute":"/learn/#motivations","type":"docs"},{"id":620,"pageTitle":"Archethic introduction","sectionTitle":"Innovations","sectionRoute":"/learn/#innovations","type":"docs"},{"id":622,"pageTitle":"ARCH consensus","sectionTitle":"ARCH consensus","sectionRoute":"/learn/arch-consensus/","type":"docs"},{"id":623,"pageTitle":"ARCH consensus","sectionTitle":"Atomic Commitment","sectionRoute":"/learn/arch-consensus/#atomic-commitment","type":"docs"},{"id":624,"pageTitle":"ARCH consensus","sectionTitle":"Rotating Election","sectionRoute":"/learn/arch-consensus/#rotating-election","type":"docs"},{"id":625,"pageTitle":"ARCH consensus","sectionTitle":"Workflow","sectionRoute":"/learn/arch-consensus/#workflow","type":"docs"},{"id":621,"pageTitle":"Proof of Work","sectionTitle":"Proof of Work","sectionRoute":"/learn/arch-consensus/proof-of-work","type":"docs"},{"id":626,"pageTitle":"Cryptography","sectionTitle":"Cryptography","sectionRoute":"/learn/cryptography/","type":"docs"},{"id":627,"pageTitle":"Cryptography","sectionTitle":"Quantum-Safe","sectionRoute":"/learn/cryptography/#quantum-safe","type":"docs"},{"id":628,"pageTitle":"Cryptography","sectionTitle":"Non-Discolure of public keys","sectionRoute":"/learn/cryptography/#non-discolure-of-public-keys","type":"docs"},{"id":629,"pageTitle":"Cryptography","sectionTitle":"Origin Devices","sectionRoute":"/learn/cryptography/#origin-devices","type":"docs"},{"id":630,"pageTitle":"Cryptography","sectionTitle":"Adaptative","sectionRoute":"/learn/cryptography/#adaptative","type":"docs"},{"id":631,"pageTitle":"Cryptography","sectionTitle":"Public keys","sectionRoute":"/learn/cryptography/#public-keys","type":"docs"},{"id":632,"pageTitle":"Cryptography","sectionTitle":"Hashes","sectionRoute":"/learn/cryptography/#hashes","type":"docs"},{"id":633,"pageTitle":"Cryptography","sectionTitle":"Transaction addresses","sectionRoute":"/learn/cryptography/#transaction-addresses","type":"docs"},{"id":634,"pageTitle":"Cryptography","sectionTitle":"Default algorithms","sectionRoute":"/learn/cryptography/#default-algorithms","type":"docs"},{"id":635,"pageTitle":"Hardware Root of Trust","sectionTitle":"Hardware Root of Trust","sectionRoute":"/learn/cryptography/hardware-root-of-trust","type":"docs"},{"id":636,"pageTitle":"Hardware Root of Trust","sectionTitle":"What is hardware root of trust?","sectionRoute":"/learn/cryptography/hardware-root-of-trust#what-is-hardware-root-of-trust","type":"docs"},{"id":637,"pageTitle":"Hardware Root of Trust","sectionTitle":"Why hardware root of trust for Archethic?","sectionRoute":"/learn/cryptography/hardware-root-of-trust#why-hardware-root-of-trust-for-archethic","type":"docs"},{"id":638,"pageTitle":"Hardware Root of Trust","sectionTitle":"Implementation of Hardware Root of Trust (HRT)","sectionRoute":"/learn/cryptography/hardware-root-of-trust#implementation-of-hardware-root-of-trust-hrt","type":"docs"},{"id":639,"pageTitle":"Hardware Root of Trust","sectionTitle":"Placement of HRT in Archethic Blockchain/Ecosystem","sectionRoute":"/learn/cryptography/hardware-root-of-trust#placement-of-hrt-in-archethic-blockchainecosystem","type":"docs"},{"id":694,"pageTitle":"Decentralized Identity","sectionTitle":"Decentralized Identity","sectionRoute":"/learn/decentralized-id/","type":"docs"},{"id":695,"pageTitle":"Decentralized Identity","sectionTitle":"Identity","sectionRoute":"/learn/decentralized-id/#identity","type":"docs"},{"id":696,"pageTitle":"Decentralized Identity","sectionTitle":"Password-less","sectionRoute":"/learn/decentralized-id/#password-less","type":"docs"},{"id":646,"pageTitle":"Keychain","sectionTitle":"Keychain","sectionRoute":"/learn/decentralized-id/keychain","type":"docs"},{"id":647,"pageTitle":"Keychain","sectionTitle":"Key generation","sectionRoute":"/learn/decentralized-id/keychain#key-generation","type":"docs"},{"id":648,"pageTitle":"Keychain","sectionTitle":"End to end encryption","sectionRoute":"/learn/decentralized-id/keychain#end-to-end-encryption","type":"docs"},{"id":649,"pageTitle":"Keychain","sectionTitle":"Standard compliance","sectionRoute":"/learn/decentralized-id/keychain#standard-compliance","type":"docs"},{"id":650,"pageTitle":"Keychain","sectionTitle":"Customization","sectionRoute":"/learn/decentralized-id/keychain#customization","type":"docs"},{"id":640,"pageTitle":"Ecosystem","sectionTitle":"Ecosystem","sectionRoute":"/learn/ecosystem","type":"docs"},{"id":641,"pageTitle":"Ecosystem","sectionTitle":"Limitless network","sectionRoute":"/learn/ecosystem#limitless-network","type":"docs"},{"id":642,"pageTitle":"Ecosystem","sectionTitle":"Unlimited applications","sectionRoute":"/learn/ecosystem#unlimited-applications","type":"docs"},{"id":643,"pageTitle":"Ecosystem","sectionTitle":"Decentralized Identity","sectionRoute":"/learn/ecosystem#decentralized-identity","type":"docs"},{"id":644,"pageTitle":"Ecosystem","sectionTitle":"Governance","sectionRoute":"/learn/ecosystem#governance","type":"docs"},{"id":645,"pageTitle":"Ecosystem","sectionTitle":"Open enhancements","sectionRoute":"/learn/ecosystem#open-enhancements","type":"docs"},{"id":651,"pageTitle":"Transaction fees","sectionTitle":"Transaction fees","sectionRoute":"/learn/fee","type":"docs"},{"id":652,"pageTitle":"Transaction fees","sectionTitle":"Calculation","sectionRoute":"/learn/fee#calculation","type":"docs"},{"id":653,"pageTitle":"Transaction fees","sectionTitle":"Transaction's type particularities","sectionRoute":"/learn/fee#transactions-type-particularities","type":"docs"},{"id":654,"pageTitle":"Transaction fees","sectionTitle":"Network","sectionRoute":"/learn/fee#network","type":"docs"},{"id":655,"pageTitle":"Transaction fees","sectionTitle":"Keychain","sectionRoute":"/learn/fee#keychain","type":"docs"},{"id":656,"pageTitle":"Transaction fees","sectionTitle":"Token","sectionRoute":"/learn/fee#token","type":"docs"},{"id":657,"pageTitle":"Governance","sectionTitle":"Governance","sectionRoute":"/learn/governance/","type":"docs"},{"id":658,"pageTitle":"Governance","sectionTitle":"Decentralized Identity & Proof of Identity","sectionRoute":"/learn/governance/#decentralized-identity--proof-of-identity","type":"docs"},{"id":659,"pageTitle":"Governance","sectionTitle":"Code «On-Chain»","sectionRoute":"/learn/governance/#code-on-chain","type":"docs"},{"id":660,"pageTitle":"Governance","sectionTitle":"Introduction","sectionRoute":"/learn/governance/#introduction","type":"docs"},{"id":661,"pageTitle":"Governance","sectionTitle":"Details","sectionRoute":"/learn/governance/#details","type":"docs"},{"id":662,"pageTitle":"Governance","sectionTitle":"Incentives","sectionRoute":"/learn/governance/#incentives","type":"docs"},{"id":663,"pageTitle":"OracleChain","sectionTitle":"OracleChain","sectionRoute":"/learn/oracle-chain","type":"docs"},{"id":664,"pageTitle":"OracleChain","sectionTitle":"How is it work ?","sectionRoute":"/learn/oracle-chain#how-is-it-work-","type":"docs"},{"id":665,"pageTitle":"OracleChain","sectionTitle":"Services","sectionRoute":"/learn/oracle-chain#services","type":"docs"},{"id":666,"pageTitle":"P2P","sectionTitle":"P2P","sectionRoute":"/learn/p2p/","type":"docs"},{"id":667,"pageTitle":"P2P","sectionTitle":"Existing solutions","sectionRoute":"/learn/p2p/#existing-solutions","type":"docs"},{"id":668,"pageTitle":"P2P","sectionTitle":"Gossip","sectionRoute":"/learn/p2p/#gossip","type":"docs"},{"id":669,"pageTitle":"P2P","sectionTitle":"Broadcast","sectionRoute":"/learn/p2p/#broadcast","type":"docs"},{"id":670,"pageTitle":"P2P","sectionTitle":"Archethic's way","sectionRoute":"/learn/p2p/#archethics-way","type":"docs"},{"id":671,"pageTitle":"P2P","sectionTitle":"Transaction Validation Process","sectionRoute":"/learn/p2p/#transaction-validation-process","type":"docs"},{"id":672,"pageTitle":"P2P","sectionTitle":"Network transaction chains","sectionRoute":"/learn/p2p/#network-transaction-chains","type":"docs"},{"id":673,"pageTitle":"P2P","sectionTitle":"Beacons Chains","sectionRoute":"/learn/p2p/#beacons-chains","type":"docs"},{"id":674,"pageTitle":"P2P","sectionTitle":"Data propagation","sectionRoute":"/learn/p2p/#data-propagation","type":"docs"},{"id":704,"pageTitle":"Bootstrapping","sectionTitle":"Bootstrapping","sectionRoute":"/learn/p2p/bootstrapping","type":"docs"},{"id":705,"pageTitle":"Bootstrapping","sectionTitle":"Joining","sectionRoute":"/learn/p2p/bootstrapping#joining","type":"docs"},{"id":706,"pageTitle":"Bootstrapping","sectionTitle":"Updates","sectionRoute":"/learn/p2p/bootstrapping#updates","type":"docs"},{"id":707,"pageTitle":"Bootstrapping","sectionTitle":"Synchronization","sectionRoute":"/learn/p2p/bootstrapping#synchronization","type":"docs"},{"id":675,"pageTitle":"Self Repair","sectionTitle":"Self Repair","sectionRoute":"/learn/p2p/self-repair","type":"docs"},{"id":676,"pageTitle":"Self Repair","sectionTitle":"Identification","sectionRoute":"/learn/p2p/self-repair#identification","type":"docs"},{"id":677,"pageTitle":"Self Repair","sectionTitle":"Synchronization","sectionRoute":"/learn/p2p/self-repair#synchronization","type":"docs"},{"id":678,"pageTitle":"Patents","sectionTitle":"Patents","sectionRoute":"/learn/patents","type":"docs"},{"id":679,"pageTitle":"Patents","sectionTitle":"12 patents to build a new ecosystem","sectionRoute":"/learn/patents#12-patents-to-build-a-new-ecosystem","type":"docs"},{"id":680,"pageTitle":"Patents","sectionTitle":"Archethic, a Humanitarian and Community Project","sectionRoute":"/learn/patents#archethic-a-humanitarian-and-community-project","type":"docs"},{"id":681,"pageTitle":"Patents","sectionTitle":"List of patents","sectionRoute":"/learn/patents#list-of-patents","type":"docs"},{"id":682,"pageTitle":"Patents","sectionTitle":"Blockchain","sectionRoute":"/learn/patents#blockchain","type":"docs"},{"id":683,"pageTitle":"Patents","sectionTitle":"Biometrics","sectionRoute":"/learn/patents#biometrics","type":"docs"},{"id":684,"pageTitle":"Patents","sectionTitle":"Hardware","sectionRoute":"/learn/patents#hardware","type":"docs"},{"id":685,"pageTitle":"Sharding","sectionTitle":"Sharding","sectionRoute":"/learn/sharding/","type":"docs"},{"id":686,"pageTitle":"Sharding","sectionTitle":"Validation","sectionRoute":"/learn/sharding/#validation","type":"docs"},{"id":687,"pageTitle":"Sharding","sectionTitle":"Storage","sectionRoute":"/learn/sharding/#storage","type":"docs"},{"id":688,"pageTitle":"Sharding","sectionTitle":"Rotating Election","sectionRoute":"/learn/sharding/#rotating-election","type":"docs"},{"id":689,"pageTitle":"Beacon Chain","sectionTitle":"Beacon Chain","sectionRoute":"/learn/sharding/beacon-chain/","type":"docs"},{"id":690,"pageTitle":"Beacon Chain","sectionTitle":"Concepts","sectionRoute":"/learn/sharding/beacon-chain/#concepts","type":"docs"},{"id":691,"pageTitle":"Beacon Chain","sectionTitle":"Transaction tracking and timestamping","sectionRoute":"/learn/sharding/beacon-chain/#transaction-tracking-and-timestamping","type":"docs"},{"id":692,"pageTitle":"Beacon Chain","sectionTitle":"Status and Network Coordinates of nodes","sectionRoute":"/learn/sharding/beacon-chain/#status-and-network-coordinates-of-nodes","type":"docs"},{"id":693,"pageTitle":"Beacon Chain","sectionTitle":"Slot","sectionRoute":"/learn/sharding/beacon-chain/#slot","type":"docs"},{"id":697,"pageTitle":"Beacon Explorer","sectionTitle":"Beacon Explorer","sectionRoute":"/learn/sharding/beacon-chain/explorer","type":"docs"},{"id":698,"pageTitle":"Beacon Explorer","sectionTitle":"Concepts","sectionRoute":"/learn/sharding/beacon-chain/explorer#concepts","type":"docs"},{"id":699,"pageTitle":"Beacon Explorer","sectionTitle":"Slot","sectionRoute":"/learn/sharding/beacon-chain/explorer#slot","type":"docs"},{"id":700,"pageTitle":"Beacon Explorer","sectionTitle":"Epoch","sectionRoute":"/learn/sharding/beacon-chain/explorer#epoch","type":"docs"},{"id":701,"pageTitle":"Beacon Explorer","sectionTitle":"Subset","sectionRoute":"/learn/sharding/beacon-chain/explorer#subset","type":"docs"},{"id":702,"pageTitle":"Beacon Explorer","sectionTitle":"Process to get transaction notifications","sectionRoute":"/learn/sharding/beacon-chain/explorer#process-to-get-transaction-notifications","type":"docs"},{"id":703,"pageTitle":"Beacon Explorer","sectionTitle":"How to get transactions in realtime","sectionRoute":"/learn/sharding/beacon-chain/explorer#how-to-get-transactions-in-realtime","type":"docs"},{"id":708,"pageTitle":"Replication attestation","sectionTitle":"Replication attestation","sectionRoute":"/learn/sharding/replication-attestation","type":"docs"},{"id":709,"pageTitle":"Replication attestation","sectionTitle":"Heuristic solution","sectionRoute":"/learn/sharding/replication-attestation#heuristic-solution","type":"docs"},{"id":710,"pageTitle":"Replication attestation","sectionTitle":"Nested replications","sectionRoute":"/learn/sharding/replication-attestation#nested-replications","type":"docs"},{"id":711,"pageTitle":"Replication attestation","sectionTitle":"Client notifications","sectionRoute":"/learn/sharding/replication-attestation#client-notifications","type":"docs"},{"id":712,"pageTitle":"Replication attestation","sectionTitle":"Further improvements","sectionRoute":"/learn/sharding/replication-attestation#further-improvements","type":"docs"},{"id":728,"pageTitle":"Tokens","sectionTitle":"Tokens","sectionRoute":"/learn/token","type":"docs"},{"id":729,"pageTitle":"Tokens","sectionTitle":"Native","sectionRoute":"/learn/token#native","type":"docs"},{"id":730,"pageTitle":"Tokens","sectionTitle":"Standardized","sectionRoute":"/learn/token#standardized","type":"docs"},{"id":731,"pageTitle":"Tokens","sectionTitle":"Creation","sectionRoute":"/learn/token#creation","type":"docs"},{"id":732,"pageTitle":"Tokens","sectionTitle":"Fungible","sectionRoute":"/learn/token#fungible","type":"docs"},{"id":733,"pageTitle":"Tokens","sectionTitle":"Non-fungible","sectionRoute":"/learn/token#non-fungible","type":"docs"},{"id":734,"pageTitle":"Tokens","sectionTitle":"Resupply fungible tokens (AEIP-18)","sectionRoute":"/learn/token#resupply-fungible-tokens-aeip-18","type":"docs"},{"id":735,"pageTitle":"Tokens","sectionTitle":"Recipients (AEIP-19)","sectionRoute":"/learn/token#recipients-aeip-19","type":"docs"},{"id":736,"pageTitle":"Tokens","sectionTitle":"Transfer","sectionRoute":"/learn/token#transfer","type":"docs"},{"id":715,"pageTitle":"Transaction chains","sectionTitle":"Transaction chains","sectionRoute":"/learn/transaction-chain","type":"docs"},{"id":716,"pageTitle":"Transaction chains","sectionTitle":"Principles","sectionRoute":"/learn/transaction-chain#principles","type":"docs"},{"id":717,"pageTitle":"Transaction chains","sectionTitle":"Transaction structure","sectionRoute":"/learn/transaction-chain#transaction-structure","type":"docs"},{"id":718,"pageTitle":"Transaction chains","sectionTitle":"Pending transaction","sectionRoute":"/learn/transaction-chain#pending-transaction","type":"docs"},{"id":719,"pageTitle":"Transaction chains","sectionTitle":"Validated transaction","sectionRoute":"/learn/transaction-chain#validated-transaction","type":"docs"},{"id":816,"pageTitle":"Transaction types","sectionTitle":"Transaction types","sectionRoute":"/learn/transaction-types","type":"docs"},{"id":817,"pageTitle":"Transaction types","sectionTitle":"node (network)","sectionRoute":"/learn/transaction-types#node-network","type":"docs"},{"id":818,"pageTitle":"Transaction types","sectionTitle":"node_shared_secrets (network)","sectionRoute":"/learn/transaction-types#node_shared_secrets-network","type":"docs"},{"id":819,"pageTitle":"Transaction types","sectionTitle":"node_rewards (network)","sectionRoute":"/learn/transaction-types#node_rewards-network","type":"docs"},{"id":820,"pageTitle":"Transaction types","sectionTitle":"mint_rewards (network)","sectionRoute":"/learn/transaction-types#mint_rewards-network","type":"docs"},{"id":821,"pageTitle":"Transaction types","sectionTitle":"oracle (network)","sectionRoute":"/learn/transaction-types#oracle-network","type":"docs"},{"id":822,"pageTitle":"Transaction types","sectionTitle":"oracle_summary (network)","sectionRoute":"/learn/transaction-types#oracle_summary-network","type":"docs"},{"id":823,"pageTitle":"Transaction types","sectionTitle":"code_proposal (network)","sectionRoute":"/learn/transaction-types#code_proposal-network","type":"docs"},{"id":824,"pageTitle":"Transaction types","sectionTitle":"code_approval (network)","sectionRoute":"/learn/transaction-types#code_approval-network","type":"docs"},{"id":825,"pageTitle":"Transaction types","sectionTitle":"origin (network)","sectionRoute":"/learn/transaction-types#origin-network","type":"docs"},{"id":826,"pageTitle":"Transaction types","sectionTitle":"keychain","sectionRoute":"/learn/transaction-types#keychain","type":"docs"},{"id":827,"pageTitle":"Transaction types","sectionTitle":"keychain_access","sectionRoute":"/learn/transaction-types#keychain_access","type":"docs"},{"id":828,"pageTitle":"Transaction types","sectionTitle":"transfer","sectionRoute":"/learn/transaction-types#transfer","type":"docs"},{"id":829,"pageTitle":"Transaction types","sectionTitle":"token","sectionRoute":"/learn/transaction-types#token","type":"docs"},{"id":830,"pageTitle":"Transaction types","sectionTitle":"hosting","sectionRoute":"/learn/transaction-types#hosting","type":"docs"},{"id":831,"pageTitle":"Transaction types","sectionTitle":"data","sectionRoute":"/learn/transaction-types#data","type":"docs"},{"id":832,"pageTitle":"Transaction types","sectionTitle":"contract","sectionRoute":"/learn/transaction-types#contract","type":"docs"},{"id":713,"pageTitle":"UCO token","sectionTitle":"UCO token","sectionRoute":"/learn/uco","type":"docs"},{"id":714,"pageTitle":"UCO token","sectionTitle":"Fibonacci Golden Token Economics","sectionRoute":"/learn/uco#fibonacci-golden-token-economics","type":"docs"},{"id":720,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Archethic Web (AEWeb)","sectionRoute":"/participate/aeweb/","type":"docs"},{"id":721,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Motivations","sectionRoute":"/participate/aeweb/#motivations","type":"docs"},{"id":722,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Easy","sectionRoute":"/participate/aeweb/#easy","type":"docs"},{"id":723,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Security","sectionRoute":"/participate/aeweb/#security","type":"docs"},{"id":724,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Costly efficient","sectionRoute":"/participate/aeweb/#costly-efficient","type":"docs"},{"id":725,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Target","sectionRoute":"/participate/aeweb/#target","type":"docs"},{"id":726,"pageTitle":"Archethic Web (AEWeb)","sectionTitle":"Roadmap","sectionRoute":"/participate/aeweb/#roadmap","type":"docs"},{"id":727,"pageTitle":"Automate deployments","sectionTitle":"Automate deployments","sectionRoute":"/participate/aeweb/automation","type":"docs"},{"id":737,"pageTitle":"AEWeb - Domain names","sectionTitle":"AEWeb - Domain names","sectionRoute":"/participate/aeweb/dns","type":"docs"},{"id":738,"pageTitle":"AEWeb - Domain names","sectionTitle":"DNSLink","sectionRoute":"/participate/aeweb/dns#dnslink","type":"docs"},{"id":739,"pageTitle":"AEWeb - Domain names","sectionTitle":"Hosting provider integration","sectionRoute":"/participate/aeweb/dns#hosting-provider-integration","type":"docs"},{"id":740,"pageTitle":"AEWeb - Domain names","sectionTitle":"SSL","sectionRoute":"/participate/aeweb/dns#ssl","type":"docs"},{"id":741,"pageTitle":"AEWeb - Domain names","sectionTitle":"1. Get the certificate","sectionRoute":"/participate/aeweb/dns#1-get-the-certificate","type":"docs"},{"id":742,"pageTitle":"AEWeb - Domain names","sectionTitle":"2. Add the certificate on chain","sectionRoute":"/participate/aeweb/dns#2-add-the-certificate-on-chain","type":"docs"},{"id":752,"pageTitle":"AEWeb - How it works","sectionTitle":"AEWeb - How it works","sectionRoute":"/participate/aeweb/how-it-works","type":"docs"},{"id":753,"pageTitle":"AEWeb - How it works","sectionTitle":"Transaction building","sectionRoute":"/participate/aeweb/how-it-works#transaction-building","type":"docs"},{"id":754,"pageTitle":"AEWeb - How it works","sectionTitle":"Content delivery","sectionRoute":"/participate/aeweb/how-it-works#content-delivery","type":"docs"},{"id":755,"pageTitle":"AEWeb - How it works","sectionTitle":"Website updates","sectionRoute":"/participate/aeweb/how-it-works#website-updates","type":"docs"},{"id":756,"pageTitle":"AEWeb - How it works","sectionTitle":"Website unpublication","sectionRoute":"/participate/aeweb/how-it-works#website-unpublication","type":"docs"},{"id":743,"pageTitle":"","sectionTitle":"AEWeb Front end","sectionRoute":"/participate/aeweb/usage/aeweb-front","type":"docs"},{"id":744,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/participate/aeweb/usage/aeweb-front#tutorials","type":"docs"},{"id":745,"pageTitle":"","sectionTitle":"Deploy for the first time my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#deploy-for-the-first-time-my-static-site","type":"docs"},{"id":746,"pageTitle":"","sectionTitle":"Update my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#update-my-static-site","type":"docs"},{"id":747,"pageTitle":"","sectionTitle":"Update the SSL certificate","sectionRoute":"/participate/aeweb/usage/aeweb-front#update-the-ssl-certificate","type":"docs"},{"id":748,"pageTitle":"","sectionTitle":"Unpublish my static site","sectionRoute":"/participate/aeweb/usage/aeweb-front#unpublish-my-static-site","type":"docs"},{"id":749,"pageTitle":"","sectionTitle":"See my static site's informations","sectionRoute":"/participate/aeweb/usage/aeweb-front#see-my-static-sites-informations","type":"docs"},{"id":750,"pageTitle":"","sectionTitle":"Disconnect AEWeb","sectionRoute":"/participate/aeweb/usage/aeweb-front#disconnect-aeweb","type":"docs"},{"id":751,"pageTitle":"","sectionTitle":"Roadmap","sectionRoute":"/participate/aeweb/usage/aeweb-front#roadmap","type":"docs"},{"id":757,"pageTitle":"","sectionTitle":"AEWeb CLI (Command-Line Interface)","sectionRoute":"/participate/aeweb/usage/cli","type":"docs"},{"id":758,"pageTitle":"","sectionTitle":"aeweb generate-address","sectionRoute":"/participate/aeweb/usage/cli#aeweb-generate-address","type":"docs"},{"id":759,"pageTitle":"","sectionTitle":"aeweb deploy","sectionRoute":"/participate/aeweb/usage/cli#aeweb-deploy","type":"docs"},{"id":851,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic's bridge","sectionRoute":"/participate/bridge/","type":"docs"},{"id":852,"pageTitle":"Archethic's bridge","sectionTitle":"Key concepts","sectionRoute":"/participate/bridge/#key-concepts","type":"docs"},{"id":853,"pageTitle":"Archethic's bridge","sectionTitle":"HTLC (Hash Time Lock Contract)","sectionRoute":"/participate/bridge/#htlc-hash-time-lock-contract","type":"docs"},{"id":854,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic's cross-chain verification","sectionRoute":"/participate/bridge/#archethics-cross-chain-verification","type":"docs"},{"id":855,"pageTitle":"Archethic's bridge","sectionTitle":"Safety Module","sectionRoute":"/participate/bridge/#safety-module","type":"docs"},{"id":856,"pageTitle":"Archethic's bridge","sectionTitle":"Usage","sectionRoute":"/participate/bridge/#usage","type":"docs"},{"id":857,"pageTitle":"Archethic's bridge","sectionTitle":"Specifics","sectionRoute":"/participate/bridge/#specifics","type":"docs"},{"id":858,"pageTitle":"Archethic's bridge","sectionTitle":"EVM to Archethic","sectionRoute":"/participate/bridge/#evm-to-archethic","type":"docs"},{"id":859,"pageTitle":"Archethic's bridge","sectionTitle":"Archethic to EVM","sectionRoute":"/participate/bridge/#archethic-to-evm","type":"docs"},{"id":760,"pageTitle":"","sectionTitle":"Bridge Front end - Tutorial","sectionRoute":"/participate/bridge/usage/bridge-front","type":"docs"},{"id":761,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/participate/bridge/usage/bridge-front#prerequisites","type":"docs"},{"id":762,"pageTitle":"","sectionTitle":"Welcome Screen","sectionRoute":"/participate/bridge/usage/bridge-front#welcome-screen","type":"docs"},{"id":763,"pageTitle":"","sectionTitle":"Application Menu","sectionRoute":"/participate/bridge/usage/bridge-front#application-menu","type":"docs"},{"id":764,"pageTitle":"","sectionTitle":"Feature Access","sectionRoute":"/participate/bridge/usage/bridge-front#feature-access","type":"docs"},{"id":765,"pageTitle":"","sectionTitle":"Bridging Your Assets","sectionRoute":"/participate/bridge/usage/bridge-front#bridging-your-assets","type":"docs"},{"id":766,"pageTitle":"","sectionTitle":"Step 1: Initiating Transfer","sectionRoute":"/participate/bridge/usage/bridge-front#step-1-initiating-transfer","type":"docs"},{"id":767,"pageTitle":"","sectionTitle":"Step 2: Confirming Details","sectionRoute":"/participate/bridge/usage/bridge-front#step-2-confirming-details","type":"docs"},{"id":768,"pageTitle":"","sectionTitle":"Step 3: Executing Transfer","sectionRoute":"/participate/bridge/usage/bridge-front#step-3-executing-transfer","type":"docs"},{"id":769,"pageTitle":"","sectionTitle":"Local History and Management","sectionRoute":"/participate/bridge/usage/bridge-front#local-history-and-management","type":"docs"},{"id":770,"pageTitle":"","sectionTitle":"Options Include:","sectionRoute":"/participate/bridge/usage/bridge-front#options-include","type":"docs"},{"id":771,"pageTitle":"","sectionTitle":"Transfer Status Actions:","sectionRoute":"/participate/bridge/usage/bridge-front#transfer-status-actions","type":"docs"},{"id":772,"pageTitle":"","sectionTitle":"Refund Process","sectionRoute":"/participate/bridge/usage/bridge-front#refund-process","type":"docs"},{"id":833,"pageTitle":"Archethic's CLI","sectionTitle":"Archethic's CLI","sectionRoute":"/participate/cli/","type":"docs"},{"id":834,"pageTitle":"Archethic's CLI","sectionTitle":"Installation","sectionRoute":"/participate/cli/#installation","type":"docs"},{"id":835,"pageTitle":"Archethic's CLI","sectionTitle":"Generate address","sectionRoute":"/participate/cli/#generate-address","type":"docs"},{"id":836,"pageTitle":"Archethic's CLI","sectionTitle":"Build and send transaction","sectionRoute":"/participate/cli/#build-and-send-transaction","type":"docs"},{"id":837,"pageTitle":"Archethic's CLI","sectionTitle":"UCO transfers","sectionRoute":"/participate/cli/#uco-transfers","type":"docs"},{"id":838,"pageTitle":"Archethic's CLI","sectionTitle":"Token transfers","sectionRoute":"/participate/cli/#token-transfers","type":"docs"},{"id":839,"pageTitle":"Archethic's CLI","sectionTitle":"Recipients","sectionRoute":"/participate/cli/#recipients","type":"docs"},{"id":840,"pageTitle":"Archethic's CLI","sectionTitle":"Content","sectionRoute":"/participate/cli/#content","type":"docs"},{"id":841,"pageTitle":"Archethic's CLI","sectionTitle":"Smart contract","sectionRoute":"/participate/cli/#smart-contract","type":"docs"},{"id":842,"pageTitle":"Archethic's CLI","sectionTitle":"Sending the transaction","sectionRoute":"/participate/cli/#sending-the-transaction","type":"docs"},{"id":843,"pageTitle":"Archethic's CLI","sectionTitle":"Keychain management","sectionRoute":"/participate/cli/#keychain-management","type":"docs"},{"id":844,"pageTitle":"Archethic's CLI","sectionTitle":"Creating a keychain","sectionRoute":"/participate/cli/#creating-a-keychain","type":"docs"},{"id":845,"pageTitle":"Archethic's CLI","sectionTitle":"Accessing a keychain","sectionRoute":"/participate/cli/#accessing-a-keychain","type":"docs"},{"id":846,"pageTitle":"Archethic's CLI","sectionTitle":"Adding / removing a service","sectionRoute":"/participate/cli/#adding--removing-a-service","type":"docs"},{"id":847,"pageTitle":"Archethic's CLI","sectionTitle":"Create a transaction for a service","sectionRoute":"/participate/cli/#create-a-transaction-for-a-service","type":"docs"},{"id":848,"pageTitle":"Archethic's CLI","sectionTitle":"CLI - Archethic Command Line Interpreter","sectionRoute":"/participate/cli/#cli---archethic-command-line-interpreter","type":"docs"},{"id":849,"pageTitle":"Archethic's CLI","sectionTitle":"Contribution","sectionRoute":"/participate/cli/#contribution","type":"docs"},{"id":773,"pageTitle":"Archethic Wallet","sectionTitle":"Archethic Wallet","sectionRoute":"/participate/wallet/","type":"docs"},{"id":774,"pageTitle":"Archethic Wallet","sectionTitle":"Features","sectionRoute":"/participate/wallet/#features","type":"docs"},{"id":775,"pageTitle":"Archethic Wallet","sectionTitle":"Framework","sectionRoute":"/participate/wallet/#framework","type":"docs"},{"id":776,"pageTitle":"Archethic Wallet","sectionTitle":"Seed","sectionRoute":"/participate/wallet/#seed","type":"docs"},{"id":777,"pageTitle":"Archethic Wallet","sectionTitle":"Securing the application","sectionRoute":"/participate/wallet/#securing-the-application","type":"docs"},{"id":778,"pageTitle":"Archethic Wallet","sectionTitle":"Data store","sectionRoute":"/participate/wallet/#data-store","type":"docs"},{"id":779,"pageTitle":"Archethic Wallet","sectionTitle":"Interactions with the Archethic blockchain","sectionRoute":"/participate/wallet/#interactions-with-the-archethic-blockchain","type":"docs"},{"id":780,"pageTitle":"Archethic Wallet","sectionTitle":"Setup","sectionRoute":"/participate/wallet/#setup","type":"docs"},{"id":781,"pageTitle":"Archethic Wallet","sectionTitle":"Pre-requisites","sectionRoute":"/participate/wallet/#pre-requisites","type":"docs"},{"id":782,"pageTitle":"Archethic Wallet","sectionTitle":"Instructions","sectionRoute":"/participate/wallet/#instructions","type":"docs"},{"id":783,"pageTitle":"Communication with DApps","sectionTitle":"Communication with DApps","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":784,"pageTitle":"Communication with DApps","sectionTitle":"Point of view on usage","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":785,"pageTitle":"Communication with DApps","sectionTitle":"Technical point of view","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":786,"pageTitle":"Communication with DApps","sectionTitle":"Available commands","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":787,"pageTitle":"Communication with DApps","sectionTitle":"RPC Methods","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":788,"pageTitle":"Communication with DApps","sectionTitle":"get_endpoint","sectionRoute":"/participate/wallet/dapps-communication#get_endpoint","type":"docs"},{"id":789,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request","type":"docs"},{"id":790,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response","type":"docs"},{"id":791,"pageTitle":"Communication with DApps","sectionTitle":"get_accounts","sectionRoute":"/participate/wallet/dapps-communication#get_accounts","type":"docs"},{"id":792,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-1","type":"docs"},{"id":793,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-1","type":"docs"},{"id":794,"pageTitle":"Communication with DApps","sectionTitle":"send_transaction","sectionRoute":"/participate/wallet/dapps-communication#send_transaction","type":"docs"},{"id":795,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-2","type":"docs"},{"id":796,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-2","type":"docs"},{"id":797,"pageTitle":"Communication with DApps","sectionTitle":"add_service","sectionRoute":"/participate/wallet/dapps-communication#add_service","type":"docs"},{"id":798,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-3","type":"docs"},{"id":799,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-3","type":"docs"},{"id":800,"pageTitle":"Communication with DApps","sectionTitle":"get_services_from_keychain","sectionRoute":"/participate/wallet/dapps-communication#get_services_from_keychain","type":"docs"},{"id":801,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-4","type":"docs"},{"id":802,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-4","type":"docs"},{"id":803,"pageTitle":"Communication with DApps","sectionTitle":"keychain_derive_keypair","sectionRoute":"/participate/wallet/dapps-communication#keychain_derive_keypair","type":"docs"},{"id":804,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-5","type":"docs"},{"id":805,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-5","type":"docs"},{"id":806,"pageTitle":"Communication with DApps","sectionTitle":"keychain_derive_address","sectionRoute":"/participate/wallet/dapps-communication#keychain_derive_address","type":"docs"},{"id":807,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-6","type":"docs"},{"id":808,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-6","type":"docs"},{"id":809,"pageTitle":"Communication with DApps","sectionTitle":"get_current_account","sectionRoute":"/participate/wallet/dapps-communication#get_current_account","type":"docs"},{"id":810,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-7","type":"docs"},{"id":811,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-7","type":"docs"},{"id":812,"pageTitle":"Communication with DApps","sectionTitle":"sign_transactions","sectionRoute":"/participate/wallet/dapps-communication#sign_transactions","type":"docs"},{"id":813,"pageTitle":"Communication with DApps","sectionTitle":"Request","sectionRoute":"/participate/wallet/dapps-communication#request-8","type":"docs"},{"id":814,"pageTitle":"Communication with DApps","sectionTitle":"Success Response","sectionRoute":"/participate/wallet/dapps-communication#success-response-8","type":"docs"},{"id":815,"pageTitle":"Communication with DApps","sectionTitle":"In conclusion","sectionRoute":"/participate/wallet/dapps-communication","type":"docs"},{"id":850,"pageTitle":"Schema Documentation","sectionTitle":"Schema Documentation","sectionRoute":"/schema","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content"],"fieldVectors":[["title/1",[0,3.831]],["content/1",[0,5.228,1,7.051,2,8.071,3,3.786,4,8.071,5,4.708,6,4.974,7,5.74,8,1.235]],["title/2",[5,4.237]],["content/2",[0,4.48,6,5.236,7,6.042,8,1.3,9,9.239,10,4.677,11,5.75,12,3.745]],["title/3",[13,6.534]],["content/3",[1,7.051,2,8.071,3,3.786,4,8.071,5,4.708,6,4.974,7,5.74,8,1.235,13,8.916]],["title/4",[5,4.237]],["content/4",[6,5.236,7,6.042,8,1.3,10,4.677,11,5.75,12,3.745,13,7.641,14,9.239]],["title/8",[15,6.534]],["content/8",[8,1.549,15,7.509,16,1.261,17,6.441,18,5.651,19,5.938,20,9.08,21,9.08]],["title/9",[22,3.343]],["content/9",[16,1.33,23,9.575,24,7.148,25,9.575,26,2.796,27,7.364]],["title/10",[28,3.8]],["content/10",[29,7.324,30,3.733]],["title/5",[31,6.534]],["content/5",[8,1.472,19,5.467,22,3.537,31,8.651,32,3.329,33,4.158,34,5.203,35,4.352,36,10.46,37,10.46]],["title/6",[22,3.343]],["content/6",[33,5.651,38,9.575,39,9.575,40,9.575,41,9.575]],["title/7",[28,3.8]],["content/7",[42,7.161,43,4.742]],["title/18",[44,6.076]],["content/18",[8,1.304,32,2.76,44,7.125,45,4.493,46,3.22,47,3.125,48,3.574,49,5.02,50,3.03,51,5.955,52,4.707,53,2.108,54,6.93,55,3.975,56,5.45]],["title/19",[3,3.408]],["content/19",[8,1.565,12,4.508,55,5.299,56,5.435,57,9.239,58,9.239]],["title/20",[28,3.8]],["content/20",[30,3.733,59,5.784]],["title/11",[60,4.376]],["content/11",[0,3.756,8,1.402,32,3.084,53,2.356,60,6.666,61,3.957,62,4.196,63,3.943,64,5.957,65,3.667]],["title/12",[3,3.408]],["content/12",[8,1.549,12,3.68,30,3.282,64,6.983,65,4.298,66,9.08,67,3.054,68,8.349]],["title/13",[69,2.645]],["content/13",[43,4.742,60,5.719]],["title/14",[28,3.8]],["content/14",[16,1.435,30,3.733]],["title/15",[70,5.48]],["content/15",[8,1.459,32,2.724,53,2.08,65,4.348,70,4.744,71,4.926,72,2.629,73,3.831,74,4.473,75,4.852,76,3.788,77,6.84,78,7.595,79,6.84,80,3.463,81,6.514,82,4.556,83,4.556,84,5.927,85,4.972,86,2.823]],["title/16",[3,3.408]],["content/16",[8,1.705,12,4.806,30,2.441,65,4.31,67,2.271,78,5.584,80,3.418,81,4.79,83,4.498,85,4.908,87,6.752,88,6.752,89,6.752,90,6.752,91,6.752,92,6.752,93,6.752]],["title/17",[69,2.645]],["content/17",[43,4.742,70,7.161]],["title/21",[94,6.076]],["content/21",[0,3.275,8,1.281,32,2.689,46,3.164,47,2.45,53,2.054,55,3.873,56,3.972,94,7.002,95,4.79,96,4.026,97,7.242,98,5.503,99,2.507,100,5.168,101,5.193,102,6.752]],["title/22",[3,3.408]],["content/22",[8,1.565,12,4.508,55,5.299,56,5.435,103,9.239,104,9.239]],["title/23",[28,3.8]],["content/23",[16,1.435,30,3.733]],["title/28",[105,2.54]],["content/28",[0,2.433,8,1.039,10,2.54,16,1.026,32,1.998,45,2.433,46,1.744,47,1.35,49,2.413,53,1.526,59,5.411,61,4.475,67,2.483,105,2.816,106,5.017,107,3.407,108,3.919,109,2.906,110,3.488,111,2.578,112,2.173,113,4.917,114,3.909,115,3.99,116,4.347,117,2.748,118,2.94,119,4.347,120,2.164,121,3.032,122,4.604,123,4.347,124,3.076,125,1.301]],["title/29",[3,3.408]],["content/29",[8,1.671,12,4.374,30,3.503,59,4.155,61,3.79,67,3.259,114,3.31,118,2.954,125,1.924,126,7.418,127,7.418,128,7.418,129,7.418,130,7.418]],["title/30",[28,3.8]],["content/30",[16,1.435,30,3.733]],["title/25",[131,4.647]],["content/25",[8,1.487,26,2.48,32,3.383,53,2.584,65,4.021,101,6.533,118,3.383,131,6.764,132,6.025,133,6.174]],["title/26",[3,3.408]],["content/26",[8,1.565,12,4.508,65,4.374,118,3.679,134,9.239,135,9.239]],["title/27",[69,2.645]],["content/27",[43,4.742,136,8.948]],["title/31",[61,4.036]],["content/31",[8,1.487,32,3.383,53,2.584,61,5.875,62,3.235,63,3.04,137,4.933,138,3.617,139,6.756,140,6.756]],["title/32",[3,3.408]],["content/32",[8,1.565,30,4.021,139,7.349,140,7.349,141,9.239,142,9.239]],["title/33",[28,3.8]],["content/33",[30,3.733,105,3.32]],["title/34",[143,5.898]],["content/34",[0,3.275,8,1.281,16,1.431,32,2.689,53,2.054,61,3.45,65,3.197,108,3.585,109,2.659,137,3.921,138,2.875,143,6.797,144,4.79,145,6.184,146,5.667,147,4.587,148,5.362,149,6.797,150,6.618]],["title/35",[3,3.408]],["content/35",[8,1.606,12,3.388,30,3.781,65,3.957,67,3.518,149,6.241,150,6.076,151,8.36,152,8.36,153,8.36]],["title/36",[28,3.8]],["content/36",[30,3.733,154,7.161]],["title/37",[99,2.175]],["content/37",[7,5.708,8,1.228,26,1.853,32,2.527,45,3.077,53,1.93,56,5.868,65,3.004,80,4.418,99,2.747,118,3.973,125,1.646,132,4.501,133,4.612,155,6.346,156,2.498,157,6.346,158,3.891,159,6.346,160,6.346,161,5.835,162,6.346,163,5.835,164,6.346,165,6.346]],["title/38",[3,3.408]],["content/38",[7,4.967,8,1.741,12,5.015,56,5.269,65,2.469,80,3.845,118,3.567,125,1.352,158,3.198,166,5.215,167,5.215,168,5.215,169,5.215,170,5.215,171,5.215,172,5.215,173,5.215,174,5.215,175,5.215,176,5.215,177,5.215,178,5.215]],["title/39",[69,2.645]],["content/39",[43,4.742,99,2.843]],["title/40",[179,5.48]],["content/40",[8,1.502,32,3.438,53,2.626,80,5.403,105,2.776,179,7.402,180,4.411,181,3.853,182,6.867]],["title/41",[3,3.408]],["content/41",[8,1.565,12,3.745,30,3.34,80,4.677,182,7.349,183,9.239,184,8.496]],["title/42",[69,2.645]],["content/42",[8,1.372,43,4.479,179,6.764,185,8.451,186,6.378]],["title/43",[182,6.284]],["content/43",[8,1.582,53,2.86,62,3.581,182,7.48,187,6.835,188,7.48]],["title/44",[3,3.408]],["content/44",[8,1.398,30,3.592,188,7.903,189,9.936]],["title/45",[28,3.8]],["content/45",[30,3.733,179,7.161]],["title/46",[59,4.426]],["content/46",[8,1.416,32,3.13,44,6.046,45,3.812,46,2.732,47,2.116,49,5.337,51,5.052,53,2.391,55,4.509,59,5.635,190,3.979,191,4.016,192,7.861]],["title/47",[3,3.408]],["content/47",[8,1.549,12,3.68,30,3.282,44,6.983,55,5.208,67,3.054,193,9.08,194,9.08]],["title/48",[28,3.8]],["content/48",[8,1.372,30,4.152,63,3.49,105,3.135]],["title/52",[195,5.898]],["content/52",[0,3.317,8,1.292,32,2.724,45,3.317,46,3.604,47,2.79,48,3.527,49,3.29,51,4.396,53,2.08,56,4.023,99,1.883,105,2.199,111,2.389,112,2.013,195,6.856,196,4.023,197,2.693,198,3.165,199,4.396,200,5.927,201,6.84]],["title/53",[3,3.408]],["content/53",[8,1.398,12,4.027,56,5.845,202,9.936]],["title/54",[69,2.645]],["content/54",[43,4.742,195,7.709]],["title/49",[63,2.828]],["content/49",[0,2.129,8,0.94,32,1.748,45,2.129,46,1.526,47,1.181,49,2.111,53,2.749,59,5.063,63,4.172,65,3.162,67,2.247,72,1.256,118,3.6,119,3.804,120,1.894,121,2.653,125,1.732,203,3.376,204,5.113,205,3.922,206,5.878,207,5.609,208,6.22,209,2.016,210,5.463,211,5.736,212,4.037,213,2.821,214,3.114,215,5.525]],["title/50",[3,3.408]],["content/50",[8,1.722,12,4.894,30,2.092,59,3.242,65,3.875,67,2.753,118,4.111,125,1.501,215,6.769,216,5.788,217,5.788,218,5.788,219,5.788,220,5.788,221,5.788,222,5.788,223,5.788,224,5.788,225,5.788]],["title/51",[69,2.645]],["content/51",[43,4.742,63,3.695]],["title/61",[64,6.076]],["content/61",[0,3.405,8,1.315,32,2.797,53,2.136,60,3.889,61,3.588,63,4.292,64,7.189,65,4.425,125,2.724,212,5.649,226,5.367,227,5.401]],["title/62",[3,3.408]],["content/62",[8,1.63,12,4.695,65,5.052,125,2.239,228,8.634,229,8.634,230,8.634]],["title/63",[28,3.8]],["content/63",[30,3.733,60,5.719]],["title/55",[139,6.284]],["content/55",[8,1.502,32,3.438,53,2.626,61,4.411,62,3.288,109,4.202,138,3.676,139,8.488,231,6.64]],["title/56",[3,3.408]],["content/56",[8,1.372,30,3.525,67,3.28,231,7.5,232,9.752]],["title/57",[28,3.8]],["content/57",[30,3.733,61,5.275]],["title/58",[231,6.076]],["content/58",[8,1.457,32,3.277,53,2.503,65,4.903,108,4.369,109,3.24,125,2.686,226,4.204,227,6.329,231,7.966,233,6.545]],["title/59",[3,3.408]],["content/59",[8,1.664,12,4.794,65,4.855,125,2.66,234,8.102,235,8.102,236,8.102,237,8.102]],["title/60",[28,3.8]],["content/60",[30,3.733,139,8.213]],["title/64",[16,1.098]],["content/64",[8,1.344,16,1.327,26,1.709,32,2.331,53,2.509,55,4.731,56,3.442,60,4.569,65,3.905,82,3.898,83,3.898,84,5.072,85,4.254,86,2.415,94,6.344,105,2.652,118,2.331,125,2.477,154,5.721,238,4.369,239,1.279,240,5.852,241,3.442,242,3.7,243,5.382,244,5.852,245,5.382,246,5.382]],["title/65",[3,3.408]],["content/65",[8,1.74,12,4.741,30,3.637,55,4.063,56,2.791,60,2.628,65,3.354,67,2.383,83,3.161,85,3.449,94,3.65,105,1.526,118,1.89,125,1.837,154,3.291,242,3,247,3.925,248,4.745,249,4.745,250,4.745,251,4.745,252,4.745,253,4.745,254,4.745,255,4.745,256,4.745,257,4.745,258,4.745,259,4.745,260,4.745,261,4.745]],["title/66",[69,2.645]],["content/66",[8,1.683,16,1.453,42,5.798,43,5.657,262,6.913,263,6.649]],["title/67",[264,6.076]],["content/67",[8,1.315,16,0.976,32,2.797,53,2.136,65,4.425,96,2.564,125,2.424,264,7.189,265,6.794,266,5.401,267,3.07,268,4.514,269,3.806,270,3.806,271,3.806,272,3.274,273,4.678,274,2.99,275,3.806,276,6.086,277,6.086]],["title/68",[3,3.408]],["content/68",[8,1.63,12,4.695,65,5.052,125,2.239,278,8.634,279,8.634,280,8.634]],["title/69",[69,2.645]],["content/69",[186,6.753,281,8.539]],["title/73",[29,5.604]],["content/73",[8,1.487,15,7.025,17,6.025,18,5.287,29,7.494,32,3.383,53,2.584,118,3.383,125,2.74,282,6.025]],["title/74",[3,3.408]],["content/74",[8,1.63,12,4.325,15,7.14,19,5.646,118,3.438,125,2.239,283,7.939,284,8.634,285,8.634]],["title/75",[69,2.645]],["content/75",[29,7.324,186,6.753]],["title/76",[242,4.995]],["content/76",[0,2.504,7,3.377,8,1.061,16,1.048,32,2.057,53,2.979,63,3.893,65,3.57,76,2.86,80,4.509,108,4.003,118,2.057,125,2.54,212,4.558,226,5.004,227,3.972,233,4.108,241,5.239,242,4.768,286,2.464,287,4.749,288,6.851,289,2.962,290,2.081,291,1.876,292,4.108,293,3.377]],["title/77",[3,3.408]],["content/77",[7,4.473,8,1.711,12,4.928,65,4.348,80,3.463,118,2.724,125,2.382,294,6.84,295,6.84,296,6.84,297,6.84,298,6.84,299,6.84,300,6.84]],["title/78",[69,2.645]],["content/78",[43,4.742,242,6.528]],["title/79",[28,3.8]],["content/79",[16,1.435,30,3.733]],["title/70",[149,5.898]],["content/70",[0,2.87,8,1.17,16,0.822,32,2.357,53,3.171,61,3.023,63,4.076,65,3.936,108,4.414,109,2.33,118,2.357,122,3.111,125,2.703,144,4.198,149,6.207,212,5.025,226,4.91,227,4.552,233,4.707,292,4.707,293,3.87,301,5.442]],["title/71",[3,3.408]],["content/71",[8,1.686,12,4.856,65,4.674,118,3.04,125,2.56,302,7.633,303,7.633,304,7.633,305,7.633,306,7.633]],["title/72",[28,3.8]],["content/72",[30,3.733,143,7.709]],["title/80",[81,5.604]],["content/80",[8,1.351,16,1.334,32,2.913,53,2.921,65,3.463,73,4.097,80,4.861,81,5.189,118,2.913,125,2.78,148,3.808,307,5.626,308,5.317,309,6.339,310,7.315,311,7.315,312,3.359]],["title/81",[3,3.408]],["content/81",[8,1.694,12,4.879,65,3.369,67,2.394,80,3.603,118,2.834,125,2.446,312,3.269,313,7.117,314,7.117,315,7.117,316,7.117,317,7.117,318,7.117]],["title/82",[28,3.8]],["content/82",[30,3.733,70,7.161]],["title/83",[188,6.284]],["content/83",[8,1.549,53,2.762,158,6.748,187,6.6,188,7.222,319,8.349,320,8.349]],["title/84",[3,3.408]],["content/84",[8,1.565,12,4.508,158,6.82,321,9.239,322,9.239]],["title/85",[28,3.8]],["content/85",[30,3.733,182,8.213]],["title/86",[140,6.284]],["content/86",[8,1.502,32,3.438,53,2.626,61,4.411,62,3.288,109,4.202,138,3.676,140,8.488,323,6.64]],["title/87",[3,3.408]],["content/87",[8,1.372,30,3.525,67,3.28,323,7.5,324,9.752]],["title/88",[28,3.8]],["content/88",[30,3.733,61,5.275]],["title/92",[323,6.076]],["content/92",[8,1.517,32,3.495,53,2.67,65,4.155,108,4.66,109,3.456,125,2.276,226,4.484,323,8.292]],["title/93",[3,3.408]],["content/93",[8,1.565,12,4.508,65,4.374,125,2.396,325,9.239,326,9.239]],["title/94",[28,3.8]],["content/94",[30,3.733,140,8.213]],["title/89",[150,5.743]],["content/89",[0,2.433,8,1.039,16,1.026,32,1.998,53,2.938,63,3.854,65,4.147,76,2.778,80,4.434,86,3.615,105,1.613,108,3.919,118,1.998,125,2.505,145,3.407,146,3.122,147,3.407,150,5.366,212,4.462,226,4.935,227,3.858,233,3.99,286,2.394,290,2.021,292,3.99,293,3.281,301,4.613,327,4.401,328,5.017,329,2.663]],["title/90",[3,3.408]],["content/90",[8,1.711,12,4.928,65,4.908,80,3.463,118,2.724,125,2.382,330,6.84,331,6.84,332,6.84,333,6.84,334,6.84,335,6.84,336,6.84]],["title/91",[28,3.8]],["content/91",[30,3.733,143,7.709]],["title/95",[154,5.48]],["content/95",[0,2.554,8,1.076,16,1.252,32,2.098,46,1.831,47,1.418,53,1.602,55,3.021,56,3.098,61,2.691,65,2.494,80,3.873,86,3.157,96,2.794,97,4.19,100,4.961,121,5.445,137,4.443,138,3.258,143,5.711,154,5.306,312,3.513,337,5.561,338,2.742,339,3.386,340,2.917,341,4.624,342,2.643,343,4.5,344,5.267,345,5.267,346,5.267]],["title/96",[3,3.408]],["content/96",[8,1.7,12,4.769,30,2.608,55,4.138,56,4.244,65,3.416,80,3.652,143,5.386,312,3.313,347,7.215,348,7.215,349,7.215,350,7.215,351,7.215,352,7.215]],["title/97",[28,3.8]],["content/97",[16,1.435,30,3.733]],["title/98",[86,3.26]],["content/98",[8,1.443,16,1.425,32,3.227,53,2.464,86,4.644,110,4.085,118,4.482,343,6.033]],["title/99",[3,3.408]],["content/99",[8,1.63,12,4.695,118,4.613,353,8.634,354,8.634,355,8.634]],["title/100",[69,2.645]],["content/100",[43,4.742,86,4.261]],["title/115",[60,4.376]],["content/115",[8,1.176,16,1.161,26,2.441,43,3.839,60,6.323,72,2.393,125,2.961,356,4.983,357,5.798,358,5.373]],["title/116",[5,4.237]],["content/116",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,359,9.575]],["title/117",[53,2.403]],["content/117",[0,4.119,30,3.071,32,3.383,60,6.854,61,4.34,62,4.024,63,3.781]],["title/101",[70,5.48]],["content/101",[8,1.158,22,4.382,26,2.403,43,3.779,70,7.184,71,4.413,72,2.355,73,4.609,80,5.243,290,3.315,360,3.807,361,4.413]],["title/102",[5,4.237]],["content/102",[8,1.398,12,4.027,80,5.03,362,9.936]],["title/103",[53,2.403]],["content/103",[30,3.173,32,3.495,70,6.088,71,5.782,72,3.086,73,4.917,74,5.74,75,6.226,76,4.861]],["title/104",[363,6.076]],["content/104",[8,1.235,16,1.219,26,2.563,43,4.031,125,3.156,204,5.549,356,5.232,363,6.751]],["title/105",[5,4.237]],["content/105",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,364,9.575]],["title/106",[53,2.403]],["content/106",[12,3.788,24,7.843,32,2.797,53,2.136,118,2.797,125,3.11,365,3.493,366,4.981,367,4.131,368,3.691,369,5.808,370,3.934,371,4.981,372,4.371,373,4.678,374,3.434,375,4.028,376,5.808]],["title/107",[262,6.534]],["content/107",[8,1.235,16,1.498,26,2.563,43,4.031,125,3.026,262,7.259,356,5.232,361,4.708]],["title/108",[5,4.237]],["content/108",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,377,9.575]],["title/109",[53,2.403]],["content/109",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/110",[136,6.847]],["content/110",[67,3.107,99,2.544,131,6.542,132,6.554,136,8.006,378,8.496,379,9.239]],["title/111",[53,2.403]],["content/111",[26,2.746,30,3.4,32,3.745,101,7.233,131,7.073]],["title/112",[263,6.284]],["content/112",[8,1.215,16,1.483,26,2.521,43,3.965,53,3.246,67,2.904,83,5.751,263,6.867,380,5.458,381,7.14]],["title/113",[5,4.237]],["content/113",[8,1.533,10,4.519,11,5.556,12,4.415,83,5.946,381,7.382,382,8.926,383,8.926]],["title/114",[53,2.403]],["content/114",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/118",[99,2.175]],["content/118",[26,2.796,67,3.22,99,3.336,384,8.805]],["title/119",[53,2.403]],["content/119",[26,2.796,30,3.461,32,3.813,99,3.336]],["title/120",[179,5.48]],["content/120",[8,1.195,22,4.47,26,2.48,43,3.901,80,5.348,179,7.328,180,4.34,290,3.422,360,3.93,361,4.556]],["title/121",[5,4.237]],["content/121",[8,1.398,12,4.027,80,5.03,184,9.137]],["title/122",[53,2.403]],["content/122",[30,3.461,32,3.813,105,3.079,179,7.881,180,4.892]],["title/123",[195,5.898]],["content/123",[26,2.698,43,4.243,46,3.211,47,2.487,195,8.304,198,4.275,199,5.938]],["title/124",[53,2.403]],["content/124",[0,3.499,30,2.608,32,2.873,45,3.499,46,3.701,47,2.866,48,3.72,49,3.47,51,4.637,99,1.987,105,2.32,111,2.52,112,2.124,195,7.104,196,4.244,197,2.841,198,3.338,199,4.637,200,6.252]],["title/125",[63,2.828]],["content/125",[8,1.256,26,2.606,43,4.099,63,3.898,105,2.87,125,2.825,356,5.321,385,7.1]],["title/126",[5,4.237]],["content/126",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,386,9.575]],["title/127",[53,2.403]],["content/127",[0,2.606,30,1.943,32,2.14,45,2.606,46,1.868,47,1.447,49,2.585,53,2.361,59,4.348,63,4.365,67,2.611,72,1.538,119,4.658,120,2.319,121,3.248,125,1.394,203,4.134,204,4.908,205,3.765,206,5.643,207,5.384,208,5.97,209,2.468,210,5.508,211,5.507,212,3.248,213,3.455,214,3.813]],["title/128",[16,1.098]],["content/128",[8,1.278,16,1.645,26,2.651,43,4.17,125,2.854,356,5.412]],["title/129",[5,4.237]],["content/129",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,247,7.918]],["title/130",[53,2.403]],["content/130",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/131",[42,5.48]],["content/131",[8,1.176,16,1.453,26,2.441,31,6.913,33,4.158,42,5.798,43,3.839,72,2.393,125,2.961,356,4.983,387,8.36]],["title/132",[5,4.237]],["content/132",[8,1.606,10,4.232,11,5.203,12,4.239,19,5.467,31,6.913,125,2.713,388,8.36,389,8.36,390,8.36]],["title/133",[53,2.403]],["content/133",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/139",[242,4.995]],["content/139",[8,1.158,16,1.143,26,2.403,43,3.779,67,2.768,82,5.481,83,5.481,84,7.131,85,5.981,125,2.939,241,4.84,242,6.548]],["title/140",[5,4.237]],["content/140",[8,1.606,10,4.232,11,5.203,12,4.627,83,5.568,85,6.076,125,2.168,391,8.36,392,8.36,393,8.36]],["title/141",[53,2.403]],["content/141",[0,2.936,16,1.174,30,2.189,32,2.411,53,2.569,63,4.105,76,3.353,80,3.065,108,4.485,125,2.191,212,5.106,226,4.971,241,5.723,242,5.341,286,2.889,287,5.567,288,6.497,289,3.472,290,2.439,291,2.2,292,4.815,293,3.959]],["title/136",[16,1.098]],["content/136",[8,1.235,16,1.621,26,2.563,43,4.031,83,5.847,267,3.837,356,5.232,380,5.549,394,4.757]],["title/137",[5,4.237]],["content/137",[8,1.398,12,4.027,83,6.619,395,9.936]],["title/138",[53,2.403]],["content/138",[16,1.658,26,2.698,30,3.34,32,3.679,238,6.898,239,2.019]],["title/134",[86,3.26]],["content/134",[16,1.306,67,3.163,86,4.962,110,3.745,343,5.532]],["title/135",[53,2.403]],["content/135",[16,1.284,30,3.34,32,3.679,86,4.925,110,3.679,343,5.435]],["title/142",[125,2.049]],["content/142",[12,3.788,24,7.843,32,2.797,53,2.136,118,2.797,125,3.11,365,3.493,366,4.981,367,4.131,368,3.691,369,5.808,370,3.934,371,4.981,372,4.371,373,4.678,374,3.434,375,4.028,376,5.808]],["title/143",[69,2.645]],["content/143",[43,4.742,363,7.941]],["title/144",[28,3.8]],["content/144",[8,1.793,16,0.965,29,4.926,30,4.37,42,3.205,43,4.977,60,2.559,63,2.485,64,3.554,81,3.278,99,1.272,105,1.486,149,3.45,150,3.358,186,4.542,231,3.554,242,4.391,262,3.821,264,3.554,281,3.821,323,3.554,363,3.554]],["title/145",[7,5.167]],["content/145",[6,5.236,7,7.274,12,4.508,32,3.679,53,2.81,396,6.042]],["title/146",[28,3.8]],["content/146",[0,4.256,1,7.051,8,1.642,13,7.259,30,3.897,99,2.417,242,5.549]],["title/149",[114,3.526]],["content/149",[12,4.157,16,1.126,32,3.227,53,2.464,113,5.397,114,5.279,397,4.83,398,4.897,399,6.445,400,7.451,401,4.897,402,5.747]],["title/150",[28,3.8]],["content/150",[30,3.733,105,3.32]],["title/147",[158,4.844]],["content/147",[12,4.239,22,3.537,32,3.329,53,2.543,158,6.413,403,4.483,404,6.649,405,7.244,406,7.244,407,4.579,408,8.36,409,8.36]],["title/148",[28,3.8]],["content/148",[8,1.372,30,4.152,99,2.685,188,7.757]],["title/157",[312,3.628]],["content/157",[12,3.508,24,7.4,26,1.831,32,2.497,53,1.907,118,2.497,214,4.448,239,1.37,291,2.278,312,5.458,366,4.448,367,3.688,368,3.296,369,5.186,370,3.512,371,4.448,372,3.903,373,4.177,374,4.232,375,3.596,376,5.186,407,3.435,410,3.964,411,1.356,412,3.329]],["title/158",[28,3.8]],["content/158",[8,1.372,30,4.152,81,6.917,154,6.764]],["title/151",[55,4.531]],["content/151",[12,4.556,32,3.745,53,2.86,55,6.447,113,6.264]],["title/152",[28,3.8]],["content/152",[8,1.683,16,1.161,30,4.453,44,6.429,59,4.683,94,6.429,154,5.798]],["title/153",[65,3.74]],["content/153",[10,3.921,12,4.039,22,4.216,32,3.969,53,2.356,65,5.216,403,4.154,406,6.712,413,7.745,414,7.745,415,4.198,416,9.966,417,2.718]],["title/154",[28,3.8]],["content/154",[8,1.782,16,0.762,30,4.605,60,3.039,63,1.964,64,4.22,70,3.805,81,3.892,99,1.511,131,3.227,143,4.096,149,4.096,150,3.988,154,3.805,231,4.22,242,3.469,264,4.22,323,4.22]],["title/155",[85,5.743]],["content/155",[10,5.458,12,4.37,32,3.495,53,2.67,85,6.38,209,4.031,418,10.781,419,6.088]],["title/156",[28,3.8]],["content/156",[43,4.742,242,6.528]],["title/159",[78,6.534]],["content/159",[12,4.104,78,8.375,187,7.361]],["title/160",[28,3.8]],["content/160",[30,3.733,70,7.161]],["title/161",[83,5.263]],["content/161",[12,4.461,32,3.616,53,2.762,83,6.048,209,4.17,419,6.298,420,7.807]],["title/162",[28,3.8]],["content/162",[8,1.565,16,1.284,43,5.48,242,5.841,263,7.349]],["title/163",[56,4.647]],["content/163",[12,3.755,24,7.791,32,2.76,46,3.22,47,2.493,53,2.108,56,6.139,118,2.76,125,1.797,366,4.916,367,4.076,368,3.643,369,5.731,370,3.882,371,4.916,372,4.313,373,4.616,374,3.389,375,3.975,376,5.731]],["title/164",[28,3.8]],["content/164",[8,1.709,16,1.109,30,4.489,44,6.137,94,6.137,99,2.197,154,5.535,195,5.957]],["title/165",[118,3.146]],["content/165",[12,3.892,32,4.269,53,2.921,105,2.352,115,5.818,118,4.269,401,4.421,411,1.582,421,7.315,422,7.315,423,4.485,424,5.461,425,6.049,426,4.873,427,3.884,428,6.049,429,6.727]],["title/166",[28,3.8]],["content/166",[8,1.763,16,0.903,29,4.612,30,4.573,63,2.327,81,4.612,86,2.683,99,1.79,105,2.091,131,3.825,149,4.854,150,4.726,242,4.111]],["title/167",[80,4]],["content/167",[12,4.461,32,3.616,53,2.762,80,5.996,430,7.868,431,5.567]],["title/168",[28,3.8]],["content/168",[8,1.749,30,4.425,43,4.292,70,6.483,81,4.981,99,1.934,150,5.104,154,4.871,179,6.483,242,4.44]],["title/169",[215,6.534]],["content/169",[12,3.881,32,3.813,210,5.787,215,9.397,385,7.616]],["title/170",[28,3.8]],["content/170",[30,3.733,63,3.695]],["title/171",[381,6.534]],["content/171",[12,4.508,16,1.284,32,3.679,53,3.383,381,9.198]],["title/172",[28,3.8]],["content/172",[43,4.742,263,8.213]],["title/176",[185,6.847]],["content/176",[105,2.971,179,6.408,180,4.72,185,8.006,267,4.039,432,7.106,433,6.154,434,3.258]],["title/177",[53,2.403]],["content/177",[30,3.461,32,3.813,105,3.079,179,7.881,180,4.892]],["title/173",[281,6.534]],["content/173",[8,1.215,16,1.199,99,2.377,125,2.768,264,6.64,267,3.774,281,7.14,432,6.64,433,5.751,435,6.867,436,5.988]],["title/174",[5,4.237]],["content/174",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,437,9.575]],["title/175",[53,2.403]],["content/175",[16,1.092,30,2.842,32,3.13,96,2.871,264,7.738,265,7.313,266,6.046,267,3.436,268,5.052,269,4.26,270,4.26,271,4.26,272,3.664,273,5.236,274,3.347,275,4.26]],["title/178",[29,5.604]],["content/178",[8,1.278,16,1.261,17,6.441,29,7.807,125,2.854,432,6.983,433,6.048]],["title/179",[5,4.237]],["content/179",[8,1.347,10,4.847,11,5.959,12,3.881,125,2.483,283,8.805]],["title/180",[53,2.403]],["content/180",[17,6.917,29,8.148,30,3.525,32,3.884]],["title/181",[438,6.847]],["content/181",[0,2.022,16,0.579,33,2.074,47,0.659,50,1.823,53,1.268,61,3.678,62,0.933,99,1.148,105,1.341,108,2.213,124,1.502,198,1.134,239,0.535,267,1.071,274,2.317,291,0.89,360,1.134,403,1.314,411,0.902,415,1.328,435,1.949,439,3.073,440,4.278,441,3.315,442,1.787,443,1.252,444,1.829,445,1.357,446,2.123,447,1.781,448,3.113,449,2.518,450,1.071,451,1.664,452,1.314,453,2.026,454,2.777,455,3.778,456,1.389,457,1.575,458,1.738,459,1.781,460,3.834,461,3.944,462,1.064,463,3.316,464,1.405,465,2.026,466,1.949,467,1.24,468,2.253,469,1.829,470,2.13,471,1.405,472,1.549,473,1.502,474,1.057,475,2.45,476,2.391,477,1.423,478,1.179,479,2.026,480,1.632,481,1.198,482,2.45,483,1.179,484,1.699,485,1.884,486,1.151,487,3.613,488,2.735,489,1.738,490,1.829,491,2.45,492,3.04,493,3.207,494,1.664,495,1.057,496,1.423,497,3.559,498,2.026,499,2.123,500,1.738,501,4.169,502,1.005,503,1.389,504,2.45,505,3.207,506,2.636,507,2.123,508,1.389,509,1.632,510,2.026,511,2.253,512,2.253,513,1.602,514,1.179,515,1.829,516,1.357,517,2.45]],["title/182",[518,7.901]],["content/182",[10,2.64,46,1.813,61,5.027,62,1.986,239,1.957,269,2.826,286,2.488,291,1.895,441,1.722,449,2.413,461,4.161,465,7.408,470,3.88,481,2.55,492,3.596,497,3.411,507,7.763,508,4.304,510,4.313,519,2.797,520,2.955,521,3.893,522,3.068,523,3.411,524,3.411,525,4.657,526,4.148,527,4.313,528,4.148,529,5.215,530,4.313,531,3.029,532,2.413,533,4.796,534,4.519,535,4.796,536,3.893,537,3.474]],["title/183",[538,6.534]],["content/183",[8,0.734,46,1.813,61,5.027,86,2.152,239,1.139,274,2.221,291,1.895,358,4.882,441,1.722,458,3.699,459,3.791,461,4.161,465,4.313,467,2.64,468,6.984,469,5.67,478,2.508,486,2.45,487,4.519,492,2.469,497,3.411,507,4.519,510,4.313,514,2.508,526,4.148,532,2.413,539,2.45,540,2.617,541,6.041,542,4.519,543,3.198,544,3.411,545,2.311,546,2.888,547,2.888,548,4.011,549,5.215,550,2.991,551,5.215,552,4.727,553,3.542,554,4.519,555,5.215]],["title/184",[552,3.888,556,4.804]],["content/184",[411,1.753,471,4.647,494,5.504,500,5.747,522,4.766,552,5.043,557,7.021,558,6.199,559,8.102,560,9.431,561,6.049,562,5.747,563,5.208,564,7.451]],["title/185",[467,4]],["content/185",[8,1.713,411,1.899,564,8.071,565,6.38,566,8.777,567,8.777,568,8.777,569,8.777]],["title/186",[570,7.265]],["content/186",[16,1.002,46,2.508,47,1.942,62,2.748,100,3.62,109,2.841,125,1.871,138,3.072,290,2.907,340,3.996,415,3.91,441,2.383,481,3.528,570,6.634,571,6.634,572,5.386,573,5.386,574,6.634,575,4.901,576,5.004,577,4.637,578,4.424,579,2.977,580,5.549]],["title/187",[61,2.639,488,2.199,581,3.079]],["content/187",[239,2.055,487,8.149,497,6.15,500,6.671,531,5.461,582,5.461,583,9.404]],["title/188",[86,3.26]],["content/188",[8,1.383,11,2.2,18,3.512,61,2.883,65,1.674,69,1.184,86,3.317,100,1.774,105,1.137,110,1.408,146,2.2,241,2.08,291,1.285,419,2.452,461,1.937,464,2.028,483,2.714,488,1.505,495,1.525,539,1.661,562,2.508,575,2.401,579,1.459,584,1.896,585,3.535,586,3.535,587,4.213,588,4.667,589,4.213,590,5.824,591,2.924,592,4.667,593,2.924,594,2.924,595,5.189,596,4.34,597,2.161,598,4.89,599,1.758,600,4.003,601,2.508,602,3.064,603,3.535,604,1.701,605,3.535,606,7.265,607,5.189,608,2.812,609,2.137,610,2.272,611,2.355,612,5.643,613,2.554,614,5.643,615,1.459,616,3.535,617,1.589,618,3.535,619,2.004,620,3.535,621,3.535,622,2.759,623,3.759,624,2.287,625,3.251,626,3.535]],["title/189",[46,1.53,47,1.185,340,2.438,461,2.412]],["content/189",[8,1.086,11,2.752,22,0.79,46,2.115,47,2.366,53,2.207,56,3.137,61,2.259,62,0.711,63,0.669,65,0.884,69,1.48,100,1.654,125,0.484,137,1.085,138,0.795,191,2.259,267,0.817,291,0.679,329,0.992,340,2.954,360,0.864,368,0.982,370,1.046,372,1.163,397,1.965,411,0.404,412,0.992,431,1.145,455,2.601,461,2.921,464,1.072,477,1.914,481,0.913,495,2.898,531,1.085,539,1.548,543,1.145,544,1.222,545,0.828,575,1.269,584,1.002,587,1.395,588,4.411,589,1.395,590,1.545,591,1.545,592,1.545,593,1.545,594,1.545,600,1.325,601,1.325,613,2.001,615,2.201,617,1.481,627,1.868,628,1.868,629,3.641,630,2.831,631,1.868,632,1.868,633,1.868,634,1.868,635,1.868,636,1.868,637,1.56,638,1.619,639,1.868,640,1.619,641,5.333,642,1.181,643,1.536,644,7.099,645,3.097,646,2.856,647,1.846,648,1.718,649,1.718,650,3.932,651,1.718,652,1.868,653,4.422,654,2.155,655,1.868,656,1.868,657,0.79,658,1.868,659,4.422,660,2.726,661,1.868,662,1.868,663,1.868,664,3.832,665,1.868,666,1.486,667,1.868,668,1.868,669,3.832,670,1.718,671,1.699,672,1.868,673,1.573,674,1.545,675,1.868,676,3.296,677,1.868,678,1.325,679,0.727,680,1.358,681,3.296,682,1.545,683,1.868,684,1.619,685,1.545,686,2.726,687,1.545,688,1.358,689,1.868,690,1.395,691,1.868,692,1.395,693,1.868,694,1.358]],["title/190",[125,1.62,239,1.365]],["content/190",[0,0.84,8,0.815,11,1.079,33,0.862,34,1.079,47,0.83,48,0.894,49,0.834,51,1.982,53,0.527,56,2.972,61,0.885,65,0.82,69,1.939,100,3.22,105,0.991,125,1.664,138,0.738,191,0.885,207,2.139,239,1.104,267,0.758,291,1.12,312,1.416,329,0.92,356,1.033,372,1.079,397,1.033,404,2.453,412,3.94,441,2.45,464,0.994,483,0.834,486,0.814,495,2.179,506,1.096,539,0.814,547,0.96,575,1.177,584,0.929,587,1.294,588,6.474,589,1.294,590,4.789,591,1.433,592,2.55,593,1.433,594,1.433,599,0.862,600,1.229,606,1.433,617,0.779,619,2.361,629,1.671,638,1.502,643,2.355,645,1.791,650,0.939,657,1.305,664,2.672,666,4.018,669,1.502,670,1.594,682,1.433,686,1.433,694,1.26,695,1.733,696,1.378,697,1.433,698,1.378,699,1.733,700,1.733,701,1.594,702,1.229,703,2.483,704,1.594,705,1.594,706,2.835,707,1.594,708,1.594,709,2.835,710,2.835,711,5.326,712,2.55,713,2.835,714,1.294,715,1.594,716,1.047,717,1.594,718,1.594,719,1.378,720,4.205,721,3.83,722,1.594,723,1.594,724,2.835,725,2.835,726,1.229,727,1.502,728,4.378,729,3.61,730,1.594,731,1.594,732,1.079,733,1.594,734,1.378,735,1.594,736,1.033,737,1.502,738,1.594,739,1.594,740,1.502,741,2.835,742,2.672,743,2.187,744,1.502,745,1.594,746,1.594,747,1.433,748,1.502,749,1.202,750,1.26,751,1.502,752,1.202,753,1.594,754,1.594,755,2.767,756,2.835,757,1.594,758,1.594,759,1.594,760,1.594,761,1.502,762,1.594,763,1.594,764,2.453,765,2.835,766,2.835,767,2.835,768,1.594,769,1.733,770,1.733,771,1.733,772,1.733]],["title/191",[16,0.868,403,3.35]],["content/191",[8,1.306,16,0.428,33,0.598,34,0.749,46,0.418,47,0.324,49,0.579,51,1.424,56,2.249,65,0.569,69,1.859,95,1.571,100,3.4,105,0.387,114,0.537,122,0.632,125,1.44,138,0.943,158,0.737,191,1.573,207,0.834,226,1.573,239,0.484,267,0.526,291,0.437,312,2.054,342,0.604,356,0.717,368,0.632,370,0.674,372,1.916,398,1.339,403,0.645,404,1.762,412,3.598,417,0.422,423,0.737,441,1.983,464,0.69,481,0.588,483,0.579,486,0.565,495,1.328,506,0.76,510,0.995,514,1.065,539,0.565,575,1.505,576,0.834,579,1.27,584,0.645,587,0.898,588,7.675,589,0.898,590,3.162,591,0.995,592,1.832,593,0.995,594,0.995,596,1.704,599,0.598,600,3.173,606,3.162,607,2.037,611,2.98,617,1.383,619,1.745,625,1.106,629,0.652,638,1.042,643,1.782,657,0.937,664,2.668,666,3.041,669,1.042,671,0.62,673,1.057,682,0.995,694,0.874,696,0.957,698,0.957,701,1.106,702,0.853,703,1.835,704,1.106,705,2.037,706,2.037,707,1.106,708,1.106,709,2.037,710,2.037,711,4.639,712,0.995,713,2.037,714,0.898,715,1.106,716,0.727,717,1.106,718,1.106,720,3.403,721,2.037,722,1.106,723,1.106,724,2.037,725,2.037,726,0.853,727,1.042,728,3.314,729,2.668,730,1.106,731,1.106,732,0.749,733,1.106,734,1.762,735,1.106,736,0.717,737,1.042,738,1.106,739,1.106,740,1.042,741,2.037,742,1.919,743,2.184,744,1.042,745,1.106,746,1.106,747,0.995,748,1.042,749,0.834,750,0.874,751,1.042,752,0.834,753,1.106,754,1.106,755,1.686,756,2.037,757,1.106,758,1.106,759,1.106,760,1.106,761,1.042,762,1.106,763,1.106,764,1.762,765,2.037,766,2.037,767,2.037,768,1.106,773,1.203,774,1.203,775,0.749,776,1.106,777,1.203,778,1.203,779,2.215,780,0.995,781,1.203,782,0.995,783,1.106,784,1.203,785,1.203,786,0.727,787,1.203,788,0.957,789,1.203,790,1.203,791,1.203,792,2.215,793,1.203,794,2.215,795,1.203,796,1.203,797,1.203,798,3.078,799,2.215,800,1.203,801,1.203,802,1.203,803,1.203,804,1.203,805,1.203,806,1.203,807,1.203,808,0.76,809,1.203,810,0.925,811,1.203,812,1.203,813,3.824,814,2.215,815,1.203,816,0.834,817,0.76,818,0.898,819,1.106,820,3.078,821,1.203,822,0.853,823,0.834,824,1.203,825,1.203,826,0.957,827,1.203]],["title/192",[522,3.674,828,6.246]],["content/192",[]],["title/193",[522,3.674,596,4.804]],["content/193",[]],["title/194",[46,1.795,47,1.39,340,2.861]],["content/194",[8,1.681,46,2.409,47,1.865,340,3.838,368,3.643,412,3.679,522,4.076,587,5.174,589,5.174,596,7.125,685,5.731,696,5.512,697,5.731,755,3.796,829,6.005,830,6.005,831,9.597,832,5.037,833,6.373]],["title/195",[125,1.339,239,1.128,650,2.799]],["content/195",[8,1.646,125,1.535,239,1.293,368,3.111,412,6.046,417,2.918,522,3.481,587,4.418,589,4.418,596,6.394,619,3.354,650,3.207,666,4.707,686,4.894,696,4.707,697,4.894,698,4.707,755,3.242,764,4.707,829,5.129,830,5.129,832,4.302,834,5.918,835,5.918,836,5.129,837,5.129,838,5.442]],["title/196",[100,3.964]],["content/196",[8,1.615,46,1.927,47,2.137,100,3.983,368,2.914,412,5.918,417,2.786,477,3.22,587,4.139,589,4.139,596,4.264,619,3.142,666,4.41,680,4.03,696,4.41,697,4.585,698,4.41,764,4.41,776,5.098,829,4.805,830,4.805,832,4.03,836,4.805,837,4.805,839,7.938,840,5.544,841,4.264,842,4.41,843,4.585,844,4.41,845,5.098]],["title/211",[441,1.706,462,2.243,492,2.445]],["content/211",[16,1.183,45,4.13,48,4.391,197,2.411,239,1.338,267,2.677,274,2.608,411,1.325,427,3.252,439,2.139,441,3.233,462,4.251,486,2.877,576,4.248,624,3.451,645,3.557,702,4.344,846,4.344,847,3.97,848,2.559,849,3.471,850,4.615,851,3.755,852,4.572,853,4.16,854,3.603,855,3.471]],["title/212",[462,2.712,856,5.413]],["content/212",[16,1.252,45,3.71,46,3.131,47,2.661,48,5.098,49,2.534,67,1.771,72,1.508,105,1.694,107,3.578,125,1.984,267,2.303,365,3.805,434,3.177,441,2.526,461,4.191,462,3.322,488,3.258,643,2.455,847,3.566,857,4.103,858,3.932,859,2.978,860,5.267,861,5.884,862,4.19,863,3.736,864,3.653]],["title/213",[847,2.912,865,3.283]],["content/213",[16,1.103,26,1.619,33,2.758,45,2.689,47,2.725,48,2.859,51,6.507,125,1.438,138,2.361,269,3.005,291,2.884,365,2.758,441,1.831,461,5.08,462,2.408,477,3.22,488,3.949,514,2.667,629,3.005,630,2.944,847,4.72,850,3.005,855,3.142,861,4.264,865,4.173,866,5.098,867,3.933,868,3.505,869,5.098,870,4.805]],["title/197",[360,2.39,441,1.706,492,2.445]],["content/197",[8,0.772,16,0.762,45,2.661,46,1.907,47,2.121,48,4.063,67,2.65,72,2.255,181,2.448,214,5.589,239,1.721,267,3.444,411,1.187,427,2.913,439,1.916,440,3.655,441,3.044,442,2.351,462,2.383,481,2.683,486,3.701,576,3.805,629,4.27,630,2.913,660,4.538,846,3.892,847,4.298,871,3.988,872,3.271,873,3.039,874,5.487,875,2.618,876,3.147,877,3.147]],["title/198",[878,7.901]],["content/198",[8,1.657,46,2.859,47,2.87,48,4.242,125,0.955,239,0.805,340,4.007,411,1.78,441,1.216,461,3.964,477,3.386,576,2.555,650,1.996,684,5.052,692,4.353,755,5.222,833,3.387,836,3.192,837,3.192,838,3.387,845,3.387,879,6.654,880,7.565,881,7.129,882,5.361,883,5.361,884,5.361,885,5.361,886,5.361,887,3.387,888,3.387,889,3.684,890,6.654,891,2.833,892,3.387,893,3.684]],["title/199",[854,4.647]],["content/199",[]],["title/200",[629,3.385,876,3.583]],["content/200",[16,1.289,47,2.245,62,1.76,72,2.656,125,1.801,209,2.122,239,1.823,270,2.504,291,1.679,360,2.138,411,2.007,439,1.614,442,1.98,492,2.187,540,2.318,613,2.091,617,2.076,629,5.028,640,4.004,650,2.504,657,1.955,847,3.237,854,2.718,859,1.799,876,2.65,877,3.983,894,4.621,895,5.341,896,4.004,897,4.249,898,4.249,899,3.821,900,4.621,901,3.45,902,3.139,903,6.944,904,4.621,905,2.876,906,4.621,907,3.358,908,2.97,909,3.139,910,4.249,911,2.683]],["title/201",[47,1.681,629,3.385]],["content/201",[8,1.291,33,1.68,34,2.102,46,1.89,47,2.596,50,2.985,56,1.986,72,1.557,125,0.876,181,1.507,209,1.551,308,3.953,312,2.498,361,1.811,365,2.705,375,1.937,407,1.85,411,1.176,412,1.793,449,1.562,477,4.547,505,2.597,506,2.135,514,1.624,527,4.498,629,5.763,630,1.793,643,1.574,645,3.159,657,3.313,660,2.793,679,1.315,694,3.953,716,2.041,720,1.914,743,2.395,747,4.498,817,3.439,862,2.686,875,1.611,876,4.924,895,2.597,896,2.926,897,3.105,912,1.87,913,2.793,914,2.597,915,3.105,916,1.725,917,1.986,918,3.377,919,3.377,920,2.686,921,3.377,922,5.439,923,3.377,924,3.377,925,3.377,926,3.377,927,3.377,928,3.377,929,2.395,930,3.377]],["title/202",[48,4.074]],["content/202",[8,1.455,33,0.996,45,2.717,46,1.947,47,2.51,48,5.665,51,2.252,105,1.502,138,0.853,239,0.766,267,1.532,270,1.086,274,0.853,341,2.823,370,1.963,374,0.979,404,1.593,411,1.514,412,4.806,439,1.224,441,2.888,486,0.941,506,2.215,539,0.941,576,2.43,629,1.086,637,0.948,645,3.254,684,1.736,694,2.547,714,2.616,728,3.036,729,6.532,740,4.855,742,1.736,744,3.036,749,2.43,755,2.558,823,1.389,847,0.934,853,3.172,854,1.178,861,2.695,879,4.294,880,7.354,881,3.036,882,1.842,883,4.294,884,5.152,885,1.842,886,5.152,887,1.842,888,1.842,890,3.222,892,1.842,895,4.309,931,3.222,932,2.003,933,1.593,934,2.003,935,1.842,936,2.303,937,3.504,938,2.003,939,2.003,940,1.842,941,1.334,942,1.842,943,1.736,944,2.003,945,2.003,946,2.003,947,2.003,948,2.003,949,2.003,950,2.003,951,2.003]],["title/203",[755,4.328]],["content/203",[48,4.937,370,5.363,373,6.378,441,3.162,546,5.303,755,5.245]],["title/204",[441,2.063,755,3.422]],["content/204",[8,1.152,53,2.49,86,2.389,181,4.238,205,3.969,312,2.658,375,4.695,412,6.498,417,3.968,600,4.106,619,3.28,629,4.436,630,4.345,645,3.361,876,4.695,952,4.787,953,7.553]],["title/205",[53,1.571,645,2.999,755,2.829]],["content/205",[3,3.442,55,4.577,412,4.236,417,3.565,486,3.748,545,3.536,579,3.293,617,3.586,645,4.634,682,6.599,755,4.371,936,3.935,954,5.219,955,6.599,956,7.98,957,6.915]],["title/206",[53,1.571,312,2.372,755,2.829]],["content/206",[3,3.07,55,4.082,312,3.269,412,3.779,417,3.309,483,3.423,486,3.343,545,3.154,579,2.937,617,3.199,619,4.033,734,5.661,743,5.049,755,3.899,764,5.661,780,5.886,782,5.886,936,3.51,954,4.655,958,9.43,959,9.43,960,6.168]],["title/207",[16,0.868,961,4.431]],["content/207",[8,1.001,16,0.989,45,4.573,46,3.676,47,3.24,48,5.454,49,4.536,59,3.987,105,2.288,340,3.942,441,2.35,461,3.899,861,5.474,962,4.834]],["title/208",[370,4.426]],["content/208",[]],["title/209",[46,1.795,47,1.39,370,2.893]],["content/209",[3,2.066,46,1.664,47,2.294,53,2.169,55,2.747,61,2.446,99,2.347,212,4.311,214,3.397,340,4.72,412,5.361,417,3.314,441,3.119,454,3.19,455,4.195,458,3.397,459,3.481,483,2.303,497,3.132,545,2.122,546,2.652,576,3.321,579,1.976,613,2.167,617,2.152,619,2.714,645,4.142,755,2.623,855,2.714,936,2.361,953,3.809,954,3.132,963,3.397,964,3.809,965,6.181,966,2.98,967,4.789,968,2.682,969,3.253,970,2.854]],["title/210",[125,1.339,370,2.893,650,2.799]],["content/210",[53,2.136,86,2.898,125,1.821,239,1.534,312,4.292,360,3.249,370,3.934,374,4.57,411,1.519,412,5.578,415,3.806,417,3.28,519,3.766,645,5.428,929,4.981,936,3.463,953,5.586,971,5.808,972,5.808,973,7.022]],["title/214",[532,2.89,974,4.54]],["content/214",[99,2.685,239,2.131,493,7.5,500,6.917,975,5.593]],["title/215",[976,4.015,977,6.246]],["content/215",[8,1.158,26,2.403,99,2.266,239,1.798,411,1.78,439,2.874,490,6.143,978,6.805,979,6.329,980,6.329,981,5.122,982,5.59,983,5.481,984,6.805,985,3.896]],["title/216",[8,0.879,979,4.804]],["content/216",[26,0.765,34,1.631,72,0.75,99,0.722,105,1.419,110,2.671,197,1.032,266,2.016,272,1.222,273,1.746,338,1.364,339,1.685,411,0.567,439,0.915,454,2.94,456,1.485,457,1.685,488,1.116,495,1.904,519,2.367,532,2.042,540,1.315,550,1.503,558,3.456,580,2.016,584,1.406,599,1.304,604,3.227,615,1.082,637,1.241,647,2.472,650,1.42,679,2.612,716,1.584,736,1.562,818,1.957,850,3.099,857,1.406,902,1.78,933,2.085,976,1.685,979,5.758,980,2.016,981,1.631,982,1.78,983,1.746,986,2.41,987,2.887,988,2.998,989,1.607,990,3.825,991,4.414,992,2.998,993,3.295,994,3.061,995,1.436,996,3.825,997,3.825,998,4.243,999,2.085,1000,2.621,1001,2.621,1002,2.085,1003,2.271,1004,2.167,1005,1.351,1006,2.41,1007,2.621,1008,1.522,1009,2.016,1010,2.621,1011,2.621,1012,1.452,1013,4.059,1014,1.607,1015,1.607,1016,1.746,1017,2.085,1018,2.621,1019,2.41,1020,1.905,1021,3.208,1022,3.559,1023,2.271,1024,1.657,1025,2.016,1026,1.957,1027,2.41,1028,5.718,1029,2.621,1030,1.562,1031,1.503,1032,2.271,1033,1.485,1034,2.085,1035,2.271,1036,2.41,1037,2.271,1038,1.542,1039,2.41,1040,2.621,1041,1.957,1042,2.271,1043,1.607,1044,2.271,1045,2.41,1046,2.016,1047,2.085,1048,1.685,1049,1.391]],["title/217",[8,0.879,490,4.663]],["content/217",[124,4.485,138,3.115,411,1.582,455,4.303,485,5.626,490,7.169,503,4.145,604,3.518,615,3.019,864,5.073,911,4.248,969,4.969,981,4.553,1008,4.248,1046,5.626,1050,7.315,1051,5.626,1052,7.315,1053,5.461,1054,5.189,1055,4.784,1056,5.189]],["title/218",[329,4.194]],["content/218",[18,5.651,110,3.616,273,6.048,368,4.773,449,4.201,578,5.567,1057,6.983,1058,6.167,1059,7.222]],["title/222",[650,4.282]],["content/222",[60,4.051,99,2.014,105,2.352,108,3.884,239,1.598,327,4.36,411,1.582,462,3.176,553,4.969,650,3.964,679,2.848,817,4.625,865,3.845,911,4.248,983,4.873,1016,4.873,1060,5.073,1061,7.315,1062,4.702,1063,4.051,1064,6.049,1065,5.626,1066,4.702]],["title/223",[62,3.009]],["content/223",[33,3.447,43,3.183,50,3.03,60,3.838,62,3.975,67,2.331,125,1.797,145,4.707,156,2.728,241,4.076,268,4.454,288,5.33,327,6.221,434,2.444,495,2.99,613,3.137,622,3.389,679,2.698,826,5.512,1062,4.454,1063,5.131,1067,6.373]],["title/224",[61,4.036]],["content/224",[8,1.176,76,4.63,122,4.394,213,5.373,226,4.271,288,6.429,327,4.983,657,3.537,873,4.63,1068,3.167,1069,6.429,1070,6.913,1071,8.36,1072,6.429]],["title/225",[657,3.343]],["content/225",[50,3.902,122,5.726,327,5.321,657,3.777,679,3.475,865,4.692,1063,4.944,1072,8.377]],["title/226",[63,2.828]],["content/226",[33,3.358,43,3.101,50,2.952,60,3.74,63,3.687,67,2.271,125,1.751,145,4.587,156,2.659,241,3.972,268,4.34,288,5.193,327,6.14,434,2.381,469,5.041,495,2.913,613,3.056,622,3.302,679,2.629,826,5.371,1062,4.34,1063,5.042,1067,6.209,1073,6.752]],["title/227",[61,4.036]],["content/227",[8,1.14,63,2.9,76,4.487,122,4.259,125,2.101,213,5.208,226,4.139,288,6.232,327,4.83,657,3.428,873,4.487,1068,3.069,1069,6.232,1070,6.701,1072,6.232,1074,8.102]],["title/228",[657,3.343]],["content/228",[50,3.774,63,3.09,122,5.61,125,2.239,327,5.146,657,3.653,679,3.361,865,4.538,1063,4.782,1072,8.208]],["title/229",[553,5.367]],["content/229",[16,1.508,72,1.861,99,2.443,122,3.418,198,3.008,267,2.843,275,3.524,327,3.876,434,2.293,553,6.862,604,3.128,657,2.751,850,3.524,1008,5.154,1062,4.179,1063,4.915,1075,4.612,1076,7.339,1077,3.93,1078,3.031,1079,5.635,1080,4.179,1081,4.253]],["title/230",[1082,5.078]],["content/230",[26,2.33,35,4.154,239,1.743,268,5.129,443,4.077,478,3.838,495,3.442,519,4.28,615,3.293,679,3.107,998,4.522,1077,4.823,1082,5.129,1083,4.634,1084,5.8,1085,4.757,1086,4.757]],["title/231",[1087,4.647]],["content/231",[16,1.295,46,1.62,47,1.255,55,2.674,71,3.749,73,4.698,96,1.702,99,2.309,113,4.657,156,1.835,191,2.381,271,2.526,275,2.526,368,2.45,433,4.657,434,1.644,449,2.157,474,2.011,486,2.19,545,3.717,547,2.582,604,3.362,617,2.095,622,2.279,671,2.404,859,2.721,873,2.582,988,3.166,1005,2.404,1057,3.585,1068,1.766,1082,5.989,1083,4.06,1087,5.481,1088,3.585,1089,3.855,1090,4.662,1091,2.674,1092,3.48,1093,2.642,1094,4.848,1095,2.404]],["title/232",[1096,5.413,1097,4.431]],["content/232",[71,4.495,73,4.694,76,3.315,99,1.648,289,3.433,290,2.412,291,2.175,342,3.003,443,4.281,452,3.21,545,2.652,615,2.47,673,2.856,679,2.33,916,3.058,1008,4.867,1068,3.174,1082,3.847,1087,4.929,1091,4.807,1096,9.079,1097,4.246,1098,4.246,1099,3.987,1100,4.995,1101,5.481,1102,5.504]],["title/233",[16,0.868,553,4.243]],["content/233",[16,0.882,73,3.555,74,4.15,96,2.317,99,1.747,100,3.184,125,1.646,138,2.702,265,4.612,271,3.439,272,2.958,275,3.439,365,4.341,474,2.737,540,3.184,546,3.515,553,5.928,911,3.685,968,3.555,1065,4.881,1066,5.61,1082,4.079,1091,3.64,1103,4.881,1104,5.047,1105,3.783,1106,3.685,1107,3.835,1108,6.346,1109,6.346,1110,4.881]],["title/234",[1027,7.265]],["content/234",[443,4.72,604,4.444,613,4.182,1008,5.365,1013,8.496,1084,6.715,1111,8.496,1112,7.349]],["title/219",[156,2.034,1005,2.663,1113,4.108]],["content/219",[71,4.787,99,2.458,138,3.801,368,4.692,1068,3.381,1075,6.332,1087,5.25,1114,7.382,1115,5.12,1116,8.208]],["title/220",[1117,7.901]],["content/220",[16,1.128,50,4.491,71,3.071,72,1.639,99,2.236,138,2.438,156,3.198,271,3.103,289,3.284,342,2.873,394,3.103,402,4.061,411,1.238,463,4.554,473,3.51,539,2.689,546,3.171,602,4.961,615,2.363,1005,2.952,1087,4.778,1091,3.284,1101,3.744,1113,7.508,1118,4.274,1119,4.274,1120,3.171,1121,4.961,1122,4.961,1123,5.725,1124,5.725,1125,4.554,1126,5.265,1127,5.725]],["title/221",[74,5.167]],["content/221",[16,0.892,73,4.929,74,6.565,99,1.769,105,2.065,156,3.465,289,5.758,291,2.334,329,3.41,411,1.389,473,3.938,673,3.065,1005,3.312,1008,3.73,1082,4.128,1091,3.684,1113,5.109,1120,3.557,1128,4.672,1129,5.566,1130,6.423,1131,6.423,1132,5.312,1133,4.128,1134,4.556,1135,6.423]],["title/235",[1080,5.078]],["content/235",[26,2.527,76,3.473,99,2.729,125,1.626,132,4.448,133,4.558,138,2.67,197,2.469,239,1.37,289,3.596,361,3.363,520,3.553,550,3.596,613,2.838,630,3.329,643,2.923,673,2.992,1030,3.738,1053,4.681,1080,7.454,1136,4.349,1137,4.177,1138,4.558,1139,5.186,1140,4.558,1141,4.349,1142,5.766]],["title/236",[26,1.824,1143,6.246]],["content/236",[16,1.265,26,2.658,49,3.248,62,2.572,63,2.417,72,2.606,99,2.507,196,3.972,199,4.34,204,4.269,268,4.34,292,5.371,441,2.23,550,5.222,613,3.056,643,4.244,703,4.025,859,3.544,995,3.699,1075,4.79,1137,4.498,1144,6.752]],["title/237",[99,1.422,643,2.408,1080,3.32]],["content/237",[16,1.311,45,3.939,99,3.102,197,2.254,198,2.649,199,3.68,411,1.238,434,2.019,440,3.814,514,2.754,515,4.274,520,3.245,547,3.171,550,4.658,630,3.04,643,2.669,673,2.732,775,3.563,859,2.229,1005,2.952,1080,3.68,1128,3.04,1133,5.22,1134,5.761,1137,3.814,1145,5.265,1146,5.725,1147,3.009,1148,3.62,1149,5.725,1150,4.961,1151,4.274]],["title/238",[290,2.081,673,2.465,1080,3.32]],["content/238",[16,1.334,72,2.094,96,2.671,99,2.014,197,2.88,289,4.196,449,3.384,514,3.518,599,3.638,916,3.737,1053,5.461,1080,6.172,1133,4.702,1134,5.189,1152,6.049,1153,3.845,1154,7.315,1155,6.049,1156,3.359,1157,7.315,1158,5.626]],["title/297",[854,4.647]],["content/297",[99,2.685,854,5.736,875,4.653,988,6.624,1159,7.5]],["title/298",[99,1.72,1159,4.804]],["content/298",[16,0.871,46,2.179,47,1.688,99,2.729,267,2.741,411,1.356,454,4.177,455,3.688,467,3.174,470,3.203,540,3.146,582,3.641,601,4.448,613,2.838,657,2.653,854,3.688,872,3.738,875,2.992,912,5.49,929,4.448,970,3.738,975,3.596,988,4.259,1107,3.79,1159,7.624,1160,4.558,1161,4.177,1162,5.434,1163,6.27]],["title/299",[49,2.118,99,1.212,196,2.59,1159,3.386]],["content/299",[16,0.851,49,4.709,96,2.237,99,2.345,196,5.009,198,2.834,199,5.474,267,2.677,374,2.995,411,1.325,454,4.08,486,2.877,540,3.073,581,3.651,679,3.315,720,3.471,912,4.716,968,3.431,975,3.513,989,3.755,1105,3.651,1106,3.557,1107,3.702,1159,7.529,1160,4.452,1161,4.08,1164,4.344,1165,4.572]],["title/269",[912,3.46,969,4.243]],["content/269",[107,5.77,466,6.756,531,4.933,582,4.933,584,4.556,912,4.705,969,5.77,1166,6.756,1167,5.063,1168,8.737,1169,8.494,1170,8.494]],["title/270",[917,3.674,1085,3.723]],["content/270",[105,2.605,462,3.518,613,3.667,917,6.62,988,5.504,1085,6.114,1171,5.747,1172,6.708,1173,7.451,1174,6.049,1175,7.451,1176,5.397]],["title/271",[1177,5.413,1178,5.744]],["content/271",[0,1.703,8,1.127,46,3.406,47,2.897,53,1.707,56,2.066,120,3.455,197,2.21,291,2.039,307,4.317,329,4.957,337,5.821,370,1.967,372,2.186,375,2.014,431,2.153,495,2.421,539,1.65,579,1.449,599,1.747,622,1.717,643,1.637,645,4.071,687,2.904,688,4.08,690,4.19,692,5.979,755,3.075,822,2.491,841,5.392,842,6.37,853,3.812,854,2.066,936,1.732,969,3.812,1142,3.229,1153,1.846,1171,2.491,1178,3.229,1179,3.512,1180,3.512,1181,7.011,1182,2.904,1183,3.512,1184,3.512,1185,3.512,1186,3.512,1187,2.701,1188,3.512,1189,2.066]],["title/272",[65,2.348,375,1.242,412,1.15,469,1.617,1177,1.877,1190,2.166,1191,1.791,1192,2.166,1193,2.166]],["content/272",[8,1.275,22,3.833,100,3.867,291,1.933,370,4.317,372,4.796,375,3.052,402,3.774,412,2.825,417,1.867,419,3.69,425,4.4,427,2.825,469,5.753,506,3.364,531,3.09,617,2.391,643,2.48,657,2.251,671,2.744,687,4.4,692,5.753,726,3.774,823,3.69,841,7.64,842,6.13,964,6.13,969,3.614,1191,8.215,1194,5.321,1195,5.321,1196,3.13,1197,4.611]],["title/273",[1177,4.476,1198,5.165,1199,3.664]],["content/273",[8,1.617,22,0.51,30,2.174,45,0.585,46,2.09,47,2.941,48,0.622,51,0.775,69,0.404,95,1.574,105,0.714,120,0.958,137,1.289,213,1.427,241,0.709,291,2.697,312,1.019,329,2.683,370,1.243,372,0.75,374,1.085,375,1.769,403,1.19,411,1.093,412,1.178,445,0.668,471,1.769,474,0.52,477,2.225,481,0.589,495,0.52,539,0.566,543,0.739,595,1.109,597,1.467,598,1.045,606,3.168,613,2.517,617,1.721,647,0.675,657,1.305,688,0.876,690,0.9,694,2.784,702,0.855,716,0.729,819,2.041,841,0.927,842,0.959,854,1.306,859,0.864,895,2.372,916,1.134,935,2.041,936,1.521,962,1.508,969,2.095,992,0.819,1068,0.457,1078,1.035,1107,1.342,1128,0.64,1171,0.855,1189,0.709,1200,6.786,1201,3.831,1202,0.959,1203,5.56,1204,3.084,1205,1.791,1206,2.551,1207,0.9,1208,4.019,1209,1.109,1210,1.206,1211,2.041,1212,0.9,1213,0.927,1214,2.242,1215,1.206,1216,2.22,1217,0.997,1218,1.273,1219,3.084,1220,1.206,1221,0.997,1222,1.109,1223,1.109,1224,2.22,1225,1.206,1226,3.084,1227,1.206,1228,3.084,1229,2.139,1230,1.206,1231,1.206,1232,1.109,1233,3.084,1234,1.109,1235,1.206,1236,2.22,1237,2.22,1238,2.22,1239,1.206,1240,0.836,1241,0.997,1242,1.206,1243,1.206,1244,2.22,1245,1.206,1246,1.206,1247,1.206,1248,1.206,1249,1.206,1250,1.206,1251,1.206,1252,1.206,1253,1.206,1254,1.206,1255,1.206,1256,1.206,1257,1.206,1258,1.206,1259,1.206,1260,1.206,1261,1.206,1262,2.22,1263,1.206,1264,1.206,1265,2.22,1266,1.206,1267,1.206,1268,1.206,1269,1.206,1270,1.206,1271,1.206,1272,1.206,1273,1.206,1274,1.206,1275,1.206,1276,1.206,1277,1.206,1278,1.206,1279,1.206,1280,1.206,1281,1.206,1282,1.206,1283,1.206,1284,2.22,1285,1.206,1286,1.206,1287,1.206,1288,1.206,1289,1.206,1290,1.206,1291,1.452,1292,1.206,1293,1.206,1294,1.045,1295,1.206,1296,1.206,1297,1.206,1298,1.206]],["title/274",[1299,7.901]],["content/274",[47,3.032,191,2.925,213,3.68,267,2.503,291,2.08,312,4.335,329,3.04,434,2.019,471,5.892,484,3.971,550,3.284,597,3.11,617,2.573,637,2.71,657,3.436,688,4.161,690,4.274,692,4.274,732,3.563,736,4.841,1171,4.061,1172,3.744,1291,5.312,1294,4.961,1300,5.725,1301,5.265,1302,5.265,1303,5.725,1304,5.725]],["title/275",[1305,7.901]],["content/275",[8,0.882,22,2.653,46,2.179,47,2.668,267,2.741,286,2.992,291,2.278,342,3.146,417,3.038,434,2.211,531,3.641,545,2.779,597,2.401,657,4.194,673,2.992,680,4.558,1153,3.296,1189,3.688,1196,3.688,1306,6.657,1307,5.186,1308,6.003,1309,6.27,1310,8.656,1311,5.186,1312,6.27,1313,5.186]],["title/276",[1199,4.431,1314,6.246]],["content/276",[11,4.821,18,4.821,47,2.966,191,5.091,342,3.886,471,4.442,495,3.341,550,4.442,637,3.667,657,3.277,969,5.261,1171,5.494,1308,6.912,1313,6.405,1315,7.745]],["title/277",[1316,7.901]],["content/277",[47,2.902,69,2.938,100,4.404,138,3.737,342,4.404,411,1.899,539,4.123,545,3.89,657,4.561]],["title/278",[1199,4.431,1317,6.246]],["content/278",[22,2.422,46,1.99,47,3.241,191,4.149,267,2.503,291,3.43,342,4.736,545,3.599,550,3.284,597,2.192,643,2.669,657,3.994,673,2.732,1171,4.061,1196,3.368,1199,4.061,1291,3.744,1307,4.735,1308,7.125,1313,6.717,1318,8.122,1319,5.265]],["title/279",[65,2.084,1199,3.123,1320,4.403,1321,3.815]],["content/279",[46,1.76,47,3.198,50,2.214,69,2.949,82,3.374,291,1.84,339,5.661,342,3.73,471,5.052,483,2.436,531,2.941,611,3.374,617,2.276,657,4.106,673,2.417,680,3.681,716,3.061,969,5.05,1189,2.979,1199,7.332,1212,3.781,1307,6.148,1308,3.513,1313,4.189,1322,5.065,1323,4.389,1324,5.065,1325,7.434,1326,5.065]],["title/280",[65,1.311,412,1.47,1199,1.964,1306,2.129,1327,2.769,1328,2.29,1329,2.399,1330,2.546]],["content/280",[8,0.734,30,1.885,47,3.033,50,3.32,69,1.746,100,2.617,191,2.664,312,4.114,342,3.811,370,2.921,372,4.727,402,3.699,403,5.278,411,1.643,412,2.769,471,2.991,495,3.276,582,3.029,637,2.469,657,3.79,671,2.689,841,4.011,842,4.148,1171,3.699,1189,3.068,1199,3.699,1308,5.268,1311,6.281,1331,5.215,1332,5.215,1333,5.215,1334,4.796]],["title/281",[412,2.337,1199,3.123,1335,4.403,1336,4.049]],["content/281",[46,1.453,47,3.186,49,2.011,50,1.828,69,2.154,138,1.78,196,2.459,267,1.828,291,2.338,329,2.22,342,2.098,370,3.605,411,1.697,434,1.474,457,2.687,471,3.691,474,1.803,477,2.428,495,2.776,539,1.964,582,2.428,629,2.266,645,2.428,657,3.32,671,2.156,673,3.071,686,5.322,687,3.457,688,4.678,690,4.804,714,5.858,716,2.527,736,2.492,853,2.84,1093,3.647,1196,3.785,1308,4.463,1311,3.457,1337,3.457,1338,4.181,1339,6.436,1340,2.965,1341,2.84,1342,4.181,1343,4.181,1344,4.181]],["title/239",[912,3.46,970,3.723]],["content/239",[107,5.77,466,6.756,531,4.933,582,4.933,584,4.556,912,4.705,970,5.063,1166,6.756,1167,5.063,1168,8.737,1345,8.494,1346,8.494]],["title/240",[8,0.879,1347,6.246]],["content/240",[18,4.821,47,2.682,239,1.692,455,4.556,461,5.459,488,3.298,520,4.389,550,4.442,575,5.261,657,4.216,775,4.821,917,4.556,966,4.821,970,5.94,1348,7.745]],["title/241",[1330,5.744,1349,6.246]],["content/241",[6,4.893,67,2.904,69,2.89,120,3.724,398,5.218,411,1.867,461,5.846,970,6.361,1350,5.864,1351,7.482]],["title/242",[1352,7.265]],["content/242",[110,3.616,411,1.964,462,3.943,516,5.029,524,5.938,599,4.516,1353,6.298,1354,9.08,1355,7.868]],["title/243",[1356,7.901]],["content/243",[47,2.815,55,4.795,69,2.799,443,5.344,599,4.158,617,3.757,643,3.897,1217,3.757,1357,7.244,1358,5.93,1359,5.467,1360,8.36]],["title/244",[1361,7.901]],["content/244",[30,3.412,46,1.99,47,2.54,105,2.611,120,2.47,212,3.46,241,3.368,267,2.503,308,4.161,411,1.757,611,3.814,657,3.436,716,3.46,873,3.171,970,3.413,1147,3.009,1205,5.482,1355,4.961,1358,4.061,1362,5.265,1363,4.403,1364,5.725,1365,4.735,1366,8.122,1367,4.909,1368,4.061,1369,5.725,1370,3.971,1371,5.725,1372,5.725,1373,5.725,1374,5.265]],["title/245",[1375,7.901]],["content/245",[47,2.76,291,3.726,411,1.753,474,3.495,716,4.897,1091,4.647,1196,4.766,1370,7.114,1376,7.021,1377,8.102,1378,8.102,1379,8.102,1380,7.021]],["title/246",[1381,7.901]],["content/246",[30,2.8,47,2.682,69,2.593,241,4.556,265,7.243,411,1.675,600,5.494,657,3.277,716,4.681,875,3.696,1091,5.716,1196,4.556,1370,5.372,1382,7.745,1383,6.712,1384,7.745]],["title/247",[1385,7.901]],["content/247",[47,2.286,69,2.844,291,3.086,411,1.837,970,5.063,1147,4.465,1386,9.715,1387,5.46,1388,7.811,1389,7.811,1390,8.494,1391,7.811]],["title/248",[1392,6.246,1393,4.54]],["content/248",[239,1.886,241,5.078,291,3.137,657,4.515,716,5.218,978,7.14,1370,7.402,1387,5.549,1393,6.275,1394,8.634]],["title/249",[1370,4.332,1395,6.246]],["content/249",[47,2.362,403,4.708,411,2.332,875,4.188,1196,5.163,1328,7.259,1370,6.088,1380,7.606,1396,8.777,1397,8.777]],["title/250",[8,0.727,1398,5.165,1399,5.165]],["content/250",[291,3.299,411,1.964,714,6.779,1091,5.208,1196,6.474,1370,6.298,1380,7.868,1400,9.08]],["title/251",[1401,7.901]],["content/251",[30,3.282,47,2.444,629,4.921,1147,4.773,1383,7.868,1386,8.349,1391,8.349,1393,6.6,1402,6.298]],["title/252",[1403,7.901]],["content/252",[6,3.109,8,1.297,30,1.983,47,2.481,69,1.837,105,1.764,239,1.199,267,3.444,291,3.35,411,1.704,434,1.935,514,2.639,545,3.492,657,3.9,751,6.828,970,3.271,1091,3.147,1189,3.227,1196,3.227,1205,4.576,1306,4.22,1370,3.805,1383,4.755,1393,3.988,1404,9.219,1405,5.487,1406,10.076,1407,5.487,1408,5.487]],["title/253",[1409,7.901]],["content/253",[46,2.86,47,3.051,69,2.755,471,4.72,611,5.481,849,4.663,1091,4.72,1147,4.326,1189,4.84,1205,6.015,1410,8.229,1411,8.229]],["title/254",[1412,7.901]],["content/254",[47,3.238,69,2.844,291,3.086,342,5.301,657,4.47,1147,4.465,1376,7.361,1413,6.756]],["title/255",[1321,5.413,1414,6.246]],["content/255",[47,2.531,69,3.148,657,3.979,1147,4.943,1370,6.522,1374,8.648,1413,7.48]],["title/256",[1321,5.413,1415,6.246]],["content/256",[47,2.815,69,2.799,267,3.654,420,7.42,643,3.897,732,5.203,1091,6.548,1147,5.498,1416,8.36]],["title/257",[1417,6.246,1418,5.744]],["content/257",[69,3.093,611,6.154,849,5.236,1091,5.299,1205,5.365,1302,8.496,1419,9.239,1420,9.239]],["title/258",[1421,7.901]],["content/258",[30,3.173,47,2.902,545,3.89,657,4.561,732,5.463,1147,4.614,1196,5.163,1205,5.097,1422,8.777]],["title/259",[1423,7.901]],["content/259",[47,2.577,69,3.205,1147,5.033,1196,5.632,1205,5.56,1370,6.641]],["title/260",[1418,5.744,1424,6.246]],["content/260",[30,3.022,69,2.799,411,1.808,420,5.93,703,4.983,732,5.203,1091,5.999,1147,4.394,1205,4.855,1393,6.076,1425,8.36,1426,6.649,1427,8.36]],["title/261",[1329,5.413,1428,6.246]],["content/261",[47,2.734,403,5.448,411,2.197,516,4.42,545,3.536,657,3.376,732,4.967,970,4.757,1328,6.599,1334,9.341,1352,7.338,1353,5.535,1429,7.98]],["title/262",[1328,4.271,1329,4.476,1430,5.165]],["content/262",[47,2.215,403,4.413,411,1.78,420,5.837,516,4.558,643,3.836,732,6.446,970,4.905,1091,4.72,1196,4.84,1353,5.707,1393,5.981,1426,6.545,1431,7.567]],["title/263",[1432,6.246,1433,5.744]],["content/263",[47,2.25,69,2.799,516,4.63,545,3.705,657,3.537,714,6.241,732,5.203,875,3.989,970,4.983,1189,4.917,1196,4.917,1353,5.798,1389,7.687,1434,8.36]],["title/264",[1336,4.049,1393,3.2,1433,4.049,1435,4.403]],["content/264",[47,2.215,69,2.755,411,1.78,516,4.558,575,5.59,714,6.143,732,5.122,970,4.905,1196,6.092,1353,5.707,1393,5.981,1426,6.545,1431,7.567,1436,8.229]],["title/283",[492,2.957,1081,4.085]],["content/283",[35,4.032,105,2.49,198,3.583,239,1.692,486,4.681,849,4.389,851,4.749,909,5.261,1038,4.556,1081,5.065,1437,7.122,1438,6.405,1439,5.63,1440,7.122,1441,4.681,1442,6.405,1443,7.122,1444,4.198]],["title/284",[1445,7.901]],["content/284",[198,2.487,270,2.913,411,1.163,540,2.697,599,2.673,615,3.761,624,2.178,679,2.092,849,3.046,857,2.883,872,3.204,912,4.3,968,3.011,1038,4.566,1081,3.515,1112,4.275,1120,2.977,1438,4.445,1441,4.692,1446,4.832,1447,4.445,1448,4.942,1449,3.651,1450,4.942,1451,4.658,1452,5.375,1453,5.375,1454,5.375,1455,5.375,1456,5.375,1457,5.375,1458,4.658,1459,5.375,1460,3.813,1461,5.375,1462,4.275,1463,3.651,1464,5.375,1465,4.445,1466,3.515,1467,4.658,1468,5.375,1469,4.275]],["title/285",[329,2.742,1463,3.508,1470,4.271]],["content/285",[47,1.143,75,3.013,105,2.548,137,2.467,197,1.672,290,2.625,329,3.459,357,2.946,361,2.278,411,1.409,434,1.498,443,2.17,486,1.996,577,2.73,578,2.605,584,3.494,615,1.753,624,1.722,679,2.536,716,2.567,822,5.621,1008,2.467,1038,4.661,1054,3.013,1069,3.267,1077,2.567,1081,4.261,1098,3.013,1120,2.353,1153,3.425,1307,3.513,1387,2.73,1437,3.906,1441,2.567,1444,2.302,1460,4.621,1463,4.425,1470,5.388,1471,5.991,1472,6.554,1473,4.248,1474,2.83,1475,3.681,1476,3.513,1477,3.906,1478,3.681,1479,3.088,1480,3.906,1481,5.646,1482,4.248,1483,4.248,1484,4.248,1485,3.267,1486,3.906,1487,3.906]],["title/286",[312,2.022,329,2.337,1063,2.438,1463,2.991]],["content/286",[22,2.504,47,2.238,105,2.673,190,2.996,290,2.384,312,2.718,329,3.142,402,4.198,411,1.28,599,2.944,615,2.442,657,2.504,822,4.198,849,4.712,851,3.629,877,3.394,983,3.942,1038,3.481,1054,4.198,1062,5.344,1063,3.278,1093,3.354,1441,3.577,1463,4.02,1470,4.894,1472,6.876,1487,5.442,1488,5.918,1489,4.105,1490,4.894,1491,4.418,1492,4.105,1493,5.442,1494,5.442,1495,5.129]],["title/287",[1492,5.48]],["content/287",[16,0.59,22,1.797,47,1.143,105,2.095,198,1.965,267,1.857,270,2.302,273,2.83,329,2.255,360,1.965,361,3.494,411,1.714,443,2.17,473,2.605,486,1.996,488,1.809,540,2.131,584,3.494,599,2.113,615,1.753,647,3.649,657,3.76,679,1.654,822,3.013,851,2.605,863,3.013,866,3.906,911,2.467,916,2.17,941,2.83,968,2.38,1002,3.379,1008,2.467,1035,3.681,1062,5.094,1077,2.567,1081,4.261,1085,2.532,1099,2.83,1153,2.233,1387,2.73,1441,2.567,1444,2.302,1460,3.013,1471,3.906,1472,3.513,1474,2.83,1478,3.681,1481,3.681,1495,3.681,1496,3.513,1497,3.513,1498,3.513,1499,2.946,1500,3.681,1501,4.248,1502,4.248,1503,4.248,1504,2.83,1505,3.513,1506,4.248,1507,3.681,1508,3.681]],["title/288",[1509,4.917]],["content/288",[33,3.402,105,2.199,138,2.913,198,3.165,329,3.631,434,2.412,486,4.314,599,3.402,615,2.823,859,2.663,1002,5.441,1008,3.972,1440,6.29,1441,4.134,1463,4.646,1489,4.744,1496,7.595,1510,6.84,1511,5.441,1512,4.556,1513,6.29,1514,6.84,1515,4.325,1516,6.84,1517,5.927,1518,5.261]],["title/289",[72,1.788,198,2.89]],["content/289",[16,1.331,22,2.66,33,1.489,46,1.04,47,1.327,72,2.086,86,1.235,110,1.192,125,1.89,187,2.176,204,1.892,205,2.391,213,1.924,290,1.206,342,1.502,360,2.281,370,1.677,373,3.284,375,3.605,411,0.647,412,3.337,417,1.05,434,1.056,442,2.694,462,1.3,489,2.123,539,1.406,544,1.958,546,1.658,584,3.909,599,1.489,600,2.123,613,1.355,619,1.696,624,1.998,654,3.224,694,2.176,755,3.443,822,2.123,846,2.123,849,1.696,851,1.835,873,1.658,877,1.717,891,2.302,964,2.381,998,1.696,1035,2.594,1038,2.9,1043,1.835,1068,3.284,1133,1.924,1358,3.497,1444,1.622,1460,3.497,1474,1.994,1475,2.594,1481,2.594,1492,2.076,1495,2.594,1496,5.198,1515,3.117,1519,2.993,1520,2.993,1521,2.993,1522,2.302,1523,3.792,1524,2.993,1525,2.381,1526,2.993,1527,1.835,1528,2.381,1529,1.924,1530,2.381,1531,2.993,1532,2.475,1533,2.993,1534,2.993,1535,2.993,1536,2.993,1537,1.994,1538,2.993,1539,1.835]],["title/290",[72,1.788,657,2.643]],["content/290",[16,1.395,26,0.671,27,0.962,33,0.622,35,0.651,46,0.435,47,1.062,50,2.267,53,1.577,67,1.327,72,2.695,73,1.783,80,1.163,96,1.682,99,0.877,105,0.739,110,0.498,111,0.437,112,0.368,120,1.373,122,1.674,125,2.402,138,0.533,197,1.254,198,1.063,203,0.962,204,4.381,209,0.575,214,0.888,269,0.678,270,0.678,275,0.678,290,0.925,312,1.055,329,0.664,338,0.651,342,0.628,356,0.746,357,0.868,358,1.476,360,1.063,361,3.716,365,0.622,374,0.612,375,1.826,397,0.746,411,0.996,412,0.664,420,0.888,433,0.834,434,0.81,442,0.536,474,0.991,478,1.105,480,0.834,484,0.868,486,0.588,505,0.962,514,0.602,519,1.232,544,0.818,547,0.693,548,0.962,581,0.746,584,4.057,610,0.804,615,1.628,629,0.678,643,1.484,645,0.727,657,3.851,679,0.894,726,0.888,808,0.791,817,0.791,822,0.888,849,2.236,857,1.708,864,0.868,868,0.791,873,3.634,905,1.43,912,0.693,914,1.767,929,2.258,936,0.617,954,1.502,966,0.779,971,1.035,975,1.317,983,0.834,989,0.767,994,0.868,1031,0.718,1038,0.736,1049,1.69,1054,0.888,1059,0.995,1062,2.961,1063,1.763,1068,1.206,1082,0.804,1083,1.334,1087,1.873,1099,0.834,1105,0.746,1110,1.767,1114,1.035,1122,2.759,1128,2.095,1148,0.791,1217,0.562,1387,2.046,1426,3.664,1439,0.91,1446,0.779,1460,0.888,1463,0.85,1474,1.53,1478,1.991,1490,1.035,1515,0.791,1527,0.767,1537,2.121,1539,0.767,1540,1.251,1541,1.151,1542,2.759,1543,1.251,1544,1.151,1545,1.251,1546,1.53,1547,0.934,1548,1.151,1549,1.151,1550,1.084,1551,2.633,1552,0.934,1553,0.868,1554,1.084,1555,0.934,1556,0.834,1557,1.715,1558,1.035,1559,0.995,1560,1.251,1561,1.67,1562,1.251,1563,1.151,1564,1.251,1565,1.084,1566,0.91]],["title/291",[72,1.788,534,5.413]],["content/291",[16,1.143,22,3.481,47,1.569,50,1.61,67,1.239,72,1.669,105,1.184,197,2.849,198,1.704,205,1.786,308,2.678,329,1.956,372,2.293,375,2.113,420,2.613,452,1.976,474,1.589,478,1.772,488,1.569,543,2.259,553,2.502,584,4.412,624,1.493,657,2.467,679,1.434,755,2.018,816,2.555,849,2.088,851,2.259,857,1.976,865,1.936,868,2.329,873,2.04,891,2.833,920,4.637,975,2.113,982,2.502,1002,2.93,1008,2.139,1033,2.088,1038,2.167,1043,2.259,1062,2.368,1128,1.956,1209,3.387,1426,4.637,1441,2.226,1460,2.613,1475,3.192,1492,2.555,1496,7.413,1518,4.484,1546,3.884,1557,2.75,1567,4.822,1568,3.192,1569,3.684,1570,5.83,1571,3.684,1572,5.361,1573,3.387,1574,2.678,1575,3.046,1576,3.684,1577,3.684,1578,3.387,1579,2.678,1580,3.046,1581,3.684]],["title/292",[876,3.583,1038,3.674]],["content/292",[16,1.377,33,2.278,46,2.398,47,1.857,53,2.098,72,2.376,73,2.566,125,1.789,138,1.95,204,2.896,209,2.104,361,2.457,365,4.128,478,2.203,489,6.552,519,2.457,584,4.954,657,4.705,849,2.596,872,2.73,876,2.627,936,2.259,966,2.851,1038,4.058,1062,6.945,1087,2.694,1114,3.788,1306,3.523,1441,2.768,1460,4.894,1518,3.523,1563,4.212,1582,4.212]],["title/293",[849,3.54,876,3.583]],["content/293",[3,2.582,16,1.455,73,3.353,138,2.549,197,3.299,402,5.944,420,6.859,478,2.879,534,5.187,584,3.21,657,2.532,671,4.321,703,3.568,849,5.937,865,4.405,873,3.315,876,3.433,1079,5.187,1087,3.521,1148,3.784,1441,3.617,1518,4.603,1561,4.35,1582,5.504,1583,7.706,1584,2.977]],["title/294",[72,1.478,198,2.39,1504,3.441]],["content/294",[16,0.704,22,2.143,26,1.479,47,1.363,71,2.716,72,2.521,74,4.862,76,2.805,99,2.047,105,1.628,156,1.994,197,1.994,198,4.49,199,3.255,361,3.987,484,3.513,553,3.44,615,2.09,630,2.689,654,3.312,657,2.143,720,2.87,865,2.662,868,3.202,952,4.189,966,3.152,989,3.105,1005,3.834,1008,2.941,1012,2.805,1017,4.029,1054,3.593,1062,3.255,1077,3.061,1080,4.778,1099,3.374,1151,3.781,1460,3.593,1522,3.895,1585,4.657,1586,6.442,1587,4.029,1588,4.189,1589,4.657]],["title/265",[1106,4.588]],["content/265",[67,2.605,96,3.639,99,2.133,198,4.611,239,1.692,374,4.873,679,3.88,1106,6.399,1590,4.978,1591,5.261,1592,5.494,1593,7.122,1594,7.745]],["title/266",[1591,4.243,1592,4.431]],["content/266",[16,0.832,22,2.532,50,2.617,96,3.826,99,1.648,198,4.474,209,3.849,267,2.617,361,3.21,411,1.295,449,2.769,613,3.793,995,3.279,1063,3.315,1064,4.95,1065,4.603,1132,4.95,1574,4.35,1592,6.859,1595,8.333,1596,7.692,1597,7.997,1598,5.985]],["title/267",[341,3.122,993,3.856,1060,3.582]],["content/267",[138,4.591,490,6.553,911,5.097,980,6.751,983,5.847,989,5.382,993,6.553,1060,6.088,1554,7.606,1599,5.097]],["title/268",[995,3.422,1600,6.246]],["content/268",[22,2.476,50,2.558,99,2.271,133,4.254,137,3.399,158,3.588,209,3.788,273,3.898,361,3.139,411,1.266,450,2.558,478,2.815,490,6.159,503,3.317,604,2.815,679,2.278,788,4.655,911,4.79,916,2.99,980,4.501,990,5.072,995,4.519,1110,4.501,1156,2.688,1441,3.537,1491,4.369,1528,4.655,1574,4.254,1601,7.586,1602,6.561,1603,5.382,1604,5.852,1605,5.852,1606,5.852]],["title/282",[110,2.488,1607,4.085]],["content/282",[3,1.578,28,1.76,46,1.271,47,0.985,80,1.852,86,3.687,95,5.109,96,2.63,107,2.485,110,4.505,120,2.501,125,1.504,187,4.214,239,0.799,342,1.835,403,1.962,411,0.791,415,1.983,439,2.025,442,2.485,467,1.852,474,1.578,481,1.789,483,1.76,488,1.558,540,1.835,545,3.632,584,3.863,604,1.76,615,2.972,916,3.68,936,1.804,1048,2.351,1136,2.537,1337,3.025,1546,2.437,1558,3.025,1607,7.273,1608,2.659,1609,2.813,1610,2.731,1611,1.76,1612,3.658,1613,3.658,1614,2.91,1615,3.658,1616,3.17,1617,2.485,1618,3.364,1619,3.658,1620,2.098,1621,3.658]],["title/296",[1622,6.534]],["content/296",[30,1.341,86,1.531,96,3.016,99,1.614,110,1.477,120,4.125,239,0.811,272,1.729,368,3.082,417,2.057,431,2.275,434,1.308,467,1.878,470,1.895,541,4.663,546,2.055,547,4.026,558,4.992,561,2.769,579,1.531,611,2.471,643,1.729,647,2.078,673,1.77,736,2.211,786,2.242,808,3.707,859,2.83,952,3.068,963,2.631,1015,2.275,1024,2.345,1032,3.215,1043,2.275,1103,2.853,1120,2.055,1125,2.951,1138,2.696,1189,2.182,1448,6.684,1463,2.52,1486,5.391,1546,2.471,1607,2.426,1608,5.283,1622,6.83,1623,4.066,1624,3.411,1625,2.951,1626,2.345,1627,3.215,1628,2.769,1629,5.863,1630,4.663,1631,3.215,1632,3.411,1633,3.71,1634,2.384,1635,3.411,1636,3.71,1637,3.71,1638,2.769]],["title/295",[1631,6.847]],["content/295",[26,0.967,96,1.956,99,0.912,110,3.084,120,2.31,125,0.859,205,1.607,211,2.35,239,1.17,269,1.796,370,1.856,397,1.975,464,3.072,467,2.711,488,1.411,522,1.949,541,6.159,550,1.9,558,4.075,562,3.799,584,1.777,604,1.594,611,2.207,622,1.62,624,1.343,671,3.476,673,1.581,736,1.975,786,2.002,808,2.095,850,1.796,859,2.625,916,2.736,963,3.799,978,2.74,1012,1.835,1049,1.759,1120,1.835,1189,1.949,1291,2.167,1463,5.774,1494,3.047,1546,2.207,1607,3.503,1608,4.9,1614,4.26,1623,2.298,1624,4.925,1631,5.842,1632,3.047,1639,2.408,1640,2.635,1641,4.429,1642,2.548,1643,3.313,1644,4.925,1645,3.047,1646,3.313,1647,3.313,1648,2.635,1649,5.356,1650,3.313,1651,3.313,1652,3.313,1653,3.047,1654,3.313,1655,2.129,1656,3.313,1657,2.871,1658,3.313,1659,3.313,1660,3.313,1661,2.871,1662,3.313,1663,3.313,1664,3.313]],["title/300",[1665,5.743]],["content/300",[16,1.36,18,3.812,50,2.677,96,4.313,99,2.345,209,2.813,374,2.995,397,3.651,495,2.642,514,2.946,521,4.572,604,4.709,613,4.431,846,4.344,872,3.651,912,3.392,1016,4.08,1060,4.248,1066,3.937,1106,3.557,1164,4.344,1214,4.452,1665,4.452,1666,4.71]],["title/301",[96,1.886,1666,3.972,1667,5.165]],["content/301",[16,1.161,26,2.441,96,3.82,99,2.302,443,4.271,550,4.795,558,5.052,578,5.125,604,4.021,1053,6.241,1128,4.438,1627,7.244,1668,8.36]],["title/302",[96,2.281,995,3.422]],["content/302",[]],["title/303",[1669,7.901]],["content/303",[]],["title/304",[1670,7.265]],["content/304",[16,0.892,96,3.943,99,2.423,374,3.141,604,5.194,613,2.907,988,4.363,995,3.519,1005,3.312,1015,3.938,1030,3.829,1068,2.433,1105,3.829,1120,3.557,1610,4.795,1627,5.566,1666,4.94,1670,8.092,1671,6.423,1672,4.279,1673,3.998,1674,6.423,1675,3.938,1676,6.423,1677,5.312]],["title/325",[121,3.122,338,2.689,374,2.526]],["content/325",[46,3.278,47,2.538,67,2.394,96,2.599,100,4.732,121,4.302,338,3.705,340,5.858,374,3.48,442,3.05,452,3.817,485,5.474,492,3.369,516,3.942,613,4.268,877,4.082,1051,5.474,1066,4.575,1574,5.173]],["title/326",[46,1.53,47,1.185,340,2.438,1051,3.386]],["content/326",[16,1.254,26,1.947,46,3.137,47,2.429,50,3.946,67,3.036,99,2.485,100,3.345,111,2.328,112,1.962,196,3.922,308,4.846,340,5.668,407,3.652,415,3.613,442,2.857,855,3.778,875,3.181,992,4.529,1033,3.778,1066,4.285,1465,5.514]],["title/327",[1574,5.743]],["content/327",[16,0.822,24,4.418,46,3.623,47,2.806,50,2.587,67,1.99,100,2.969,121,5.025,209,2.718,290,2.384,338,4.328,340,3.278,374,4.7,410,3.742,411,1.28,493,6.394,514,2.847,516,3.278,539,2.78,613,2.679,654,3.87,858,4.418,966,3.683,983,3.942,1033,3.354,1051,4.552,1229,4.105,1678,5.918,1679,5.918]],["title/306",[16,0.718,18,3.215,865,2.715]],["content/306",[16,1.633,18,5.556,96,3.978,99,2.458,1147,4.692,1214,6.488,1610,6.664]],["title/307",[865,4.153]],["content/307",[0,2.281,16,0.978,43,3.872,71,2.522,72,1.346,74,3.076,96,3.079,99,3.002,105,1.512,138,2.003,145,3.195,146,2.927,198,2.176,269,2.549,272,2.192,275,3.814,342,2.36,374,2.3,463,3.741,473,2.884,478,2.262,548,3.617,602,6.098,643,2.192,679,1.831,716,2.842,752,3.262,865,2.472,875,2.244,1005,3.629,1008,2.731,1065,3.617,1077,4.253,1101,3.076,1112,3.741,1120,2.605,1128,2.497,1147,2.472,1441,4.253,1442,3.889,1546,3.133,1584,2.339,1630,3.741,1680,3.741,1681,4.076,1682,4.325,1683,4.703]],["title/308",[99,1.72,995,3.422]],["content/308",[16,1.071,43,2.443,50,2.326,60,2.947,72,1.523,96,1.943,99,2.903,145,3.614,146,3.311,198,2.462,209,4.161,272,3.592,342,3.867,368,2.797,374,3.768,442,2.28,532,2.462,548,5.927,579,2.196,613,2.408,865,2.797,872,3.172,995,2.915,1008,3.09,1046,4.092,1049,2.825,1068,2.015,1078,2.48,1088,4.092,1493,4.893,1655,3.42,1684,4.893,1685,7.478,1686,2.98,1687,5.321]],["title/309",[16,0.718,96,1.886,1610,3.856]],["content/309",[16,1.427,53,2.47,96,3.447,100,2.873,111,2,112,1.685,114,2.555,138,2.438,342,2.873,375,3.284,449,3.758,535,5.265,543,3.51,547,3.171,604,2.754,613,2.591,671,4.867,679,2.229,703,3.413,872,3.413,912,3.171,1115,3.284,1214,4.161,1666,6.247,1672,3.814,1673,3.563,1688,4.403,1689,4.735,1690,5.725,1691,4.961,1692,5.725,1693,4.961,1694,3.62]],["title/310",[111,1.804,112,1.52,1115,2.962]],["content/310",[16,1.223,46,2.233,47,1.729,49,3.09,59,3.598,72,1.839,75,4.556,96,3.214,99,2.423,111,3.073,112,3.179,120,2.771,196,3.778,198,2.972,199,4.128,289,3.684,371,4.556,434,2.265,450,2.808,516,3.557,548,4.94,615,2.651,755,3.519,859,2.501,1021,4.669,1695,4.455]],["title/311",[16,0.718,53,1.571,1115,2.962]],["content/311",[]],["title/312",[16,0.718,99,1.422,1115,2.962]],["content/312",[16,0.892,26,1.875,45,3.115,46,2.233,47,2.369,53,1.954,99,2.764,114,2.866,132,4.556,133,4.669,138,2.735,340,3.557,365,3.195,455,3.778,471,3.684,472,4.061,546,3.557,608,5.109,671,4.538,936,3.167,1066,4.128,1078,2.994,1095,3.312,1137,4.279,1148,4.061,1164,4.556,1205,3.73,1358,4.556,1696,4.455]],["title/313",[16,0.533,49,1.845,99,1.056,196,2.257,1115,2.201]],["content/313",[16,1.045,45,3.649,49,3.619,99,2.992,114,3.358,138,3.204,156,2.962,196,4.426,434,2.653,671,5.043,875,3.59,936,3.71,1118,5.617,1358,5.337,1607,4.921,1696,5.218,1697,6.222,1698,7.524]],["title/314",[16,0.718,63,1.849,1115,2.962]],["content/314",[16,1.372,26,2.229,53,2.322,63,4.141,99,2.718,108,4.052,114,3.406,293,4.992,370,4.276,434,2.692,859,2.972,1066,4.906,1368,5.414,1695,5.294,1696,5.294]],["title/315",[16,0.718,180,2.639,1115,2.962]],["content/315",[16,1.045,99,2.072,105,3.145,114,3.358,181,4.849,434,2.653,850,4.078,916,3.844,1066,4.836,1095,3.88,1104,5.985,1176,5.012,1607,4.921,1699,6.286,1700,6.222,1701,5.218,1702,7.524]],["title/316",[16,0.718,1115,2.962,1703,5.165]],["content/316",[16,1.243,72,3.123,73,3.688,74,4.306,99,2.464,105,2.878,114,2.938,180,5.574,309,5.705,339,4.232,875,3.141,916,3.363,1033,5.072,1066,5.752,1092,6.682,1118,4.915,1147,3.461,1696,4.566,1704,6.584]],["title/317",[16,0.612,110,1.753,1115,2.525,1607,2.879]],["content/317",[16,0.95,26,2.682,72,1.958,96,2.498,138,2.913,358,4.396,370,3.831,434,2.412,671,3.527,916,5.297,936,3.373,1048,4.396,1066,4.396,1095,3.527,1358,4.852,1597,5.657,1607,6.006,1608,4.972,1655,4.396,1705,5.261,1706,4.325,1707,6.856,1708,6.84]],["title/318",[16,0.612,95,3.123,110,1.753,1115,2.525]],["content/318",[16,0.938,28,4.379,72,1.933,95,6.458,138,2.875,403,3.622,671,5.685,936,3.33,1048,4.34,1095,3.482,1148,4.269,1153,3.549,1607,7.21,1617,6.184,1706,4.269,1709,9.104,1710,5.041,1711,6.752,1712,6.752]],["title/305",[1699,5.078]],["content/305",[16,0.976,67,2.362,72,2.01,99,1.934,105,2.258,181,3.134,239,1.534,454,4.678,478,3.378,485,5.401,679,2.734,877,4.028,999,5.586,1009,5.401,1081,4.593,1093,3.98,1097,4.981,1147,3.691,1176,4.678,1439,5.104,1477,6.458,1527,4.306,1699,4.514,1713,4.678,1714,5.808,1715,5.586]],["title/319",[1062,3.32,1063,2.861,1699,3.32]],["content/319",[8,1.138,16,0.928,32,1.748,62,2.544,72,1.256,73,2.459,76,2.431,80,3.382,105,2.6,148,2.285,180,3.413,181,4.34,197,3.184,273,2.924,319,4.037,341,2.653,365,2.183,374,2.146,411,1.445,442,2.863,450,1.919,462,1.906,485,3.376,539,2.062,553,2.982,615,1.811,679,2.601,703,2.617,905,2.732,911,4.696,988,4.538,994,3.045,1062,2.821,1063,3.7,1064,3.63,1065,3.376,1068,1.663,1080,2.821,1097,3.114,1110,3.376,1122,5.789,1128,2.33,1491,3.277,1699,4.294,1716,3.114,1717,3.191,1718,4.39,1719,4.39]],["title/320",[1097,4.431,1699,4.015]],["content/320",[8,0.452,16,1.162,22,1.359,32,2.08,50,1.404,52,2.182,73,4.259,74,2.101,99,0.884,105,1.679,120,1.386,180,1.641,181,1.433,197,1.265,270,1.741,289,1.842,356,1.915,374,1.571,434,1.842,449,3.054,450,1.404,464,1.842,470,2.668,539,1.509,545,1.423,558,1.941,604,4.312,642,2.031,851,1.969,865,1.688,873,1.779,877,1.842,917,1.889,1030,4.533,1033,1.82,1068,3.579,1075,3.705,1086,1.915,1093,1.82,1097,2.278,1100,3.114,1106,1.865,1147,3.47,1155,4.32,1156,3.031,1176,2.14,1212,2.398,1217,1.444,1350,2.182,1529,2.065,1602,2.555,1625,2.555,1638,2.398,1696,2.228,1699,2.065,1700,6.288,1701,2.228,1715,2.555,1720,5.223,1721,4.155,1722,3.212,1723,3.212,1724,3.416,1725,3.212,1726,4.155,1727,4.155,1728,2.14,1729,3.212,1730,2.954,1731,2.065,1732,3.212,1733,2.954,1734,2.555]],["title/321",[72,1.478,180,2.639,181,2.305]],["content/321",[181,4.123,442,3.96,540,4.636,622,4.518,679,3.597,1097,6.554,1699,5.938,1735,8.496]],["title/322",[1160,5.743]],["content/322",[16,1.386,69,2.124,96,2.317,99,1.747,105,3.454,138,2.702,180,4.459,181,2.832,197,2.498,371,6.191,434,3.078,486,2.981,495,2.737,516,3.515,613,2.872,671,3.272,679,2.47,1066,4.079,1147,4.588,1160,4.612,1523,4.881,1735,5.835,1736,3.336,1737,4.31,1738,6.346]],["title/323",[450,3.454]],["content/323",[62,2.28,63,2.999,105,2.694,158,3.67,181,2.671,226,3.058,239,1.308,272,2.79,371,4.246,411,1.295,442,2.565,445,3.315,495,2.582,516,3.315,750,4.35,755,3.279,891,6.445,912,3.315,1125,4.761,1138,4.35,1147,5.083,1160,4.35,1584,2.977,1693,5.187,1736,3.146,1739,7.262,1740,7.706,1741,5.692,1742,4.151,1743,5.985,1744,4.95]],["title/324",[1694,4.995]],["content/324",[8,1.469,62,2.639,181,4.972,197,2.728,239,1.514,434,2.444,523,4.532,544,4.532,615,3.823,622,4.53,1097,4.916,1164,4.916,1694,4.382,1745,5.174,1746,6.93,1747,6.93,1748,6.93,1749,6.93,1750,6.93,1751,6.93]],["title/332",[1005,4.074]],["content/332",[]],["title/328",[1015,4.844]],["content/328",[35,3.427,105,2.117,239,1.438,272,3.069,343,3.873,373,4.386,411,1.936,434,2.322,439,2.299,452,4.8,519,3.531,982,4.472,993,4.915,994,4.566,1005,4.615,1008,3.823,1015,4.037,1031,3.776,1046,5.063,1084,4.785,1492,4.566,1512,4.386,1525,5.237,1752,6.584,1753,5.063,1754,6.584,1755,5.705,1756,5.445]],["title/329",[1525,4.968,1756,5.166]],["content/329",[8,1.803,10,1.533,75,2.148,99,0.834,131,1.781,181,3.275,190,1.533,196,1.781,212,4.436,226,1.547,415,1.641,417,1.746,442,1.298,480,2.017,503,1.716,511,2.784,519,1.624,520,4.159,545,1.342,579,2.054,637,2.356,818,2.26,848,1.265,855,1.716,872,1.805,875,1.445,912,1.677,941,2.017,943,2.624,989,1.856,1015,4.972,1024,1.914,1068,1.147,1119,2.26,1120,2.756,1129,2.624,1139,4.116,1187,2.328,1308,2.1,1442,2.504,1523,3.827,1525,6.45,1706,1.914,1756,4.116,1757,5.827,1758,3.028,1759,3.028,1760,4.116,1761,2.784,1762,7.339,1763,2.784,1764,3.028,1765,3.028,1766,3.028,1767,3.028,1768,3.028]],["title/330",[343,3.674,373,4.161]],["content/330",[26,2.001,67,1.527,105,1.46,239,0.992,270,2.461,286,2.167,343,4.856,373,6.126,375,2.605,411,1.483,412,4.383,417,1.594,423,2.784,450,1.985,484,4.754,486,2.133,519,2.435,624,1.84,857,2.435,875,2.167,909,4.656,914,3.492,941,5.499,968,2.544,987,2.97,994,3.149,1015,2.784,1054,3.221,1099,3.025,1139,3.755,1148,4.333,1441,2.744,1446,5.138,1497,3.755,1511,3.612,1512,3.025,1523,6.35,1579,3.301,1634,2.919,1769,3.492,1770,3.612,1771,3.612,1772,4.541,1773,4.541,1774,4.541,1775,4.541,1776,4.176,1777,4.541,1778,4.541]],["title/331",[1015,3.83,1779,5.744]],["content/331",[26,1.788,46,2.96,47,2.292,48,3.158,99,1.686,122,4.476,212,3.702,274,2.608,286,2.922,289,3.513,343,3.603,411,2.118,486,2.877,854,3.603,931,5.632,992,4.16,1005,3.158,1015,6.003,1068,2.32,1072,4.71,1077,3.702,1213,4.71,1525,4.871,1528,4.871,1539,3.755,1756,5.065,1779,5.632,1780,6.125,1781,6.125,1782,5.632]],["title/335",[99,2.175]],["content/335",[]],["title/336",[105,2.008,329,3.316]],["content/336",[0,2.241,26,1.349,45,3.368,46,2.414,47,1.869,67,1.554,76,2.559,99,1.272,125,1.801,132,4.926,133,5.048,156,3.285,161,4.249,163,4.249,197,1.819,210,2.793,239,1.01,329,2.453,343,2.718,361,2.478,368,2.429,394,2.504,411,0.999,445,2.559,449,3.86,456,2.619,643,2.154,832,3.358,994,3.205,995,2.531,1005,5.128,1082,4.464,1084,3.358,1085,2.754,1094,3.205,1132,3.821,1140,5.048,1512,3.078,1579,3.358,1596,3.675,1665,3.358,1706,2.921,1753,3.554,1763,4.249,1783,2.97,1784,3.278,1785,4.621,1786,6.944]],["title/337",[1005,2.663,1063,2.861,1077,3.122]],["content/337",[6,3.431,26,1.768,43,2.78,49,2.912,99,2.679,105,1.947,196,3.561,197,2.384,198,2.801,267,2.647,411,1.31,486,2.844,488,2.578,553,4.112,637,2.866,983,4.033,990,5.246,998,3.431,1005,3.122,1009,4.656,1062,3.891,1063,4.679,1064,5.007,1077,3.659,1080,3.891,1086,3.609,1110,4.656,1128,3.214,1147,3.182,1319,5.567,1474,4.033,1557,4.52,1634,3.891,1787,6.054,1788,6.054]],["title/338",[1063,3.46,1789,4.804]],["content/338",[26,1.853,46,3.467,47,2.685,50,2.774,76,3.515,99,1.747,120,2.737,132,4.501,133,6.344,156,3.436,197,2.498,361,3.403,643,4.068,657,2.685,856,5.499,1005,4.5,1063,3.515,1132,5.248,1139,5.248,1140,4.612,1402,4.401,1597,7.218,1784,4.501,1790,5.835,1791,6.346]],["title/339",[156,2.034,1063,2.861,1574,3.754]],["content/339",[46,3.399,47,2.632,99,2.072,156,3.851,289,4.315,462,3.267,643,4.559,679,2.929,905,4.683,983,5.012,1039,6.919,1054,5.337,1063,6.019,1229,5.218,1561,5.469]],["title/340",[45,2.505,99,1.422,1063,2.861]],["content/340",[33,4.168,45,5.542,46,2.913,47,2.256,67,2.013,76,4.641,99,3.036,105,1.924,138,2.549,197,2.356,289,3.433,473,3.67,643,2.79,983,3.987,1063,5.356,1078,2.79,1147,3.146,1164,4.246,1561,4.35,1574,6.091,1701,4.151,1789,4.603,1792,5.985]],["title/341",[47,1.185,99,1.212,1063,2.438,1574,3.2]],["content/341",[33,3.689,46,3.977,47,3.08,99,2.042,361,5.197,462,3.221,643,4.517,1033,4.204,1049,3.938,1063,5.367,1789,5.705,1793,5.9,1794,7.418]],["title/333",[609,4.775]],["content/333",[]],["title/334",[609,3.775,1795,4.54]],["content/334",[16,0.926,156,2.625,239,2.236,291,2.422,411,1.952,439,3.152,441,2.202,494,4.529,498,7.465,509,4.441,515,4.977,519,3.576,539,3.132,609,6.185,1489,4.624,1795,6.561,1796,5.303,1797,6.131,1798,5.303,1799,5.777,1800,4.977,1801,5.777]],["title/342",[609,3.775,1022,3.888]],["content/342",[16,1.161,156,3.291,239,2.285,291,3.037,439,3.653,494,5.678,498,6.913,519,4.483,609,6.322,1022,5.203,1798,6.649]],["title/343",[609,3.775,1802,4.968]],["content/343",[16,1.265,108,3.585,117,3.699,156,2.659,239,2.251,291,2.453,411,1.461,439,3.597,456,3.827,494,4.587,498,5.584,519,3.622,539,3.172,609,6.225,850,3.66,1020,4.908,1798,5.371,1800,5.041,1801,5.852,1802,5.371,1803,3.148,1804,3.418]],["title/345",[111,2.182,112,1.839]],["content/345",[16,1.01,42,2.573,72,1.062,76,2.055,96,1.355,110,1.477,111,2.539,112,2.431,137,2.154,138,2.496,239,1.281,291,1.348,327,3.495,397,2.211,434,2.067,439,2.047,449,1.716,478,2.82,488,1.58,513,2.426,516,2.055,532,1.716,613,2.653,637,1.756,673,1.77,703,2.211,911,2.154,976,2.384,985,1.756,989,2.275,1012,2.055,1030,3.495,1031,2.128,1033,3.322,1049,1.969,1058,2.52,1081,2.426,1136,2.573,1153,3.082,1156,3.338,1176,2.471,1207,2.769,1217,3.267,1350,2.52,1508,3.215,1541,3.411,1611,2.82,1620,2.128,1686,2.078,1695,4.066,1699,2.384,1713,3.905,1716,4.159,1726,4.663,1805,3.71,1806,5.863,1807,3.215,1808,3.411,1809,2.853,1810,2.631,1811,2.853,1812,3.068,1813,2.769,1814,3.215,1815,2.52,1816,3.71]],["title/346",[1811,6.076]],["content/346",[8,0.46,16,1.256,33,1.627,45,1.587,47,1.799,72,0.937,76,2.937,80,1.656,96,1.195,99,1.46,100,1.642,105,1.052,110,2.662,111,1.143,112,1.968,180,1.672,239,0.715,241,1.925,269,1.773,270,1.773,272,1.525,274,1.393,291,1.926,327,1.95,339,3.408,410,2.069,411,0.708,429,3.009,434,1.154,442,1.402,449,1.514,477,3.079,478,1.574,481,1.6,505,2.516,532,1.514,539,1.537,543,2.006,545,2.35,613,2.4,629,1.773,673,1.561,859,1.274,933,2.603,1043,3.251,1097,2.321,1099,2.18,1100,3.161,1114,5.528,1115,1.877,1128,1.737,1156,1.503,1160,2.378,1211,3.009,1212,2.443,1240,2.269,1350,2.222,1368,2.321,1592,2.321,1611,2.55,1655,2.103,1672,2.18,1673,2.036,1686,1.833,1699,2.103,1811,2.516,1817,2.443,1818,3.009,1819,2.706,1820,3.272,1821,4.742,1822,5.528,1823,3.272,1824,2.706,1825,4.453,1826,3.272,1827,2.443,1828,2.706,1829,4.078,1830,2.516,1831,2.835,1832,1.95]],["title/347",[1207,5.898]],["content/347",[16,1.346,42,3.019,72,2.576,98,2.631,105,1.4,110,2.644,111,2.81,112,2.649,124,2.669,125,2.086,210,2.631,239,0.951,286,2.077,327,2.595,361,3.56,397,2.595,434,1.535,450,1.903,473,2.669,474,1.878,539,2.045,582,2.528,615,2.739,622,2.129,646,3.773,679,1.695,855,2.467,857,2.335,912,2.411,1012,2.411,1030,2.595,1031,2.497,1056,4.709,1068,1.649,1078,2.029,1081,2.847,1083,2.528,1141,3.019,1153,2.288,1556,4.422,1565,3.773,1599,2.528,1626,2.752,1713,2.9,1804,2.204,1833,3.088,1834,4.353,1835,4.353,1836,6.638,1837,3.25,1838,4.003,1839,2.288]],["title/348",[1695,5.48]],["content/348",[110,4.249,111,2.752,112,2.714,239,1.199,273,3.655,274,2.336,282,3.892,428,4.538,464,3.147,478,3.79,516,3.039,542,4.755,556,4.22,615,2.264,671,2.829,679,2.136,786,4.762,851,3.364,911,3.186,975,3.147,1012,3.039,1115,3.147,1466,5.153,1479,3.988,1599,3.186,1641,6.516,1695,6.394,1807,4.755,1813,4.096,1828,4.538,1840,5.727,1841,5.487,1842,5.487]],["title/349",[1843,7.265]],["content/349",[16,1.263,33,1.885,43,1.74,50,1.657,72,1.085,96,2.177,105,2.37,111,2.919,112,2.972,124,2.324,137,2.201,239,0.828,241,2.229,267,1.657,286,1.808,290,1.527,327,2.259,397,2.259,411,1.29,434,1.336,450,2.606,464,2.174,478,1.823,488,1.614,506,2.396,516,2.099,599,1.885,604,1.823,613,1.715,623,2.524,673,1.808,702,2.688,732,2.359,752,2.628,848,1.583,849,2.148,859,1.475,875,1.808,909,2.574,929,2.688,1019,3.485,1030,4.982,1056,2.688,1065,2.915,1068,1.436,1077,2.29,1078,1.767,1081,2.478,1128,2.012,1153,1.992,1491,2.829,1523,2.915,1539,2.324,1573,3.485,1599,2.201,1713,2.524,1741,2.574,1844,3.79,1845,3.485,1846,3.79,1847,2.915,1848,3.79,1849,3.79,1850,3.79,1851,3.485,1852,3.134,1853,3.284,1854,3.79,1855,3.485]],["title/344",[111,1.804,112,1.52,148,2.689]],["content/344",[1856,8.377]],["title/350",[111,1.804,112,1.52,981,3.215]],["content/350",[16,1.428,34,2.755,86,1.827,110,1.763,111,1.546,112,2.393,120,1.91,180,4.638,190,5.706,360,2.048,411,1.758,417,3.186,474,1.91,613,2.003,617,3.653,671,4.192,678,3.14,936,2.183,953,5.347,1012,2.452,1156,4.169,1208,3.521,1217,3.653,1611,5.137,1726,3.521,1737,4.567,1825,4.478,1857,3.404,1858,3.836]],["title/351",[86,2.578,1208,4.968]],["content/351",[8,1.09,86,4.547,110,3.969,407,4.243,411,1.675,417,2.718,523,5.065,643,3.61,647,4.338,748,6.712,916,3.957,1105,4.617,1160,5.63,1208,6.16,1695,5.372,1859,7.122]],["title/352",[53,1.9,453,5.166]],["content/352",[6,3.176,7,3.665,8,1.431,22,2.371,118,3.715,158,4.904,205,2.717,370,3.139,396,3.665,404,4.457,411,1.73,419,3.886,449,2.593,478,2.695,495,2.417,523,3.665,544,3.665,547,3.103,979,4.31,981,4.978,1860,5.603,1861,5.603,1862,5.603,1863,5.603,1864,5.153,1865,5.603,1866,3.886,1867,5.603,1868,5.153,1869,5.603,1870,5.603,1871,5.603,1872,5.603,1873,4.634,1874,3.806,1875,5.603,1876,3.975]],["title/353",[113,5.263]],["content/353",[8,1.552,17,3.46,22,3.059,35,2.539,46,1.695,47,1.313,111,1.703,112,1.436,113,5.739,125,1.265,239,1.066,247,5.979,312,2.24,372,3.036,411,1.055,434,1.72,439,1.703,474,2.104,481,2.385,524,4.729,750,3.545,941,3.249,1024,3.084,1038,2.869,1078,2.274,1093,2.764,1556,3.249,1640,3.879,1810,3.46,1864,4.485,1874,4.911,1877,3.641,1878,3.751,1879,7.23,1880,3.545,1881,7.23,1882,3.751,1883,4.485,1884,7.23,1885,4.877,1886,4.877,1887,4.877,1888,3.879,1889,4.485]],["title/354",[118,2.057,424,3.856,1890,5.165]],["content/354",[6,4.592,8,1.443,113,6.832,118,3.227,360,3.749,411,2.218,424,6.049,615,3.344,688,5.889,961,5.747,1866,5.62,1889,7.451,1891,8.102]],["title/355",[1883,7.265]],["content/355",[6,3.778,8,1.7,22,2.821,205,4.377,338,3.471,396,4.36,417,2.34,624,3.658,750,6.561,907,4.846,1443,6.131,1626,4.215,1892,6.131,1893,4.977,1894,5.514,1895,8.3,1896,7.822,1897,8.3]],["title/356",[1898,7.265]],["content/356",[8,1.68,112,1.742,158,3.629,208,6.394,272,2.759,405,5.129,417,3.854,423,3.629,483,2.847,539,2.78,543,3.629,579,3.431,617,2.66,1021,4.302,1032,5.129,1167,3.528,1196,3.481,1387,3.804,1599,3.437,1894,4.894,1898,5.442,1899,6.876,1900,5.442,1901,5.918,1902,5.442,1903,5.442]],["title/357",[1003,6.847]],["content/357",[1904,10.127,1905,7.024,1906,10.127]],["title/358",[1907,7.265]],["content/358",[8,1.582,205,5.451,624,4.556,1908,9.404]],["title/359",[8,0.727,917,3.038,1586,4.476]],["content/359",[8,1.732,22,2.313,53,1.034,190,1.721,205,4.69,290,1.369,401,4.145,417,2.407,434,1.928,450,1.486,462,1.476,467,1.721,506,2.149,617,1.527,624,2.78,859,1.323,917,5.412,953,2.703,975,3.136,1112,2.703,1148,3.457,1153,2.874,1232,5.027,1311,2.811,1586,9.906,1900,6.307,1909,3.125,1910,4.205,1911,4.659,1912,3.399,1913,3.399,1914,3.399,1915,3.399,1916,3.399,1917,7.859,1918,3.399,1919,4.521,1920,3.399,1921,2.614]],["title/360",[67,2.657]],["content/360",[8,1.059,67,4.111,105,2.419,211,5.337,329,3.994,338,3.917,417,2.64,539,3.534,563,4.836,579,3.105,1086,4.485,1167,4.485,1241,6.222,1874,5.111,1880,5.469,1922,5.337]],["title/361",[1736,4.153]],["content/361",[22,2.69,35,2.142,47,2.091,67,2.138,105,1.323,111,1.437,112,1.211,118,1.639,200,3.566,209,1.89,210,3.843,282,2.919,329,2.185,338,2.142,411,1.68,417,2.726,442,1.764,483,1.979,495,1.775,531,2.39,547,2.279,579,2.624,637,1.948,642,2.602,649,3.784,859,1.602,865,2.163,920,3.273,966,2.561,981,2.561,986,3.784,1086,3.79,1167,2.453,1241,3.403,1367,2.487,1497,3.403,1517,3.566,1572,3.784,1736,5.472,1769,3.165,1874,5.277,1922,5.511,1923,4.89,1924,4.621,1925,4.115,1926,4.115,1927,4.115,1928,4.115,1929,3.273,1930,3.273,1931,3.784,1932,3.784,1933,4.115,1934,3.165,1935,4.115,1936,4.115]],["title/362",[495,3.408]],["content/362",[53,2.356,111,2.705,112,2.28,239,1.692,495,4.753,579,3.196,981,4.821,1713,5.159,1910,8.474,1937,7.664,1938,8.241,1939,7.243]],["title/363",[495,2.695,1713,4.161]],["content/363",[5,2.297,8,1.353,67,1.44,100,2.149,111,1.496,112,1.261,156,1.686,190,2.168,205,2.077,270,2.321,411,0.926,474,1.847,495,4.698,539,2.012,540,2.149,617,2.946,624,3.898,637,3.771,1078,1.996,1086,2.553,1167,2.553,1217,1.925,1444,2.321,1467,7.733,1611,2.06,1713,5.305,1717,3.113,1866,4.547,1910,3.294,1937,7.398,1938,3.542,1939,3.113,1940,3.938,1941,3.197,1942,6.556,1943,4.283,1944,8.924,1945,3.938,1946,2.909,1947,5.681,1948,4.283]],["title/364",[495,2.695,1939,4.54]],["content/364",[16,0.832,110,2.384,111,2.09,112,1.762,190,3.03,367,3.521,411,1.295,495,4.757,539,2.812,581,3.568,624,2.426,637,2.834,875,2.856,1014,3.67,1086,3.568,1167,3.568,1176,3.987,1444,3.244,1713,5.582,1874,4.066,1910,4.603,1937,6.445,1939,7.029,1940,5.504,1941,4.468,1947,5.187,1949,4.603,1950,5.985,1951,5.504,1952,5.187,1953,5.504]],["title/365",[1167,4.71]],["content/365",[67,2.394,111,2.486,112,2.095,156,2.802,338,3.705,380,4.5,411,1.539,495,4.068,531,4.133,671,3.67,966,4.43,981,4.43,1095,3.67,1167,5.621,1367,4.302,1874,4.834,1880,5.173,1954,7.117,1955,9.43,1956,6.168,1957,7.117,1958,7.117]],["title/366",[749,4.332,1938,5.166]],["content/366",[8,1.425,624,4.104,1959,6.509]],["title/367",[111,1.538,112,1.296,190,2.229,1217,1.979]],["content/367",[110,3.745,190,4.761,1012,5.208,1156,5.162,1217,4.226,1218,5.394]],["title/368",[917,3.674,1085,3.723]],["content/368",[16,1.585,112,2.634,156,2.592,180,3.363,190,3.333,270,3.568,397,3.925,417,3.141,462,2.859,545,2.918,917,5.981,1085,3.925,1095,4.615,1156,4.67,1217,2.959,1736,4.704,1821,4.67,1960,6.505]],["title/369",[5,2.77,205,2.505,1217,2.321]],["content/369",[5,5.522,8,1.039,16,0.697,22,3.123,190,2.54,205,2.433,411,1.085,442,2.15,464,2.877,495,3.185,597,3.699,624,2.033,647,2.81,679,1.953,702,3.558,749,3.479,917,4.342,1128,2.663,1156,2.304,1217,3.936,1291,3.281,1476,4.149,1557,3.745,1706,3.172,1745,3.745,1853,4.347,1938,4.149,1961,4.613,1962,5.017,1963,5.017,1964,6.788,1965,5.017,1966,5.017,1967,5.017,1968,4.347,1969,5.017,1970,5.017,1971,5.017,1972,6.397,1973,5.017,1974,5.017]],["title/370",[16,0.718,291,1.877,673,2.465]],["content/370",[3,2.846,8,1.261,16,1.112,22,1.827,53,2.006,59,4.484,62,1.644,72,1.236,110,3.569,111,1.508,112,2.842,114,1.927,180,2.206,190,2.186,191,5.2,290,1.74,291,2.397,342,3.31,411,0.934,434,2.326,483,2.077,539,2.028,546,2.391,615,1.782,624,2.674,642,2.73,848,1.804,877,2.476,908,2.775,1012,2.391,1068,1.636,1086,2.574,1217,3.597,1556,2.876,1640,3.434,1975,4.318,1976,2.365,1977,6.597,1978,3.97,1979,6.597,1980,4.318,1981,3.742,1982,4.318,1983,4.318]],["title/371",[16,0.612,417,1.545,1736,2.314,1960,3.2]],["content/371",[8,1.395,16,1.067,53,1.229,62,2.017,63,1.446,67,1.359,72,1.516,80,2.046,96,0.863,109,3.902,110,1.609,111,0.825,112,0.695,114,1.803,118,0.941,120,1.743,125,2.729,144,4.447,204,2.555,226,3.203,270,2.87,327,1.408,358,2.598,365,3.505,407,1.294,411,0.511,415,1.28,417,3.287,450,1.767,528,1.879,543,1.448,579,1.668,619,2.29,647,1.323,692,3.954,857,1.267,859,0.92,907,1.717,975,2.318,1021,1.717,1030,1.408,1078,1.101,1093,1.339,1365,1.954,1466,1.545,1547,4.68,1685,4.447,1736,3.295,1840,1.717,1880,1.717,1921,1.817,1984,2.362,1985,6.269,1986,4.041,1987,2.362,1988,4.258,1989,6.269,1990,4.447,1991,1.518,1992,1.764,1993,2.362,1994,3.017,1995,2.362,1996,4.041,1997,4.041,1998,2.362,1999,2.362,2000,1.879]],["title/377",[111,1.538,112,1.296,190,2.229,1611,2.118]],["content/377",[6,1.456,7,5.877,8,1.623,16,1.188,22,3.802,47,0.692,53,2.015,69,2.863,96,0.938,110,2.638,112,0.756,114,1.937,156,1.012,180,2.879,190,3.747,210,4.003,270,1.393,411,1.219,417,0.902,450,1.123,483,1.236,523,1.681,531,1.492,617,1.155,624,1.042,637,1.217,642,1.625,671,1.325,905,1.599,914,1.976,1055,2.839,1095,1.325,1156,1.18,1187,1.976,1218,1.474,1365,2.125,1367,1.553,1611,4.789,1645,2.363,1736,2.282,1825,5.35,1829,1.976,1874,1.746,1897,7.863,1956,2.227,1960,1.868,1976,1.408,1991,1.652,2001,5.269,2002,2.363,2003,4.341,2004,4.341,2005,4.341,2006,4.341,2007,2.363,2008,2.125,2009,2.044,2010,2.57,2011,2.227,2012,2.57,2013,2.363,2014,2.227]],["title/378",[1815,5.367]],["content/378",[5,2.943,6,3.109,7,6.59,8,1.109,16,0.762,22,3.334,69,3.086,96,2.004,190,2.778,210,4.762,365,2.729,396,3.588,450,2.399,495,2.367,539,2.577,617,3.541,622,2.683,637,2.597,1078,2.558,1291,6.029,1620,4.519,1681,4.755,1991,5.064,2001,9.102,2014,4.755,2015,5.487,2016,5.045,2017,5.487]],["title/379",[1611,3.005,1825,4.161]],["content/379",[3,1.863,8,1.126,16,1.517,22,1.827,72,1.888,110,2.627,111,2.304,112,2.356,190,2.186,272,2.013,291,1.569,342,3.31,360,3.052,407,2.365,417,1.515,513,2.824,533,3.97,545,1.913,579,1.782,671,2.226,673,4.276,808,2.73,905,2.687,917,2.54,1012,2.391,1078,2.013,1085,2.574,1095,2.226,1107,2.61,1368,3.063,1451,3.742,1611,4.644,1626,2.73,1736,3.468,1815,4.481,1825,5.332,1829,3.321,1922,3.063,1930,3.434,1960,3.138,2013,3.97,2018,4.318,2019,4.679,2020,4.318,2021,4.318]],["title/380",[450,3.454]],["content/380",[8,1.705,16,0.46,47,0.892,53,1.629,62,1.262,72,0.948,80,2.711,109,2.654,110,3.084,114,2.39,125,0.859,190,1.677,290,1.335,342,1.662,396,2.167,397,1.975,474,2.31,546,1.835,579,2.782,617,2.407,624,2.171,642,2.095,657,2.266,736,1.975,859,1.29,917,1.949,1009,2.548,1012,1.835,1049,1.759,1055,2.167,1291,5.064,1611,4.375,1705,2.548,1825,5.663,1930,2.635,1956,2.871,1991,4.333,1992,3.999,2011,2.871,2014,4.641,2022,3.313,2023,3.313,2024,3.313,2025,3.313,2026,3.313,2027,2.871,2028,3.313,2029,3.313,2030,2.871,2031,7.743,2032,3.313,2033,5.356,2034,3.313,2035,5.356,2036,3.313]],["title/381",[16,0.868,1611,3.005]],["content/381",[8,1.143,16,1.673,112,3.316,122,3.009,125,1.485,190,2.898,417,2.009,545,2.537,579,2.363,671,2.952,905,3.563,917,3.368,1085,3.413,1095,2.952,1107,3.46,1156,4.335,1611,4.54,1626,3.62,1736,4.269,1829,4.403,1922,4.061,1960,4.161,1976,3.136,2019,4.061]],["title/382",[450,3.454]],["content/382",[3,2.011,8,1.573,16,1.387,62,1.775,67,1.568,72,2.001,112,2.058,114,3.119,125,1.813,204,2.947,357,3.233,360,2.157,411,1.008,434,1.644,526,3.708,851,2.858,873,2.582,1051,5.376,1093,2.642,1156,3.21,1291,5.485,1611,4.034,1706,2.947,1731,4.493,1810,3.307,1874,3.166,1976,4.595,1991,2.996,2001,3.708,2037,4.662,2038,4.662,2039,4.662,2040,4.287,2041,4.662,2042,4.662,2043,4.662,2044,4.287,2045,4.662,2046,3.855,2047,4.662]],["title/383",[180,3.191,1611,3.005]],["content/383",[8,1.161,16,1.576,112,3.219,180,5.299,190,2.963,417,2.054,545,2.594,579,2.415,671,3.018,905,3.643,917,3.442,1085,3.489,1095,3.018,1107,3.537,1156,4.387,1611,4.595,1626,3.7,1736,4.336,1829,4.501,1922,4.151,1960,4.254,1976,3.206,2019,4.151]],["title/384",[450,3.454]],["content/384",[0,3.87,8,1.429,62,3.039,114,4.533,118,3.178,180,4.077,320,7.338,365,3.969,367,4.694,1291,5.219,1611,3.838,1741,5.42,1976,4.371,1981,6.915,2048,7.98]],["title/385",[1874,4.243,2049,5.744]],["content/385",[8,1.508,16,1.334,180,4.906,338,3.808,411,2.077,434,2.58,1078,3.41,1611,5.156,1825,4.873,1874,7.281,2050,6.727,2051,4.873,2052,7.315,2053,7.315]],["title/372",[111,1.804,112,1.52,450,2.258]],["content/372",[]],["title/373",[1717,4.54,1866,4.332]],["content/373",[16,1.031,80,3.755,86,3.061,112,2.183,114,3.31,407,4.063,417,2.603,430,6.428,434,2.616,514,3.568,624,3.006,654,4.851,859,2.888,1156,3.407,1217,3.334,1717,7.044,1817,5.538,1866,5.145,1976,4.063,2054,7.418,2055,6.821]],["title/374",[550,2.525,648,4.049,2056,3.502,2057,3.2]],["content/374",[8,1.571,16,0.737,35,1.703,62,2.928,63,3.023,72,0.937,86,1.35,109,1.288,111,1.143,112,2.263,125,1.375,209,1.503,226,3.415,269,2.874,270,2.874,286,2.53,290,1.318,372,2.036,407,1.792,417,1.148,481,3.269,613,2.4,617,1.47,624,3.665,1068,1.239,1217,1.47,1611,1.574,1706,2.069,1821,2.321,1876,2.321,1937,6.496,1976,2.904,1988,4.541,1991,2.103,2056,2.603,2058,3.272,2059,6.147,2060,5.302,2061,3.272,2062,5.302,2063,3.009,2064,5.302,2065,3.009,2066,2.835,2067,4.876,2068,3.272,2069,2.835,2070,3.272,2071,3.009,2072,3.272,2073,3.272,2074,3.272,2075,6.147,2076,3.272,2077,3.272,2078,6.685,2079,3.272,2080,3.272]],["title/375",[2056,4.968,2081,6.246]],["content/375",[8,1.565,62,2.333,63,2.192,72,1.753,86,2.527,109,2.411,112,2.507,125,1.588,270,3.319,417,2.149,579,3.514,617,2.752,624,2.482,637,2.899,1100,3.651,1217,3.827,1620,3.513,1976,3.355,2056,4.871,2069,5.307,2082,5.065,2083,9.79,2084,6.125,2085,6.125,2086,6.125,2087,5.632,2088,6.125,2089,6.125]],["title/376",[998,3.54,1710,4.663]],["content/376",[3,1.438,8,1.601,16,1.08,43,1.531,46,1.159,50,1.458,67,1.121,86,1.376,112,0.981,114,2.402,156,1.313,209,3.109,367,1.961,417,2.376,434,1.898,495,1.438,496,1.936,539,1.566,617,2.419,624,3.457,688,5.649,690,6.367,859,1.298,929,2.365,998,1.889,1030,1.987,1041,2.489,1051,7.381,1068,1.263,1217,1.498,1306,2.564,1388,3.066,1584,1.658,1611,1.604,1710,7.456,1937,4.14,1939,2.423,1952,2.889,1976,2.949,2040,4.95,2090,3.334,2091,3.334,2092,3.334,2093,3.334,2094,5.383,2095,5.383,2096,3.334,2097,5.383,2098,3.334,2099,3.334,2100,5.383,2101,5.383,2102,5.383]],["title/386",[111,1.804,112,1.52,2049,4.75]],["content/386",[86,3.563,96,3.153,156,3.399,360,3.994,434,3.045,546,4.782,975,4.952,2050,7.939,2051,5.751,2103,7.939,2104,7.482,2105,8.634]],["title/387",[111,1.804,112,1.52,450,2.258]],["content/387",[]],["title/388",[109,2.459,2106,6.246]],["content/388",[8,1.704,50,2.741,53,1.907,109,3.408,125,1.626,226,3.203,286,2.992,417,2.2,617,3.89,624,2.541,1068,3.279,1100,3.738,1217,2.818,1611,3.016,1825,4.177,1894,5.186,1976,3.435,1991,4.03,2107,5.186,2108,8.656,2109,7.158,2110,5.434,2111,5.766]],["title/389",[8,0.727,2056,4.108,2112,5.165]],["content/389",[8,1.69,16,1.353,53,1.845,62,2.847,63,2.171,109,3.33,112,1.14,125,1.004,209,1.779,226,3.099,241,2.278,247,3.203,272,1.806,274,1.649,286,2.894,342,1.943,372,2.411,375,3.479,417,1.359,434,1.366,513,2.533,540,1.943,613,1.753,617,2.726,624,2.458,671,1.997,673,1.848,679,1.508,1068,1.467,1217,1.741,1539,2.375,1611,3.595,1737,2.631,1825,2.58,1837,2.892,1856,3.081,1976,2.122,1988,2.631,1991,2.49,1992,2.892,2059,5.577,2063,6.874,2065,3.562,2066,3.357,2067,5.577,2075,3.562,2110,3.357,2113,3.873,2114,3.562]],["title/390",[111,1.804,112,1.52,981,3.215]],["content/390",[111,3.621,112,3.052,239,2.007,274,2.913,434,3.656,439,2.389,613,4.157,909,4.646,913,5.657,981,5.716,1031,3.923,1156,3.141,1164,4.852,1217,3.074,1509,4.257,1547,5.107,1599,3.972,1611,3.29,2001,5.441]],["title/391",[2115,7.901]],["content/391",[8,1.545,16,1.335,53,1.8,190,2.996,269,3.207,290,2.384,407,3.242,423,3.629,449,3.847,450,2.587,597,2.266,613,2.679,615,2.442,617,2.66,624,3.37,936,2.918,1068,2.242,1100,4.956,1156,3.818,1217,4.319,1561,4.302,1728,3.942,1737,4.02,1976,4.554,2116,6.394,2117,5.442]],["title/392",[1611,3.8]],["content/392",[3,2.443,8,1.438,16,1.304,49,2.724,53,1.723,67,1.905,72,1.621,110,2.256,114,4.187,120,2.443,190,2.867,291,2.058,407,3.103,450,2.476,461,3.103,613,2.563,615,2.337,1611,5.196,1737,3.847,1825,3.773,1833,4.017,1866,5.59,1893,6.017,1991,3.64,1992,4.228,2007,7.412,2118,4.908,2119,4.908,2120,5.271]],["title/393",[917,3.674,1085,3.723]],["content/393",[3,1.748,8,1.32,16,1.204,32,1.614,46,1.408,47,1.091,48,2.089,49,3.022,53,1.232,55,4.971,62,1.543,63,1.45,67,2.587,72,1.798,109,2.473,110,1.614,111,2.194,112,2.551,114,1.808,118,2.502,120,1.748,122,3.302,125,1.629,190,2.051,226,3.93,270,2.196,342,3.152,411,0.876,673,2.998,917,3.695,936,1.998,1068,1.535,1085,2.415,1611,3.022,1736,4.044,1737,2.752,1825,4.185,1880,2.945,1988,2.752,1990,4.456,1991,2.604,1992,3.025,2071,5.777,2118,3.511,2119,3.511,2121,4.052,2122,4.052,2123,4.052]],["title/394",[495,3.408]],["content/394",[16,1.126,111,2.83,112,2.385,190,4.102,239,1.77,291,2.944,411,1.753,452,4.346,495,4.424,1056,5.747,1217,3.641,1611,3.897,2030,7.021,2124,7.021,2125,6.445]],["title/395",[2125,6.284]],["content/395",[3,2.029,8,1.613,16,0.978,22,1.99,50,2.056,105,2.711,114,4.177,138,2.003,180,3.595,190,2.381,308,5.115,312,2.16,339,3.023,365,2.339,410,2.974,474,2.029,516,3.898,539,2.209,597,1.801,643,2.192,1611,4.82,2001,7.445,2126,4.703,2127,4.703,2128,4.703,2129,6.485,2130,6.471,2131,4.703,2132,4.703,2133,4.703,2134,6.471,2135,4.703,2136,4.703,2137,4.703,2138,4.325]],["title/396",[2030,6.847]],["content/396",[8,1.14,16,1.425,45,1.738,46,1.246,47,0.964,49,2.744,53,1.09,59,2.007,62,1.365,63,1.283,109,2.797,110,1.427,112,1.055,114,1.599,125,0.929,191,3.63,226,3.63,434,3.119,622,3.961,624,4.156,1217,4.609,1579,2.605,1817,2.675,1866,2.485,1894,4.717,1899,2.964,1976,5.618,1988,2.434,2110,4.943,2111,6.534,2114,5.245,2139,3.584,2140,3.584,2141,8.101,2142,5.704,2143,5.704,2144,5.704,2145,3.295,2146,3.295,2147,5.704,2148,3.584]],["title/413",[111,1.804,112,1.52,1167,3.079]],["content/413",[5,4.106,8,1.315,16,1.064,22,1.701,26,1.174,105,1.293,109,1.583,111,1.404,112,1.838,156,1.583,190,2.036,209,2.868,239,0.879,375,2.306,380,2.542,417,1.411,450,1.758,478,1.934,480,4.16,489,2.852,495,4.453,519,2.157,545,1.782,550,2.306,611,2.679,637,1.904,673,2.98,1030,2.397,1068,1.523,1086,2.397,1147,2.114,1167,2.397,1217,1.807,1229,2.789,1444,2.179,1499,4.331,1556,2.679,1584,3.106,1626,2.542,1713,2.679,1717,2.923,1941,3.002,1947,6.635,2149,3.093,2150,3.698,2151,4.021,2152,7.656,2153,5.412,2154,6.245,2155,6.245,2156,4.021,2157,4.021,2158,4.021,2159,3.325,2160,3.698]],["title/414",[118,3.146]],["content/414",[]],["title/415",[2159,6.534]],["content/415",[8,1.487,69,2.844,118,3.383,209,3.901,424,6.341,579,3.505,597,3.253,1628,6.341,2161,8.494,2162,8.494,2163,7.679]],["title/416",[2164,7.265]],["content/416",[6,4.522,8,1.429,69,2.671,396,5.219,597,3.056,1340,5.66,2165,10.158,2166,6.599,2167,7.338,2168,7.98,2169,9.341,2170,7.98,2171,9.341]],["title/417",[2172,7.901]],["content/417",[8,1.561,69,2.632,118,3.13,209,3.61,401,4.751,597,3.01,961,5.576,1951,7.228,2163,7.313,2173,7.861,2174,8.826,2175,7.861,2176,7.861]],["title/418",[2177,7.901]],["content/418",[8,1.487,69,2.844,209,5.281,401,5.134,597,3.253,961,6.025,2178,8.494,2179,7.811,2180,8.494,2181,8.494]],["title/419",[2182,7.901]],["content/419",[8,1.529,55,4.315,69,2.519,113,5.012,118,2.996,401,4.547,597,2.881,608,5.985,961,5.337,2163,7.899,2183,9.781,2184,9.781,2185,7.524,2186,7.524,2187,6.919]],["title/420",[2188,7.901]],["content/420",[8,1.235,69,2.938,118,3.495,597,3.361,2163,7.836,2187,8.071,2189,8.777,2190,10.781,2191,8.777]],["title/421",[2192,7.901]],["content/421",[8,1.235,69,2.938,118,3.495,597,3.361,2163,7.836,2193,8.777,2194,10.781,2195,8.777,2196,8.777]],["title/422",[1736,4.153]],["content/422",[]],["title/423",[2197,7.901]],["content/423",[8,1.278,69,3.04,1736,5.786,1922,7.807,1934,6.983,2198,8.349,2199,8.349]],["title/424",[2159,6.534]],["content/424",[8,1.195,22,3.594,47,2.286,69,2.844,209,3.901,579,3.505,597,3.253,1736,6.045,1924,6.174,2200,8.494,2201,6.341]],["title/425",[2202,7.901]],["content/425",[8,1.249,22,4.592,47,3.058,69,2.177,531,3.776,597,2.49,917,3.825,1736,5.705,1876,6.295,1923,5.001,1924,6.45,2198,5.979,2199,5.979,2201,6.625,2203,7.69,2204,5.635,2205,6.502]],["title/426",[2206,7.901]],["content/426",[8,1.259,22,4.828,47,2.936,69,2.204,597,2.521,908,6.535,1736,6.329,1923,5.063,1924,6.505,2201,6.682,2203,7.756,2204,5.705]],["title/427",[2207,7.901]],["content/427",[8,1.189,22,4.98,47,2.619,69,2.027,191,3.093,597,2.318,611,4.033,1736,5.114,1923,7.483,1924,7.653,2201,7.86,2203,5.246,2204,7.32,2208,6.054,2209,8.448,2210,8.448]],["title/428",[2211,7.901]],["content/428",[8,1.568,22,3.92,47,2.493,67,2.331,69,2.32,411,1.499,531,4.024,597,2.654,624,2.809,1736,5.856,1907,6.373,1923,5.33,1924,6.734,2201,5.174,2212,6.93,2213,6.93,2214,6.93,2215,6.93]],["title/429",[2216,7.901]],["content/429",[8,1.176,22,4.83,67,2.811,69,2.799,597,3.201,1736,6.001,1924,6.076,2201,7.809,2217,8.36]],["title/430",[2218,7.901]],["content/430",[8,1.059,22,4.598,47,2.925,50,3.289,69,2.519,597,2.881,611,5.012,1049,3.994,1341,5.111,1736,5.712,1923,5.787,1924,7.109,2201,5.617,2219,7.524]],["title/431",[67,2.657]],["content/431",[67,3.906,563,6.386,1880,7.222]],["title/432",[2220,7.901]],["content/432",[8,1.527,67,3.398,69,2.177,417,2.282,449,3.008,490,8.103,579,2.683,597,2.49,617,3.988,657,4.274,1467,9.406,1876,4.612,2221,10.103,2222,6.502,2223,6.502,2224,3.825]],["title/433",[2159,6.534]],["content/433",[8,1.487,47,2.286,67,3.867,69,2.844,209,3.901,597,3.253,617,3.817,619,4.814,2225,8.494,2226,8.494]],["title/434",[2164,7.265]],["content/434",[6,4.389,8,1.402,67,2.605,69,2.593,396,5.065,597,2.966,1340,5.494,2166,9.112,2167,7.122,2169,9.164,2171,9.164,2224,4.556,2227,9.966]],["title/435",[2228,7.901]],["content/435",[6,4.814,8,1.487,67,3.867,69,2.844,396,5.555,597,3.253,1340,6.025,1922,6.025,2229,8.494,2230,8.494]],["title/436",[2231,7.901]],["content/436",[8,1.628,67,3.68,69,2.555,434,2.692,597,2.923,1301,7.019,1946,5.185,2232,7.633,2233,7.633,2234,7.633,2235,7.633,2236,9.872,2237,9.872]],["title/437",[2238,7.901]],["content/437",[8,1.249,33,3.234,67,3.65,69,2.177,411,1.406,417,3.114,434,2.293,531,3.776,579,2.683,597,2.49,624,2.635,752,4.51,822,4.612,1055,4.253,1466,5.804,1895,5.979,1929,5.172,2224,5.943,2239,6.502,2240,6.502,2241,5.635,2242,5.979,2243,6.502,2244,6.502]],["title/438",[2242,7.265]],["content/438",[8,1.389,67,3.891,69,2.555,417,3.465,434,2.692,547,4.227,597,2.923,617,3.43,822,5.414,2224,6.436,2245,7.633,2246,7.633,2247,7.633]],["title/439",[2248,7.901]],["content/439",[8,1.717,67,3.116,69,2.32,118,3.69,597,2.654,1137,4.616,2224,4.076,2249,6.93,2250,6.93,2251,9.265,2252,9.265,2253,6.93,2254,10.245,2255,6.93]],["title/440",[2256,6.847]],["content/440",[]],["title/441",[2257,7.901]],["content/441",[8,1.529,67,2.53,69,2.519,105,2.419,308,5.469,401,5.911,597,2.881,617,3.381,1014,4.613,2129,7.522,2224,4.426,2256,6.52,2258,7.524,2259,5.617,2260,7.524,2261,7.524,2262,7.524]],["title/442",[2263,7.901]],["content/442",[6,4.326,8,1.389,67,2.567,69,2.555,339,4.906,396,4.992,401,5.967,597,2.923,617,4.436,1340,5.414,2129,7.593,2224,4.49,2259,7.37,2264,7.633,2265,7.633]],["title/443",[2266,7.901]],["content/443",[8,1.539,67,1.968,69,1.959,105,1.882,308,4.254,401,4.986,495,2.525,597,2.241,599,2.911,642,3.7,1014,3.588,1240,4.059,1685,4.151,2129,6.344,2224,3.442,2256,5.072,2259,6.159,2267,5.852,2268,5.072,2269,8.249,2270,5.852,2271,9.553,2272,5.852,2273,8.249,2274,5.852,2275,5.852,2276,5.852,2277,5.852,2278,5.852,2279,5.852]],["title/444",[367,4.647]],["content/444",[118,3.679,367,5.435,411,1.998,495,3.986,496,5.365,1026,6.898,1241,7.641,2134,8.496]],["title/445",[2280,7.901]],["content/445",[8,1.106,69,2.632,105,2.527,118,3.13,367,6.527,597,3.01,876,6.364,1896,8.718,1972,6.812,2281,7.861,2282,10.061,2283,7.861]],["title/446",[2284,7.901]],["content/446",[6,4.455,8,1.416,22,3.326,69,2.632,118,3.13,367,6.527,396,5.141,597,3.01,876,6.364,1981,6.812,2285,10.061,2286,7.861]],["title/447",[2287,7.901]],["content/447",[8,1.646,69,2.632,367,4.624,417,2.759,597,3.01,907,5.714,961,5.576,2153,6.812,2163,5.714,2268,6.812,2288,7.861,2289,7.861,2290,7.861,2291,7.861,2292,7.861]],["title/448",[2293,7.901]],["content/448",[8,1.619,22,3.183,32,2.996,69,2.519,118,2.996,367,6.392,417,2.64,597,2.881,2153,6.52,2163,5.469,2268,6.52,2294,7.524,2295,7.524,2296,7.524,2297,7.524,2298,7.524]],["title/449",[2299,7.265]],["content/449",[6,4.663,8,1.457,69,2.755,96,3.005,118,4.125,367,6.667,396,5.382,597,3.151,1340,5.837,2300,8.229,2301,8.229]],["title/450",[290,3.183]],["content/450",[]],["title/451",[2302,7.901]],["content/451",[8,0.95,16,0.938,22,2.857,69,3.048,96,2.466,99,1.859,111,2.358,112,2.68,290,2.721,431,4.14,480,4.498,545,2.992,558,4.081,615,2.787,963,4.79,1012,3.74,1078,4.244,1092,5.041,1539,4.14,1821,4.79,2011,5.852,2303,6.752,2304,9.104,2305,5.041,2306,5.584]],["title/452",[72,2.261]],["content/452",[]],["title/453",[1444,3.385,2307,6.246]],["content/453",[8,1.364,16,1.59,69,3.244,72,2.123,120,3.2,125,3.158,204,4.69,597,2.84,2308,9.691,2309,6.821,2310,6.428]],["title/454",[1444,3.385,2311,6.246]],["content/454",[8,1.074,16,1.665,69,2.555,72,2.185,120,3.293,125,3,545,3.383,597,2.923,643,3.558,1171,5.414,2309,7.019,2312,7.633,2313,7.633]],["title/455",[1444,3.385,2314,6.246]],["content/455",[8,1.215,46,3.709,47,2.872,69,2.89,204,5.458,597,3.306,2315,8.634,2316,8.634,2317,9.814]],["title/456",[2318,7.901]],["content/456",[8,1.347,69,3.205,125,2.483,2319,9.575,2320,9.575,2321,8.297]],["title/457",[1444,3.385,2322,6.246]],["content/457",[8,1.602,16,1.489,69,3.215,114,3.264,125,3.065,417,2.567,597,2.801,1095,3.772,1876,5.189,1960,5.317,1991,4.702,2323,7.315,2324,6.727]],["title/458",[1444,3.385,2325,6.246]],["content/458",[8,1.176,16,1.453,69,2.799,72,2.393,120,3.606,125,3.102,358,5.373,597,3.201,2326,8.36,2327,7.244]],["title/459",[1444,3.385,2328,6.246]],["content/459",[8,1.613,16,1.422,69,3.022,72,1.908,114,2.975,120,2.876,125,2.972,358,4.285,417,2.34,597,2.553,1095,3.438,1148,4.215,1876,6.403,1960,4.846,1991,4.285,2327,5.777,2329,6.667,2330,6.667]],["title/460",[2331,7.901]],["content/460",[8,1.351,16,1.489,35,3.808,69,2.449,125,1.897,342,3.67,365,3.638,597,2.801,637,4.546,1736,3.845,1994,5.461,2119,9.289,2327,6.339,2332,7.315,2333,7.315,2334,7.315,2335,5.189]],["title/461",[1444,3.385,2336,6.246]],["content/461",[8,1.339,16,0.894,22,3.32,47,1.732,55,2.398,60,3.564,62,2.988,63,3.596,67,1.406,68,3.844,69,2.154,72,1.842,120,1.803,125,2.035,158,2.563,268,2.687,290,1.684,360,2.977,411,0.904,452,2.242,473,4.811,597,1.601,615,1.725,617,1.879,865,2.198,873,2.315,1033,2.369,1078,1.949,1413,3.325,1489,6.112,1736,3.383,1988,4.371,1990,4.565,2337,4.181,2338,4.181,2339,4.181,2340,4.181,2341,4.181,2342,3.844,2343,4.181,2344,6.777,2345,3.623,2346,3.844,2347,3.457,2348,3.844]],["title/462",[1444,3.385,2346,5.744]],["content/462",[8,1.123,16,1.411,62,3.039,69,2.671,72,2.908,120,3.442,125,2.898,226,4.077,597,3.056,1489,5.535,2344,6.137,2349,7.98,2350,7.98]],["title/463",[1444,3.385,2347,5.166]],["content/463",[617,4.383,637,4.617,1078,4.546,1990,6.917,2351,8.968]],["title/464",[1444,3.385,2351,5.744]],["content/464",[8,1.49,10,2.424,16,1.184,60,2.652,63,3.789,69,1.603,72,2.042,120,2.066,125,2.449,211,5.059,405,4.15,417,2.503,579,1.976,597,1.834,613,3.228,617,3.83,657,3.018,1489,3.321,1988,4.845,1990,5.059,2224,2.817,2342,4.403,2344,3.683,2352,4.789,2353,7.132,2354,4.789,2355,8.523,2356,4.789,2357,8.523,2358,4.789,2359,4.845]],["title/465",[1444,3.385,2360,6.246]],["content/465",[8,1.421,16,0.991,22,3.018,47,1.289,55,2.747,60,3.95,63,3.38,69,2.388,72,2.042,120,2.066,125,2.21,158,2.936,290,1.929,360,2.216,411,1.036,473,2.936,480,3.19,597,1.834,615,1.976,617,3.205,865,2.517,873,2.652,1078,2.232,1087,2.817,1489,4.947,1736,2.517,1988,5.789,1990,6.046,2344,5.486,2345,4.15,2347,3.96,2361,4.403,2362,4.789,2363,6.559,2364,4.789,2365,4.789,2366,4.789,2367,4.403,2368,4.789]],["title/466",[1444,3.385,2348,5.744]],["content/466",[8,1.461,16,0.878,22,2.674,47,1.099,55,3.625,60,3.5,63,3.369,67,1.373,69,2.588,72,1.809,120,1.762,125,2.005,158,2.504,290,1.645,360,1.889,411,0.883,417,2.713,473,2.504,480,2.72,579,2.608,597,1.564,615,1.685,617,1.835,865,2.146,873,3.5,1078,1.904,1087,2.402,1489,4.383,1736,2.146,1988,6.761,1990,7.061,2344,4.86,2345,5.477,2347,3.377,2361,3.755,2363,5.811,2367,8.003,2369,4.083,2370,4.083,2371,4.083]],["title/467",[440,5.263]],["content/467",[]],["title/468",[2372,7.901]],["content/468",[5,5.23,431,5.979,743,6.917,1905,6.764,2373,8.968]],["title/469",[2373,7.265]],["content/469",[8,1.281,69,2.261,312,4.73,374,4.452,401,6.225,411,1.461,597,2.586,734,7.242,743,6.458,780,5.584,782,5.584,960,5.852,972,7.529,2163,6.618,2374,9.104,2375,6.752,2376,6.752,2377,6.209]],["title/470",[2378,7.901]],["content/470",[5,5.23,431,5.979,743,6.917,1905,6.764,2379,8.968]],["title/471",[2379,7.265]],["content/471",[5,4.154,47,2.682,49,3.725,99,2.133,105,2.49,112,2.933,630,4.112,859,3.88,868,4.897,992,5.261,1025,5.957,1078,3.61,1905,5.372,2305,5.782,2306,6.405,2380,7.122]],["title/472",[2380,7.265]],["content/472",[8,1.32,47,2.525,69,1.896,105,3.473,113,5.369,138,2.412,312,3.701,373,5.369,374,2.769,401,5.671,411,1.225,597,2.169,734,4.505,743,6.656,747,6.666,780,4.684,782,4.684,972,6.666,1358,5.717,2145,5.208,2381,9.383,2382,8.06,2383,5.664]],["title/473",[2384,7.901]],["content/473",[8,1.389,50,3.337,69,2.555,100,3.83,312,5.025,403,4.094,469,5.698,597,2.923,617,3.43,1191,6.312,2324,7.019,2377,7.019,2385,7.633,2386,7.633,2387,7.633,2388,7.633,2389,7.633]],["title/474",[63,2.828]],["content/474",[]],["title/475",[1444,3.385,2390,6.246]],["content/475",[8,1.215,63,3.819,69,2.89,125,3.004,212,5.218,385,6.867,597,3.306,2391,8.634,2392,8.634]],["title/476",[110,3.146]],["content/476",[]],["title/477",[2393,7.901]],["content/477",[6,2.843,8,1.449,16,1.026,69,2.471,86,2.07,110,4.288,111,2.578,112,2.173,118,3.488,120,3.185,209,2.304,226,2.563,329,2.663,372,3.122,396,3.281,402,3.558,452,2.691,495,2.164,523,3.281,540,2.517,556,3.858,597,1.921,624,2.033,750,5.366,1078,2.339,1217,2.254,1611,2.413,1976,4.044,2394,4.613,2395,4.613,2396,4.613,2397,5.017,2398,5.017,2399,5.017,2400,5.017,2401,5.017,2402,5.017,2403,5.017]],["title/478",[2299,7.265]],["content/478",[6,3.512,8,1.496,16,1.193,69,2.074,86,2.557,96,2.263,110,4.235,111,2.998,112,2.527,118,2.468,120,2.673,226,3.166,239,1.354,396,4.053,402,4.395,597,2.373,624,2.511,703,3.694,981,3.857,1217,2.785,1611,2.981,1976,4.703,2394,5.698,2395,5.698,2396,5.698,2404,6.197]],["title/479",[2405,7.901]],["content/479",[]],["title/480",[2406,7.901]],["content/480",[8,1.376,34,4.683,69,2.519,209,4.991,423,5.997,483,3.619,597,2.881,808,4.757,1642,8.358,2407,7.524,2408,7.524,2409,7.524,2410,10.867]],["title/481",[2411,7.901]],["content/481",[8,1.235,69,2.938,209,5.359,419,6.088,423,5.382,597,3.361,1903,9.914,2412,8.777]],["title/482",[2413,7.901]],["content/482",[8,1.443,69,2.712,209,5.168,471,5.883,597,3.103,619,4.592,732,5.043,2414,8.102,2415,8.102,2416,8.102,2417,10.256]],["title/483",[2418,7.901]],["content/483",[8,1.559,69,2.29,209,4.218,417,3.639,483,4.987,597,2.619,1057,7.063,1731,4.396,2138,6.29,2419,6.84,2420,6.84,2421,6.84,2422,6.84,2423,6.84,2424,6.84,2425,6.84,2426,6.84,2427,6.84,2428,6.84]],["title/484",[1784,5.604]],["content/484",[]],["title/485",[1444,3.385,2429,6.246]],["content/485",[476,5.808,816,7.024,2430,9.312]],["title/486",[1444,3.385,2430,5.744]],["content/486",[307,7.642,816,6.891,1934,7.642,2431,9.137]],["title/487",[1444,3.385,2431,5.744]],["content/487",[816,6.891,1876,7.048,2432,8.61,2433,8.61]],["title/488",[1444,3.385,2432,5.413]],["content/488",[8,1.227,16,0.88,34,1.884,69,1.014,96,1.817,99,0.834,110,1.206,111,1.057,112,0.891,118,1.206,138,1.289,181,2.828,198,1.401,239,0.661,269,2.697,271,1.641,290,1.22,307,3.827,343,1.781,368,3.858,375,1.736,411,0.655,417,1.062,419,3.452,426,2.017,431,1.856,432,2.328,433,3.315,435,2.408,445,1.677,476,2.854,481,1.48,495,1.306,514,1.456,579,1.249,581,1.805,597,1.159,599,1.506,623,4.889,624,1.227,637,3,678,2.148,848,1.265,868,1.914,916,1.547,1012,1.677,1014,1.856,1030,1.805,1038,1.781,1056,2.148,1081,1.98,1147,1.591,1466,1.98,1485,2.328,1530,3.958,1575,2.504,1579,2.201,1584,1.506,1597,2.504,1630,2.408,1655,3.199,1686,2.788,1713,2.017,1736,1.591,1784,6.184,1832,1.805,1876,2.148,1934,2.328,2019,2.148,2103,2.784,2116,2.328,2335,2.148,2433,6.36,2434,3.028,2435,4.313,2436,3.028,2437,3.028,2438,4.395,2439,2.624,2440,3.028,2441,3.028,2442,3.028,2443,3.028,2444,2.784,2445,3.028,2446,2.784,2447,3.028,2448,3.028]],["title/489",[1444,3.385,2444,5.744]],["content/489",[8,1.431,33,2.787,67,1.885,69,1.876,118,2.232,138,3.406,307,4.31,368,4.205,419,3.886,476,3.214,540,2.812,597,2.146,600,3.975,623,3.733,624,3.242,1095,2.889,1107,3.387,1191,4.634,1584,4.639,1736,2.945,1784,3.975,1815,3.806,1876,3.975,1934,4.31,2116,4.31,2432,4.856,2433,6.931,2435,4.856,2438,5.548,2449,5.603,2450,5.603,2451,5.603,2452,5.603,2453,5.603,2454,5.603]],["title/490",[112,2.326]],["content/490",[]],["title/491",[1444,3.385,2455,6.246]],["content/491",[5,3.669,22,2.894,34,4.257,50,2.99,67,2.3,69,2.29,111,2.389,112,2.013,205,3.317,417,2.4,495,4.473,579,2.823,597,2.619,622,3.345,637,4.348,1821,4.852,1939,4.972,2087,8.445,2456,6.84,2457,9.184,2458,6.84,2459,9.184]],["title/492",[16,0.868,2460,6.246]],["content/492",[16,1.453,53,3.639,105,2.688,109,3.291,112,2.461,117,4.579,597,3.201,673,3.989,1499,5.798,2069,7.244]],["title/493",[16,0.868,2461,6.246]],["content/493",[16,0.882,35,3.303,105,2.04,111,3.048,112,2.569,114,5.026,118,2.527,158,3.891,286,3.028,329,3.369,365,3.156,367,3.733,411,1.373,419,4.401,450,2.774,531,3.685,597,2.43,673,3.028,849,3.596,975,3.64,1030,3.783,1086,3.783,1499,4.401,1523,4.881,1868,5.835,1994,4.738,2055,5.835,2305,4.738]],["title/494",[16,0.868,2462,6.246]],["content/494",[8,0.975,16,1.287,72,1.984,110,4.437,112,2.04,434,2.444,450,3.03,513,4.532,531,4.024,544,4.532,597,2.654,673,3.307,752,4.807,859,2.698,907,5.037,1499,4.807,1611,3.333,1825,6.171,1930,5.512,1931,6.373,2463,6.93,2464,6.93]],["title/495",[16,0.868,2465,5.744]],["content/495",[16,1.076,62,2.95,125,2.009,209,3.557,226,5.091,417,2.718,452,4.154,597,2.966,622,3.787,673,3.696,1499,5.372,1736,4.071,1837,5.782,1991,6.405,2310,6.712,2466,7.745,2467,7.122]],["title/496",[16,0.868,2468,6.246]],["content/496",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2465,8.805]],["title/497",[16,0.868,2469,5.744]],["content/497",[16,1.137,62,2.204,63,2.072,67,1.947,125,2.123,209,2.658,226,4.851,407,3.171,411,1.252,419,4.014,451,3.932,597,2.216,619,3.28,622,2.83,657,2.449,673,2.762,1367,3.498,1499,4.014,1715,4.604,1736,3.043,1837,4.321,1988,6.45,1990,5.806,1992,6.111,2310,7.093,2467,5.323,2470,8.185,2471,8.185,2472,8.185,2473,5.323]],["title/498",[16,0.868,2474,6.246]],["content/498",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2469,8.805]],["title/499",[16,0.868,2475,5.744]],["content/499",[8,1.404,16,0.747,22,2.274,45,2.606,47,2.686,49,5.091,59,4.348,452,2.883,539,2.525,597,2.058,622,2.628,673,2.565,755,4.992,1068,2.941,1358,3.813,1499,3.728,1736,4.081,1934,4.134,2118,9.173,2317,8.38,2476,5.375,2477,7.763,2478,5.375,2479,5.375,2480,5.375,2481,5.375,2482,4.942]],["title/500",[16,0.868,2483,6.246]],["content/500",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2475,8.805]],["title/501",[16,0.868,2484,6.246]],["content/501",[16,1.372,111,3.448,112,2.906,122,5.189,125,2.838,411,1.651,474,3.293,539,3.586,597,2.923,622,3.732,673,3.642,1156,3.505,1499,5.294,2485,7.633]],["title/502",[16,0.868,2486,5.744]],["content/502",[67,3.22,637,4.533,1068,3.627,1905,6.641,2224,5.632,2486,8.805]],["title/503",[2487,4.477]],["content/503",[]],["title/504",[2488,7.901]],["content/504",[50,3.488,100,5.607,105,3.782,495,3.442,597,3.056,703,4.757,755,5.564,1070,6.599,2489,7.98,2490,7.338,2491,7.338]],["title/505",[2492,7.901]],["content/505",[50,3.488,100,5.607,105,2.566,495,3.442,597,3.056,703,4.757,1070,6.599,1358,7.205,2490,7.338,2491,7.338,2493,7.98,2494,11.174]],["title/397",[111,1.804,112,1.52,1156,2.372]],["content/397",[]],["title/398",[16,0.718,112,1.52,1156,2.372]],["content/398",[3,2.085,8,1.426,16,1.57,67,1.625,86,1.994,110,1.925,112,1.422,122,3.775,125,1.253,156,1.903,190,2.446,286,3.426,411,1.045,417,1.696,531,2.806,546,2.676,622,2.363,624,1.959,671,2.492,736,2.881,848,2.019,917,2.843,1012,4.746,1047,3.844,1049,3.812,1078,2.253,1120,2.676,1156,3.935,1217,2.172,1611,3.454,1737,4.878,1839,3.775,1976,3.934,2104,7.426,2495,6.223]],["title/399",[16,0.533,112,1.129,205,1.86,1156,1.762,1217,1.724]],["content/399",[5,4.29,8,1.431,16,1.495,86,2.312,111,1.957,112,1.649,156,3.149,190,4.049,205,2.717,360,2.593,407,3.07,411,1.212,417,1.966,546,3.103,613,2.536,624,2.271,671,2.889,917,3.296,1012,4.43,1047,4.457,1156,2.573,1217,3.595,1611,3.847,1737,3.806,1961,5.153,1972,6.931,1976,4.382,2104,4.856,2496,7.999]],["title/400",[76,2.125,112,1.129,290,1.546,360,1.775,1156,1.762]],["content/400",[8,0.975,76,3.838,86,2.86,112,2.727,290,3.733,360,3.206,371,4.916,407,3.796,417,2.432,430,6.005,431,4.249,615,2.86,624,2.809,1092,5.174,1156,3.183,1217,3.114,1635,8.519,1727,5.512,1817,7.791,1976,3.796,2497,6.93,2498,6.93]],["title/401",[112,1.296,360,2.037,1100,2.624,1156,2.022]],["content/401",[8,1.853,86,1.469,112,1.048,118,1.417,360,1.647,370,1.994,394,1.929,407,1.95,417,2.482,423,2.182,431,2.182,532,1.647,615,1.469,617,3.626,624,1.443,642,2.25,1068,1.348,1100,3.382,1156,1.635,1206,2.944,1217,1.6,1595,4.513,1727,4.513,1728,4.712,1730,3.273,1818,3.273,1976,1.95,2082,2.944,2107,4.692,2116,2.737,2117,3.273,2174,2.831,2499,5.673,2500,3.559,2501,3.559,2502,3.559,2503,3.559,2504,2.831,2505,3.559,2506,3.559]],["title/402",[16,0.612,112,1.296,180,2.249,1156,2.022]],["content/402",[8,1.445,16,1.311,86,2.363,105,1.841,112,2.391,120,2.47,156,2.254,180,5.919,190,2.898,411,1.757,417,2.009,478,2.754,548,4.403,558,3.46,599,4.04,624,2.32,671,2.952,851,3.51,917,3.368,1047,4.554,1156,2.629,1217,2.573,1611,3.907,1976,4.449,2116,4.403,2507,8.122]],["title/403",[1120,3.46,1156,2.869]],["content/403",[8,1.72,16,1.258,53,1.144,82,2.506,86,3.435,205,1.825,417,3.178,423,3.635,617,3.297,624,4.454,678,2.669,690,2.809,1100,4.373,1120,2.084,1156,3.369,1217,5.036,1556,4.887,1608,2.735,1817,4.426,1976,6.02,2259,2.809,2508,3.763,2509,3.763,2510,3.763]],["title/411",[111,1.804,112,1.52,2511,3.508]],["content/411",[111,3.891,112,3.279,156,2.728,181,3.093,411,1.499,467,3.508,850,5.021,936,4.568,975,3.975,1038,4.076,1804,5.283,2511,6.293,2512,5.731,2513,6.93,2514,6.059]],["title/404",[111,1.538,112,1.296,850,2.386,2511,2.991]],["content/404",[8,1.565,16,1.183,86,2.527,111,2.139,112,1.803,270,3.319,417,2.149,452,3.285,467,3.101,617,2.752,624,3.451,859,2.384,1100,5.076,1156,2.813,1217,3.827,1611,2.946,1866,5.906,1976,5.363,2046,5.065,2254,5.632,2515,4.871,2516,4.71,2517,5.307,2518,7.831,2519,5.632]],["title/405",[112,1.839,1038,3.674]],["content/405",[17,6.025,110,3.383,111,2.967,112,2.5,270,4.604,401,5.134,1038,6.214,1095,4.38,2517,7.361,2520,7.811,2521,7.025,2522,7.811]],["title/406",[467,2.615,1156,2.372,2523,5.165]],["content/406",[111,2.067,112,2.829,398,3.577,411,1.28,427,3.142,452,3.174,467,4.866,495,2.553,615,2.442,678,4.198,720,3.354,857,3.174,1022,3.683,1095,3.052,1156,5.23,1783,5.344,1888,4.707,2000,4.707,2524,6.394,2525,3.577,2526,3.629,2527,4.418,2528,6.043,2529,3.742,2530,5.129,2531,5.898,2532,4.707]],["title/407",[467,2.615,1100,3.079,1156,2.372]],["content/407",[16,1.217,112,2.578,114,2.239,146,3.122,191,2.563,270,4.001,360,2.321,367,2.951,411,1.085,425,4.149,467,3.737,506,3.172,599,2.495,907,3.646,961,3.558,975,2.877,1093,2.843,1095,3.807,1100,5.221,1105,2.99,1153,3.881,1156,4.728,1620,2.877,1821,3.558,1866,3.479,1892,4.613,1893,5.511,2515,3.99,2524,3.858,2525,4.462,2526,4.526,2533,5.511,2534,3.745,2535,3.479,2536,4.613,2537,4.613,2538,5.017,2539,5.017]],["title/408",[16,0.718,467,2.615,1156,2.372]],["content/408",[16,1.427,34,3.563,112,2.391,146,3.563,366,4.061,427,6.151,452,3.071,467,2.898,506,3.62,540,2.873,563,3.68,599,2.848,720,3.245,788,4.554,907,4.161,916,2.925,1049,3.04,1055,3.744,1104,4.554,1156,4.335,1585,5.265,1696,3.971,1769,4.403,2046,4.735,2149,4.403,2529,3.62,2530,4.961,2531,5.761,2534,4.274,2535,3.971]],["title/409",[467,2.615,1156,2.372,1817,3.856]],["content/409",[467,5.691,816,6.522,1100,5.606,1156,5.162,1817,7.021]],["title/410",[180,2.639,467,2.615,1156,2.372]],["content/410",[16,1.372,53,2.322,111,2.666,112,2.247,180,5.043,467,5.539,673,3.642,720,5.595,786,4.613,816,5.294,850,4.137,1156,4.534,1804,3.864,2540,7.019]],["title/412",[111,1.538,112,1.296,1804,2.229,2511,2.991]],["content/412",[16,0.748,26,0.974,45,1.617,46,1.159,47,0.897,59,1.868,72,0.954,99,0.918,109,1.313,110,1.328,111,1.88,112,2.288,117,1.826,125,2.015,148,1.736,198,1.543,199,2.143,204,4.281,239,0.728,274,1.42,282,2.365,398,3.254,407,1.826,411,1.164,441,1.101,467,1.688,474,1.438,489,2.365,503,1.889,514,1.604,543,2.044,563,2.143,630,2.858,673,1.591,720,3.051,752,2.312,775,2.075,786,2.015,817,2.108,857,1.788,865,1.753,936,1.644,1014,2.044,1015,2.044,1077,2.015,1094,2.312,1095,3.491,1156,1.531,1207,2.489,1620,1.912,1724,3.521,1742,2.312,1783,3.46,1800,2.489,1804,5.056,1813,2.489,1821,4.803,1839,1.753,1888,2.652,1893,2.489,2000,5.385,2305,2.489,2446,3.066,2524,4.14,2525,3.254,2526,2.044,2527,2.489,2528,2.423,2540,3.066,2541,2.652,2542,3.066,2543,2.652,2544,2.757,2545,2.652,2546,2.757,2547,2.889,2548,3.334,2549,3.334]],["title/506",[111,1.538,112,1.296,495,1.899,2511,2.991]],["content/506",[8,1.077,16,1.064,46,1.398,67,1.352,69,1.346,86,1.659,105,1.293,110,1.601,111,2.181,112,2.254,156,1.583,411,0.87,417,2.192,467,3.161,481,1.966,486,1.889,495,4.727,550,2.306,624,2.531,637,2.956,720,2.279,859,1.565,1008,2.335,1012,2.227,1022,2.503,1031,2.306,1043,2.465,1095,3.22,1153,3.283,1202,3.198,1217,1.807,1306,5.888,1611,1.934,1783,2.585,1810,2.852,1937,3.093,1939,4.539,1952,3.485,1976,3.421,1978,3.698,2511,2.731,2515,3.198,2516,3.093,2518,3.698,2521,3.325,2524,4.803,2525,3.774,2526,2.465,2527,3.002,2550,4.021,2551,7.656,2552,4.021,2553,4.021]],["title/524",[111,1.34,112,1.129,427,2.037,2511,2.606,2531,2.721]],["content/524",[22,2.297,72,1.554,76,3.007,111,1.896,112,1.598,125,1.408,204,3.433,241,3.194,268,3.49,270,2.943,290,2.188,411,1.175,427,2.883,450,3.419,467,2.749,495,3.954,532,2.512,736,3.237,848,2.269,865,4.111,968,3.042,1120,4.331,1156,2.494,1469,4.319,1568,4.706,1602,4.319,2524,4.176,2528,5.684,2531,7.539,2532,6.221,2554,4.993,2555,5.43,2556,5.43,2557,4.706,2558,5.43,2559,5.43,2560,5.43]],["title/525",[450,2.731,2557,5.413]],["content/525",[8,1.514,86,2.312,111,1.957,112,2.354,146,3.488,191,2.863,290,2.258,411,1.212,417,1.966,431,3.436,467,2.837,474,2.417,545,2.483,615,2.312,622,2.74,624,2.271,637,2.653,1012,3.103,1014,3.436,1092,4.183,1095,2.889,1100,3.34,1156,2.573,1217,2.518,1367,3.387,1557,4.183,1602,4.457,1880,4.073,1893,5.972,1976,3.07,2511,3.806,2521,4.634,2525,3.387,2526,3.436,2531,5.674,2545,4.457,2557,4.856,2561,5.603]],["title/526",[450,2.731,2554,5.744]],["content/526",[5,3.174,8,1.545,22,2.504,50,2.587,86,2.442,146,5.175,241,4.891,407,3.242,417,2.077,427,3.142,450,2.587,495,3.587,624,2.399,637,2.802,716,3.577,1014,3.629,1095,4.287,1100,3.528,1217,2.66,1734,4.707,1893,4.418,1976,3.242,2515,6.613,2521,4.894,2531,6.818,2562,5.918,2563,5.918,2564,5.918,2565,5.918]],["title/513",[16,0.533,111,1.34,112,1.129,427,2.037,2511,2.606]],["content/513",[10,3.555,16,1.299,112,2.067,270,3.806,342,3.524,427,5.946,440,4.678,902,4.77,975,4.028,1156,3.225,1476,5.808,1507,6.086,1640,5.586,1804,3.555,2046,5.808,2524,8.08,2534,5.243,2566,7.022,2567,7.022,2568,7.022]],["title/514",[53,2.403]],["content/514",[16,1.411,53,3.399,365,3.969,411,1.726,817,5.045,849,4.522,936,3.935,1107,4.823,1815,5.42,2530,6.915,2543,6.347,2569,7.338,2570,7.98,2571,7.338]],["title/515",[110,3.146]],["content/515",[3,3.55,110,4.125,111,3.617,112,3.049,401,4.973,471,4.72,481,4.024,524,5.382,1060,5.707,1994,6.143,2511,5.59,2572,8.229]],["title/516",[114,3.526]],["content/516",[3,3.341,53,2.356,74,5.065,111,2.705,112,2.28,114,3.456,267,3.386,365,3.852,397,4.617,401,4.681,411,1.675,916,3.957,1030,4.617,1095,3.994,1769,5.957,2545,6.16,2573,7.122,2574,5.372,2575,7.745]],["title/517",[80,2.229,96,1.608,411,0.952,1804,2.229]],["content/517",[16,1.284,22,3.909,32,3.679,96,3.374,290,3.722,411,1.998,467,4.677,2531,6.554]],["title/518",[125,1.339,411,1.117,1804,2.615]],["content/518",[22,3.777,113,5.946,125,2.315,365,4.44,411,1.931,424,6.664,467,4.519,1093,5.058,2531,6.332,2576,7.735]],["title/519",[62,2.379,109,2.459]],["content/519",[3,3.2,62,2.825,67,2.495,109,3.815,113,4.941,125,1.924,158,4.548,208,5.705,226,4.951,423,4.548,424,5.538,513,4.851,539,3.485,579,3.061,599,4.82,613,3.357,1837,5.538,1857,5.705,2576,6.428]],["title/520",[63,2.236,109,2.459]],["content/520",[3,2.612,63,3.023,67,2.036,109,3.326,113,5.627,125,2.191,158,3.712,226,3.093,385,6.719,411,1.31,424,6.307,451,4.112,483,2.912,599,4.839,613,2.74,617,2.721,619,3.431,657,2.561,685,5.007,908,3.891,1367,3.659,1745,6.307,1799,5.246,1837,4.52,1988,4.112,1990,4.294,2574,4.199,2576,7.32]],["title/521",[122,4.153]],["content/521",[16,1.254,24,4.977,67,2.242,96,2.435,111,3.83,112,3.228,125,1.729,601,4.729,642,5.707,720,3.778,868,4.215,907,4.846,1012,5.668,1038,3.922,1156,4.145,1626,4.215,1681,5.777,1686,3.735,2577,6.667]],["title/522",[59,4.426]],["content/522",[3,2.185,10,2.564,45,3.605,46,3.061,47,2.612,48,5.004,49,5.197,51,4.778,59,2.837,67,2.5,99,1.395,112,1.491,144,3.593,198,2.343,199,3.255,411,1.096,579,2.09,599,3.698,609,3.061,613,2.292,630,2.689,692,3.781,817,3.202,848,2.116,859,1.972,1012,2.805,1158,3.895,1474,3.374,1620,2.905,1734,4.029,1804,2.564,1821,3.593,1856,4.029,2146,6.836,2511,3.44,2531,3.593,2578,4.029]],["title/507",[470,4.036]],["content/507",[]],["title/508",[394,4.282]],["content/508",[26,2.606,239,1.95,394,4.838,467,5.514,850,4.838,864,6.191,1798,7.1,2579,7.735,2580,7.382]],["title/509",[552,4.917]],["content/509",[8,0.893,108,4.633,397,3.783,456,3.596,469,4.738,500,4.501,547,3.515,552,6.687,554,5.499,557,7.563,560,5.835,850,3.439,864,4.401,979,4.881,1147,3.336,1162,5.499,1603,5.835,1622,7.218,1625,5.047,1707,4.738,2581,4.881,2582,5.248,2583,6.346,2584,5.835,2585,8.025,2586,6.346,2587,6.346]],["title/510",[1839,4.153]],["content/510",[50,2.878,60,3.646,61,3.363,62,2.507,107,4.472,109,2.592,125,2.637,145,4.472,146,4.098,241,3.873,286,3.141,398,3.979,470,3.363,525,4.037,532,3.046,558,3.979,601,4.67,671,3.395,1022,4.098,1839,5.345,1873,7.401,1911,4.472,2546,5.445,2588,6.054,2589,6.584,2590,6.584]],["title/511",[46,2.746]],["content/511",[46,3.453,156,3.912,470,5.076,2544,8.217]],["title/512",[1839,4.153]],["content/512",[26,2.746,62,3.581,115,7.48,239,2.055,530,7.777,1022,5.853,2546,7.777]],["title/523",[8,0.879,426,4.161]],["content/523",[8,1.398,426,6.619,1532,8.217,2591,5.699]],["title/527",[8,0.879,855,3.54]],["content/527",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/528",[8,0.879,581,3.723]],["content/528",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/529",[8,0.727,532,2.39,974,3.754]],["content/529",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/530",[8,0.879,609,3.775]],["content/530",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/531",[8,0.727,111,1.804,112,1.52]],["content/531",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/532",[8,0.879,470,3.191]],["content/532",[8,1.694,111,2.486,112,2.095,394,3.857,417,2.498,470,3.636,483,5.087,532,3.293,581,4.243,609,4.302,855,4.033,974,5.173,1731,4.575,2591,6.719]],["title/533",[8,0.727,61,2.639,441,1.706]],["content/533",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/534",[8,0.62,441,1.454,462,1.912,492,2.084]],["content/534",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/535",[8,0.62,360,2.037,441,1.454,492,2.084]],["content/535",[8,1.361,16,0.832,45,2.903,48,4.321,61,3.058,239,1.831,267,3.664,360,2.769,427,4.449,439,2.927,441,3.875,462,3.639,492,3.967,576,5.812,579,2.47,846,5.944,847,3.907,848,2.501,849,3.392,850,3.244,2591,3.433]],["title/540",[8,0.879,1803,2.912]],["content/540",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/541",[8,0.54,239,0.838,442,1.644,502,1.574,579,1.583]],["content/541",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/542",[8,0.478,62,1.295,239,0.743,442,1.457,474,1.466,502,1.394]],["content/542",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/543",[8,0.879,441,2.063]],["content/543",[8,1.637,62,2.95,239,2.177,291,4.227,441,2.558,442,4.271,474,3.341,502,4.088,579,3.196,1803,3.61]],["title/544",[8,0.727,496,2.999,1529,3.32]],["content/544",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/545",[1,4.085,8,0.879]],["content/545",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/546",[8,0.879,19,4.085]],["content/546",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/547",[8,0.879,30,2.258]],["content/547",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/548",[8,0.879,43,2.869]],["content/548",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/549",[8,0.879,12,2.532]],["content/549",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/550",[8,0.879,186,4.085]],["content/550",[1,4.253,8,1.689,12,2.635,19,4.253,30,2.351,43,2.986,186,4.253,291,2.363,426,4.331,483,3.128,496,5.154,579,3.662,1529,5.704,1620,3.73,2591,6.726,2592,4.854,2593,6.625]],["title/536",[8,0.62,239,0.962,456,2.495,1803,2.052]],["content/536",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/537",[8,0.727,492,2.445,502,2.119]],["content/537",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/538",[8,0.727,492,2.445,508,2.927]],["content/538",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/539",[8,0.727,239,1.128,441,1.706]],["content/539",[8,1.559,239,2.265,411,1.48,417,3.223,441,2.259,456,3.876,488,2.913,492,4.348,502,2.806,508,3.876,532,3.165,565,4.972,619,3.876,1020,4.972,1634,4.396,1675,4.194,1803,3.189,2591,5.947,2594,5.441]],["title/556",[8,0.879,508,3.54]],["content/556",[8,1.533,508,6.173,624,3.618,1803,4.161,2595,8.208,2596,7.382,2597,6.332,2598,8.208]],["title/557",[8,0.62,624,1.784,1803,2.052,2597,3.123]],["content/557",[8,1.533,508,6.173,624,3.618,1803,4.161,2595,8.208,2596,7.382,2597,6.332,2598,8.208]],["title/551",[8,0.62,502,1.806,624,1.784,2597,3.123]],["content/551",[8,1.235,156,3.456,442,3.762,452,4.708,470,4.484,502,4.422,545,3.89,624,3.557,2597,6.226,2599,7.606]],["title/552",[2600,5.367]],["content/552",[239,1.876,436,4.298,464,3.554,466,4.929,496,3.598,503,3.512,536,4.626,537,4.128,562,4.395,859,2.412,871,4.504,968,3.471,988,4.209,1024,3.918,1026,4.626,1093,3.512,1584,3.082,1599,3.598,1607,4.053,1675,3.799,1783,3.983,1827,4.626,1877,4.626,2579,5.37,2600,5.831,2601,5.37,2602,5.125,2603,6.197,2604,5.698,2605,5.698,2606,4.626,2607,5.37,2608,5.125,2609,6.197]],["title/553",[2600,5.367]],["content/553",[239,1.514,370,3.882,380,4.382,399,5.512,400,6.373,401,4.188,450,3.03,478,3.333,489,4.916,496,4.024,499,6.005,500,4.916,563,4.454,850,3.756,859,2.698,1068,2.625,1623,4.807,1801,6.005,1874,4.707,1877,5.174,2533,5.174,2582,5.731,2600,4.707,2610,6.93,2611,6.005,2612,6.373,2613,6.93]],["title/554",[2614,7.901]],["content/554",[10,3.088,30,1.411,35,2.031,114,1.741,147,2.65,197,1.536,268,2.508,290,1.572,291,1.418,411,1.625,445,2.161,449,1.805,453,3.227,479,3.227,646,3.381,719,3.104,877,2.238,916,3.116,981,2.429,1024,2.467,1037,3.381,1104,3.104,1158,3.001,1176,2.599,1207,2.913,1402,2.706,1449,2.65,1470,3.227,1561,2.836,1584,4.583,1599,3.542,1614,3.104,1707,2.913,1800,2.913,1815,2.65,1819,3.227,1833,2.768,1853,3.381,1929,3.104,2516,3.001,2527,2.913,2579,5.286,2600,4.144,2605,5.61,2608,7.023,2611,3.381,2615,3.588,2616,3.227,2617,3.588,2618,3.902,2619,3.588,2620,3.902,2621,3.588,2622,7.359,2623,3.902,2624,5.61,2625,6.1,2626,3.902,2627,3.902,2628,3.902,2629,3.902,2630,3.902,2631,3.902,2632,3.902,2633,3.902,2634,3.902]],["title/555",[2607,6.847]],["content/555",[110,3.505,146,3.998,411,1.389,486,3.017,496,3.73,519,3.445,859,2.501,875,3.065,989,3.938,1095,3.312,1509,3.998,1553,4.455,1587,5.109,1866,4.455,1896,9.358,2166,8.302,2607,9.358,2611,5.566,2635,6.423,2636,5.566,2637,6.423,2638,5.907,2639,6.423,2640,6.423]],["title/580",[1803,3.683]],["content/580",[]],["title/581",[291,2.871]],["content/581",[]],["title/582",[205,1.48,239,0.667,439,1.066,1058,2.073,1677,2.524,1804,1.545,2641,1.62]],["content/582",[107,5.77,156,3.344,181,3.791,197,3.344,356,5.063,450,3.713,521,6.341,1694,5.37,1701,5.891,2642,6.533,2643,7.811,2644,8.494,2645,7.811]],["title/583",[584,2.77,905,3.215,2646,4.476]],["content/583",[18,4.098,86,2.717,109,2.592,272,3.069,360,4.141,411,1.424,500,4.67,532,3.046,584,5.852,604,3.167,1093,3.731,1128,3.495,1141,4.566,1174,4.915,1653,6.054,1694,4.163,1707,6.682,1803,3.069,2535,4.566,2641,3.495,2646,5.705,2647,5.705,2648,6.054,2649,7.756,2650,5.237]],["title/584",[117,0.718,125,0.34,239,0.286,286,0.625,411,0.518,451,0.89,508,0.742,563,0.842,584,0.703,599,0.651,859,0.932,1367,0.792,1623,0.908,1803,1.117,1839,0.689,2651,1.135,2652,1.31]],["content/584",[16,0.697,33,2.495,72,1.436,117,4.044,131,2.951,138,2.136,148,2.611,181,4.311,239,1.096,286,2.394,411,1.597,441,2.893,450,2.193,470,2.563,508,2.843,520,2.843,545,2.223,584,2.691,630,2.663,847,4.083,865,2.637,876,2.877,1217,2.254,1623,3.479,1675,3.076,1803,3.441,1804,2.54,1839,3.881,1921,3.858,2051,3.342,2125,3.99,2166,4.149,2335,5.237,2544,4.149,2641,3.919,2651,6.397,2653,3.745,2654,4.613,2655,4.149,2656,4.613,2657,4.347,2658,5.017]],["title/558",[62,1.461,239,0.838,442,1.644,474,1.655,502,1.574]],["content/558",[]],["title/559",[291,2.871]],["content/559",[]],["title/560",[62,1.461,239,0.838,442,1.644,474,1.655,502,1.574]],["content/560",[16,0.938,62,2.572,109,2.659,121,4.081,290,3.668,410,4.269,411,1.461,441,2.23,444,5.041,492,3.197,502,2.77,543,4.14,976,4.34,992,4.587,1056,4.79,1161,4.498,1686,3.782,1839,4.786,2659,6.209,2660,7.89,2661,5.852,2662,5.852,2663,5.852,2664,6.752,2665,4.908,2666,5.193]],["title/561",[62,1.295,239,0.743,442,1.457,462,1.476,474,1.466,502,1.394]],["content/561",[8,1.398,462,4.315,502,4.075,2667,9.936]],["title/562",[290,2.081,954,3.378,2662,4.476]],["content/562",[361,5.329,579,4.1,2082,8.217,2663,8.61]],["title/563",[62,1.677,273,2.933,439,1.538,502,1.806]],["content/563",[34,5.373,148,5.556,411,1.867,415,4.679,439,3.015,483,4.153,1078,4.975,2668,7.939,2669,6.64,2670,7.482]],["title/564",[108,1.47,239,0.605,439,0.967,440,1.844,466,2.202,502,1.136,604,1.332,726,1.964]],["content/564",[46,1.398,49,4.152,62,1.531,72,2.471,108,4.065,109,3.398,110,1.601,112,2.751,122,2.114,239,0.879,274,1.712,290,3.085,312,1.847,411,0.87,415,3.384,431,2.465,442,1.723,452,2.157,457,2.585,474,2.694,477,2.335,502,2.561,514,3.004,543,3.829,637,1.904,679,1.565,720,3.539,736,2.397,755,2.203,848,1.68,859,1.565,863,2.852,989,2.465,1078,1.875,1161,4.16,1449,2.731,1491,3.002,1508,3.485,1686,3.498,1815,2.731,1839,2.114,2528,2.923,2541,3.198,2671,3.698,2672,3.325,2673,3.698,2674,5.2,2675,6.274,2676,3.093,2677,3.198,2678,2.923,2679,3.485]],["title/565",[53,0.928,108,1.62,239,0.667,439,1.066,440,2.033,502,1.252,726,2.165]],["content/565",[62,3.932,502,4.235]],["title/566",[148,1.589,239,0.667,411,0.66,439,1.066,440,2.033,502,1.252,1218,1.75]],["content/566",[26,2.366,62,3.086,109,4.038,148,5.339,239,1.77,502,3.323,905,5.043,1839,4.259,2655,8.482,2671,7.451,2673,7.451,2677,6.445,2680,8.102]],["title/567",[125,1.112,239,0.554,441,0.837,470,1.294,497,1.657,857,1.359,1537,1.688,1724,1.657]],["content/567",[26,2.441,86,3.45,398,5.052,441,2.761,462,3.63,497,5.467,877,5.999,2514,6.841,2525,5.052,2681,8.36,2682,8.36,2683,6.913]],["title/568",[2684,6.076]],["content/568",[]],["title/569",[26,1.286,156,1.733,239,0.962,2684,3.386]],["content/569",[239,2.055,439,3.284,447,6.835,1721,7.48,2487,5.329,2685,7.48,2686,6.671]],["title/570",[26,1.508,622,2.526,2684,3.972]],["content/570",[8,1.14,26,2.995,563,5.208,622,5.015,817,5.123,909,6.967,975,4.647,1949,7.888,2684,6.232,2687,6.445,2688,8.102,2689,8.102]],["title/571",[552,3.888,2684,4.804]],["content/571",[8,1.215,191,4.411,441,2.851,552,5.373,563,5.549,817,5.458,975,4.952,1634,5.549,2684,8.208,2687,6.867,2690,8.634]],["title/572",[443,3.191,1599,3.627]],["content/572",[]],["title/573",[16,0.424,27,2.347,109,1.201,1128,1.62,1630,2.427,2691,2.645,2692,2.645]],["content/573",[156,3.19,239,1.77,441,2.676,488,3.45,502,3.323,624,3.284,1128,4.302,1638,6.049,2526,4.968,2660,7.021,2665,7.455,2666,6.232,2693,7.451,2694,7.451,2695,7.451]],["title/574",[63,1.373,125,0.995,1023,3.325,1706,2.426,1724,2.509]],["content/574",[17,6.025,63,3.04,125,2.982,417,2.981,450,3.713,617,3.817,1021,6.174,1078,3.96,1466,5.555,1724,5.555,2696,7.811]],["title/575",[604,2.484,857,2.77,2697,4.271]],["content/575",[16,0.747,109,4.477,198,2.487,290,2.166,394,4.207,411,1.163,434,2.738,441,1.775,450,2.35,474,3.349,502,2.205,545,2.382,546,2.977,547,5.047,647,3.011,848,2.246,857,2.883,1062,3.455,1218,3.083,1367,3.248,1553,3.728,1556,3.58,1639,3.907,1657,4.658,1839,2.825,1847,4.134,1855,4.942,1930,4.275,1959,3.455,2697,4.445,2698,4.658,2699,4.445,2700,5.375,2701,4.942,2702,4.013,2703,6.42,2704,5.375]],["title/576",[27,3.386,519,2.361,532,2.037,1447,3.641]],["content/576",[156,3.24,197,3.24,198,3.807,394,4.46,488,4.41,519,4.413,524,5.382,532,3.807,902,5.59,1030,4.905,1367,4.973,1696,5.707,1827,6.143,1939,5.981]],["title/577",[1162,6.847]],["content/577",[]],["title/578",[239,0.605,411,0.599,434,0.976,488,1.179,502,1.136,532,1.281,859,1.078,985,1.311]],["content/578",[26,2.914,72,2.222,98,3.248,105,2.93,108,4.121,109,2.116,111,1.877,112,1.582,144,3.813,180,2.746,197,2.116,270,4.939,411,1.971,434,1.895,439,3.183,462,2.334,488,2.289,502,2.205,520,3.046,525,3.295,532,3.592,848,2.246,859,2.092,976,3.455,985,2.544,1031,3.083,1043,3.295,1101,3.515,1120,2.977,1161,3.58,1363,4.134,1686,3.011,1882,4.134,2125,4.275,2705,3.651]],["title/579",[26,0.891,411,0.66,441,1.008,470,1.559,1724,1.996,2706,2.806,2707,2.524]],["content/579",[26,2.136,35,3.808,196,4.303,415,3.964,441,3.54,442,3.135,470,4.906,630,3.884,870,6.339,1341,4.969,1553,5.073,1724,4.784,2707,6.049,2708,6.727,2709,8.83,2710,6.727,2711,5.818,2712,5.317,2713,6.727]],["title/591",[239,0.962,442,1.887,502,1.806,579,1.817]],["content/591",[]],["title/592",[291,2.871]],["content/592",[]],["title/593",[239,0.962,442,1.887,452,2.361,502,1.806]],["content/593",[0,1.825,16,0.523,26,1.099,62,1.433,63,1.347,72,1.077,98,2.274,108,3.148,109,1.481,112,1.108,115,2.993,213,2.418,239,1.819,274,3.124,290,1.516,312,1.728,341,2.274,360,1.741,415,3.213,427,1.998,439,2.907,442,2.541,444,2.809,445,2.084,447,2.735,452,3.18,457,4.715,476,2.158,492,1.781,495,1.623,502,3.415,525,2.307,537,2.506,572,2.809,679,1.465,848,2.477,976,2.418,985,2.807,1115,2.158,1119,4.426,1161,2.506,1363,2.894,1539,2.307,1686,2.108,1812,3.112,1882,2.894,1905,2.61,2016,3.46,2027,3.261,2125,2.993,2606,2.809,2666,2.894,2669,2.894,2674,2.556,2714,3.763,2715,2.993,2716,3.261,2717,2.993,2718,3.261,2719,3.763,2720,3.763,2721,3.763,2722,3.763,2723,2.556,2724,3.261,2725,3.46,2726,3.763,2727,3.261,2728,3.46,2729,3.763,2730,3.763]],["title/594",[8,0.62,239,0.962,462,1.912,502,1.806]],["content/594",[8,1.398,462,4.315,502,4.075,2731,9.137]],["title/595",[62,1.677,273,2.933,439,1.538,502,1.806]],["content/595",[34,5.373,148,5.556,411,1.867,415,4.679,439,3.015,483,4.153,1078,4.975,2668,7.939,2669,6.64,2670,7.482]],["title/596",[239,0.962,439,1.538,486,2.068,502,1.806]],["content/596",[239,2.263,415,4.46,439,3.617,447,5.981,486,3.866,502,4.248,545,3.647,572,6.143,1721,6.545,2487,4.663,2685,6.545,2686,5.837]],["title/597",[156,1.51,239,0.838,458,2.721,461,2.102,502,1.574]],["content/597",[137,4.933,239,1.856,411,1.837,459,6.174,488,3.617,502,3.484,998,4.814,1509,5.287,2599,7.361,2686,6.025,2732,7.025,2733,7.025,2734,7.025]],["title/598",[441,2.063,2487,3.54]],["content/598",[26,1.853,63,2.271,111,2.216,112,1.868,124,5.351,267,2.774,269,3.439,286,3.028,439,2.216,441,3.294,447,6.344,448,4.738,488,2.702,985,3.004,1012,3.515,1509,3.95,1721,6.942,2487,6.088,2685,6.942,2686,7.076,2705,4.31,2715,5.047,2735,6.346]],["title/599",[62,1.967,1741,3.508,2547,4.476]],["content/599",[0,4.119,62,3.235,180,4.34,197,3.344,239,1.856,289,4.872,411,1.837,464,4.872,572,6.341,1739,7.361,1741,5.77,2736,8.494,2737,8.494]],["title/600",[290,2.081,954,3.378,2662,4.476]],["content/600",[361,5.329,579,4.1,2082,8.217,2663,8.61]],["title/601",[47,1.681,1515,3.949]],["content/601",[]],["title/602",[18,1.723,112,0.815,290,1.115,312,1.271,492,1.311,502,1.136,2674,1.881,2723,1.881]],["content/602",[49,2.981,53,1.885,108,4.558,112,2.9,272,2.889,274,3.656,290,3.459,312,2.846,407,3.394,411,1.34,457,5.518,492,2.933,502,2.542,1049,3.29,1118,4.626,1119,6.409,1161,4.128,1449,4.209,1686,3.471,1793,4.929,1839,3.257,2674,5.831,2675,4.504,2723,4.209,2724,5.37,2738,5.698,2739,5.37,2740,6.197]],["title/603",[72,1.098,98,2.319,338,1.997,492,1.816,1115,2.201]],["content/603",[16,0.903,72,2.54,98,3.93,99,1.79,105,2.091,274,2.769,439,3.099,478,3.128,492,4.201,516,3.601,604,3.128,623,5.911,848,2.717,865,3.418,985,3.078,1115,3.73,1161,5.911,1350,4.417,1673,4.047,1686,3.642,1760,5.378,1941,4.854,2487,3.685,2606,4.854,2741,5.635,2742,5.635,2743,5.635]],["title/604",[492,2.084,502,1.806,1086,2.624,1479,3.2]],["content/604",[63,3.073,108,3.29,109,2.44,125,1.607,137,3.598,148,3.226,226,3.166,339,3.983,441,2.046,443,3.166,492,2.933,502,4.041,679,2.412,749,5.954,1048,5.518,1068,2.347,1086,5.118,1136,4.298,1218,3.554,1479,4.504,1509,3.857,1839,3.257,2678,4.504,2744,5.37,2745,4.626,2746,5.698,2747,5.698,2748,5.37,2749,5.698,2750,5.37]],["title/605",[360,2.89,502,2.562]],["content/605",[]],["title/606",[239,0.838,338,1.997,502,1.574,604,1.845,2487,2.174]],["content/606",[16,0.841,49,2.912,63,2.167,72,2.418,98,3.659,109,2.384,111,2.114,112,1.782,122,3.182,239,1.846,274,2.578,293,3.959,312,2.78,411,1.31,434,2.135,439,2.114,441,1.999,481,2.96,492,2.866,502,2.483,516,3.353,577,3.891,604,4.063,610,3.891,1033,3.431,1115,3.472,1161,4.033,1368,4.294,1686,3.391,1804,3.065,1839,4.44,2487,3.431,2674,4.112,2723,4.112]],["title/607",[239,0.962,502,1.806,604,2.118,2487,2.495]],["content/607",[10,3.101,49,2.946,100,3.073,109,2.411,112,1.803,197,2.411,239,1.338,272,2.855,274,2.608,411,1.325,439,2.974,502,2.512,577,3.937,610,3.937,786,3.702,816,4.248,854,3.603,859,2.384,875,2.922,936,3.02,1066,3.937,1217,2.752,1466,4.005,1504,4.08,1584,3.046,1793,4.871,1810,4.344,1839,4.476,2129,4.71,2335,4.344,2487,4.826,2675,4.452,2723,4.16,2751,5.632]],["title/608",[441,2.609]],["content/608",[]],["title/609",[26,0.891,411,0.66,441,1.008,470,1.559,1724,1.996,2706,2.806,2707,2.524]],["content/609",[26,2.136,35,3.808,196,4.303,415,3.964,441,3.54,442,3.135,470,4.906,630,3.884,870,6.339,1341,4.969,1553,5.073,1724,4.784,2707,6.049,2708,6.727,2709,8.83,2710,6.727,2711,5.818,2712,5.317,2713,6.727]],["title/610",[239,0.743,441,1.123,520,1.926,2702,2.538,2752,3.126,2753,3.126]],["content/610",[0,3.649,75,5.337,190,3.809,191,3.844,239,1.644,266,5.787,394,4.078,441,2.485,496,4.369,520,5.543,615,3.105,678,5.337,1031,4.315,1207,5.617,2000,5.985,2753,8.994,2754,8.994,2755,7.524]],["title/611",[470,4.036]],["content/611",[]],["title/612",[191,1.193,441,0.771,447,1.697,470,1.193,1634,1.501,2487,1.323,2717,1.857,2756,2.147,2757,2.147,2758,2.147]],["content/612",[26,1.902,72,2.743,111,1.484,125,2.055,191,2.17,206,5.76,212,5.371,411,0.919,441,1.403,447,3.088,470,4.049,506,2.686,615,1.753,622,2.077,679,1.654,1022,2.644,1068,1.609,1094,6.163,1694,2.686,1949,7.778,2000,3.379,2438,7.302,2487,2.407,2543,6.303,2651,3.681,2669,3.267,2715,3.379,2717,3.379,2756,3.906,2757,3.906,2758,3.906,2759,3.681,2760,5.916,2761,4.248,2762,4.248,2763,4.248,2764,4.248,2765,4.248,2766,4.248,2767,4.248,2768,4.248,2769,4.248,2770,4.248]],["title/613",[62,1.295,269,1.842,2669,2.614,2715,2.704,2716,2.946,2771,2.946]],["content/613",[8,1.076,26,2.234,62,3.765,112,2.652,125,2.336,191,2.691,272,2.455,411,1.139,441,1.739,457,3.386,478,2.534,520,2.985,556,4.051,703,3.14,936,2.597,985,2.494,1068,1.995,1161,3.509,1368,3.736,1921,4.051,2669,4.051,2715,6.085,2716,4.565,2717,4.19,2718,4.565,2771,4.565,2772,4.844,2773,7.65,2774,4.844,2775,5.267,2776,5.267,2777,4.19,2778,4.844,2779,7.65,2780,5.267,2781,5.267,2782,5.267,2783,5.267,2784,3.736]],["title/614",[443,3.191,1599,3.627]],["content/614",[]],["title/615",[16,0.424,27,2.347,109,1.201,1128,1.62,1630,2.427,2691,2.645,2692,2.645]],["content/615",[156,3.19,239,1.77,441,2.676,488,3.45,502,3.323,624,3.284,1128,4.302,1638,6.049,2526,4.968,2660,7.021,2665,7.455,2666,6.232,2693,7.451,2694,7.451,2695,7.451]],["title/616",[63,1.373,125,0.995,1023,3.325,1706,2.426,1724,2.509]],["content/616",[17,6.025,63,3.04,125,2.982,417,2.981,450,3.713,617,3.817,1021,6.174,1078,3.96,1466,5.555,1724,5.555,2696,7.811]],["title/617",[27,3.386,519,2.361,532,2.037,1447,3.641]],["content/617",[16,1.161,197,3.291,394,4.53,488,4.861,519,4.483,532,3.868,902,5.678,1030,4.983,1402,5.798,1696,5.798,1827,6.241,2785,8.36]],["title/585",[441,2.609]],["content/585",[]],["title/586",[291,2.871]],["content/586",[]],["title/587",[125,1.142,239,0.962,441,1.454,865,2.314]],["content/587",[16,0.61,63,2.391,67,1.476,110,1.748,120,1.894,125,2.344,181,1.959,239,1.46,269,4.899,338,2.285,398,2.653,401,2.653,417,1.54,427,3.547,439,1.533,441,2.671,483,2.111,488,1.869,514,3.213,531,2.549,574,4.037,579,1.811,582,2.549,611,2.924,650,3.62,679,1.709,680,3.191,847,3.114,859,2.601,877,2.518,916,2.243,985,2.078,1014,2.691,1068,1.663,1202,3.492,1217,1.973,1556,2.924,1839,3.512,1893,3.277,2008,3.63,2051,2.924,2525,4.037,2526,2.691,2529,4.224,2683,3.63,2786,4.037,2787,4.037,2788,4.39,2789,4.037,2790,4.39,2791,4.739,2792,4.037]],["title/588",[239,0.962,439,1.538,441,1.454,859,1.714]],["content/588",[33,2.535,49,3.11,86,1.286,110,1.241,196,1.834,197,2.007,205,2.472,239,1.114,267,1.363,268,2.004,271,4.048,274,1.327,366,2.211,380,1.971,398,1.884,411,0.674,417,1.094,423,1.911,431,1.911,441,1.683,483,1.499,484,2.162,488,2.753,497,2.039,513,3.333,514,3.11,516,1.726,537,2.076,543,1.911,547,1.726,552,1.94,573,2.327,579,1.286,599,1.55,604,1.499,619,1.766,643,3.482,650,3.504,680,2.266,720,1.766,817,1.971,818,2.327,847,2.376,849,2.889,857,1.672,859,1.984,867,2.211,936,1.537,962,2.117,970,1.858,985,1.476,1034,2.479,1038,1.834,1136,2.162,1202,2.479,1213,2.397,1222,4.687,1353,2.162,1532,2.578,1539,1.911,1575,2.578,1626,1.971,1628,2.327,1638,2.327,1688,2.397,1731,2.004,1839,1.639,1840,2.266,2019,2.211,2120,2.039,2259,2.327,2504,2.479,2525,3.081,2529,1.971,2545,2.479,2602,2.578,2641,1.655,2711,2.479,2712,4.7,2784,2.211,2789,2.866,2793,3.117,2794,3.117,2795,2.866,2796,3.117,2797,2.701,2798,4.054,2799,5.603,2800,4.687]],["title/589",[63,1.373,239,0.838,441,1.267,859,1.494,2359,2.606]],["content/589",[16,0.832,62,2.28,63,4.2,123,7.262,197,2.356,205,4.064,206,6.091,207,5.812,239,1.831,266,4.603,271,3.244,417,2.101,441,1.977,483,2.879,550,3.433,579,2.47,619,3.392,859,3.765,877,3.433,1587,4.761,1783,3.847,1857,4.603,2525,5.844,2791,4.246]],["title/590",[239,0.962,441,1.454,451,2.991,859,1.714]],["content/590",[62,2.068,73,3.042,187,3.947,197,2.138,205,3.792,206,5.684,266,4.176,271,2.943,293,3.551,417,1.906,445,4.331,451,7.749,483,2.612,484,3.766,488,2.312,579,3.227,619,3.077,786,3.282,859,3.568,902,3.688,1022,3.38,1105,3.237,1128,2.883,1542,4.706,1587,4.319,1628,4.054,2124,6.777,2504,4.319,2522,4.993,2525,5.539,2529,3.433,2543,4.319,2801,5.43]],["title/618",[239,1.365,438,5.413]],["content/618",[16,1.018,26,2.543,42,3.447,148,2.587,197,1.956,205,2.41,239,1.602,274,2.116,291,1.805,411,1.075,434,2.585,439,2.56,486,2.334,488,2.116,492,2.352,496,2.886,673,2.371,679,2.854,850,2.693,871,3.612,976,3.194,985,4.124,987,4.794,993,5.473,1026,3.71,1240,3.447,1439,3.612,1446,3.093,1590,3.194,1591,3.375,1599,2.886,1655,3.194,1672,3.31,1673,3.093,1686,2.784,1798,3.953,1808,4.57,1809,3.822,1878,3.822,2802,4.969,2803,4.306,2804,4.57,2805,4.306,2806,4.306,2807,4.306,2808,4.11]],["title/619",[2809,6.847]],["content/619",[16,1.055,26,3.054,35,3.954,50,2.28,72,1.493,99,1.436,105,1.677,190,3.845,199,3.352,272,2.431,341,3.152,439,1.821,445,2.888,460,4.796,476,2.991,495,2.25,545,2.311,578,3.198,610,3.352,647,2.921,732,3.246,933,4.148,965,4.519,995,2.857,1005,2.689,1034,4.148,1189,3.068,1197,4.519,1592,3.699,1614,4.148,1673,4.727,1700,4.313,1733,4.796,2150,4.796,2676,4.011,2805,6.582,2810,6.582,2811,5.215,2812,4.519,2813,5.215,2814,5.215,2815,4.796]],["title/620",[2816,6.847]],["content/620",[16,1.228,26,2.181,50,1.363,72,1.851,82,2.076,96,1.138,99,2.268,120,1.345,190,3.273,191,2.604,198,2.358,239,0.681,267,1.363,272,1.453,274,1.327,275,1.689,291,1.852,411,1.781,415,1.689,439,1.089,442,2.184,449,2.358,474,1.345,520,1.766,604,1.499,637,1.476,673,1.487,679,2.517,936,1.537,941,2.076,976,2.004,987,2.039,988,2.117,995,2.792,998,1.766,1005,1.607,1015,1.911,1016,2.076,1033,1.766,1049,1.655,1060,2.162,1068,2.449,1083,3.755,1084,2.266,1106,2.96,1119,2.327,1133,3.276,1441,1.884,1511,2.479,1512,2.076,1527,1.911,1537,2.076,1584,1.55,1590,2.004,1591,2.117,1599,1.81,1655,2.004,1672,2.076,1673,1.94,1680,2.479,1686,2.855,1716,2.211,1737,2.117,1753,2.397,1769,2.397,1789,2.397,1811,2.397,2306,2.578,2810,2.701,2817,3.117,2818,3.117,2819,3.117,2820,3.117,2821,3.117,2822,3.117,2823,2.701,2824,3.117,2825,3.117,2826,2.578,2827,2.866,2828,3.117,2829,3.117,2830,3.117,2831,2.866,2832,2.701]],["title/622",[1672,4.161,1673,3.888]],["content/622",[16,1.147,26,1.083,72,1.062,96,3.016,99,2.477,105,1.193,137,2.154,156,1.461,191,1.895,210,2.242,239,1.281,267,1.622,272,1.729,274,1.58,337,2.696,358,2.384,368,1.95,374,2.867,411,0.802,427,1.969,434,1.308,439,2.047,442,1.59,443,1.895,449,1.716,462,1.611,486,1.743,513,2.426,546,2.055,613,1.679,637,1.756,647,2.078,848,2.449,916,1.895,985,1.756,987,2.426,996,3.215,997,3.215,1016,3.905,1024,2.345,1033,2.102,1038,2.182,1068,1.405,1075,2.631,1106,3.405,1121,3.215,1490,3.068,1515,2.345,1590,3.768,1591,3.982,1655,3.768,1672,3.905,1673,5.141,1686,4.072,1715,4.663,1757,3.411,1857,2.853,1873,3.068,2676,2.853,2692,3.215,2833,3.71,2834,3.71,2835,3.71,2836,3.71,2837,3.71,2838,3.71,2839,3.71]],["title/623",[1655,4.015,1686,3.499]],["content/623",[26,1.23,35,3.371,43,2.974,52,2.862,96,1.539,99,2.983,156,1.659,239,0.921,272,1.964,340,2.334,374,2.061,439,1.472,443,2.153,449,1.95,478,3.114,486,1.98,506,2.664,540,2.114,736,2.512,826,3.352,995,2.308,1078,1.964,1106,2.447,1580,3.485,1584,2.096,1601,3.875,1648,5.15,1655,2.709,1672,2.807,1673,4.908,1675,2.584,1686,2.361,1689,5.355,1742,2.923,1760,3.485,1873,3.485,2516,3.241,2659,3.875,2745,3.146,2748,3.652,2840,3.875,2841,3.652,2842,4.214,2843,4.214,2844,4.214,2845,4.214,2846,4.214,2847,4.214,2848,3.875,2849,3.652,2850,5.355,2851,7.038,2852,4.214,2853,3.875,2854,4.214,2855,3.875,2856,4.214,2857,4.214]],["title/624",[1106,3.627,1590,4.015]],["content/624",[16,1.191,45,2.343,46,2.496,47,1.933,49,2.324,67,2.415,96,1.765,99,3.029,121,4.34,156,1.903,196,2.843,199,3.106,205,2.343,272,2.253,312,2.219,361,2.592,374,3.511,415,2.619,449,2.236,516,3.977,703,2.881,963,3.428,995,2.647,1005,2.492,1068,1.831,1105,2.881,1106,5.509,1121,4.188,1165,5.361,1449,3.282,1518,3.717,1552,3.608,1590,5.508,1592,3.428,1596,3.844,1697,3.996,2051,3.219,2841,6.223,2858,4.833]],["title/625",[1666,6.076]],["content/625",[16,1.368,18,3.012,50,1.279,67,1.628,71,1.57,72,1.771,96,3.954,97,5.718,98,4.812,99,3.236,114,1.306,122,1.538,125,0.759,144,2.076,145,1.988,146,3.012,197,1.152,198,3.968,269,3.353,275,3.353,286,2.309,289,1.679,337,3.518,365,1.456,368,3.252,374,1.431,403,1.57,433,3.224,434,1.707,436,4.986,503,1.659,514,1.408,516,1.621,547,2.68,577,3.111,846,2.076,850,2.623,855,1.659,911,1.7,936,1.443,1049,1.554,1103,2.251,1106,1.7,1112,2.328,1138,3.518,1368,2.076,1565,2.536,1579,2.127,1590,1.881,1655,1.881,1666,2.251,1686,1.639,2482,2.691,2859,2.927,2860,2.927,2861,2.927,2862,2.691,2863,2.691]],["title/621",[121,3.775,338,3.252]],["content/621",[16,1.249,26,1.388,45,1.388,46,2.465,47,2.419,48,1.476,60,1.586,67,0.963,72,0.82,96,2.225,97,2.277,99,1.308,100,1.437,121,4.286,138,1.219,190,1.449,191,1.463,239,0.626,272,3.667,274,1.219,289,1.642,291,1.727,337,2.081,338,3.692,340,3.928,356,1.707,411,1.028,434,1.01,439,1.66,454,1.907,461,4.924,472,1.81,481,1.4,519,1.536,525,1.755,539,2.232,599,2.364,647,1.604,832,2.081,848,2.545,963,2.031,992,1.945,998,1.623,1024,1.81,1068,1.8,1099,1.907,1101,1.872,1105,1.707,1106,2.76,1115,1.642,1128,1.52,1153,1.505,1218,1.642,1359,3.108,1465,2.368,1469,2.277,1500,2.481,1504,1.907,1515,1.81,1588,2.368,1665,2.081,1685,2.031,1697,2.368,1832,1.707,1833,2.031,2002,2.633,2051,1.907,2120,3.108,2535,1.986,2676,2.202,2727,2.481,2807,2.481,2808,2.368,2841,2.481,2864,2.481,2865,2.863,2866,2.633,2867,2.863,2868,2.481,2869,2.633,2870,2.277,2871,2.863,2872,2.202,2873,2.863,2874,2.368,2875,2.633]],["title/626",[854,4.647]],["content/626",[26,2.606,42,6.191,239,1.95,854,5.25,875,4.259,901,6.664,989,5.473,1240,6.191,2672,7.382,2876,7.382]],["title/627",[2672,5.166,2876,5.166]],["content/627",[]],["title/628",[10,2.229,46,1.53,47,1.185,2877,4.403]],["content/628",[10,3.174,16,1.203,42,4.349,46,3.715,47,2.877,50,2.741,72,1.795,120,2.705,125,1.626,239,1.37,312,2.88,342,3.146,357,4.349,411,2.144,442,2.687,474,2.705,673,4.13,852,4.681,854,3.688,1068,2.375,1449,4.259,1527,3.845,1537,4.177,1556,4.177,1675,3.845]],["title/629",[340,3.46,461,3.422]],["content/629",[16,1.095,33,2.729,47,2.872,100,3.953,121,3.316,291,1.993,338,2.856,340,4.364,342,2.753,449,3.645,454,3.655,455,3.227,461,4.316,477,5.851,540,2.753,615,2.264,679,2.136,848,2.292,850,2.974,872,3.271,911,3.186,992,3.727,1043,3.364,1053,4.096,1055,3.588,1095,2.829,1120,3.039,1465,4.538,1859,5.045,2120,3.588,2746,5.045,2876,4.538,2878,5.487,2879,5.487,2880,5.045]],["title/630",[901,5.898]],["content/630",[26,2.078,33,3.54,86,2.937,203,5.474,239,1.555,374,3.48,410,5.962,679,2.771,854,5.547,971,5.886,1055,4.655,1093,4.033,1462,5.661,2580,5.886,2679,6.168,2686,5.049,2712,5.173,2870,5.661,2881,6.168,2882,6.545,2883,7.117,2884,7.117,2885,7.117]],["title/631",[46,2.171,47,1.681]],["content/631",[0,3.317,8,0.962,46,2.377,47,1.841,86,2.823,197,2.693,203,5.261,291,2.485,340,3.788,374,3.345,411,1.48,412,5.504,454,4.556,455,4.023,645,3.972,832,6.675,853,4.646,955,5.657,957,5.927,964,5.441,1068,2.591,1229,6.37,1504,4.556,2886,6.29]],["title/632",[312,3.628]],["content/632",[46,2.578,47,1.996,86,3.061,105,2.385,138,3.159,197,2.921,289,4.255,312,4.45,374,3.627,410,4.69,411,1.605,412,3.938,519,3.978,600,5.262,671,3.825,832,5.392,873,4.108,1089,6.135,2887,6.821,2888,7.418,2889,7.418]],["title/633",[16,0.868,125,1.62]],["content/633",[10,1.426,16,1.24,32,1.122,33,1.401,35,1.467,46,2.44,47,2.098,52,1.914,53,0.857,72,1.342,125,2.022,197,2.371,239,0.616,282,1.998,291,1.024,312,3.581,342,3.523,357,1.954,365,2.332,374,2.945,411,1.821,412,2.489,434,2.476,441,0.93,442,2.009,449,1.303,450,1.232,452,1.511,486,1.323,539,1.323,540,1.413,546,1.56,615,2.485,622,1.377,629,1.527,645,5.182,673,1.344,679,1.097,720,2.657,755,1.543,847,1.313,852,2.103,853,5.296,857,1.511,901,2.103,909,1.914,911,1.636,955,2.33,957,4.063,964,2.241,985,1.334,987,1.842,1009,2.167,1024,1.781,1054,3.326,1060,1.954,1068,1.067,1099,1.877,1120,1.56,1164,1.998,1350,1.914,1387,1.811,1402,1.954,1527,1.727,1537,3.123,1544,4.312,1552,2.103,1701,1.954,1847,2.167,2057,2.048,2597,1.998,2797,2.441,2890,2.591,2891,2.817,2892,6.023,2893,4.689,2894,4.689]],["title/634",[374,3.054,908,4.015]],["content/634",[26,2.48,100,4.262,411,1.837,455,4.996,881,7.361,908,5.46,968,4.758,1206,7.025,1599,4.933,2686,6.025,2895,8.494,2896,8.494,2897,8.494]],["title/635",[455,3.038,471,2.962,472,3.266]],["content/635",[]],["title/636",[455,3.038,471,2.962,472,3.266]],["content/636",[47,1.492,120,2.392,137,3.22,274,4.747,397,3.305,410,3.505,411,1.199,445,3.071,455,4.67,464,3.18,471,4.553,472,5.863,478,2.667,495,2.392,525,3.4,604,2.667,911,3.22,912,4.397,998,4.499,1086,4.732,1509,3.451,1539,3.4,1675,3.4,2601,4.805,2738,5.098,2849,4.805,2898,5.544,2899,5.544,2900,5.544,2901,5.544,2902,5.544,2903,5.544,2904,5.544,2905,5.544]],["title/637",[239,0.962,455,2.59,471,2.525,472,2.784]],["content/637",[26,1.433,35,1.549,46,1.034,47,1.321,99,2.381,101,2.289,213,3.154,239,0.65,272,1.387,274,1.267,290,1.199,357,2.064,411,1.354,431,3.009,439,1.039,442,1.276,452,1.596,454,1.983,455,5.086,471,4.166,472,4.592,478,1.432,484,2.064,514,3.494,528,4.98,540,2.462,577,3.154,579,1.228,643,1.387,712,6.007,736,3.732,786,1.799,823,2.064,873,2.718,891,2.289,912,1.648,916,2.507,961,2.111,982,2.022,1024,1.882,1055,1.946,1059,2.367,1078,1.387,1152,2.461,1212,2.222,1512,1.983,1515,1.882,1769,2.289,1813,2.222,1832,4.789,1946,2.022,2532,6.391,2578,2.367,2600,2.022,2728,2.737,2850,2.461,2851,4.98,2853,5.757,2872,2.289,2906,2.461,2907,2.976,2908,2.976,2909,2.976,2910,2.976,2911,4.907,2912,2.737,2913,4.512,2914,2.976,2915,2.976,2916,2.579,2917,2.737,2918,2.976,2919,2.737,2920,2.579,2921,2.976,2922,2.579,2923,2.976,2924,2.976]],["title/638",[455,2.257,471,2.201,472,2.426,912,2.125,1166,3.052]],["content/638",[239,1.475,274,2.875,411,1.461,449,3.124,452,3.622,455,3.972,471,3.873,472,5.756,537,4.498,610,4.34,912,3.74,969,4.587,970,4.025,976,5.852,1086,4.025,1129,5.852,1214,4.908,1351,5.852,1355,5.852,1539,4.14,1691,5.852,2224,3.972,2784,4.79,2916,5.852,2925,6.752,2926,6.752,2927,6.752]],["title/639",[239,0.962,1166,3.502,2928,4.403,2929,4.403]],["content/639",[0,1.786,35,1.918,47,0.991,48,1.9,50,1.61,51,2.368,74,2.409,99,1.014,100,1.848,137,4.202,138,1.569,239,1.274,274,1.569,312,1.692,410,2.329,411,0.797,434,1.299,440,5.971,449,3.348,454,5.48,471,2.113,472,2.329,486,1.73,532,2.697,550,2.113,577,2.368,645,2.139,720,2.088,853,2.502,854,2.167,861,4.484,905,2.293,968,2.063,969,2.502,970,2.196,987,2.409,994,2.555,1041,2.75,1049,1.956,1098,2.613,1115,2.113,1164,2.613,1166,7.13,1167,5.343,1168,3.046,1240,2.555,1376,5.052,1438,3.046,1492,2.555,1527,4.436,1592,2.613,1614,2.93,1813,2.75,1830,2.833,2051,2.454,2160,3.387,2777,2.93,2930,3.684,2931,3.684,2932,3.684,2933,3.684,2934,3.192,2935,5.83,2936,3.684,2937,3.684,2938,3.684,2939,3.387,2940,3.684]],["title/694",[985,2.957,1832,3.723]],["content/694",[]],["title/695",[1832,4.71]],["content/695",[16,0.6,26,1.261,45,2.094,48,2.226,72,1.236,99,1.189,239,1.441,267,1.888,272,2.013,274,1.838,341,2.61,356,2.574,442,1.85,445,2.391,474,1.863,492,2.044,525,2.647,536,3.223,580,3.321,615,1.782,624,2.674,679,1.681,702,3.063,720,2.447,788,3.434,851,2.647,863,3.063,873,2.391,968,2.419,976,2.775,985,3.79,1004,3.571,1025,3.321,1049,2.292,1105,2.574,1363,3.321,1489,2.995,1509,2.687,1547,3.223,1555,3.223,1588,3.571,1599,2.507,1608,3.138,1742,2.995,1799,3.742,1832,6.067,1878,3.321,2533,3.223,2535,2.995,2686,3.063,2864,3.742,2941,4.318,2942,4.318,2943,4.318,2944,4.318,2945,4.318,2946,4.318,2947,4.318,2948,4.318,2949,4.318,2950,4.318,2951,3.97,2952,4.318,2953,3.97]],["title/696",[962,4.243,1530,4.968]],["content/696",[35,2.384,47,1.233,48,2.362,61,2.34,72,1.975,181,2.044,274,1.95,282,3.249,411,1.492,434,2.433,439,1.6,441,2.741,442,2.957,448,3.42,455,2.694,462,3.604,476,3.957,477,2.66,478,2.203,520,2.596,624,2.796,847,2.135,848,1.914,857,2.457,859,1.783,868,4.362,872,4.112,873,2.537,929,3.249,962,5.637,999,3.643,1174,3.42,1359,4.512,1387,2.944,1509,2.851,1530,5.487,1556,3.051,1726,3.643,1742,3.177,1832,2.73,2120,2.996,2545,3.643,2573,4.212,2602,3.788,2656,4.212,2670,3.969,2874,3.788,2954,4.58,2955,4.212,2956,3.969]],["title/646",[847,3.683]],["content/646",[16,0.976,45,3.405,48,3.621,51,4.514,72,2.675,181,3.134,267,3.07,434,2.476,441,3.087,462,4.059,478,3.378,492,3.324,679,2.734,847,3.274,848,2.934,850,3.806,872,4.186,902,4.77,1363,5.401,1515,4.44,1555,5.243,1694,4.44,2009,5.586]],["title/647",[47,1.681,291,2.27]],["content/647",[35,2.856,46,1.907,47,2.99,52,3.727,181,3.516,209,2.52,267,2.399,291,3.35,441,1.812,462,2.383,471,4.519,488,3.355,528,4.364,629,2.974,630,4.183,643,2.558,703,3.271,844,4.364,848,2.292,859,2.136,869,5.045,876,3.147,985,2.597,1024,3.469,1049,2.913,1093,3.109,1182,4.538,1218,3.147,1617,3.727,1634,3.527,1832,4.697,2957,5.487,2958,4.755,2959,4.755,2960,5.487]],["title/648",[48,2.663,624,3.057]],["content/648",[10,2.005,16,1.289,33,1.97,35,2.062,45,2.993,47,2.304,48,4.415,51,3.967,67,1.332,72,2.17,147,2.69,181,1.767,197,1.559,274,1.686,291,2.242,411,1.335,441,1.308,462,4.269,476,2.272,514,1.905,580,3.046,624,2.501,645,2.3,847,4.326,851,2.428,852,2.957,853,2.69,854,2.33,859,1.542,861,4.747,862,4.909,863,2.809,865,3.244,867,2.809,868,2.504,966,2.465,968,2.219,999,3.15,1068,2.338,1105,2.361,1174,2.957,1189,2.33,1359,4.036,1542,5.348,2051,2.638,2120,2.59,2712,2.879,2869,3.642,2874,3.275,2961,3.961,2962,3.961,2963,3.432]],["title/649",[1742,4.332,2964,6.246]],["content/649",[3,2.144,35,2.587,46,3.028,47,2.344,67,1.671,72,1.422,124,3.047,239,1.602,367,2.923,398,3.003,445,2.752,448,3.71,450,2.172,478,2.39,496,2.886,514,2.39,516,2.752,519,2.665,580,3.822,847,3.417,848,2.076,859,1.935,877,2.85,961,3.525,962,3.375,965,4.306,985,4.124,1004,4.11,1015,3.047,1049,2.638,1240,3.447,1359,3.25,1515,3.142,1705,3.822,1742,3.447,1789,3.822,1832,5.193,1959,3.194,2512,4.11,2641,2.638,2951,4.57,2953,4.57,2965,4.969,2966,4.969,2967,4.969,2968,4.306,2969,4.969]],["title/650",[909,5.367]],["content/650",[16,0.567,47,2.533,72,1.169,125,1.059,181,2.82,197,2.488,210,2.468,239,0.892,274,2.691,291,2.809,312,1.875,374,1.997,411,1.882,441,1.348,442,1.75,446,3.539,448,3.049,450,1.785,474,1.762,476,2.342,622,1.997,629,4.19,640,3.539,643,2.946,645,4.49,650,2.213,698,3.248,743,2.897,847,1.904,853,2.774,857,3.389,876,2.342,908,4.062,909,2.774,915,3.755,955,3.377,960,3.539,963,2.897,1068,1.547,1093,2.314,1128,2.168,1137,2.72,1174,3.049,1218,2.342,1229,4.383,1466,2.671,1832,2.434,1994,3.049,2116,4.86,2886,3.755,2970,4.083,2971,4.083,2972,3.755,2973,4.083,2974,4.083,2975,3.539,2976,4.083,2977,4.083,2978,4.083]],["title/640",[537,5.263]],["content/640",[213,5.836,239,1.984,478,4.367,495,3.917,597,3.477,1085,5.412,1617,6.167,1809,6.983,2541,7.222]],["title/641",[26,1.824,2803,5.413]],["content/641",[8,0.777,16,0.961,47,0.927,96,2.527,148,1.792,198,1.593,209,1.581,239,1.207,274,1.466,275,2.994,290,2.788,411,0.745,417,1.939,431,2.111,446,4.787,449,2.556,615,1.421,678,2.442,679,1.34,783,3.166,823,2.388,848,1.438,912,1.907,983,2.293,985,1.63,987,2.252,1017,4.394,1043,2.111,1049,1.828,1068,1.304,1085,2.052,1106,1.999,1229,2.388,1308,3.832,1479,2.503,1530,5.503,1579,2.503,1591,3.753,1628,2.57,1634,2.213,1672,2.293,1673,3.438,1731,2.213,1742,3.832,1813,4.124,2259,2.57,2745,2.57,2777,2.739,2803,2.984,2805,4.787,2806,2.984,2807,5.996,2808,4.569,2815,3.166,2850,4.569,2851,4.394,2979,3.166,2980,3.443,2981,5.525,2982,3.443,2983,5.525,2984,3.166,2985,3.443,2986,5.525,2987,2.984,2988,3.443,2989,3.166,2990,3.443,2991,3.443,2992,3.443,2993,3.443,2994,3.443,2995,3.443,2996,3.443,2997,3.443]],["title/642",[488,2.66,1770,4.968]],["content/642",[8,0.656,16,0.648,26,1.361,117,2.554,239,1.018,274,1.985,329,2.475,357,4.848,406,4.04,439,2.441,441,1.539,451,3.166,472,2.947,474,3.016,481,2.279,488,1.985,497,4.572,526,5.56,527,3.855,537,3.105,540,2.339,545,3.098,679,1.815,726,3.307,848,1.948,871,3.388,985,3.309,998,2.642,1015,2.858,1308,3.233,1661,4.04,1675,2.858,1705,3.585,1783,2.996,1803,2.173,1827,3.48,2571,4.287,2580,3.855,2641,2.475,2661,4.04,2784,3.307,2998,4.662,2999,3.585,3000,4.04,3001,4.959,3002,4.662,3003,6.991,3004,4.287,3005,4.662,3006,4.662,3007,3.307,3008,4.662,3009,4.662,3010,4.662,3011,4.662]],["title/643",[985,2.957,1832,3.723]],["content/643",[47,1.809,59,3.766,239,1.469,274,1.885,290,1.783,411,0.957,440,2.949,443,4.153,462,1.922,474,1.91,480,2.949,519,2.374,536,3.305,540,2.221,610,2.845,615,1.827,679,1.723,720,2.509,899,3.661,916,2.261,966,2.755,975,2.539,985,3.183,998,2.509,1024,2.799,1049,2.35,1105,2.639,1133,2.845,1363,3.404,1446,2.755,1599,2.571,1717,3.217,1832,6.367,1845,4.07,1911,3.007,2120,2.895,2241,3.836,2535,4.663,2816,3.836,2864,3.836,2890,4.07,2939,4.07,2999,5.171,3012,4.427,3013,4.427,3014,4.427,3015,4.427,3016,4.427,3017,4.427,3018,4.427,3019,3.007,3020,4.427,3021,4.427,3022,4.427,3023,4.427,3024,4.427]],["title/644",[1048,5.078]],["content/644",[8,0.669,10,1.449,16,0.398,26,1.779,35,1.49,46,0.995,47,0.771,63,1.025,72,1.36,75,2.031,86,1.182,99,1.308,110,1.14,117,1.568,121,1.73,213,1.84,239,1.719,290,1.154,291,1.727,338,1.49,341,1.73,343,1.684,360,1.325,374,1.4,411,0.619,428,2.368,434,1.676,439,2.128,449,1.325,467,1.449,473,1.755,474,1.235,486,1.345,537,3.166,538,2.368,562,2.031,679,1.115,703,1.707,749,1.986,775,2.958,808,1.81,843,2.368,848,1.196,863,2.031,873,1.586,875,1.366,905,1.782,954,3.108,985,2.25,1008,1.663,1025,2.202,1026,2.137,1031,2.726,1036,2.633,1048,4.558,1068,1.8,1085,1.707,1105,1.707,1153,4.135,1164,2.031,1207,2.137,1214,2.081,1218,1.642,1221,2.368,1474,3.166,1555,3.548,1617,1.945,1685,2.031,1707,2.137,1710,2.137,1716,2.031,1804,1.449,1809,2.202,1832,2.833,2224,1.684,2473,2.633,2535,1.986,2578,3.78,2600,1.945,2601,4.118,2616,2.368,2650,3.78,2777,2.277,2832,2.481,2870,2.277,2906,2.368,3025,2.863,3026,2.863,3027,2.863,3028,2.863,3029,2.863,3030,2.863,3031,4.37,3032,2.633,3033,2.863,3034,2.633,3035,2.633,3036,2.633,3037,2.633,3038,2.368,3039,2.633,3040,2.633]],["title/645",[1783,4.015,2606,4.663]],["content/645",[197,2.625,239,1.457,343,3.922,449,3.085,464,3.824,500,4.729,503,3.778,562,4.729,577,4.285,604,3.207,716,4.029,859,2.595,985,3.156,1489,4.624,1607,5.903,1617,4.529,1710,4.977,1783,4.285,1800,4.977,1827,4.977,1929,5.303,2057,4.846,2574,6.261,2600,4.529,2606,4.977,3041,6.667,3042,6.667,3043,6.667]],["title/651",[16,0.868,148,3.252]],["content/651",[16,0.684,22,2.083,26,1.437,62,2.773,63,1.762,72,1.409,96,1.798,99,1.355,148,4.51,156,1.938,180,2.515,239,1.076,272,3.394,338,2.563,360,2.278,365,2.448,374,2.407,375,2.824,411,1.575,439,1.719,442,2.11,449,2.278,478,2.368,540,2.47,657,2.083,703,2.934,732,3.064,823,3.414,995,2.697,1033,2.79,1046,3.786,1055,3.22,1068,1.865,1128,2.614,1140,3.578,1476,4.071,1527,3.018,1575,4.071,1591,3.344,1684,4.527,1701,3.414,1716,5.164,1741,3.344,1744,4.071,2321,4.266,3001,3.492,3044,4.527,3045,4.527,3046,4.527,3047,4.923,3048,4.923,3049,4.923]],["title/652",[732,4.917]],["content/652",[8,1.415,16,1.197,26,1.596,62,2.082,72,0.973,109,2.152,111,1.909,112,1,122,3.605,148,4.79,197,1.338,198,1.572,209,3.15,210,2.054,267,1.486,275,1.842,286,1.622,338,1.769,357,2.357,365,1.69,375,3.136,397,2.026,412,1.804,417,1.193,423,2.084,449,1.572,526,2.703,539,1.596,540,3.441,545,2.423,578,2.084,599,1.69,823,2.357,911,1.974,952,2.811,968,1.904,989,2.084,1026,2.537,1055,2.223,1068,2.071,1076,4.521,1120,1.882,1171,2.411,1172,2.223,1474,2.264,1504,5.235,1546,2.264,1555,2.537,1595,4.349,1714,2.811,1731,2.184,1741,3.714,1744,5.672,2130,3.125,2984,3.125,3001,5.575,3045,3.125,3050,3.399,3051,3.399,3052,3.125,3053,3.125,3054,3.399,3055,3.399,3056,3.399,3057,3.399,3058,3.399]],["title/653",[53,1.571,365,2.569,2920,4.476]],["content/653",[]],["title/654",[26,2.307]],["content/654",[16,1.092,26,2.295,49,3.781,53,2.391,71,4.216,72,2.25,99,2.77,148,4.092,180,4.016,196,4.624,365,3.91,443,4.016,445,4.354,968,4.403,1556,5.236,3001,5.576,3059,7.228]],["title/655",[847,3.683]],["content/655",[16,1.109,148,4.154,434,2.814,441,2.635,443,5.189,462,3.465,622,3.902,847,3.72,1101,5.219,1153,4.195,1556,5.315,1809,6.137,2826,6.599,3001,5.66,3060,7.98,3061,7.338]],["title/656",[63,2.828]],["content/656",[8,1.14,10,1.814,16,0.987,26,1.046,50,1.567,53,1.09,62,1.365,63,3.371,67,1.205,96,1.309,99,0.987,109,1.411,138,1.526,145,2.434,146,2.23,148,4.604,198,1.658,209,3.263,210,2.166,211,5.04,213,4.567,239,0.783,289,2.055,327,5.615,338,1.865,417,1.258,434,2.012,449,1.658,450,1.567,486,1.683,647,2.007,702,2.542,703,2.136,786,2.166,823,2.485,859,3.154,873,1.985,875,2.722,911,3.312,936,1.767,966,2.23,1026,2.675,1068,2.161,1093,2.031,1101,3.73,1120,1.985,1128,1.903,1504,4.733,1548,3.295,1595,4.537,1665,2.605,1744,2.964,2359,3.874,2591,3.272,3001,2.542,3053,3.295,3062,3.295,3063,3.584,3064,3.584,3065,3.584]],["title/657",[1048,5.078]],["content/657",[110,2.821,239,1.037,439,2.961,449,2.196,474,2.047,481,2.32,488,2.021,495,2.047,537,3.161,552,2.954,578,2.91,679,1.847,736,2.829,808,3,843,3.925,863,3.366,868,3,872,2.829,911,2.756,985,4.013,999,3.775,1004,3.925,1008,4.114,1024,3,1048,5.449,1093,2.689,1350,4.812,1472,3.925,1609,3.65,1617,4.812,1642,3.65,1682,4.364,1811,3.65,1815,3.223,1822,3.925,1828,3.925,2622,4.112,2823,4.112,2840,4.364,2870,5.635,2872,3.65,2955,4.364,3066,4.745,3067,4.745,3068,4.364,3069,4.745,3070,4.745,3071,4.745,3072,4.364,3073,4.745,3074,4.745]],["title/658",[8,0.54,121,2.319,985,1.816,1832,3.588]],["content/658",[213,5.289,341,4.973,428,6.805,537,5.481,538,6.805,873,4.558,1048,5.289,1555,7.732,1685,5.837,2578,6.545,2650,6.545,2872,6.329,3031,7.567,3034,7.567]],["title/659",[72,1.788,110,2.488]],["content/659",[]],["title/660",[438,6.847]],["content/660",[16,1.033,26,2.171,72,1.45,75,3.593,86,2.09,99,2.047,110,2.017,114,2.26,117,2.774,197,1.994,239,1.107,267,3.25,290,2.041,360,3.44,411,1.096,427,2.689,434,1.786,439,2.596,467,2.564,703,3.019,808,3.202,848,2.116,863,3.593,979,3.895,1014,3.105,1031,2.905,1044,4.389,1045,4.657,1048,3.255,1068,2.816,1086,3.019,1105,3.019,1153,5.101,1707,3.781,1710,3.781,1716,3.593,2520,4.657,2578,4.029,2616,4.189,2777,4.029,3035,4.657,3036,4.657,3037,4.657,3038,4.189,3075,5.065]],["title/661",[1107,4.775]],["content/661",[3,1.27,16,0.409,26,0.859,28,1.416,69,0.985,86,2.006,95,2.088,96,2.268,99,1.339,110,3.789,120,2.097,138,1.253,191,1.504,239,1.062,272,1.372,274,2.07,341,1.779,361,1.578,411,0.637,427,1.562,434,1.038,439,2.169,442,2.662,450,2.125,467,3.652,470,1.504,473,1.804,495,1.27,516,2.693,542,2.55,545,1.304,547,3.44,572,2.197,604,2.339,671,3.203,673,1.404,736,2.898,775,1.832,808,1.861,859,1.146,871,2.139,916,1.504,936,1.451,1022,1.832,1037,2.55,1048,1.892,1085,1.754,1098,2.088,1103,6.142,1104,3.867,1107,1.779,1111,2.706,1120,1.63,1136,2.041,1138,2.139,1140,2.139,1189,1.731,1221,2.434,1291,1.925,1413,2.341,1474,1.96,1539,1.804,1607,6.451,1608,4.515,1609,2.263,1616,2.55,1617,1.999,1618,2.706,1620,1.688,1688,2.263,1716,2.088,1717,2.139,1804,3.145,1847,3.739,1880,2.139,2622,2.55,2676,2.263,2872,2.263,2956,2.55,3076,2.943,3077,2.943,3078,2.943,3079,2.55]],["title/662",[3039,7.265]],["content/662",[26,2.295,63,2.813,338,4.092,434,2.772,474,3.391,749,5.452,905,4.892,995,4.306,1025,6.046,1031,4.509,1153,4.132,1218,4.509,1592,5.576,2224,4.624,2600,5.339,2650,6.252,2698,6.812,3040,7.228]],["title/663",[1699,5.078]],["content/663",[16,1.045,26,2.197,72,2.8,105,2.419,111,2.628,112,2.215,239,1.644,411,1.627,439,2.628,486,3.534,503,4.264,521,5.617,637,3.562,871,5.469,875,3.59,1009,5.787,1138,5.469,1176,5.012,1512,5.012,1699,4.836]],["title/664",[8,0.879,338,3.252]],["content/664",[16,1.354,72,1.464,96,1.868,99,1.408,105,3.135,111,1.786,112,1.505,180,2.613,197,2.013,269,2.772,272,3.49,291,1.858,397,3.048,411,1.619,433,3.406,434,3.124,464,2.933,489,3.628,808,3.233,875,2.44,914,3.933,954,3.345,1068,1.937,1082,3.287,1093,2.898,1153,3.936,1160,3.717,1176,3.406,1206,4.229,1527,3.136,1655,3.287,1672,4.987,1673,4.66,1686,2.865,1696,5.193,1699,4.812,1700,4.229,2536,4.703,3080,5.114]],["title/665",[181,3.526]],["content/665",[62,3.56,63,2.513,67,2.362,99,1.934,148,3.656,181,3.134,269,3.806,374,3.434,411,1.519,486,3.299,1140,6.794,1147,3.691,1616,6.086,1665,5.104,1699,4.514,1739,6.086,1740,6.458,1741,6.349,3081,6.458,3082,6.086,3083,7.022,3084,6.458,3085,7.022]],["title/666",[1005,4.074]],["content/666",[16,0.754,26,2.928,45,2.633,47,2.105,96,2.856,99,2.524,239,1.186,274,2.312,434,1.915,435,4.319,445,3.007,455,4.6,471,3.115,472,3.433,477,3.153,486,2.551,540,2.725,599,2.701,851,3.329,852,4.054,901,4.054,954,3.551,982,3.688,1005,2.8,1017,4.319,1033,3.077,1095,2.8,1137,3.617,1512,3.617,1689,4.491,1770,4.319,2224,3.194,2532,4.319,2615,4.993,2975,4.706,3079,4.706,3086,7.821,3087,5.43,3088,5.43]],["title/667",[1148,3.949,1446,3.888]],["content/667",[26,2.606,105,2.87,452,4.787,476,5.12,503,5.058,545,3.956,995,4.89,1005,4.603,1789,6.865,3089,7.735]],["title/668",[3090,6.847]],["content/668",[26,3.029,99,2.63,105,1.882,138,2.492,156,2.304,210,4.986,286,2.793,378,5.382,411,1.266,536,4.369,613,2.649,875,2.793,896,5.072,994,4.059,996,5.072,997,5.072,1016,3.898,1068,2.217,1093,3.317,1118,4.369,1492,4.059,1626,3.7,1771,4.655,1833,4.151,1858,5.072,2827,5.382,2959,5.072,3089,5.072,3090,5.072,3091,5.852,3092,5.852,3093,5.382,3094,5.382,3095,5.852,3096,5.382]],["title/669",[3097,6.534]],["content/669",[26,2.804,99,2.014,105,2.352,290,2.947,503,5.442,536,5.461,601,5.189,613,3.311,637,3.463,875,3.49,1055,4.784,1441,4.421,1505,6.049,1737,4.969,2516,5.626,3007,5.189,3093,6.727,3097,6.049,3098,6.727,3099,7.315,3100,7.315]],["title/670",[442,2.677,492,2.957]],["content/670",[16,0.795,26,1.672,71,3.071,72,1.639,99,2.236,210,3.46,239,1.775,343,3.368,411,2.042,434,2.019,457,3.68,503,5.349,637,2.71,872,3.413,993,4.274,1084,5.903,1099,3.814,1103,6.247,1128,3.04,1133,3.68,1134,4.061,1387,3.68,1515,3.62,1561,4.161,1685,4.061,1753,7.26,1810,4.061,2009,4.554,2495,4.961,2934,4.961,3101,5.725,3102,5.725,3103,5.725]],["title/671",[16,0.718,96,1.886,604,2.484]],["content/671",[16,0.804,96,2.114,99,2.999,105,1.861,147,3.932,156,3.739,197,3.739,269,3.137,275,3.137,286,2.762,289,3.32,290,2.332,394,3.137,473,3.549,503,3.28,520,3.28,875,3.906,1015,5.019,1077,4.947,1098,4.106,1128,3.073,1138,4.207,1147,3.043,1578,5.323,1665,4.207,1737,3.932,1819,4.787,1858,5.016,1946,3.932,3104,5.788,3105,5.788]],["title/672",[16,0.718,26,1.508,72,1.478]],["content/672",[16,1.371,26,3.03,46,1.578,47,1.222,48,2.342,67,1.527,72,2.363,96,1.658,99,3.054,197,3.25,239,0.992,274,1.934,275,2.461,411,1.483,434,1.601,442,1.946,449,2.101,520,3.884,643,2.117,679,1.768,848,1.897,854,2.671,875,3.27,916,2.32,989,2.784,992,3.084,1005,3.534,1016,3.025,1033,2.573,1060,3.149,1068,2.596,1213,3.492,1359,2.97,1537,3.025,1673,2.826,3079,3.935,3090,3.935,3106,4.176,3107,4.541,3108,4.541,3109,4.541,3110,4.541]],["title/673",[71,3.35,72,1.788]],["content/673",[26,2.931,73,3.598,99,1.769,156,3.465,290,3.546,445,3.557,679,2.501,963,4.556,988,4.363,1003,5.566,1005,4.538,1033,3.64,1068,2.433,1082,4.128,1083,3.73,1113,5.109,1116,5.907,1512,4.279,1675,3.938,1728,4.279,1851,5.907,2831,5.907,2832,5.566,3097,5.312,3111,6.423,3112,6.423,3113,6.423,3114,6.423]],["title/674",[105,2.008,3089,5.413]],["content/674",[26,2.33,82,5.315,105,2.566,197,3.142,209,3.665,210,4.823,239,1.743,275,4.325,411,1.726,875,3.808,941,5.315,995,4.371,1015,4.893,1083,4.634,1706,5.045,1771,6.347,3096,7.338]],["title/704",[1080,5.078]],["content/704",[16,1.109,26,2.33,99,2.197,137,4.634,138,3.398,239,1.743,272,3.72,411,1.726,439,2.787,599,3.969,1005,4.115,1080,5.129,1084,5.8,1141,5.535,1217,3.586,1753,6.137,2786,7.338]],["title/705",[1137,5.263]],["content/705",[0,2.776,16,1.128,26,2.372,47,2.186,67,1.925,99,2.986,105,1.841,125,1.485,132,4.061,133,4.161,265,4.161,272,2.669,274,2.438,290,2.307,291,2.08,343,3.368,357,3.971,420,4.061,514,2.754,516,3.171,547,3.171,604,2.754,630,3.04,637,2.71,643,3.786,1080,3.68,1137,3.814,1140,4.161,1205,3.325,1579,4.161,1584,2.848,1680,4.554,2224,3.368,3115,5.725,3116,5.725]],["title/706",[1153,4.153]],["content/706",[16,1.18,26,2.48,99,2.339,105,2.731,197,3.344,290,3.422,291,3.086,342,4.262,397,5.063,434,3.726,2912,7.811,3117,7.811]],["title/707",[1141,5.48]],["content/707",[16,1.31,26,2.078,67,2.394,96,2.599,99,2.912,425,5.886,442,3.05,514,3.423,515,5.314,547,5.223,624,2.885,1033,4.033,1133,4.575,1134,5.049,1141,4.936,1148,4.5,1151,5.314,1158,5.474,1537,4.741,1584,3.54,2541,5.661]],["title/675",[1133,4.015,1134,4.431]],["content/675",[16,0.851,99,2.914,105,1.969,110,2.439,156,2.411,239,1.861,272,2.855,274,2.608,374,2.995,411,1.842,439,2.139,463,4.871,615,2.527,916,3.129,1012,3.392,1030,3.651,1079,5.307,1080,3.937,1083,3.557,1120,3.392,1133,5.474,1134,6.041,1151,4.572,1158,4.71,1527,3.755,1591,4.16,3118,6.125,3119,5.632,3120,6.125,3121,6.125]],["title/676",[214,5.604]],["content/676",[16,1.47,26,1.788,67,2.06,73,3.431,76,4.716,198,2.834,289,3.513,361,3.285,1008,3.557,1033,3.471,1068,3.226,1082,6.292,1133,3.937,1134,6.041,1150,5.307,1151,6.358,1158,8.138,1522,4.71,1584,3.046,1675,3.755,1728,5.673,2678,4.452,2797,5.307,3038,5.065]],["title/677",[1141,5.48]],["content/677",[16,1.203,67,2.109,76,3.473,99,2.943,125,1.626,138,2.67,198,4.005,267,2.741,275,3.398,289,3.596,361,3.363,365,3.119,411,1.356,434,2.211,514,3.016,615,3.572,647,3.512,673,2.992,1106,5.027,1148,3.964,1150,5.434,1151,6.462,1189,3.688,1522,4.822,1584,3.119,1590,4.03,1680,4.987]],["title/678",[3122,6.284]],["content/678",[]],["title/679",[434,1.353,537,2.556,850,2.079,2174,3.052,3122,3.052]],["content/679",[26,1.771,111,1.353,112,1.14,181,1.728,214,4.302,239,0.846,339,2.49,434,1.366,443,3.099,449,1.792,452,2.077,457,2.49,481,1.894,488,2.583,524,3.967,527,3.203,540,1.943,545,2.688,598,3.357,615,1.598,619,2.195,660,3.203,848,2.534,871,4.408,875,1.848,912,2.145,933,3.081,941,2.58,962,2.631,968,2.17,976,2.49,985,1.834,1043,2.375,1048,2.49,1056,2.747,1068,2.297,1136,2.686,1176,2.58,1189,2.278,1213,2.979,1341,2.631,1362,3.562,1584,1.926,1625,3.081,1628,4.528,1713,2.58,1716,2.747,1832,2.309,1838,3.562,2057,2.815,2120,2.533,2174,3.081,2661,3.357,2784,2.747,2808,3.203,2810,5.256,2849,3.357,2882,3.562,2922,3.357,3122,6.728,3123,3.873,3124,3.873,3125,3.873,3126,3.873,3127,3.873,3128,3.873,3129,3.873,3130,3.562,3131,3.873,3132,3.562,3133,3.873,3134,3.873,3135,3.873]],["title/680",[239,0.962,503,2.495,562,3.123,3136,4.403]],["content/680",[26,2.166,109,3.815,110,2.954,464,5.558,514,3.568,976,4.768,1033,4.204,1341,5.039,1783,6.229,1905,5.145,2619,6.821,2745,5.538,3122,5.9,3137,9.691,3138,7.418,3139,7.418,3140,7.418,3141,7.418]],["title/681",[67,2.101,3122,4.968]],["content/681",[]],["title/682",[439,2.759]],["content/682",[16,1.043,22,1.964,26,2.192,28,0.956,30,1.258,45,0.964,46,0.691,47,1.5,52,3.154,72,1.813,82,1.324,96,2.035,98,2.104,100,0.997,105,1.119,111,0.694,112,0.585,137,1.154,181,0.887,209,0.913,213,1.278,214,1.41,238,1.484,274,1.977,275,1.077,290,0.801,341,1.202,343,1.169,410,2.935,411,0.43,439,0.694,442,0.852,443,4.275,448,4.729,457,2.237,461,3.818,474,0.858,476,2.663,477,1.154,481,0.972,520,1.127,536,2.599,540,0.997,550,1.14,577,1.278,582,1.154,604,2.681,848,0.831,852,1.484,873,1.101,875,3.582,976,1.278,985,2.999,998,1.127,1005,1.025,1015,1.219,1043,2.134,1049,1.848,1084,1.445,1086,1.185,1106,1.154,1120,1.101,1133,1.278,1134,1.41,1176,3.093,1205,2.021,1213,1.529,1218,1.14,1341,1.35,1359,1.3,1474,1.324,1490,1.644,1511,1.581,1512,1.324,1590,1.278,1591,1.35,1592,1.41,1611,0.956,1655,1.278,1672,1.324,1673,1.237,1686,1.95,1697,1.644,1710,1.484,1753,1.529,1790,1.828,1822,1.644,1830,1.529,1832,3.776,1909,1.828,2009,1.581,2224,1.169,2606,1.484,2697,1.644,2812,1.723,2866,1.828,2870,2.769,2872,1.529,2875,1.828,2917,1.828,2920,1.723,2963,1.723,3044,1.828,3142,1.988,3143,5.489,3144,1.988,3145,5.489,3146,1.988,3147,1.988,3148,1.988,3149,1.828,3150,1.644,3151,1.988,3152,1.988,3153,3.481,3154,1.988,3155,1.988,3156,3.016,3157,1.988,3158,1.988,3159,1.988,3160,1.723,3161,1.988,3162,1.988,3163,1.988,3164,1.828,3165,1.988,3166,1.988]],["title/683",[2120,5.167]],["content/683",[26,1.997,35,1.406,47,0.727,52,1.835,105,0.869,137,1.569,138,1.15,267,1.181,341,1.633,403,1.449,410,1.708,411,0.979,420,1.916,461,4.514,467,1.368,474,1.165,476,2.597,478,1.299,546,1.496,671,1.393,716,2.736,736,1.61,848,1.129,852,5.106,872,1.61,875,2.16,901,3.38,984,2.234,985,2.143,1049,4.375,1078,1.259,1115,1.549,1182,4.833,1359,4.473,1480,7.004,1498,3.744,1552,2.017,1553,1.874,1648,2.149,1694,1.708,1932,2.484,2120,6.447,2675,1.964,3143,6.6,3145,6.6,3156,7.142,3167,2.702,3168,2.702,3169,2.702,3170,2.341,3171,8.241,3172,2.702,3173,4.528,3174,5.844,3175,4.528,3176,4.528,3177,2.702,3178,5.844,3179,2.702,3180,2.484,3181,2.702,3182,2.702,3183,2.702,3184,2.484,3185,4.163,3186,2.702,3187,4.528,3188,2.702,3189,2.702,3190,2.702,3191,2.702,3192,2.702,3193,2.702,3194,2.702,3195,2.702,3196,2.702,3197,2.702,3198,2.702]],["title/684",[455,4.647]],["content/684",[16,0.963,26,2.024,117,3.796,461,5.717,503,5.25,520,3.927,525,4.249,859,2.698,911,4.024,998,3.927,1049,3.679,1527,4.249,2968,6.005,3143,8.028,3145,8.028,3199,6.93,3200,6.93,3201,6.93,3202,6.93,3203,6.93,3204,6.93,3205,6.93]],["title/685",[1083,4.588]],["content/685",[16,1.071,26,2.25,72,2.206,96,2.814,198,4.192,239,1.684,272,3.592,411,1.96,427,2.825,434,1.876,439,3.469,486,2.499,547,2.947,604,3.707,637,2.519,858,3.972,895,4.092,898,4.893,899,4.4,985,2.519,987,3.48,998,3.015,1031,3.052,1057,4.092,1083,5.262,1088,4.092,1442,4.4,1554,4.611,1580,4.4,1642,4.092,1770,4.232,1959,4.953,3206,5.321]],["title/686",[96,2.885]],["content/686",[16,1.588,26,1.748,96,3.06,98,3.617,99,1.648,191,3.058,241,3.521,272,2.79,327,3.568,411,1.295,434,2.111,503,3.392,604,2.879,719,4.761,982,4.066,987,3.914,995,3.279,1016,3.987,1017,4.761,1030,4.995,1041,4.468,1068,2.267,1083,3.476,1141,4.151,1350,4.066,1590,3.847,1599,3.476,1814,5.187,1833,4.246,2806,5.187,2880,5.504,3207,5.504]],["title/687",[198,3.655]],["content/687",[16,1.505,46,1.346,47,1.042,71,2.077,72,2.421,96,2.73,99,2.901,105,1.245,122,2.036,125,2.526,144,4.302,198,5.225,275,4.584,286,1.848,365,1.926,434,1.366,872,2.309,916,1.979,995,2.122,1068,2.832,1075,2.747,1078,1.806,1082,2.49,1087,2.278,1095,1.997,1174,2.892,1218,4.851,1444,2.099,1513,3.562,1539,2.375,1959,2.49,2678,7.659,2972,3.562,3208,3.873,3209,3.873,3210,3.873]],["title/688",[1106,3.627,1590,4.015]],["content/688",[16,1.244,26,1.523,49,2.508,67,3.013,96,1.904,99,3.103,105,1.677,125,1.352,138,2.221,156,2.99,198,4.553,199,3.352,272,2.431,445,2.888,449,2.413,911,3.029,992,3.542,995,2.857,1005,2.689,1046,4.011,1068,1.976,1083,3.029,1106,5.715,1474,3.474,1552,3.893,1584,2.594,1590,3.352,1596,4.148,1680,4.148,1691,4.519,1811,4.011,1833,3.699,2636,4.519,3211,5.215,3212,5.215]],["title/689",[71,3.35,72,1.788]],["content/689",[16,0.989,26,2.078,71,3.817,72,2.037,96,2.599,198,3.293,239,1.555,272,3.318,411,2.04,439,2.486,442,3.05,582,4.133,966,4.43,987,4.655,995,3.899,998,4.033,1083,5.476,1085,4.243,1141,4.936,1387,4.575,1474,4.741,1527,4.364,1537,4.741]],["title/690",[1515,4.995]],["content/690",[50,3.578,71,5.093,72,2.718,76,3.206,125,2.463,239,1.265,267,2.53,365,4.723,411,1.77,439,2.021,450,2.53,547,4.533,613,2.62,987,3.785,1030,3.45,1057,4.452,1078,3.816,1083,4.753,1085,3.45,1087,4.815,1599,3.361,1626,3.66,1728,5.452,1878,4.452,3213,5.788,3214,5.788,3215,5.788]],["title/691",[16,0.718,80,2.615,1551,4.271]],["content/691",[16,1.547,50,2.193,60,2.778,71,4.698,72,2.765,73,2.81,80,2.54,96,2.696,99,2.66,125,1.301,198,4.053,272,2.339,273,3.342,286,2.394,290,2.021,291,2.682,361,2.691,415,2.719,427,2.663,434,1.769,545,2.223,624,2.033,911,2.913,987,3.281,995,2.748,1068,3.318,1087,2.951,1091,2.877,1100,4.401,1105,2.99,1128,2.663,1728,4.917,2862,4.613,2958,4.347]],["title/692",[26,1.286,99,1.212,337,3.2,623,2.933]],["content/692",[16,1.155,26,2.806,46,2.057,47,1.593,71,4.459,72,2.38,73,3.315,99,2.87,120,2.553,156,3.273,197,2.33,198,2.738,291,2.15,337,4.302,361,3.174,427,3.142,445,3.278,547,3.278,623,3.942,624,2.399,671,3.052,911,3.437,966,3.683,994,4.105,1068,2.242,1075,4.198,1087,4.891,1138,4.302,1728,3.942,1771,4.707]],["title/693",[1091,4.531]],["content/693",[16,1.129,26,1.292,46,2.337,47,1.809,50,2.939,67,1.489,71,2.374,72,1.267,73,2.48,80,4.595,96,2.455,99,2.688,101,3.404,120,1.91,125,2.108,144,3.14,146,2.755,156,1.743,197,1.743,290,2.709,365,2.202,373,2.949,427,2.35,613,2.003,624,2.725,643,2.063,864,3.07,936,2.183,994,3.07,1005,2.283,1008,2.571,1057,3.404,1068,1.677,1087,3.955,1091,3.856,1100,2.639,1113,5.347,1120,2.452,1128,2.35,1141,4.663,1589,4.07,1728,2.949,1731,2.845,1771,3.521,3216,4.427,3217,4.427,3218,4.427,3219,4.427,3220,4.427]],["title/697",[71,3.35,1094,4.332]],["content/697",[16,1.016,239,1.598,398,4.421,411,1.582,439,3.354,481,3.577,637,3.463,943,6.339,989,4.485,1033,4.145,1068,2.771,1082,4.702,1083,6.225,1087,5.648,1094,5.073,1919,6.049,2804,6.727,2979,6.727,3221,7.315]],["title/698",[1515,4.995]],["content/698",[71,4.63,72,2.471,273,5.751,453,7.14,474,3.724,615,3.563,643,4.025,1094,5.988,1515,5.458,1734,6.867,1840,6.275,3222,8.634]],["title/699",[1091,4.531]],["content/699",[16,1.06,71,4.094,72,2.185,290,3.978,368,4.012,449,3.531,544,4.992,817,4.826,868,4.826,1083,4.433,1091,6.276,1095,3.936,1100,5.885,3223,7.633,3224,7.633,3225,7.633]],["title/700",[1092,5.898]],["content/700",[16,1.43,26,2.156,71,4.698,72,1.436,73,4.135,99,1.381,239,1.096,270,2.719,275,2.719,290,2.974,341,3.032,415,2.719,434,1.769,449,2.321,470,3.771,474,2.164,480,3.342,532,2.321,545,3.272,864,3.479,1033,2.843,1068,1.9,1087,2.951,1091,4.234,1092,7.686,1096,4.347,1100,6.137,1155,4.149,1165,3.745,1539,3.076,1602,3.99,1724,4.828,1727,3.99,2826,4.149,3226,5.017]],["title/701",[1087,4.647]],["content/701",[16,1.143,239,1.798,412,5.499,439,2.874,452,4.413,617,3.698,643,3.836,831,7.567,1087,4.84,1089,6.805,2987,7.131,3227,8.229,3228,8.229,3229,8.229]],["title/702",[16,0.718,604,2.484,1566,3.754]],["content/702",[16,0.911,50,1.872,71,5.441,72,1.876,73,4.461,76,5.619,99,2.793,105,1.377,125,1.7,198,3.685,267,1.872,275,2.321,290,1.725,291,1.556,309,3.711,374,2.094,417,2.301,449,3.033,643,3.056,673,2.043,720,2.427,856,3.711,875,2.043,929,3.038,1008,2.487,1091,2.456,1094,2.97,1098,3.038,1105,2.553,1106,3.807,1137,2.853,1147,2.251,1449,2.909,1552,4.894,1626,2.708,1728,4.367,2057,3.113,2306,3.542,2608,3.542,3230,4.283,3231,4.283,3232,4.283,3233,4.283,3234,3.711,3235,6.556]],["title/703",[16,0.868,3236,6.246]],["content/703",[16,1.318,50,2.113,71,2.592,72,1.383,99,1.977,239,1.056,275,3.892,290,2.893,358,3.106,398,2.921,411,1.045,432,6.591,433,3.219,434,1.704,514,2.324,545,2.142,577,3.106,673,2.306,846,3.428,855,4.07,912,2.676,916,2.469,1043,2.963,1068,1.831,1075,3.428,1082,4.616,1083,2.806,1087,4.224,1091,5.441,1094,5.943,1098,3.428,1413,3.844,1522,3.717,1566,3.513,1584,2.404,1590,3.106,1675,2.963,1706,3.055,1716,3.428,1959,3.106,3237,4.833,3238,4.833,3239,4.833,3240,4.833]],["title/708",[265,4.54,275,3.385]],["content/708",[8,0.893,16,1.212,26,1.853,50,2.774,71,4.681,72,1.816,73,3.555,98,3.835,99,1.747,105,2.04,156,2.498,198,2.936,271,3.439,272,4.068,563,4.079,578,3.891,624,2.572,679,2.47,857,3.403,1015,3.891,1083,3.685,1088,4.881,1099,4.227,1527,3.891,1595,5.047,1634,4.079,1945,5.835,3097,5.248,3241,6.346,3242,6.346,3243,6.346]],["title/709",[1446,3.888,1591,4.243]],["content/709",[0,2.221,16,0.958,67,1.54,71,3.7,72,1.975,96,3.618,99,2.867,100,2.298,120,1.976,156,2.716,198,2.119,265,7.202,267,2.002,269,2.482,271,5.006,272,2.135,274,1.95,275,3.739,290,1.845,417,1.607,433,4.596,436,3.177,450,2.002,483,2.203,540,2.298,546,2.537,578,2.808,623,3.051,671,2.362,679,1.783,688,3.329,920,3.643,1068,1.735,1075,3.249,1083,2.66,1128,2.432,1152,3.788,1368,3.249,1553,3.177,1566,3.329,1638,3.42,1655,2.944,3244,4.58,3245,4.58]],["title/710",[275,3.385,1517,5.413]],["content/710",[8,1.691,16,0.739,50,2.326,72,2.593,96,2.814,99,2.122,109,2.095,111,1.858,112,1.566,122,5.221,209,2.443,267,2.326,271,2.883,275,2.883,433,5.133,436,3.69,450,2.326,486,2.499,637,2.519,857,2.854,877,4.42,1060,3.69,1076,4.4,1083,4.475,1088,4.092,1497,4.4,2725,4.893,3246,5.321,3247,5.321,3248,5.321,3249,5.321]],["title/711",[855,3.54,1566,4.54]],["content/711",[16,1.548,69,2.32,96,3.811,99,2.874,109,2.728,432,5.33,433,4.616,436,6.426,514,3.333,623,4.616,855,5.914,1566,6.734,1610,5.174,1696,4.807,1959,4.454,2812,6.005]],["title/712",[1152,5.166,1827,4.663]],["content/712",[16,1.346,74,4.851,96,2.709,99,2.668,100,3.722,265,5.392,271,4.02,275,4.02,375,4.255,403,5.197,486,3.485,578,4.548,941,4.941,1098,5.262,1229,5.145,1705,5.705,3052,6.821,3250,7.418,3251,7.418]],["title/728",[63,2.828]],["content/728",[16,0.938,59,3.782,63,3.687,121,4.081,211,4.79,239,1.989,411,1.461,434,2.381,481,3.302,484,4.683,613,3.056,647,3.782,848,2.821,859,2.629,909,4.587,968,3.782,1031,3.873,1717,4.908,1770,5.371,3007,4.79,3252,6.209,3253,6.209,3254,6.752,3255,6.752,3256,6.752,3257,6.752]],["title/729",[3007,5.604]],["content/729",[16,0.841,61,3.093,62,3.217,63,3.482,109,3.831,111,2.114,112,1.782,138,2.578,239,1.323,293,3.959,327,3.609,329,3.214,365,3.011,473,3.712,478,4.063,486,2.844,532,2.801,540,3.038,615,2.498,654,3.959,841,4.656,859,2.357,983,4.033,1055,3.959,1341,4.112,1350,4.112,1441,3.659,1509,3.768,1512,4.033,1877,4.52,3007,4.294,3258,5.567]],["title/730",[1742,5.48]],["content/730",[63,3.925,122,3.505,360,4.176,480,4.441,481,3.26,492,3.156,519,3.576,532,3.085,685,5.514,875,3.181,912,3.693,1742,4.624,1745,4.977,1840,4.846,1959,4.285,2149,5.128,2574,7.606,2703,5.514,3259,6.131,3260,5.514,3261,5.303,3262,5.777,3263,6.667]],["title/731",[1101,5.167]],["content/731",[16,0.963,33,3.447,53,2.108,63,3.735,72,1.984,114,3.093,156,2.728,191,3.54,239,1.514,365,4.608,367,5.45,385,5.512,434,2.444,494,4.707,613,3.137,642,4.382,859,3.607,1507,6.005,1529,4.454,1745,5.174,1831,6.005,3264,6.93]],["title/732",[2359,5.367]],["content/732",[6,2.665,8,1.689,53,2.14,63,3.764,205,3.413,206,5.115,207,4.881,208,5.412,210,4.253,293,4.602,417,2.47,423,2.884,450,3.076,752,3.262,848,2.94,1498,3.889,1553,3.262,1731,4.523,2359,4.78,2504,3.741,3261,5.597,3265,6.471,3266,4.076,3267,7.037,3268,7.037,3269,7.037,3270,7.037,3271,4.703,3272,4.703]],["title/733",[10,3.162,2359,4.243]],["content/733",[8,1.573,10,3.143,16,0.862,22,1.688,35,2.077,53,1.888,63,3.077,96,1.457,108,2.119,109,1.571,187,2.901,205,3.695,206,4.512,207,4.306,208,3.069,210,3.752,211,5.405,327,2.379,417,1.4,423,2.447,450,2.714,451,6.698,478,1.919,483,1.919,539,1.875,563,4.897,578,2.447,579,1.647,859,1.554,1105,2.379,1128,2.119,1623,6.839,1695,2.768,1745,2.979,1813,2.979,1840,2.901,2109,3.3,2305,2.979,2359,4.217,3273,3.67,3274,3.3,3275,3.991,3276,3.991,3277,3.991,3278,3.991,3279,3.991,3280,3.991]],["title/734",[63,1.373,2359,2.606,2574,2.661,3260,3.173,3261,3.052]],["content/734",[8,1.313,16,1.111,53,1.704,59,3.139,63,4.121,72,1.604,114,2.501,156,2.206,207,3.886,290,2.258,293,3.665,365,2.787,367,3.296,423,3.436,450,2.45,494,3.806,505,4.31,506,3.543,513,3.665,543,3.436,1078,2.612,1093,3.176,1529,3.602,1559,4.457,1921,4.31,2359,3.806,2574,3.886,2958,6.931,3260,4.634,3261,4.457,3265,5.153,3266,4.856,3281,5.603,3282,5.153,3283,5.153]],["title/735",[122,2.715,2574,3.582,3262,4.476]],["content/735",[3,1.647,8,1.7,10,3.035,16,0.53,33,1.899,35,1.987,53,1.161,63,3.623,67,1.284,114,1.703,122,4.411,187,2.775,205,1.851,206,2.775,207,4.159,210,2.307,226,3.063,269,2.069,293,2.496,365,1.899,407,3.285,417,2.599,423,3.676,450,2.621,451,4.073,579,1.575,859,1.486,1101,3.921,1623,5.136,1921,4.612,1946,2.593,2109,6.124,2359,5.03,2574,4.159,3260,3.157,3261,4.769,3262,5.196,3266,3.308,3273,3.51,3274,3.157,3282,3.51,3283,3.51,3284,5.996]],["title/736",[109,3.111]],["content/736",[8,1.754,16,0.833,53,1.161,61,1.95,63,3.264,86,1.575,105,1.227,109,3.304,111,2.094,112,1.765,125,1.555,211,2.708,212,2.307,226,3.063,227,2.936,233,3.036,239,0.834,268,2.453,286,1.821,417,2.599,441,1.98,442,1.636,445,2.114,450,2.621,451,2.593,476,2.189,579,1.575,581,3.574,644,3.51,720,2.163,726,2.708,859,1.486,920,3.036,1014,5.591,1714,3.157,1745,2.85,1899,3.157,2109,4.959,3285,3.51,3286,3.817,3287,3.817,3288,3.308,3289,3.817,3290,3.817,3291,3.817,3292,3.817]],["title/715",[16,0.868,72,1.788]],["content/715",[16,1.483,26,2.521,96,3.153,190,5.403,239,1.886,427,4.584,941,5.751,1068,3.27,1686,4.836,3293,8.634]],["title/716",[1059,6.284]],["content/716",[16,1.631,46,2.574,47,1.993,67,1.284,72,2.771,96,2.704,125,2.365,145,5.03,146,4.609,267,1.669,274,1.625,282,2.708,312,1.753,327,3.574,361,4.5,407,3.285,411,1.297,473,2.34,514,1.836,615,1.575,673,3.533,848,1.595,858,2.85,916,1.95,1030,2.275,1068,1.446,1072,2.936,1093,2.163,1153,2.007,1350,2.593,1449,2.593,1549,3.51,1665,2.775,1782,3.51,1814,3.308,1837,2.85,1843,3.51,1941,2.85,2335,2.708,2653,2.85,2848,3.51,2876,3.157,3106,3.51,3117,3.51,3294,3.817,3295,3.817,3296,3.817,3297,3.817,3298,3.817]],["title/717",[16,0.868,329,3.316]],["content/717",[8,1.797,10,0.531,16,1.126,17,2.43,45,1.957,46,2.176,47,2.181,48,0.541,49,1.317,50,0.853,51,1.255,53,0.833,59,1.094,61,2.339,62,0.4,63,0.98,67,1.152,72,0.3,80,0.531,96,3.03,97,4.693,98,2.439,99,0.538,100,3.85,101,1.502,105,1.101,107,1.326,109,0.769,110,1.364,111,1.196,112,1.008,114,1.221,117,0.575,120,1.478,121,3.326,122,2.406,125,0.71,137,1.989,138,0.447,144,1.942,145,1.859,146,1.704,147,0.713,148,1.016,291,0.995,312,0.482,329,1.036,337,0.763,338,1.783,339,0.675,340,1.516,341,1.18,342,2.541,365,0.522,374,0.955,380,0.664,401,0.634,410,1.234,411,0.592,444,0.784,454,0.699,461,0.575,473,0.643,477,0.609,480,0.699,493,0.807,495,0.453,505,1.502,540,0.98,599,0.971,613,1.826,642,0.664,647,0.588,650,0.569,651,0.965,680,3.681,719,0.835,832,0.763,872,0.626,902,0.713,968,1.533,1005,0.541,1008,0.609,1033,0.595,1095,0.541,1099,0.699,1106,1.989,1107,1.18,1137,0.699,1218,1.12,1221,0.868,1504,0.699,1527,0.643,1546,0.699,1547,1.458,1552,0.784,1553,0.728,1559,1.553,1590,1.255,1591,1.326,1610,2.558,1611,0.505,1623,0.728,1695,0.728,1734,0.835,1959,0.675,2636,0.909,2653,0.784,2855,0.965,2863,2.517,3299,0.909,3300,1.049,3301,0.965,3302,1.049,3303,1.049,3304,1.049,3305,1.049,3306,1.049,3307,1.049,3308,1.049,3309,1.049,3310,1.049]],["title/718",[16,0.868,1610,4.663]],["content/718",[]],["title/719",[16,0.868,96,2.281]],["content/719",[]],["title/816",[16,0.868,53,1.9]],["content/816",[16,1.556,26,3.068,53,3.195,99,2.574,120,3.029,275,5.066,365,3.493,411,1.519,579,2.898,817,4.44,1106,4.078,1368,4.981,1588,7.73,1611,3.378,2124,6.086,2569,6.458]],["title/817",[26,1.824,99,1.72]],["content/817",[16,1.143,26,2.403,99,3.275,120,3.55,197,3.24,558,4.973,848,3.438,859,3.204,916,4.204,1137,5.481,1694,5.203,1706,5.203]],["title/818",[26,1.824,3311,6.246]],["content/818",[16,1.284,49,4.444,99,2.544,196,5.435,558,5.584,679,3.597,1165,6.898,3312,9.239]],["title/819",[26,1.824,3313,6.246]],["content/819",[16,1.261,99,2.5,286,4.332,449,4.201,1140,6.6,1165,6.779,3314,8.349,3315,8.349,3316,9.08]],["title/820",[26,1.824,3317,6.246]],["content/820",[16,1.18,62,3.235,226,5.397,293,6.909,342,4.262,1078,3.96,1165,6.341,1728,5.658,2321,7.361,3314,7.811,3315,7.811]],["title/821",[26,1.824,180,3.191]],["content/821",[16,1.045,62,2.865,72,2.154,105,2.419,114,4.365,120,3.246,180,3.844,197,2.962,450,3.289,642,4.757,679,2.929,916,3.844,1078,3.507,1147,3.955,1706,6.184,1727,5.985,1741,5.111,1800,5.617,2305,5.617]],["title/822",[26,1.824,3318,6.246]],["content/822",[16,1.545,74,6.042,180,4.72,342,4.636,1165,6.898,1728,6.154,3319,9.239]],["title/823",[26,1.824,3320,5.744]],["content/823",[16,1.219,95,6.226,99,2.417,110,3.495,120,3.786,546,4.861,615,3.622,808,6.816,916,4.484,1337,7.259]],["title/824",[26,1.824,3321,6.246]],["content/824",[16,1.24,95,6.332,99,2.458,411,1.931,514,4.293,808,5.643,1291,5.838,1337,7.382,1693,7.735,3320,8.208]],["title/825",[26,1.824,340,3.46]],["content/825",[1856,8.377]],["title/826",[847,3.683]],["content/826",[16,1.284,62,3.519,63,3.307,411,1.998,441,3.051,859,4.33,3322,9.239]],["title/827",[3323,7.901]],["content/827",[16,1.38,45,4.818,613,4.497,847,4.632]],["title/828",[109,3.111]],["content/828",[16,1.284,120,3.986,122,4.857,474,5.148,1991,5.938,1992,6.898]],["title/829",[63,2.828]],["content/829",[16,1.407,63,3.624,613,4.584]],["title/830",[117,4.328]],["content/830",[16,1.579,338,4.984,849,5.426,1107,5.787,1803,4.463]],["title/831",[105,2.54]],["content/831",[16,1.355,59,5.463,114,4.352,120,4.207,474,4.207]],["title/832",[112,2.326]],["content/832",[3,4.207,16,1.355,110,3.884,112,2.87,120,4.207]],["title/713",[62,2.379,63,2.236]],["content/713",[46,2.26,62,2.476,99,1.79,138,2.769,207,4.51,239,1.421,439,2.271,442,2.787,444,4.854,445,3.601,449,3.008,464,3.73,558,3.93,615,2.683,859,2.531,1059,5.172,1133,4.179,1505,5.378,1509,4.047,1783,4.179,2535,4.51,2580,7.339,2906,5.378,3007,4.612,3156,5.635,3324,6.502,3325,6.502,3326,6.502,3327,6.502,3328,5.979,3329,6.502]],["title/714",[63,1.576,3330,4.403,3331,4.403,3332,4.403]],["content/714",[16,0.915,30,2.38,63,2.356,99,2.464,191,3.363,272,3.069,440,4.386,449,3.046,481,3.219,488,2.803,532,3.046,558,3.979,732,4.098,982,4.472,995,3.606,1133,4.232,1509,4.098,1809,5.063,2906,5.445,3001,4.67,3004,6.054,3032,6.054,3328,6.054,3333,10.168,3334,6.584,3335,6.584,3336,6.584,3337,6.584]],["title/720",[239,1.128,456,2.927,1803,2.408]],["content/720",[26,2.403,117,4.508,156,3.24,239,1.798,274,3.504,434,2.902,532,3.807,823,5.707,851,5.045,985,3.896,1016,5.481,1446,5.122,2641,4.369,2922,7.131,3338,7.567]],["title/721",[2809,6.847]],["content/721",[72,2.065,117,5.213,411,1.561,445,3.996,456,4.089,472,4.562,484,5.004,679,2.809,995,3.952,1005,3.72,1024,4.562,1148,4.562,1446,4.49,1776,6.634,1833,5.118,2051,4.806,2741,6.252,2816,6.252,2826,5.967,3252,6.634,3339,7.215,3340,6.634,3341,7.215]],["title/722",[2533,5.898]],["content/722",[16,0.989,268,4.575,338,3.705,339,4.575,474,3.07,532,3.293,615,2.937,786,4.302,848,2.974,1049,3.779,1078,3.318,1446,4.43,1504,4.741,1509,4.43,1537,4.741,1803,3.318,1804,4.774,2641,5.978,2809,6.168,3253,8.672]],["title/723",[274,3.364]],["content/723",[26,1.303,72,1.937,96,2.471,105,2.175,117,3.706,156,1.758,239,0.975,267,1.951,274,3.479,398,2.698,439,1.559,456,2.53,478,2.147,643,3.154,679,2.634,702,3.166,752,3.096,849,2.53,855,2.53,857,2.394,868,4.278,899,3.692,968,2.501,985,2.113,998,2.53,1005,2.302,1016,2.974,1024,2.822,1041,3.333,1043,2.737,1068,2.563,1088,3.433,1308,3.096,1446,2.778,1596,3.551,1672,2.974,1673,2.778,1833,3.166,1959,2.869,2335,3.166,2641,4.84,2702,3.333,2823,3.868,2850,3.692,2851,3.551,2999,5.204,3062,4.105,3150,3.692,3338,4.105,3342,4.464,3343,4.464,3344,4.464,3345,4.464,3346,4.464,3347,4.464]],["title/724",[1441,3.775,3348,6.246]],["content/724",[8,0.541,16,0.534,26,1.761,62,1.464,72,1.101,105,1.236,117,4.615,148,2.002,156,1.514,239,1.318,343,2.262,417,1.349,439,1.343,445,2.13,449,1.779,450,1.681,514,1.849,539,1.806,540,1.929,578,2.358,579,1.587,615,1.587,752,2.667,864,2.667,868,2.431,916,1.964,954,2.515,985,2.855,998,2.179,1006,3.536,1016,2.561,1068,1.457,1076,3.18,1078,1.792,1093,2.179,1148,2.431,1212,2.871,1441,2.324,1446,2.393,1701,2.667,1714,6.153,1721,3.058,1804,1.947,2107,3.18,2435,3.332,2641,5.155,2655,3.18,2685,3.058,2968,3.332,2999,5.722,3000,5.226,3001,7.201,3046,3.536,3258,3.536,3340,3.536,3349,3.845,3350,3.845,3351,3.845,3352,7.44,3353,3.845,3354,3.845,3355,3.845,3356,3.845,3357,3.845]],["title/725",[1546,5.263]],["content/725",[8,0.433,72,0.882,105,0.99,111,1.076,112,0.907,117,4.063,120,1.329,239,0.673,291,1.119,380,4.055,439,1.076,442,1.32,443,1.574,445,2.796,456,4.982,481,1.506,488,2.731,497,4.194,512,4.642,514,1.482,540,2.533,578,1.889,584,2.707,624,2.599,647,1.726,654,2.015,679,1.965,720,1.746,818,2.3,850,1.67,859,1.199,864,2.137,868,1.948,875,1.47,968,1.726,989,1.889,1002,2.45,1043,1.889,1055,3.301,1081,3.301,1147,1.619,1172,4.194,1176,2.052,1187,2.369,1357,2.67,1359,3.301,1446,1.917,1466,2.015,1500,2.67,1623,2.137,1639,3.669,1644,2.833,1661,2.67,1761,2.833,1803,3.457,1804,1.56,1959,1.98,1964,2.833,1994,2.3,2051,2.052,2528,2.239,2597,4.549,2641,4.345,2705,2.093,2760,4.788,2999,3.882,3019,2.093,3299,2.67,3358,3.081,3359,3.081,3360,3.081,3361,3.081,3362,3.081,3363,3.081,3364,3.081,3365,3.081,3366,3.081,3367,3.081,3368,3.081,3369,5.048,3370,2.67,3371,3.081]],["title/726",[3372,7.265]],["content/726",[8,0.674,86,1.976,205,2.322,268,3.078,341,5.151,439,1.672,456,2.714,467,3.611,478,2.303,481,3.488,488,2.039,508,4.042,519,2.568,522,2.817,523,3.132,524,5.574,532,3.943,545,2.122,547,2.652,561,3.575,581,2.854,584,2.568,673,2.285,720,2.714,847,2.232,963,3.397,982,3.253,998,2.714,1058,3.253,1103,3.683,1148,3.028,1172,3.132,1205,2.781,1509,2.98,1546,3.19,1609,3.683,1784,3.397,1804,3.611,1959,3.078,2107,3.96,2602,3.96,2641,4.525,2642,3.683,3007,3.397,3373,4.15,3374,4.789,3375,4.403,3376,4.789,3377,4.789]],["title/727",[1609,4.804,1804,3.162]],["content/727",[96,1.673,117,2.509,239,1.813,411,1.492,442,1.963,456,2.596,494,3.111,508,4.703,522,2.694,523,2.996,541,3.643,558,2.768,615,1.89,654,4.512,671,2.362,736,2.73,848,1.914,864,3.177,985,2.168,989,2.808,993,3.42,1031,2.627,1054,3.249,1068,1.735,1093,2.596,1214,3.329,1217,3.1,1240,3.177,1547,3.42,1584,2.278,1599,2.66,1609,5.306,1639,3.329,1803,2.135,1804,5.47,1819,3.788,1847,3.523,2608,3.788,2638,4.212,2641,4.406,3038,3.788,3094,4.212,3378,4.58,3379,4.58,3380,4.58,3381,4.58,3382,4.58,3383,4.58,3384,4.58,3385,4.58]],["title/737",[205,2.505,1058,3.508,1803,2.408]],["content/737",[125,1.751,132,4.79,205,4.415,338,3.515,434,2.381,445,3.74,478,3.248,493,5.193,615,2.787,966,4.203,968,3.782,985,3.197,998,3.827,1058,4.587,1446,4.203,1527,4.14,1547,5.041,1877,5.041,2438,4.683,2641,5.468,2642,5.193,2760,5.041,3098,6.209,3373,5.852,3386,6.752,3387,6.752]],["title/738",[3373,6.847]],["content/738",[22,2.206,53,1.586,72,1.493,86,2.152,99,2.091,117,2.857,125,1.352,137,3.029,205,3.683,239,1.659,411,2.129,452,2.797,543,3.198,582,3.029,615,2.152,622,2.55,654,3.411,679,2.03,998,2.955,1058,5.159,1069,4.011,1196,3.068,1229,3.617,1357,4.519,1466,3.411,1492,3.617,1677,6.281,1929,4.148,2051,3.474,2641,4.756,2642,4.011,2934,4.519,3388,5.215,3389,5.215,3390,4.519,3391,4.796,3392,4.519,3393,5.215,3394,4.796,3395,5.215,3396,5.215,3397,4.796]],["title/739",[117,2.829,341,3.122,679,2.011]],["content/739",[16,1.101,53,2.41,72,2.268,117,4.341,380,5.01,427,4.207,615,3.27,622,3.875,1069,6.095,1078,3.694,1196,5.949,1557,5.916,2525,4.79,2641,4.207,2642,6.095,2643,3.906,2645,3.906,3170,10.167,3391,7.287,3392,6.867,3394,7.287,3397,7.287,3398,4.248]],["title/740",[3399,6.076]],["content/740",[16,0.804,117,3.171,239,1.265,274,3.485,399,6.51,415,3.137,439,2.021,452,3.104,486,2.719,506,3.66,516,3.206,525,3.549,563,3.72,613,2.62,859,2.253,1021,4.207,1049,3.073,1058,3.932,1205,4.753,1584,2.879,1657,5.016,1677,4.787,1705,4.452,1755,5.016,1803,2.698,2641,5.48,2702,4.321,2752,5.323,2787,5.323,2916,5.016,3390,7.093,3392,7.093,3399,4.452,3400,5.323]],["title/741",[417,2.192,1205,3.627]],["content/741",[47,2.001,48,2.612,59,2.837,76,2.805,96,1.85,138,2.157,411,1.608,434,1.786,479,4.189,493,3.895,508,2.87,522,5.181,539,2.379,546,2.805,599,2.519,624,2.053,817,3.202,855,2.87,1053,3.781,1058,5.983,1066,3.255,1205,6.002,1559,4.029,1584,3.698,2044,4.657,2051,3.374,2515,4.029,2642,5.718,2759,6.442,3068,6.836,3390,6.442,3401,5.065,3402,7.434,3403,5.065,3404,5.065,3405,5.065,3406,5.065,3407,5.065,3408,5.065]],["title/742",[72,1.26,579,1.817,622,2.153,1205,2.557]],["content/742",[16,1.005,26,1.424,47,2.739,48,2.515,72,1.396,96,1.781,99,1.343,114,2.176,120,2.104,131,2.869,138,2.077,339,3.135,411,1.564,462,2.118,473,2.99,477,5.003,503,2.764,508,2.764,522,2.869,539,2.291,558,2.948,582,2.832,615,2.013,624,2.93,630,2.589,848,2.038,876,2.797,1205,5.534,1218,2.797,1803,3.371,1804,2.469,2344,3.751,2641,2.589,2653,3.641,2760,3.641,3399,7.329,3409,4.877,3410,4.877,3411,4.877,3412,4.877,3413,4.877,3414,4.877,3415,4.485]],["title/752",[338,3.252,1803,2.912]],["content/752",[16,1.109,72,2.284,117,4.371,239,2.219,411,1.726,439,2.787,456,4.522,604,3.838,850,4.325,902,5.42,936,3.935,1449,5.42,1803,3.72,2641,4.236,2702,5.957,3150,6.599]],["title/753",[16,0.868,850,3.385]],["content/753",[8,1.711,16,1.23,35,1.172,82,1.5,105,1.952,114,2.279,117,1.233,120,1.673,125,2.078,147,1.529,203,2.982,226,1.15,291,0.818,312,1.781,365,1.929,375,2.93,380,2.452,417,2.13,435,1.791,443,1.15,450,0.984,474,0.971,478,1.083,481,1.101,483,1.083,508,1.276,519,1.207,545,0.998,561,1.681,578,1.38,582,2.966,584,4.012,624,0.912,637,1.836,727,1.951,755,2.798,788,1.791,858,1.681,865,1.183,989,1.38,1173,2.07,1291,1.472,1447,1.862,1450,2.07,1608,1.636,1623,4.21,1628,1.681,1640,1.791,1685,1.597,1688,1.731,1796,1.791,1802,1.791,1803,1.049,1812,1.862,1828,1.862,1857,1.731,2149,1.731,2604,2.07,2641,3.223,2887,3.566,3274,1.862,3299,4.426,3416,5.108,3417,2.251,3418,2.251,3419,2.251,3420,3.566,3421,3.878,3422,6.071,3423,2.251,3424,2.251,3425,3.878,3426,2.251,3427,3.878,3428,2.251,3429,2.251,3430,2.251,3431,2.251,3432,2.251,3433,6.071,3434,3.878,3435,5.108,3436,2.251,3437,3.878,3438,3.878,3439,2.251]],["title/754",[114,2.787,3150,5.166]],["content/754",[6,2.102,16,1.01,52,2.52,72,1.678,96,1.355,99,1.614,105,1.885,114,2.616,117,2.032,125,0.962,239,1.281,267,1.622,286,1.77,290,1.495,368,1.95,371,2.631,394,2.01,398,3.543,399,2.951,436,2.573,439,1.296,456,3.322,514,2.82,521,2.769,578,2.275,581,3.495,582,5.223,584,4.824,597,1.421,673,1.77,716,3.543,818,2.769,855,2.102,865,1.95,867,5.156,876,2.128,971,3.068,989,2.275,1033,2.102,1068,1.405,1078,1.729,1083,2.154,1110,2.853,1120,2.055,1125,2.951,1147,1.95,1449,2.52,1537,2.471,1555,2.769,1584,3.615,1689,3.068,1784,2.631,1803,1.729,1831,3.215,1840,2.696,2149,2.853,2528,2.696,2641,4.775,2677,2.951,2702,4.377,2760,2.769,3234,3.215,3440,3.71,3441,3.215]],["title/755",[1153,3.283,2641,3.316]],["content/755",[16,1.287,72,1.984,99,1.908,269,3.756,286,3.307,358,4.454,434,2.444,481,3.389,582,5.38,643,3.231,654,4.532,848,2.895,867,4.916,1021,5.037,1078,3.231,1153,4.87,1387,4.454,1568,6.005,1584,3.447,1626,4.382,1803,3.231,2438,4.807,2641,4.919]],["title/756",[2641,3.316,3442,6.246]],["content/756",[8,1.117,16,1.103,86,2.288,99,1.527,105,2.552,110,2.208,131,3.261,147,3.766,286,2.646,342,2.782,358,3.564,417,1.946,423,3.4,439,1.936,462,2.408,582,4.61,623,3.693,936,2.734,954,3.626,975,3.18,1706,3.505,1784,3.933,1810,3.933,2179,7.3,2241,4.805,2305,4.139,2542,5.098,2574,5.506,2641,4.923,2647,4.805,2919,5.098,3160,4.805,3420,5.098,3443,8.036,3444,5.544,3445,5.544]],["title/743",[624,2.093,1803,2.408,2597,3.664]],["content/743",[110,2.834,239,1.555,338,3.705,411,1.539,439,2.486,443,3.636,456,4.033,462,3.091,464,4.082,488,3.031,509,4.741,531,4.133,546,3.942,849,4.033,936,3.51,1172,4.655,1439,5.173,1803,3.318,1804,3.603,1840,5.173,2581,5.474,2596,5.886,2687,5.661,3019,4.834,3446,7.117]],["title/744",[2687,6.284]],["content/744",[]],["title/745",[290,1.546,643,1.788,1172,2.509,1804,1.942,3019,2.606]],["content/745",[0,1.443,8,0.419,16,0.87,46,1.706,47,0.801,67,1.65,72,0.852,82,1.983,86,1.228,107,2.022,109,1.172,114,2.19,120,2.117,148,1.549,191,1.52,197,1.932,205,2.38,239,1.072,271,1.613,366,2.111,403,3.358,407,1.63,411,0.644,427,1.58,434,1.73,439,2.187,441,0.983,477,1.728,483,1.432,495,1.284,513,3.209,514,2.36,515,2.222,525,1.825,539,1.398,545,2.175,550,1.707,582,1.728,584,3.358,599,1.48,608,2.367,650,1.613,679,2.437,749,2.064,810,2.289,847,2.288,848,1.243,857,2.632,868,1.882,877,1.707,985,1.409,1014,1.825,1058,2.022,1101,3.209,1172,3.209,1205,2.85,1218,2.815,1340,2.111,1365,4.058,1367,2.966,1803,1.387,1804,4.067,1815,2.022,1839,1.564,1852,2.461,1877,2.222,1910,2.289,2514,1.946,2525,1.799,2641,3.324,2646,2.579,2648,2.737,2653,2.222,2683,2.461,3019,7.104,3160,2.579,3375,2.737,3447,2.737,3448,2.976,3449,2.976,3450,2.976,3451,2.737,3452,2.976]],["title/746",[1153,2.715,1172,3.378,3019,3.508]],["content/746",[16,1.189,18,2.465,46,1.377,72,1.134,86,3.83,105,1.273,109,1.559,114,1.767,117,2.17,120,2.662,148,2.062,197,2.43,239,0.865,270,2.147,358,2.546,394,2.147,403,4.067,411,0.857,415,2.147,434,2.674,439,2.99,441,1.308,488,2.628,513,2.59,514,1.905,515,2.957,545,2.735,561,2.957,582,2.3,643,1.846,650,2.147,679,1.542,750,2.879,810,3.046,848,1.655,1022,2.465,1063,2.194,1151,2.957,1153,4.5,1218,2.272,1561,2.879,1567,3.275,1642,3.046,1804,2.005,1815,2.69,1839,2.082,1852,6.271,2514,2.59,2525,2.394,2529,2.504,2621,3.642,2677,3.15,3019,6.677,3451,3.642,3453,3.961,3454,3.961]],["title/747",[1153,2.715,1205,2.999,3399,3.972]],["content/747",[0,2.129,16,1.48,18,2.732,46,1.526,47,1.798,49,2.111,72,1.256,86,2.757,109,1.728,114,1.959,148,2.285,239,0.959,267,1.919,403,3.583,411,0.949,439,1.533,441,1.45,477,3.879,488,1.869,513,2.871,514,2.111,515,3.277,545,2.96,582,4.696,622,2.146,643,2.046,650,2.379,679,1.709,810,3.376,848,1.834,1022,2.732,1058,2.982,1063,2.431,1153,5.112,1205,5.949,1218,4.638,1567,3.63,1804,2.222,1839,2.307,2514,2.871,2525,2.653,2529,2.775,3019,6.139,3399,3.376]],["title/748",[1172,3.378,3019,3.508,3443,4.476]],["content/748",[16,1.408,18,3.008,72,1.383,86,2.963,109,1.903,148,2.516,239,1.056,271,2.619,403,3.851,411,1.045,439,1.688,441,1.596,462,2.098,478,2.324,488,2.058,513,3.16,514,2.324,545,3.182,582,4.17,643,2.253,650,2.619,679,1.881,810,3.717,848,2.019,1022,3.008,1063,2.676,1153,3.775,1172,4.696,1218,2.772,1567,3.996,1804,2.446,1839,2.54,1910,3.717,2514,3.16,2525,2.921,3019,7.471,3059,4.444,3132,4.444,3443,9.205]],["title/749",[197,1.733,1095,2.27,1172,2.879,3455,4.049]],["content/749",[16,0.822,86,3.431,114,3.71,120,2.553,156,2.33,197,2.33,329,3.142,342,2.969,439,2.067,462,2.57,474,2.553,523,3.87,584,4.459,624,2.399,936,2.918,1068,3.641,1077,3.577,1205,4.828,1626,3.742,1701,4.105,1715,4.707,1804,4.209,2512,4.894,2525,5.025,2641,4.414,2683,6.876,2754,5.442,3399,4.552,3456,5.918,3457,5.442]],["title/750",[1803,2.912,3458,5.744]],["content/750",[69,2.555,107,5.185,239,1.668,271,4.137,441,2.521,488,3.25,520,4.326,573,5.698,650,4.137,857,4.094,902,5.185,1625,6.071,1803,3.558,2525,4.613,2526,4.68,3447,7.019,3457,7.019,3458,9.078,3459,7.633]],["title/751",[3372,7.265]],["content/751",[1,4.921,16,1.045,100,3.775,114,4.365,441,2.485,443,4.997,525,4.613,622,3.679,851,4.613,1068,2.85,1223,6.919,1359,4.921,1466,4.921,1803,3.507,1824,6.222,1852,6.222,1911,5.111,2649,6.52,3455,6.919]],["title/757",[508,2.174,522,2.257,523,2.509,524,2.509,1803,1.788]],["content/757",[156,3.005,239,1.668,411,1.651,439,2.666,500,5.414,508,4.326,514,3.671,522,4.49,552,4.751,554,6.614,556,5.87,584,4.094,1439,5.548,1639,5.548,1803,3.558,1804,3.864,2581,5.87,2596,6.312,2641,4.052,3460,7.019]],["title/758",[125,1.339,291,1.877,1803,2.408]],["content/758",[8,1.029,125,2.78,289,4.196,291,3.489,411,2.462,450,3.198,470,3.737,522,4.303,617,3.287,630,5.098,647,4.097,657,3.095,1803,3.41,2546,6.049,2657,6.339,3461,7.315]],["title/759",[1803,2.912,1804,3.162]],["content/759",[8,1.488,16,1.576,26,0.789,35,1.406,62,1.029,72,0.773,96,2.134,109,1.064,114,2.02,131,3.438,148,3.56,271,3.706,286,1.289,329,1.434,411,1.479,417,0.948,441,0.892,474,1.165,478,1.299,483,2.811,497,1.767,520,1.531,522,2.663,558,1.633,561,2.017,578,2.776,579,1.115,584,2.428,597,1.034,599,1.344,615,1.115,630,4.044,678,1.916,826,2.149,847,1.259,857,1.449,859,2.275,876,3.352,916,1.38,1014,1.656,1038,1.589,1078,1.259,1094,4.053,1095,3.014,1153,1.42,1559,2.149,1583,2.484,1638,4.363,1803,1.259,1804,4.172,1822,2.234,1839,1.42,1847,2.078,1946,3.075,2544,4.833,2547,3.923,2641,3.103,2649,2.341,2655,2.234,2657,2.341,3415,2.484,3462,2.702,3463,2.702,3464,2.702,3465,2.702,3466,2.702,3467,2.702,3468,2.702,3469,2.702,3470,2.702,3471,2.702,3472,2.702,3473,2.702]],["title/851",[492,2.957,502,2.562]],["content/851",[62,2.388,63,2.244,86,2.588,108,4.595,123,5.434,156,2.469,239,1.37,274,2.67,439,2.19,442,2.687,447,4.558,457,5.563,470,3.203,492,2.968,502,4.066,530,5.186,532,2.901,545,2.779,547,3.473,654,4.101,848,2.62,985,2.968,1005,3.233,1686,3.512,1882,4.822,2666,4.822,2717,4.987,2718,5.434,3441,5.434,3474,6.27,3475,6.27]],["title/852",[47,1.681,1515,3.949]],["content/852",[]],["title/853",[112,1.129,290,1.546,312,1.762,2674,2.606,2723,2.606]],["content/853",[46,1.246,49,4.254,72,2.319,108,4.301,109,2.246,110,1.427,112,2.603,122,1.884,272,1.671,274,2.429,290,3.264,312,1.646,360,1.658,407,1.963,410,2.266,411,0.775,415,1.942,457,3.666,474,2.461,476,2.055,477,2.081,492,1.696,502,1.47,514,1.724,525,2.197,577,3.666,610,3.666,679,1.395,720,2.031,736,2.136,755,1.963,816,2.485,848,1.497,976,2.303,992,2.434,1042,3.105,1043,2.197,1049,3.028,1056,4.046,1118,4.258,1119,4.258,1161,4.733,1449,2.434,1466,2.344,1491,2.675,1539,2.197,1686,3.195,1793,2.85,1804,1.814,1815,2.434,1839,1.884,2541,2.85,2665,4.146,2674,5.502,2675,5.165,2677,2.85,2678,2.605,2679,3.105,2723,2.434,2724,3.105,2739,3.105,2999,2.756]],["title/854",[72,1.26,98,2.661,492,2.084,1115,2.525]],["content/854",[16,0.653,72,2.014,98,2.842,99,1.295,105,2.263,239,1.028,274,2.996,340,2.605,343,2.766,360,2.176,410,2.974,439,2.458,445,2.605,472,2.974,478,2.262,492,3.331,525,2.884,604,2.262,623,4.688,679,1.831,854,2.766,865,3.699,875,2.244,978,3.889,985,2.226,1016,3.133,1043,4.315,1056,4.992,1060,3.262,1119,5.254,1147,2.472,1161,6.235,1350,3.195,1492,3.262,1673,2.927,1686,3.942,1760,3.889,1941,3.511,1959,3.023,2487,2.665,2606,5.254,2675,3.418,2723,4.78,2727,4.076,2742,4.076,2743,4.076,3476,4.703]],["title/855",[1086,3.723,1479,4.54]],["content/855",[32,1.498,63,2.979,72,1.077,108,1.998,109,1.481,125,0.976,137,2.185,148,3.819,226,3.748,239,1.295,290,1.516,339,2.418,340,2.084,411,0.814,415,2.039,441,1.243,443,1.922,502,2.432,521,2.809,540,1.888,577,2.418,610,2.418,647,2.108,749,4.112,823,2.61,858,2.809,1048,2.418,1068,2.246,1086,6.219,1098,2.669,1136,2.61,1218,2.158,1479,7.583,1509,2.342,1726,2.993,1810,2.669,1839,1.978,1857,2.894,1968,5.138,2335,2.669,2487,2.132,2647,3.261,2674,2.556,2678,6.051,2691,3.261,2742,3.261,2744,3.261,2745,2.809,2747,3.46,2748,3.261,2749,3.46,2750,5.138,2778,3.46,3184,3.46,3477,3.763,3478,3.763,3479,3.763,3480,3.763,3481,3.763,3482,3.46,3483,3.763]],["title/856",[1240,5.48]],["content/856",[1856,8.377]],["title/857",[360,3.655]],["content/857",[]],["title/858",[239,1.365,2487,3.54]],["content/858",[0,1.577,34,2.024,49,3.202,63,2.382,72,1.51,98,1.965,108,2.801,109,1.28,111,1.136,112,1.553,122,2.773,125,0.843,147,2.209,148,1.693,239,1.454,269,2.859,272,2.459,275,1.762,290,1.31,293,2.127,312,1.493,360,1.504,407,1.781,427,1.726,434,1.147,439,1.842,441,1.742,481,2.58,492,2.498,502,2.164,550,1.865,577,2.09,604,2.538,610,2.09,647,1.821,674,2.689,786,1.965,844,2.586,855,1.843,875,2.517,940,2.99,982,2.209,995,1.781,1012,1.801,1078,1.516,1086,3.145,1095,3.432,1115,1.865,1118,2.428,1197,2.818,1214,2.364,1217,1.461,1479,3.835,1491,2.428,1528,4.196,1557,2.428,1584,2.624,1611,1.564,1688,2.501,1804,2.671,1839,3.499,1968,2.818,2487,4.34,2674,3.583,2675,3.835,2678,5.567,2705,2.209,2723,3.583,2750,5.768,2987,2.818,3288,2.818,3484,3.252,3485,2.99,3486,2.99]],["title/859",[239,1.365,2487,3.54]],["content/859",[10,1.27,33,1.248,49,3.815,63,1.522,100,3.272,108,2.94,109,0.988,111,0.876,112,2.149,121,2.571,138,1.068,147,1.704,197,0.988,239,0.929,269,1.36,271,1.36,272,1.983,291,0.911,312,1.953,384,2.307,407,1.374,434,1.5,439,0.876,441,1.405,449,1.161,457,1.612,481,3.569,492,4.387,502,1.029,550,1.439,604,2.663,610,1.612,679,2.842,719,1.995,720,1.422,786,2.571,816,1.74,854,1.476,859,2.156,875,1.197,936,1.237,982,1.704,1031,1.439,1047,1.995,1049,1.332,1066,1.612,1128,1.332,1145,2.307,1148,1.586,1153,1.319,1196,1.476,1217,2.488,1528,1.995,1539,2.608,1550,2.174,1584,2.754,1587,1.995,1611,1.207,1648,1.995,1701,1.74,1793,1.995,1810,1.779,1824,2.075,1829,1.929,1839,3.428,1941,1.873,1959,1.612,2129,1.929,2487,4.137,2528,4.025,2654,2.307,2674,2.889,2675,5.765,2678,6.97,2723,5.387,2751,2.307,3007,1.779,3288,2.174,3485,2.307,3486,2.307,3487,2.509,3488,4.253,3489,2.509,3490,2.509]],["title/760",[502,1.806,624,1.784,2597,3.123,2687,3.502]],["content/760",[0,1.921,47,1.066,86,3.129,108,2.103,110,1.577,124,2.428,138,1.686,156,2.43,239,1.871,272,1.846,358,2.546,411,0.857,441,2.827,442,1.697,452,2.124,456,3.498,459,5.511,462,2.68,464,2.272,470,2.023,488,3.951,492,1.875,502,3.11,509,2.638,525,2.428,531,3.584,539,2.899,545,1.755,546,2.194,552,2.465,867,2.809,875,1.89,975,2.272,998,2.245,1153,2.082,1387,2.546,1439,2.879,1511,3.15,1515,2.504,1812,3.275,2019,2.809,2532,3.15,2581,3.046,2599,5.348,2686,2.809,2702,4.608,2731,3.642,2732,3.275,2733,3.275,2734,3.275,2772,3.642,2784,2.809,3130,5.675,3482,3.642,3491,3.642,3492,3.961,3493,3.961,3494,3.961,3495,3.961,3496,3.432]],["title/761",[538,6.534]],["content/761",[26,2.229,52,5.185,107,5.185,124,4.68,197,3.005,441,2.521,470,5.043,502,3.131,521,5.698,643,3.558,966,4.751,1648,6.071,1694,4.826,1839,4.012,2008,6.312,2487,4.326,2868,6.614,3491,7.019,3497,7.019]],["title/762",[436,4.332,573,4.663]],["content/762",[239,1.886,436,5.988,462,3.749,488,3.676,502,4.377,573,6.445,674,7.14,1688,6.64,2525,5.218,2526,5.293,3498,8.634]],["title/763",[488,2.66,2514,4.085]],["content/763",[0,3.87,197,3.142,239,1.743,286,3.808,307,6.137,488,3.398,496,4.634,563,5.129,679,3.107,905,4.967,1105,4.757,1367,4.823,1463,5.42,1888,6.347,2514,5.219,2650,6.347,3499,7.98]],["title/764",[462,2.712,1031,3.583]],["content/764",[16,1.031,239,1.621,394,4.02,415,4.02,439,2.591,462,3.221,495,3.2,502,3.975,572,5.538,1077,4.483,1367,4.483,1402,5.145,1463,5.039,2487,4.204,2514,4.851,2527,5.538,2528,5.392,2665,7.044,2699,6.135,3500,7.418]],["title/765",[108,3.316,502,2.562]],["content/765",[16,1.031,109,3.815,197,2.921,239,1.621,241,4.363,271,4.02,403,3.978,441,2.45,502,3.043,550,4.255,577,4.768,604,3.568,610,4.768,786,4.483,1012,4.108,1107,4.483,1120,4.108,1551,6.135,1911,5.039,2487,4.204,2698,6.428]],["title/766",[109,1.733,417,1.545,550,2.525,786,2.661]],["content/766",[1,3.445,3,2.272,53,1.602,63,1.885,109,2.074,147,3.578,156,2.074,191,2.691,239,1.671,272,2.455,340,2.917,366,3.736,439,3.667,441,1.739,464,3.021,467,2.667,470,2.691,520,4.335,531,4.443,539,2.474,546,2.917,582,3.059,610,3.386,786,3.183,905,3.278,1202,4.19,1367,3.183,1546,5.096,1599,3.059,1620,3.021,2019,3.736,2439,4.565,2487,4.335,2529,6.639,2543,4.19,2676,4.051,3497,4.844,3501,4.565]],["title/767",[271,2.386,579,1.817,786,2.661,1107,2.661]],["content/767",[63,3.09,73,4.836,148,5.556,197,3.399,271,4.679,573,6.445,1107,5.218,1911,5.864,2439,7.482,3502,8.634,3503,8.634]],["title/768",[109,1.733,483,2.118,786,2.661,1012,2.438]],["content/768",[16,1.304,109,3.173,112,1.667,125,1.469,239,1.237,271,4.368,366,4.017,403,3.038,441,3.099,465,4.684,476,3.248,604,4.513,642,5.096,678,4.017,679,2.205,810,6.199,875,2.702,1212,4.228,1551,6.666,1553,3.928,1620,3.248,1839,2.977,2019,4.017,2487,3.21,2653,4.228,2699,4.684,2701,5.208,2723,3.847,2795,5.208,3504,5.664,3505,5.664,3506,5.664,3507,5.664]],["title/769",[394,2.799,443,2.639,1402,3.582]],["content/769",[109,3.142,156,3.142,394,5.505,402,5.66,461,5.564,462,3.465,775,4.967,875,3.808,1031,4.577,1077,4.823,1402,7.75,2019,5.66,3508,7.98]],["title/770",[0,3.029,1367,3.775]],["content/770",[394,5.189,1069,7.364,1402,7.881,1485,7.364,1518,7.364]],["title/771",[109,2.034,623,3.441,1217,2.321]],["content/771",[109,4.631,239,1.743,394,4.325,462,3.465,1107,4.823,1341,5.42,1402,5.535,1617,5.42,2665,5.8,2699,6.599,3185,7.338,3509,10.158,3510,7.338]],["title/772",[604,3.005,2665,4.54]],["content/772",[16,0.938,96,2.466,125,1.751,148,3.515,190,3.418,226,3.45,239,1.475,269,3.66,271,3.66,398,4.081,441,2.23,520,3.827,642,4.269,674,5.584,865,3.549,875,3.222,1031,3.873,1620,3.873,1839,5.414,2665,8.013,2759,5.852,3511,6.752,3512,6.752,3513,6.752]],["title/833",[492,2.957,508,3.54]],["content/833",[16,0.938,124,4.14,156,2.659,239,1.475,286,3.222,411,1.461,439,2.358,441,2.23,443,3.45,478,3.248,481,3.302,488,2.875,519,3.622,520,3.827,522,3.972,523,4.416,532,3.124,565,4.908,847,3.148,968,3.782,985,3.197,1020,4.908,1634,4.34,1639,4.908,1642,5.193,1675,4.14,1695,4.683,1807,5.852,2594,5.371]],["title/834",[552,4.917]],["content/834",[8,0.68,16,0.998,124,2.963,125,1.253,239,1.569,286,3.426,291,1.756,338,2.516,373,3.219,380,3.055,443,2.469,462,2.098,481,2.363,488,3.058,508,4.856,524,3.16,541,3.844,552,4.469,557,4.188,565,3.513,599,2.404,847,3.348,848,3,850,4.644,867,3.428,877,2.772,908,3.106,1022,5.904,1136,3.352,1217,2.172,1622,3.996,1641,3.996,1707,3.608,1796,3.844,2514,3.16,2529,3.055,2581,3.717,2582,5.939,3496,4.188,3514,4.444,3515,4.833,3516,4.833,3517,4.833,3518,4.833,3519,4.833]],["title/835",[125,1.62,291,2.27]],["content/835",[22,3.138,50,4.236,125,2.513,291,2.695,312,4.45,360,3.432,374,4.738,380,4.69,630,3.938,645,5.627,657,3.138,848,3.099,853,6.582,908,4.768,1593,6.821,2537,6.821]],["title/836",[16,0.718,286,2.465,850,2.799]],["content/836",[16,1.613,33,2.148,53,2.726,62,1.644,63,1.545,99,1.189,109,3.152,131,3.88,191,4.09,197,1.7,286,3.82,360,1.998,361,2.316,411,0.934,427,2.292,449,1.998,450,1.888,474,2.846,539,2.028,615,2.722,622,2.111,630,3.502,657,2.791,679,1.681,848,1.804,859,1.681,877,2.476,908,2.775,1105,2.574,1532,3.571,1620,3.784,1694,2.73,1701,2.995,1911,2.933,2438,2.995,2514,2.824,2526,4.045,2527,3.223,2529,5.061,2697,3.571,2703,3.571,2791,3.063,3520,3.742,3521,4.318,3522,3.742]],["title/837",[62,2.379,109,2.459]],["content/837",[16,0.963,47,1.865,53,2.818,62,3.528,67,2.331,96,2.531,109,4.109,125,1.797,226,3.54,411,1.499,622,3.389,848,2.895,859,2.698,1034,5.512,1485,5.33,1634,4.454,1694,5.857,2526,4.249,2791,4.916,3523,4.916,3524,5.731,3525,6.005]],["title/838",[63,2.236,109,2.459]],["content/838",[63,4.146,109,3.399,125,2.239,212,5.218,407,4.729,615,3.563,808,5.458,1078,4.025,1187,6.64,2791,6.124]],["title/839",[122,4.153]],["content/839",[16,0.712,22,1.327,26,0.916,33,1.56,45,4.006,46,2.605,47,2.919,49,3.605,59,5.239,67,1.723,111,2.267,112,1.508,120,1.353,122,1.648,131,1.844,191,1.602,197,1.235,198,3.468,199,2.015,434,1.106,462,2.819,474,1.353,514,2.464,539,2.406,543,1.923,544,2.051,553,3.479,613,1.419,615,1.294,622,3.665,630,1.665,808,1.982,817,1.982,848,1.31,857,2.747,859,1.221,872,1.869,877,1.798,975,1.798,1012,2.837,1068,1.188,1078,1.462,1101,2.051,1187,2.412,1451,2.717,1485,3.939,1546,3.412,1620,1.798,1694,4.105,1821,2.224,1830,2.412,2526,1.923,2529,1.982,2791,4.605,3523,5.86,3524,4.236,3525,4.438,3526,3.136,3527,5.122,3528,3.136,3529,2.883]],["title/840",[114,3.526]],["content/840",[16,1.045,53,2.288,114,4.365,191,3.844,547,4.167,601,6.938,848,3.143,857,4.035,1911,5.111,1919,6.222,1946,5.111,2791,7.708,3520,6.52,3523,5.337,3530,8.994,3531,6.919]],["title/841",[111,2.182,112,1.839]],["content/841",[16,1.016,53,2.225,111,3.354,112,2.826,191,3.737,547,4.051,601,6.811,848,3.056,857,3.923,1911,4.969,1919,6.049,1946,4.969,2791,7.604,3520,6.339,3523,5.189,3530,8.83,3531,6.727]],["title/842",[16,0.868,286,2.981]],["content/842",[16,1.219,543,5.382,622,4.292,818,6.553,877,5.034,1022,5.463,1694,5.549,2526,5.382,2791,6.226,3523,6.226,3529,8.071]],["title/843",[443,3.191,847,2.912]],["content/843",[16,0.903,50,2.843,131,5.22,181,3.96,286,3.103,360,3.008,407,3.562,443,3.322,462,3.854,547,3.601,615,2.683,622,3.18,630,4.711,647,3.642,847,5.296,848,2.717,857,3.487,859,2.531,1341,4.417,1620,3.73,2438,4.51,2514,4.253,2529,4.111,3081,5.979]],["title/844",[847,2.912,859,2.432]],["content/844",[411,1.899,434,3.095,462,3.811,630,4.66,679,3.417,847,5.026,859,4.197,2526,5.382,3523,6.226]],["title/845",[462,2.712,847,2.912]],["content/845",[62,3.134,67,2.768,181,4.622,462,4.498,474,3.55,817,5.203,847,4.828,859,3.204,908,5.289,1218,4.72,2526,5.045,3523,5.837]],["title/846",[8,0.62,181,1.965,544,2.879,1341,2.991]],["content/846",[3,2.99,53,2.108,67,2.331,181,5.444,205,4.493,398,4.188,434,3.267,629,3.756,859,3.607,876,3.975,908,4.454,1022,4.313,1034,5.512,1485,5.33,3523,6.572,3524,5.731,3525,6.005]],["title/847",[16,0.718,181,2.305,859,2.011]],["content/847",[16,1.478,35,3.226,131,3.645,181,4.746,268,3.983,360,2.867,434,2.185,474,2.673,506,3.918,630,3.29,645,3.598,657,2.622,847,2.889,853,4.209,859,3.342,902,4.209,1078,2.889,1527,3.799,1694,5.428,1911,4.209,2514,4.053,2526,3.799,2529,5.428,3523,6.09,3524,7.1]],["title/848",[239,0.838,508,2.174,522,2.257,523,2.509,1695,2.661]],["content/848",[35,3.973,156,3.005,239,1.668,398,4.613,411,1.651,494,5.185,508,4.326,519,5.295,522,6.436,523,4.992,562,5.414,637,3.613,680,5.548,1107,4.613,1639,5.548,2868,6.614,3460,7.019]],["title/849",[2600,5.367]],["content/849",[110,3.178,380,5.045,427,4.236,436,5.535,494,5.42,496,4.634,532,3.692,968,4.47,1020,5.8,1599,4.634,1800,5.957,2008,6.599,2600,6.9,2956,6.915,3441,6.915,3532,7.98]],["title/773",[239,1.365,441,2.063]],["content/773",[10,3.101,108,3.252,110,2.439,181,2.733,239,1.861,270,3.319,274,2.608,417,2.149,439,2.139,441,2.023,443,3.129,444,4.572,461,3.355,462,3.698,476,3.513,481,4.164,525,3.755,532,2.834,615,2.527,847,2.855,962,4.16,970,3.651,985,2.899,1044,5.307,1353,4.248,1512,4.08,2120,4.005,2535,4.248,2672,5.065,2741,5.307,2798,4.871,3533,6.125,3534,6.125,3535,6.125]],["title/774",[1031,4.531]],["content/774",[16,0.819,62,2.781,63,2.968,67,1.983,110,1.488,125,1.529,156,1.471,196,3.468,212,3.563,239,1.288,269,2.025,286,1.783,358,2.401,411,0.808,441,1.947,443,3.012,444,2.789,451,4.004,457,2.401,458,2.65,462,3.171,486,2.769,650,2.025,847,1.742,877,2.143,909,2.538,912,2.069,936,1.842,962,2.538,981,2.325,1031,3.381,1077,2.258,1101,3.856,1120,4.044,1168,3.09,1353,2.591,1558,3.09,1566,2.716,1741,2.538,1878,2.873,2009,2.972,2120,2.443,2259,2.789,2359,4.004,2666,2.873,2711,2.972,2712,2.716,2771,3.238,2792,3.435,3061,3.435,3082,3.238,3536,3.736,3537,3.736,3538,3.736,3539,3.736,3540,3.238,3541,3.238,3542,3.435,3543,3.736,3544,3.435,3545,3.736,3546,3.238,3547,3.238,3548,5.421,3549,3.736,3550,3.736,3551,3.435,3552,3.435,3553,3.435]],["title/775",[3370,6.847]],["content/775",[34,1.477,98,2.452,105,0.763,110,2.116,124,1.455,138,1.727,239,0.518,274,1.727,282,1.683,290,0.956,291,0.862,356,1.415,380,1.5,399,4.227,411,1.149,441,0.784,445,1.314,449,2.459,456,2.299,458,1.683,459,1.725,461,1.3,464,3.048,467,1.201,474,1.024,481,2.598,485,1.825,486,1.906,488,2.677,497,1.552,503,1.345,509,6.613,524,1.552,530,1.962,532,3.269,546,1.314,552,1.477,558,1.434,572,1.772,578,1.455,637,1.123,726,1.683,750,1.725,844,1.888,848,0.991,859,0.924,867,1.683,877,1.361,905,1.477,912,1.314,913,1.962,941,1.581,966,1.477,975,1.361,980,4.087,981,3.307,984,1.962,1031,1.361,1053,1.772,1101,1.552,1167,2.418,1175,2.182,1359,1.552,1387,1.525,1438,1.962,1462,1.888,1492,1.646,1509,2.525,1558,1.962,1599,1.378,1641,1.962,1755,2.056,1783,2.608,1795,3.862,1877,1.772,1902,2.182,1946,1.612,1953,2.182,2057,1.725,2335,1.683,2517,2.056,2533,3.029,2612,2.182,2685,1.888,2732,1.962,2733,1.962,2734,1.962,2744,2.056,2745,1.772,2784,5.011,2800,2.182,2851,1.888,2913,2.182,3000,2.056,3001,1.683,3007,4.46,3072,2.182,3370,4.605,3554,5.314,3555,3.731,3556,2.373,3557,2.056,3558,2.056,3559,2.373,3560,2.373,3561,2.373,3562,2.373,3563,2.373,3564,2.373,3565,2.373,3566,2.373,3567,2.373,3568,2.373,3569,2.373,3570,2.373,3571,2.373]],["title/776",[630,4.194]],["content/776",[8,1.507,33,1.598,34,4.108,65,1.521,69,1.075,118,2.629,209,2.399,239,0.702,274,2.224,291,1.167,356,1.915,410,2.031,411,1.645,441,2.18,462,1.395,476,1.842,478,1.545,509,2.14,528,2.555,540,1.612,617,1.444,630,4.442,647,2.926,679,2.033,716,1.941,737,2.784,761,2.784,848,1.342,849,1.82,859,2.57,871,2.335,910,2.954,913,2.656,954,2.101,981,3.251,1167,3.114,1172,2.101,1189,1.889,1208,2.555,1469,5.25,1795,2.335,1946,2.182,1994,3.9,2027,2.784,2174,2.555,2711,4.155,2712,6.868,2799,4.526,2959,2.784,2975,2.784,3119,2.954,3501,2.784,3544,2.954,3546,4.526,3547,2.784,3572,3.212,3573,3.212,3574,3.212,3575,3.212,3576,3.212,3577,3.212,3578,3.212,3579,5.223,3580,3.212,3581,3.212,3582,3.212,3583,5.223,3584,3.212,3585,5.223]],["title/777",[274,2.66,488,2.66]],["content/777",[35,1.541,47,1.315,75,2.099,105,0.952,110,1.945,115,2.354,124,1.815,181,1.321,197,1.165,205,1.435,209,1.359,212,4.375,267,2.135,274,2.08,394,2.647,397,1.764,411,1.566,417,1.039,431,1.815,439,1.034,442,1.268,448,2.209,456,1.677,458,2.099,459,2.151,461,3.965,462,3.143,486,2.294,488,1.26,509,1.971,516,1.639,519,1.587,543,1.815,546,1.639,579,1.221,581,1.764,615,1.221,647,2.736,654,1.936,679,1.901,873,1.639,895,2.276,936,1.459,941,1.971,962,3.318,970,2.912,975,1.697,998,1.677,1014,1.815,1041,2.209,1042,2.565,1043,1.815,1095,1.526,1167,1.764,1174,2.209,1189,1.741,1217,1.33,1340,2.099,1351,4.233,1353,3.388,1359,5.966,1527,1.815,1626,1.871,1824,2.448,1878,3.757,2504,2.354,2535,2.053,2585,2.721,2743,2.565,2745,2.209,2874,2.448,2989,2.721,3149,2.721,3180,2.721,3496,2.565,3522,2.565,3540,6.272,3541,6.272,3542,4.491,3586,2.96,3587,2.96,3588,2.96,3589,2.96,3590,2.96,3591,2.96,3592,6.236,3593,2.96,3594,2.96,3595,2.96]],["title/778",[105,2.008,267,2.731]],["content/778",[16,0.313,22,0.518,26,0.658,30,0.443,32,0.897,33,0.609,47,1.221,48,1.613,52,1.53,60,0.679,62,0.858,67,0.412,76,0.679,80,0.62,86,1.29,99,0.62,105,1.458,110,0.897,120,0.529,125,0.318,131,1.325,138,0.959,156,0.887,181,0.547,191,1.151,197,2.946,209,0.563,212,0.74,239,0.683,267,2.833,274,2.586,282,0.869,289,1.794,291,0.819,361,0.657,380,1.424,394,1.695,398,2.345,401,0.74,411,1.216,412,0.65,431,0.751,439,0.428,440,0.816,441,1.498,442,0.525,443,1.151,450,0.536,458,0.869,463,0.975,470,0.626,474,0.529,476,2.225,479,1.863,481,1.529,488,2.759,495,0.972,497,0.801,509,0.816,520,1.277,539,0.576,545,3.182,552,0.763,571,2.876,573,1.682,580,0.942,581,0.73,599,0.609,601,1.598,610,0.788,615,0.506,630,2.408,643,1.809,647,2.173,679,0.477,694,0.891,755,0.671,843,1.013,844,0.975,847,0.571,848,3.963,862,2.487,877,1.292,914,0.942,936,0.604,942,1.127,954,0.801,962,2.124,970,1.343,975,0.703,981,1.946,1014,0.751,1025,0.942,1068,0.464,1081,0.801,1085,0.73,1089,1.013,1102,1.127,1125,0.975,1126,1.127,1136,3.145,1155,1.013,1159,1.733,1167,0.73,1189,0.721,1217,0.551,1218,0.703,1229,0.85,1234,2.072,1291,0.801,1294,1.062,1340,1.598,1353,3.145,1359,3.675,1387,1.448,1460,0.869,1462,0.975,1469,0.975,1498,1.013,1505,1.863,1522,0.942,1537,5.339,1566,1.637,1685,1.598,1724,0.801,1741,2.636,1783,0.788,1888,0.975,1911,0.832,1946,0.832,1949,0.942,2057,0.891,2120,0.801,2149,0.942,2224,0.721,2495,3.362,2512,1.013,2516,0.942,2527,0.915,2529,0.775,2588,1.127,2653,0.915,2674,2.124,2703,2.586,2705,0.832,2712,0.891,2760,0.915,2774,1.127,2798,0.975,2799,1.062,3082,2.71,3084,1.127,3170,1.062,3274,1.013,3301,1.127,3400,1.127,3501,2.71,3522,1.062,3540,1.062,3541,1.062,3546,1.062,3547,1.062,3548,2.072,3551,3.568,3552,2.072,3553,2.072,3558,1.952,3596,1.225,3597,1.225,3598,1.225,3599,1.225,3600,1.225,3601,2.253,3602,1.225,3603,2.253,3604,1.225,3605,1.225,3606,3.127,3607,1.225,3608,1.225,3609,1.225,3610,1.225]],["title/779",[124,3.167,239,1.128,439,1.804]],["content/779",[33,3.011,124,3.712,156,2.384,196,3.561,239,2.126,397,3.609,439,2.114,449,2.801,464,3.472,494,4.112,503,3.431,509,6.481,532,3.908,544,3.959,562,4.294,609,5.88,988,4.112,1014,3.712,1167,3.609,1713,4.033,1783,3.891,1795,6.14,1796,4.815,1797,5.567,2057,4.4,2705,4.112,3019,4.112,3510,5.567,3611,5.246,3612,6.054]],["title/780",[2584,7.265]],["content/780",[]],["title/781",[3514,5.744,3613,6.246]],["content/781",[509,6.619,1795,7.222,3614,9.936,3615,9.936]],["title/782",[556,6.076]],["content/782",[488,2.67,509,6.603,514,4.163,552,6.17,558,6.46,561,6.462,565,4.558,608,4.987,609,3.79,850,4.691,867,4.448,980,6.657,1439,4.558,1639,4.558,1796,7.885,3557,5.434,3616,6.27,3617,6.27,3618,6.27,3619,8.656,3620,6.27]],["title/783",[503,3.54,2705,4.243]],["content/783",[47,1.575,197,2.304,239,1.802,274,3.513,343,4.852,415,3.172,439,3.336,441,3.155,477,4.79,488,4.068,503,5.414,525,3.588,532,2.708,537,3.898,630,3.107,848,2.445,858,4.369,984,4.84,985,2.771,1049,3.107,1539,3.588,1830,4.501,2705,6.489,2798,4.655,3234,5.072,3555,5.382,3621,5.852]],["title/784",[1077,3.122,1196,3.038,1240,3.582]],["content/784",[16,0.971,34,2.901,47,1.255,138,2.977,156,1.835,181,2.08,197,2.752,271,2.526,403,2.5,411,1.008,441,3.461,442,1.998,450,3.667,477,2.707,481,2.279,545,3.717,599,3.477,637,2.207,650,4.546,703,2.779,851,2.858,863,3.307,865,2.45,872,2.779,901,3.48,916,3.571,985,2.207,1049,2.475,1189,2.742,1217,3.142,1550,4.04,2624,6.428,2705,6.781,2739,4.04,2798,3.708,2963,4.04,3164,4.287,3622,6.058,3623,4.662,3624,4.662,3625,4.287]],["title/785",[1077,3.122,1196,3.038,1617,3.508]],["content/785",[0,1.252,16,0.359,33,1.284,82,1.72,98,1.561,110,1.028,124,1.583,131,1.519,156,1.017,181,1.152,239,2.118,286,1.232,341,3.418,343,3.909,356,1.539,360,1.195,367,1.519,394,1.4,403,1.385,411,1.606,415,2.362,439,1.975,441,2.974,443,1.319,452,1.385,456,2.47,458,1.832,459,1.877,476,1.481,481,1.263,486,1.213,488,1.1,489,1.832,495,1.114,503,4.207,509,1.72,524,2.851,525,1.583,532,3.725,540,1.296,544,1.689,581,1.539,642,1.633,650,1.4,679,1.697,736,2.598,847,1.204,848,2.363,851,1.583,855,2.47,865,2.291,872,1.539,875,1.232,912,2.414,929,1.832,1014,1.583,1167,3.372,1446,1.607,1458,2.238,1539,1.583,1675,1.583,1784,1.832,1795,3.168,1802,2.054,1882,3.352,1899,2.136,1949,3.352,2066,2.238,2335,1.832,2438,3.023,2533,1.928,2616,2.136,2705,6.117,2732,2.136,2733,2.136,2734,2.136,2760,3.254,2784,5.266,3259,2.375,3557,2.238,3558,2.238,3611,3.777,3626,2.582,3627,2.375,3628,5.201,3629,2.582,3630,2.375,3631,2.582]],["title/786",[156,2.459,522,3.674]],["content/786",[16,0.965,18,4.322,46,1.606,47,1.869,50,3.036,52,4.717,60,2.559,67,1.554,100,2.318,120,1.993,125,1.801,131,2.718,181,4.14,197,1.819,271,3.764,286,2.205,361,2.478,403,2.478,439,1.614,441,3.45,481,3.396,522,4.085,544,3.022,545,3.697,599,3.454,629,3.764,650,5.028,657,2.938,865,2.429,891,3.554,916,3.548,985,3.288,3622,4.004,3625,4.249,3632,9.277]],["title/787",[476,3.583,1949,4.804]],["content/787",[8,1.158,82,5.481,156,3.24,186,6.774,290,3.315,452,4.413,474,3.55,476,4.72,637,3.896,1099,5.481,1617,5.59,3207,7.567,3627,7.567,3633,8.229]],["title/788",[3634,7.901]],["content/788",[131,5.736,411,2.109,575,6.624,2438,6.764,3635,8.065]],["title/789",[1584,3.93]],["content/789",[8,1.425,1584,5.037,2534,7.56]],["title/790",[368,3.283,775,3.888]],["content/790",[8,1.692,118,3.745,131,5.532,2438,6.522,3636,9.404]],["title/791",[3637,7.901]],["content/791",[575,6.749,650,5.385,3635,8.217,3638,9.936]],["title/792",[1584,3.93]],["content/792",[8,1.453,2534,7.709]],["title/793",[368,3.283,775,3.888]],["content/793",[8,1.797,118,4.045,125,2.069,204,5.045,205,4.926,363,6.137,650,5.505]],["title/794",[3285,7.265]],["content/794",[16,1.407,286,4.832,403,5.431]],["title/795",[1584,3.93]],["content/795",[8,1.641,16,1.46,30,2.539,53,2.843,86,3.857,105,3.005,111,2.453,112,2.067,116,6.086,118,2.797,209,3.225,411,1.519,847,3.274,968,3.934,1832,4.186,2881,6.086,3639,6.458]],["title/796",[368,3.283,775,3.888]],["content/796",[8,1.686,16,1.06,118,3.04,125,1.979,209,5.313,269,4.137,271,5.35,276,6.614,277,6.614,1323,6.614,1706,4.826,3640,7.019]],["title/797",[3641,7.901]],["content/797",[181,4.519,622,4.952,847,4.721]],["title/798",[1584,3.93]],["content/798",[8,1.692,118,3.745,181,4.196,205,5.451]],["title/799",[368,3.283,775,3.888]],["content/799",[8,1.694,16,1.076,118,3.084,125,2.009,209,5.342,269,4.198,271,5.401,276,6.712,277,6.712,1323,6.712,3640,7.122]],["title/800",[3642,7.901]],["content/800",[181,4.273,520,5.426,575,6.504,847,4.463,862,7.616,3635,7.918]],["title/801",[1584,3.93]],["content/801",[8,1.453,2534,7.709]],["title/802",[368,3.283,775,3.888]],["content/802",[8,1.795,118,4.328,181,3.358,312,3.455,629,4.078,645,5.68,876,4.315,972,6.222,3643,7.524,3644,7.524]],["title/803",[3645,7.901]],["content/803",[46,3.211,47,2.487,50,4.862,181,4.123,629,5.007,657,3.909,712,7.641]],["title/804",[1584,3.93]],["content/804",[8,1.599,72,1.861,118,3.534,181,3.96,197,2.56,205,3.153,209,2.986,411,1.406,617,2.922,622,3.18,629,5.475,657,3.755,873,3.601,876,5.09,908,5.704,1367,5.364,1504,4.331,1922,4.612,3646,5.635,3647,5.635]],["title/805",[368,3.283,775,3.888]],["content/805",[8,1.654,46,3.102,47,2.402,50,3.902,56,5.25,118,3.555,181,3.983,657,3.777]],["title/806",[3648,7.901]],["content/806",[50,4.967,125,2.483,181,4.273,629,5.189,657,4.051]],["title/807",[1584,3.93]],["content/807",[8,1.599,72,1.861,118,3.534,181,3.96,197,2.56,205,3.153,209,2.986,411,1.406,617,2.922,622,3.18,629,5.475,657,3.755,873,3.601,876,5.09,908,5.704,1367,5.364,1504,4.331,1922,4.612,3646,5.635,3647,5.635]],["title/808",[368,3.283,775,3.888]],["content/808",[8,1.692,118,3.745,125,2.915,629,5.097]],["title/809",[3649,7.901]],["content/809",[545,4.322,575,6.624,650,5.285,2529,6.166,3635,8.065]],["title/810",[1584,3.93]],["content/810",[8,1.453,2534,7.709]],["title/811",[368,3.283,775,3.888]],["content/811",[8,1.703,118,4.25,125,2.239,204,5.458,205,5.175,363,6.64,650,4.679]],["title/812",[3650,7.901]],["content/812",[16,1.407,403,5.431,480,6.746]],["title/813",[1584,3.93]],["content/813",[8,1.716,16,1.387,30,1.943,53,2.361,86,3.204,105,2.496,111,1.877,112,1.582,116,4.658,118,3.629,181,3.464,197,2.116,205,2.606,209,2.468,403,2.883,411,1.679,622,2.628,629,2.913,847,2.506,876,3.083,968,3.011,1367,3.248,1504,3.58,1832,3.204,2519,4.942,2881,4.658,3639,4.942,3646,4.658,3647,4.658]],["title/814",[368,3.283,775,3.888]],["content/814",[8,1.71,16,1.111,46,3.242,47,2.51,50,2.45,100,4.68,118,4.051,121,3.387,125,2.074,243,5.153,245,5.153,246,5.153,291,2.906,312,2.573,338,2.917,339,3.602,340,3.103,342,4.68,411,1.212,434,1.976,461,3.07,3651,5.603]],["title/815",[3652,7.901]],["content/815",[8,0.522,98,2.242,124,2.275,156,1.461,197,1.461,239,1.588,270,2.01,274,1.58,341,3.543,343,2.182,356,2.211,360,1.716,411,0.802,415,2.01,439,2.047,441,2.727,443,1.895,476,2.128,488,2.496,489,2.631,503,4.681,524,2.426,532,4.162,540,1.861,563,2.384,581,2.211,619,2.102,654,2.426,848,1.55,855,3.322,857,1.99,936,1.829,1038,2.182,1049,1.969,1167,3.495,1182,3.068,1189,2.182,1441,2.242,1446,2.309,1458,3.215,1462,2.951,1580,3.068,1607,2.426,1675,2.275,1795,4.261,1802,2.951,1830,2.853,1882,4.509,2533,2.769,2574,2.573,2581,5.59,2582,3.068,2617,3.411,2686,2.631,2705,3.982,2784,4.159,3611,5.08,3622,3.215,3628,6.684,3630,3.411,3653,3.71,3654,3.71,3655,3.71,3656,7.269,3657,3.71]],["title/850",[496,3.627,1529,4.015]],["content/850",[12,2.737,19,4.416,30,3.291,43,3.101,53,2.054,137,3.921,241,3.972,291,3.308,356,4.025,411,1.969,426,4.498,496,3.921,499,5.852,524,4.416,613,3.056,848,2.821,1041,5.041,1499,4.683,1529,6.621,1620,3.873,3658,6.752,3659,6.752,3660,6.752,3661,6.752]]],"invertedIndex":[["",{"_index":8,"title":{"216":{},"217":{},"240":{},"250":{},"359":{},"389":{},"523":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"556":{},"557":{},"594":{},"658":{},"664":{},"846":{}},"content":{"1":{},"2":{},"3":{},"4":{},"5":{},"8":{},"11":{},"12":{},"15":{},"16":{},"18":{},"19":{},"21":{},"22":{},"25":{},"26":{},"28":{},"29":{},"31":{},"32":{},"34":{},"35":{},"37":{},"38":{},"40":{},"41":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"53":{},"55":{},"56":{},"58":{},"59":{},"61":{},"62":{},"64":{},"65":{},"66":{},"67":{},"68":{},"70":{},"71":{},"73":{},"74":{},"76":{},"77":{},"80":{},"81":{},"83":{},"84":{},"86":{},"87":{},"89":{},"90":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"104":{},"105":{},"107":{},"108":{},"112":{},"113":{},"115":{},"116":{},"120":{},"121":{},"125":{},"126":{},"128":{},"129":{},"131":{},"132":{},"136":{},"137":{},"139":{},"140":{},"144":{},"146":{},"148":{},"152":{},"154":{},"158":{},"162":{},"164":{},"166":{},"168":{},"173":{},"174":{},"178":{},"179":{},"183":{},"185":{},"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{},"197":{},"198":{},"201":{},"202":{},"204":{},"207":{},"215":{},"224":{},"227":{},"252":{},"271":{},"272":{},"273":{},"275":{},"280":{},"319":{},"320":{},"324":{},"329":{},"346":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"358":{},"359":{},"360":{},"363":{},"366":{},"369":{},"370":{},"371":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"388":{},"389":{},"391":{},"392":{},"393":{},"395":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"413":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"441":{},"442":{},"443":{},"445":{},"446":{},"447":{},"448":{},"449":{},"451":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"464":{},"465":{},"466":{},"469":{},"472":{},"473":{},"475":{},"477":{},"478":{},"480":{},"481":{},"482":{},"483":{},"488":{},"489":{},"494":{},"499":{},"506":{},"509":{},"523":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"556":{},"557":{},"561":{},"570":{},"571":{},"594":{},"613":{},"631":{},"641":{},"642":{},"644":{},"652":{},"656":{},"708":{},"710":{},"717":{},"724":{},"725":{},"726":{},"732":{},"733":{},"734":{},"735":{},"736":{},"745":{},"753":{},"756":{},"758":{},"759":{},"776":{},"787":{},"789":{},"790":{},"792":{},"793":{},"795":{},"796":{},"798":{},"799":{},"801":{},"802":{},"804":{},"805":{},"807":{},"808":{},"810":{},"811":{},"813":{},"814":{},"815":{},"834":{}}}],["0",{"_index":617,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"200":{},"205":{},"206":{},"209":{},"231":{},"243":{},"272":{},"273":{},"274":{},"279":{},"350":{},"356":{},"359":{},"363":{},"374":{},"375":{},"376":{},"377":{},"378":{},"380":{},"388":{},"389":{},"391":{},"401":{},"403":{},"404":{},"432":{},"433":{},"438":{},"441":{},"442":{},"461":{},"463":{},"464":{},"465":{},"466":{},"473":{},"520":{},"574":{},"616":{},"701":{},"758":{},"776":{},"804":{},"807":{}}}],["0,1",{"_index":2247,"title":{},"content":{"438":{}}}],["0.01",{"_index":1744,"title":{},"content":{"323":{},"651":{},"652":{},"656":{}}}],["0.02",{"_index":1719,"title":{},"content":{"319":{}}}],["0.1",{"_index":2984,"title":{},"content":{"641":{},"652":{}}}],["0.2",{"_index":2138,"title":{},"content":{"395":{},"483":{}}}],["0.22",{"_index":3467,"title":{},"content":{"759":{}}}],["0.23",{"_index":3466,"title":{},"content":{"759":{}}}],["0.42w",{"_index":2997,"title":{},"content":{"641":{}}}],["0.9",{"_index":1901,"title":{},"content":{"356":{}}}],["0/0",{"_index":2971,"title":{},"content":{"650":{}}}],["00",{"_index":831,"title":{},"content":{"194":{},"701":{}}}],["000",{"_index":2847,"title":{},"content":{"623":{}}}],["0000000000",{"_index":2320,"title":{},"content":{"456":{}}}],["000012345",{"_index":2310,"title":{},"content":{"453":{},"495":{},"497":{}}}],["00001ab",{"_index":1985,"title":{},"content":{"371":{}}}],["00001abc",{"_index":1925,"title":{},"content":{"361":{}}}],["00001ac8...4f",{"_index":3289,"title":{},"content":{"736":{}}}],["00001bc",{"_index":1986,"title":{},"content":{"371":{}}}],["00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa",{"_index":2564,"title":{},"content":{"526":{}}}],["000023456",{"_index":2472,"title":{},"content":{"497":{}}}],["00003bafdfb7a8e66b59de5692b79088063853bbd69a7d555faec906e6215e57ff98",{"_index":2025,"title":{},"content":{"380":{}}}],["000056789",{"_index":2309,"title":{},"content":{"453":{},"454":{}}}],["00005da88a4adaf5b40c958a20db981bd168008e03efbb7fc9d35e11be182a0d3065",{"_index":3461,"title":{},"content":{"758":{}}}],["0000ab12",{"_index":1989,"title":{},"content":{"371":{}}}],["0000abcd...ef",{"_index":3287,"title":{},"content":{"736":{}}}],["0000ba28ce06631ff2ef4fe3dc89a34be13c0d252f8952bbfa3173b03dbef3c04afd",{"_index":2026,"title":{},"content":{"380":{}}}],["0000c13373c96538b468ccdab8f95fdc3744ebfa2cd36a81c3791b2a205705d9c3a2",{"_index":3283,"title":{},"content":{"734":{},"735":{}}}],["0000d574d171a484f8deac2d61fc3f7cc984beb52465d69b3b5f670090742cbf5cca",{"_index":2108,"title":{},"content":{"388":{}}}],["0000f1fd",{"_index":3284,"title":{},"content":{"735":{}}}],["000108a5c",{"_index":2316,"title":{},"content":{"455":{}}}],["000abcd",{"_index":1879,"title":{},"content":{"353":{}}}],["000abcd123",{"_index":1885,"title":{},"content":{"353":{}}}],["0014ac",{"_index":2334,"title":{},"content":{"460":{}}}],["00743b809adde7e1e3e9b5afb704813d06155958fbbb78cd052cc45a1b19f976b",{"_index":1534,"title":{},"content":{"289":{}}}],["00:00",{"_index":1729,"title":{},"content":{"320":{}}}],["00:00:00",{"_index":3233,"title":{},"content":{"702":{}}}],["00:00am",{"_index":3319,"title":{},"content":{"822":{}}}],["00abcd",{"_index":2324,"title":{},"content":{"457":{},"473":{}}}],["00bcde",{"_index":2388,"title":{},"content":{"473":{}}}],["00efab",{"_index":2327,"title":{},"content":{"458":{},"459":{},"460":{}}}],["01",{"_index":2892,"title":{},"content":{"633":{}}}],["01309f1c765967ac7",{"_index":2893,"title":{},"content":{"633":{}}}],["01ab2cd",{"_index":3429,"title":{},"content":{"753":{}}}],["02",{"_index":685,"title":{},"content":{"189":{},"194":{},"520":{},"730":{}}}],["02/11/2021",{"_index":3230,"title":{},"content":{"702":{}}}],["02:00am",{"_index":3314,"title":{},"content":{"819":{},"820":{}}}],["03/11/2021",{"_index":3232,"title":{},"content":{"702":{}}}],["04",{"_index":686,"title":{},"content":{"189":{},"190":{},"195":{},"281":{}}}],["04xi",{"_index":684,"title":{},"content":{"189":{},"198":{},"202":{}}}],["08",{"_index":776,"title":{},"content":{"191":{},"196":{}}}],["09/06/2023",{"_index":3660,"title":{},"content":{"850":{}}}],["0ac1bfa9",{"_index":3430,"title":{},"content":{"753":{}}}],["0ac7fj",{"_index":3433,"title":{},"content":{"753":{}}}],["0d574d171a484f8deac2d61fc3f7cc984beb52465d69b3b5f670090742cbf5cc",{"_index":2141,"title":{},"content":{"396":{}}}],["0f",{"_index":3214,"title":{},"content":{"690":{}}}],["0fb27dac",{"_index":3426,"title":{},"content":{"753":{}}}],["0th",{"_index":1520,"title":{},"content":{"289":{}}}],["0x",{"_index":1881,"title":{},"content":{"353":{}}}],["0x00",{"_index":1183,"title":{},"content":{"271":{}}}],["0x0000",{"_index":653,"title":{},"content":{"189":{}}}],["0x00001234ab",{"_index":2038,"title":{},"content":{"382":{}}}],["0x00001ac8...4f",{"_index":3291,"title":{},"content":{"736":{}}}],["0x0000993f3be0ce40541e47735aa083854ecac7785b39435c90d8456c777b9e9d81f1",{"_index":2084,"title":{},"content":{"375":{}}}],["0x0000a3a066dd64fbd51ae384f2383684b3803bc72012bfeaa9cd1c93ab7c60f584dc",{"_index":2088,"title":{},"content":{"375":{}}}],["0x0000abcd...ef",{"_index":3292,"title":{},"content":{"736":{}}}],["0x000abcd",{"_index":1884,"title":{},"content":{"353":{}}}],["0x000abcd123",{"_index":1886,"title":{},"content":{"353":{}}}],["0x00abc",{"_index":1996,"title":{},"content":{"371":{}}}],["0x00abcd",{"_index":2342,"title":{},"content":{"461":{},"464":{}}}],["0x00abd",{"_index":2364,"title":{},"content":{"465":{}}}],["0x00bcde",{"_index":2354,"title":{},"content":{"464":{}}}],["0x00def",{"_index":1997,"title":{},"content":{"371":{}}}],["0x00defa",{"_index":2367,"title":{},"content":{"465":{},"466":{}}}],["0x00fedc",{"_index":2356,"title":{},"content":{"464":{}}}],["0x04",{"_index":1184,"title":{},"content":{"271":{}}}],["0x06",{"_index":1267,"title":{},"content":{"273":{}}}],["0x0b",{"_index":1268,"title":{},"content":{"273":{}}}],["0x1234",{"_index":2395,"title":{},"content":{"477":{},"478":{}}}],["0x14",{"_index":1275,"title":{},"content":{"273":{}}}],["0x1a",{"_index":1256,"title":{},"content":{"273":{}}}],["0x1b",{"_index":1273,"title":{},"content":{"273":{}}}],["0x24",{"_index":1263,"title":{},"content":{"273":{}}}],["0x33",{"_index":1274,"title":{},"content":{"273":{}}}],["0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc",{"_index":2781,"title":{},"content":{"613":{}}}],["0x44",{"_index":1252,"title":{},"content":{"273":{}}}],["0x46",{"_index":1260,"title":{},"content":{"273":{}}}],["0x52",{"_index":1265,"title":{},"content":{"273":{}}}],["0x64",{"_index":1269,"title":{},"content":{"273":{}}}],["0x67",{"_index":1251,"title":{},"content":{"273":{}}}],["0x69",{"_index":1276,"title":{},"content":{"273":{}}}],["0x6e",{"_index":1266,"title":{},"content":{"273":{}}}],["0x71",{"_index":1249,"title":{},"content":{"273":{}}}],["0x82",{"_index":1378,"title":{},"content":{"245":{}}}],["0x83",{"_index":1248,"title":{},"content":{"273":{}}}],["0x84",{"_index":1253,"title":{},"content":{"273":{}}}],["0x8a3d77e9d6968b780564936d15b09805827c21fa",{"_index":2780,"title":{},"content":{"613":{}}}],["0x8d",{"_index":1259,"title":{},"content":{"273":{}}}],["0x90",{"_index":1257,"title":{},"content":{"273":{}}}],["0x9000",{"_index":626,"title":{},"content":{"188":{}}}],["0x95",{"_index":1379,"title":{},"content":{"245":{}}}],["0x97",{"_index":1250,"title":{},"content":{"273":{}}}],["0xa1",{"_index":1271,"title":{},"content":{"273":{}}}],["0xa5",{"_index":1261,"title":{},"content":{"273":{}}}],["0xaa",{"_index":1277,"title":{},"content":{"273":{}}}],["0xb001f1e7c8bda414ac7cf7ecba5469fe8d24b6d",{"_index":2783,"title":{},"content":{"613":{}}}],["0xb3",{"_index":1254,"title":{},"content":{"273":{}}}],["0xbaddecod",{"_index":753,"title":{},"content":{"190":{},"191":{}}}],["0xcc",{"_index":1258,"title":{},"content":{"273":{}}}],["0xd7",{"_index":1262,"title":{},"content":{"273":{}}}],["0xda",{"_index":1272,"title":{},"content":{"273":{}}}],["0xf2",{"_index":1270,"title":{},"content":{"273":{}}}],["0xf8",{"_index":1255,"title":{},"content":{"273":{}}}],["0xf9",{"_index":1419,"title":{},"content":{"257":{}}}],["0xfd",{"_index":1264,"title":{},"content":{"273":{}}}],["0xffff",{"_index":641,"title":{},"content":{"189":{}}}],["1",{"_index":417,"title":{"371":{},"741":{},"766":{}},"content":{"153":{},"191":{},"195":{},"196":{},"204":{},"205":{},"206":{},"209":{},"210":{},"272":{},"275":{},"289":{},"296":{},"329":{},"330":{},"350":{},"351":{},"355":{},"356":{},"359":{},"360":{},"361":{},"368":{},"371":{},"373":{},"374":{},"375":{},"376":{},"377":{},"379":{},"381":{},"383":{},"388":{},"389":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"413":{},"432":{},"437":{},"438":{},"447":{},"448":{},"457":{},"459":{},"464":{},"466":{},"483":{},"488":{},"491":{},"495":{},"506":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"536":{},"537":{},"538":{},"539":{},"574":{},"587":{},"588":{},"589":{},"590":{},"616":{},"641":{},"652":{},"656":{},"702":{},"709":{},"724":{},"732":{},"733":{},"735":{},"736":{},"753":{},"756":{},"759":{},"773":{},"777":{}}}],["1,2",{"_index":1895,"title":{},"content":{"355":{},"437":{}}}],["1,2,3",{"_index":2153,"title":{},"content":{"413":{},"447":{},"448":{}}}],["1,2,3,4",{"_index":2235,"title":{},"content":{"436":{}}}],["1,2,3,4,5",{"_index":1906,"title":{},"content":{"357":{}}}],["1..10",{"_index":1908,"title":{},"content":{"358":{}}}],["1..5",{"_index":1904,"title":{},"content":{"357":{}}}],["1.0",{"_index":1894,"title":{},"content":{"355":{},"356":{},"388":{},"396":{}}}],["1.0e2",{"_index":1872,"title":{},"content":{"352":{}}}],["1.1",{"_index":1900,"title":{},"content":{"356":{},"359":{}}}],["1.1.0",{"_index":2105,"title":{},"content":{"386":{}}}],["1.18",{"_index":3517,"title":{},"content":{"834":{}}}],["1.2",{"_index":2471,"title":{},"content":{"497":{}}}],["1.3",{"_index":2550,"title":{},"content":{"506":{}}}],["10",{"_index":1731,"title":{},"content":{"320":{},"382":{},"483":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"588":{},"641":{},"652":{},"693":{},"732":{}}}],["100",{"_index":1873,"title":{},"content":{"352":{},"510":{},"622":{},"623":{}}}],["1000",{"_index":3266,"title":{},"content":{"732":{},"734":{},"735":{}}}],["10000",{"_index":2059,"title":{},"content":{"374":{},"389":{}}}],["100000",{"_index":3272,"title":{},"content":{"732":{}}}],["100000000",{"_index":2109,"title":{},"content":{"388":{},"733":{},"735":{},"736":{}}}],["100000000000",{"_index":3265,"title":{},"content":{"732":{},"734":{}}}],["10:00:00",{"_index":3231,"title":{},"content":{"702":{}}}],["10_000",{"_index":1869,"title":{},"content":{"352":{}}}],["10_000.0",{"_index":1870,"title":{},"content":{"352":{}}}],["10min",{"_index":3080,"title":{},"content":{"664":{}}}],["11100000",{"_index":1778,"title":{},"content":{"330":{}}}],["11155111",{"_index":2762,"title":{},"content":{"612":{}}}],["11:30pm",{"_index":3312,"title":{},"content":{"818":{}}}],["12",{"_index":2174,"title":{"679":{}},"content":{"401":{},"417":{},"679":{},"776":{}}}],["12.1",{"_index":2176,"title":{},"content":{"417":{}}}],["123",{"_index":2271,"title":{},"content":{"443":{}}}],["123456",{"_index":2260,"title":{},"content":{"441":{}}}],["128",{"_index":1281,"title":{},"content":{"273":{}}}],["13",{"_index":2179,"title":{},"content":{"418":{},"756":{}}}],["13.2",{"_index":2181,"title":{},"content":{"418":{}}}],["1391309040",{"_index":2148,"title":{},"content":{"396":{}}}],["13:56:15",{"_index":3661,"title":{},"content":{"850":{}}}],["14",{"_index":2575,"title":{},"content":{"516":{}}}],["14.26239",{"_index":2350,"title":{},"content":{"462":{}}}],["14.26239591",{"_index":2358,"title":{},"content":{"464":{}}}],["15",{"_index":2593,"title":{},"content":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["15.5",{"_index":2396,"title":{},"content":{"477":{},"478":{}}}],["16",{"_index":729,"title":{},"content":{"190":{},"191":{},"202":{}}}],["1622801400",{"_index":1718,"title":{},"content":{"319":{}}}],["1674564088",{"_index":2024,"title":{},"content":{"380":{}}}],["1676332800",{"_index":2498,"title":{},"content":{"400":{}}}],["1677493444",{"_index":2303,"title":{},"content":{"451":{}}}],["1677572714",{"_index":2012,"title":{},"content":{"377":{}}}],["1677598185",{"_index":2023,"title":{},"content":{"380":{}}}],["1689857160",{"_index":2054,"title":{},"content":{"373":{}}}],["1693519200",{"_index":2509,"title":{},"content":{"403":{}}}],["1693605600",{"_index":2510,"title":{},"content":{"403":{}}}],["16byte",{"_index":741,"title":{},"content":{"190":{},"191":{}}}],["18",{"_index":3260,"title":{"734":{}},"content":{"730":{},"734":{},"735":{}}}],["181812.87",{"_index":2339,"title":{},"content":{"461":{}}}],["19",{"_index":3262,"title":{"735":{}},"content":{"730":{},"735":{}}}],["197",{"_index":2846,"title":{},"content":{"623":{}}}],["1\\ncondit",{"_index":2464,"title":{},"content":{"494":{}}}],["1e731fb84d0a094c6273fffed68147c381a273c83868cdeb9b81c7ec790c6d38",{"_index":691,"title":{},"content":{"189":{}}}],["1fb2ha",{"_index":3437,"title":{},"content":{"753":{}}}],["1mb",{"_index":3355,"title":{},"content":{"724":{}}}],["1s",{"_index":1127,"title":{},"content":{"220":{}}}],["1st",{"_index":920,"title":{},"content":{"201":{},"291":{},"361":{},"709":{},"736":{}}}],["2",{"_index":579,"title":{"541":{},"591":{},"742":{},"767":{}},"content":{"186":{},"188":{},"191":{},"205":{},"206":{},"209":{},"271":{},"296":{},"308":{},"329":{},"356":{},"360":{},"361":{},"362":{},"371":{},"375":{},"379":{},"380":{},"381":{},"383":{},"415":{},"424":{},"432":{},"437":{},"464":{},"466":{},"488":{},"491":{},"519":{},"522":{},"533":{},"534":{},"535":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"562":{},"587":{},"588":{},"589":{},"590":{},"600":{},"637":{},"724":{},"733":{},"735":{},"736":{},"759":{},"777":{},"816":{}}}],["2.0",{"_index":1899,"title":{},"content":{"356":{},"396":{},"736":{},"785":{}}}],["2.0.8",{"_index":2681,"title":{},"content":{"567":{}}}],["2.1",{"_index":2420,"title":{},"content":{"483":{}}}],["2.58933391",{"_index":3465,"title":{},"content":{"759":{}}}],["2.o",{"_index":2925,"title":{},"content":{"638":{}}}],["20",{"_index":1404,"title":{},"content":{"252":{}}}],["200",{"_index":2435,"title":{},"content":{"488":{},"489":{},"724":{}}}],["2022",{"_index":3571,"title":{},"content":{"775":{}}}],["2023",{"_index":3543,"title":{},"content":{"774":{}}}],["2048",{"_index":3584,"title":{},"content":{"776":{}}}],["21st",{"_index":1405,"title":{},"content":{"252":{}}}],["23",{"_index":2501,"title":{},"content":{"401":{}}}],["24",{"_index":2711,"title":{},"content":{"579":{},"588":{},"609":{},"774":{},"776":{}}}],["255",{"_index":3228,"title":{},"content":{"701":{}}}],["255121",{"_index":3428,"title":{},"content":{"753":{}}}],["256",{"_index":1089,"title":{},"content":{"231":{},"632":{},"701":{},"778":{}}}],["256kb",{"_index":2441,"title":{},"content":{"488":{}}}],["29",{"_index":2592,"title":{},"content":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["2^31",{"_index":416,"title":{},"content":{"153":{}}}],["2nd",{"_index":1572,"title":{},"content":{"291":{},"361":{}}}],["3",{"_index":483,"title":{"768":{}},"content":{"181":{},"188":{},"190":{},"191":{},"206":{},"209":{},"279":{},"282":{},"356":{},"361":{},"370":{},"377":{},"480":{},"483":{},"520":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"563":{},"587":{},"588":{},"589":{},"590":{},"595":{},"709":{},"733":{},"745":{},"753":{},"759":{}}}],["3,4",{"_index":2234,"title":{},"content":{"436":{}}}],["3.0",{"_index":3615,"title":{},"content":{"781":{}}}],["3.10",{"_index":3614,"title":{},"content":{"781":{}}}],["3.53553390",{"_index":2416,"title":{},"content":{"482":{}}}],["3.6",{"_index":2983,"title":{},"content":{"641":{}}}],["30",{"_index":3439,"title":{},"content":{"753":{}}}],["300000000",{"_index":3275,"title":{},"content":{"733":{}}}],["31",{"_index":2502,"title":{},"content":{"401":{}}}],["32",{"_index":694,"title":{},"content":{"189":{},"190":{},"191":{},"201":{},"202":{},"273":{},"289":{},"778":{}}}],["32byte",{"_index":739,"title":{},"content":{"190":{},"191":{}}}],["32bytesinsid",{"_index":731,"title":{},"content":{"190":{},"191":{}}}],["33",{"_index":1533,"title":{},"content":{"289":{}}}],["34",{"_index":781,"title":{},"content":{"191":{}}}],["374c7527733556",{"_index":2382,"title":{},"content":{"472":{}}}],["3c21ef708bf11b4232",{"_index":2392,"title":{},"content":{"475":{}}}],["3mb",{"_index":3419,"title":{},"content":{"753":{}}}],["3rd",{"_index":649,"title":{},"content":{"189":{},"361":{}}}],["3s",{"_index":1124,"title":{},"content":{"220":{}}}],["4",{"_index":619,"title":{},"content":{"188":{},"190":{},"191":{},"195":{},"196":{},"204":{},"206":{},"209":{},"289":{},"371":{},"433":{},"482":{},"497":{},"520":{},"536":{},"537":{},"538":{},"539":{},"588":{},"589":{},"590":{},"679":{},"815":{}}}],["4,5,6",{"_index":2155,"title":{},"content":{"413":{}}}],["4.05902597",{"_index":2368,"title":{},"content":{"465":{}}}],["4.md",{"_index":3655,"title":{},"content":{"815":{}}}],["410",{"_index":3445,"title":{},"content":{"756":{}}}],["456",{"_index":2273,"title":{},"content":{"443":{}}}],["4756.5401",{"_index":2343,"title":{},"content":{"461":{}}}],["4th",{"_index":656,"title":{},"content":{"189":{}}}],["5",{"_index":1628,"title":{},"content":{"296":{},"415":{},"588":{},"590":{},"641":{},"679":{},"753":{}}}],["5/month",{"_index":3354,"title":{},"content":{"724":{}}}],["500",{"_index":3357,"title":{},"content":{"724":{}}}],["51",{"_index":2990,"title":{},"content":{"641":{}}}],["512",{"_index":2977,"title":{},"content":{"650":{}}}],["52e77c79bea0f84e2d9c40356932fb0dd31688c23d6b6e9ac99d2869dc407692",{"_index":689,"title":{},"content":{"189":{}}}],["59",{"_index":2500,"title":{},"content":{"401":{}}}],["592ac76afa",{"_index":2184,"title":{},"content":{"419":{}}}],["5s",{"_index":1766,"title":{},"content":{"329":{}}}],["5th",{"_index":658,"title":{},"content":{"189":{}}}],["6",{"_index":2504,"title":{},"content":{"401":{},"588":{},"590":{},"732":{},"777":{}}}],["64",{"_index":737,"title":{},"content":{"190":{},"191":{},"776":{}}}],["650",{"_index":640,"title":{},"content":{"189":{},"200":{},"650":{}}}],["66",{"_index":783,"title":{},"content":{"191":{},"641":{}}}],["68",{"_index":2576,"title":{},"content":{"518":{},"519":{},"520":{}}}],["68420",{"_index":3423,"title":{},"content":{"753":{}}}],["68656c6c6f",{"_index":2186,"title":{},"content":{"419":{}}}],["69.75757441",{"_index":2409,"title":{},"content":{"480":{}}}],["6th",{"_index":661,"title":{},"content":{"189":{}}}],["7",{"_index":1532,"title":{},"content":{"289":{},"523":{},"588":{},"836":{}}}],["7330d2b39ca35ea",{"_index":2375,"title":{},"content":{"469":{}}}],["754",{"_index":409,"title":{},"content":{"147":{}}}],["7th",{"_index":662,"title":{},"content":{"189":{}}}],["7z",{"_index":3449,"title":{},"content":{"745":{}}}],["8",{"_index":423,"title":{},"content":{"165":{},"191":{},"330":{},"356":{},"391":{},"401":{},"403":{},"480":{},"481":{},"519":{},"588":{},"652":{},"732":{},"733":{},"734":{},"735":{},"756":{}}}],["8.90800012",{"_index":2365,"title":{},"content":{"465":{}}}],["80001",{"_index":2769,"title":{},"content":{"612":{}}}],["8am",{"_index":2117,"title":{},"content":{"391":{},"401":{}}}],["9",{"_index":2259,"title":{},"content":{"403":{},"441":{},"442":{},"443":{},"588":{},"641":{},"774":{}}}],["90",{"_index":2850,"title":{},"content":{"623":{},"637":{},"641":{},"723":{}}}],["901a365ff22b895",{"_index":2383,"title":{},"content":{"472":{}}}],["97",{"_index":2765,"title":{},"content":{"612":{}}}],["99.99999999",{"_index":2844,"title":{},"content":{"623":{}}}],["9f",{"_index":3215,"title":{},"content":{"690":{}}}],["_",{"_index":1867,"title":{},"content":{"352":{}}}],["_dnslink",{"_index":3397,"title":{},"content":{"738":{},"739":{}}}],["_dnslink.example.com",{"_index":3393,"title":{},"content":{"738":{}}}],["a0b1c2",{"_index":2276,"title":{},"content":{"443":{}}}],["a1",{"_index":3145,"title":{},"content":{"682":{},"683":{},"684":{}}}],["a3d7e45a0d9be5f",{"_index":2376,"title":{},"content":{"469":{}}}],["abc",{"_index":2262,"title":{},"content":{"441":{}}}],["abc123f",{"_index":3424,"title":{},"content":{"753":{}}}],["abcdef0123456789",{"_index":3574,"title":{},"content":{"776":{}}}],["abdecoin_bal",{"_index":2362,"title":{},"content":{"465":{}}}],["abi_decode/2",{"_index":2492,"title":{"505":{}},"content":{}}],["abi_encode/2",{"_index":2488,"title":{"504":{}},"content":{}}],["abil",{"_index":2578,"title":{},"content":{"522":{},"637":{},"644":{},"658":{},"660":{}}}],["abitrati",{"_index":2121,"title":{},"content":{"393":{}}}],["abov",{"_index":506,"title":{},"content":{"181":{},"190":{},"191":{},"201":{},"202":{},"272":{},"349":{},"359":{},"407":{},"408":{},"612":{},"623":{},"734":{},"740":{},"847":{}}}],["abritrati",{"_index":2122,"title":{},"content":{"393":{}}}],["absenc",{"_index":1875,"title":{},"content":{"352":{}}}],["absolut",{"_index":2836,"title":{},"content":{"622":{}}}],["acc",{"_index":1944,"title":{},"content":{"363":{}}}],["accept",{"_index":513,"title":{},"content":{"181":{},"345":{},"379":{},"389":{},"494":{},"519":{},"588":{},"622":{},"734":{},"745":{},"746":{},"747":{},"748":{}}}],["access",{"_index":462,"title":{"211":{},"212":{},"534":{},"561":{},"594":{},"764":{},"845":{}},"content":{"181":{},"197":{},"211":{},"212":{},"213":{},"222":{},"242":{},"270":{},"289":{},"319":{},"339":{},"341":{},"359":{},"368":{},"533":{},"534":{},"535":{},"561":{},"567":{},"578":{},"594":{},"622":{},"643":{},"646":{},"647":{},"648":{},"655":{},"696":{},"742":{},"743":{},"748":{},"749":{},"756":{},"760":{},"762":{},"764":{},"769":{},"771":{},"773":{},"774":{},"776":{},"777":{},"834":{},"839":{},"843":{},"844":{},"845":{}}}],["access//aeweb.archethic.net",{"_index":2598,"title":{},"content":{"556":{},"557":{}}}],["accord",{"_index":703,"title":{},"content":{"190":{},"191":{},"236":{},"260":{},"293":{},"309":{},"319":{},"345":{},"478":{},"504":{},"505":{},"613":{},"624":{},"644":{},"647":{},"651":{},"656":{},"660":{},"784":{}}}],["accordingli",{"_index":2448,"title":{},"content":{"488":{}}}],["account",{"_index":650,"title":{"195":{},"210":{},"222":{}},"content":{"189":{},"190":{},"195":{},"198":{},"200":{},"216":{},"222":{},"587":{},"588":{},"650":{},"717":{},"745":{},"746":{},"747":{},"748":{},"750":{},"774":{},"784":{},"785":{},"786":{},"791":{},"793":{},"809":{},"811":{}}}],["accumul",{"_index":1130,"title":{},"content":{"221":{}}}],["accur",{"_index":2401,"title":{},"content":{"477":{}}}],["achiev",{"_index":982,"title":{},"content":{"215":{},"216":{},"291":{},"328":{},"637":{},"666":{},"686":{},"714":{},"726":{},"858":{},"859":{}}}],["acknowledg",{"_index":2660,"title":{},"content":{"560":{},"573":{},"615":{}}}],["acm",{"_index":3403,"title":{},"content":{"741":{}}}],["acquir",{"_index":3538,"title":{},"content":{"774":{}}}],["act",{"_index":435,"title":{},"content":{"173":{},"181":{},"488":{},"666":{},"753":{}}}],["action",{"_index":1217,"title":{"367":{},"369":{},"399":{},"771":{}},"content":{"243":{},"273":{},"290":{},"320":{},"345":{},"350":{},"363":{},"367":{},"368":{},"369":{},"370":{},"373":{},"374":{},"375":{},"376":{},"388":{},"389":{},"390":{},"391":{},"394":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"413":{},"477":{},"478":{},"506":{},"525":{},"526":{},"584":{},"587":{},"607":{},"704":{},"727":{},"777":{},"778":{},"784":{},"834":{},"858":{},"859":{}}}],["action'",{"_index":1829,"title":{},"content":{"346":{},"377":{},"379":{},"381":{},"383":{},"859":{}}}],["activ",{"_index":2495,"title":{},"content":{"398":{},"670":{},"778":{}}}],["actor",{"_index":2872,"title":{},"content":{"621":{},"637":{},"657":{},"658":{},"661":{},"682":{}}}],["actual",{"_index":1880,"title":{},"content":{"353":{},"360":{},"365":{},"371":{},"393":{},"431":{},"525":{},"661":{}}}],["ad",{"_index":544,"title":{"846":{}},"content":{"183":{},"189":{},"289":{},"290":{},"324":{},"352":{},"494":{},"699":{},"779":{},"785":{},"786":{},"839":{}}}],["adapt",{"_index":901,"title":{"630":{}},"content":{"200":{},"626":{},"633":{},"666":{},"683":{},"784":{}}}],["add",{"_index":622,"title":{"570":{},"742":{}},"content":{"188":{},"223":{},"226":{},"231":{},"271":{},"295":{},"321":{},"324":{},"347":{},"378":{},"396":{},"398":{},"491":{},"495":{},"497":{},"499":{},"501":{},"525":{},"570":{},"612":{},"633":{},"650":{},"655":{},"738":{},"739":{},"747":{},"751":{},"797":{},"804":{},"807":{},"813":{},"836":{},"837":{},"839":{},"842":{},"843":{}}}],["add_ownership",{"_index":2144,"title":{},"content":{"396":{}}}],["add_ownership/1",{"_index":2475,"title":{"499":{}},"content":{"500":{}}}],["add_ownerships/1",{"_index":2483,"title":{"500":{}},"content":{}}],["add_recipi",{"_index":2147,"title":{},"content":{"396":{}}}],["add_recipient/1",{"_index":2484,"title":{"501":{}},"content":{}}],["add_recipients/1",{"_index":2486,"title":{"502":{}},"content":{"502":{}}}],["add_servic",{"_index":3641,"title":{"797":{}},"content":{}}],["add_token_transf",{"_index":2114,"title":{},"content":{"389":{},"396":{}}}],["add_token_transfer/1",{"_index":2469,"title":{"497":{}},"content":{"498":{}}}],["add_token_transfers/1",{"_index":2474,"title":{"498":{}},"content":{}}],["add_uco_transf",{"_index":2111,"title":{},"content":{"388":{},"396":{}}}],["add_uco_transfer/1",{"_index":2465,"title":{"495":{}},"content":{"496":{}}}],["add_uco_transfers/1",{"_index":2468,"title":{"496":{}},"content":{}}],["add_vote([x",{"_index":2093,"title":{},"content":{"376":{}}}],["add_vote(vot",{"_index":2095,"title":{},"content":{"376":{}}}],["adddress",{"_index":2458,"title":{},"content":{"491":{}}}],["addit",{"_index":1504,"title":{"294":{}},"content":{"287":{},"607":{},"621":{},"631":{},"652":{},"656":{},"717":{},"722":{},"804":{},"807":{},"813":{}}}],["addr",{"_index":834,"title":{},"content":{"195":{}}}],["address",{"_index":125,"title":{"142":{},"190":{},"195":{},"210":{},"518":{},"567":{},"574":{},"584":{},"587":{},"616":{},"633":{},"758":{},"835":{}},"content":{"28":{},"29":{},"37":{},"38":{},"49":{},"50":{},"58":{},"59":{},"61":{},"62":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"73":{},"74":{},"76":{},"77":{},"80":{},"81":{},"89":{},"90":{},"92":{},"93":{},"104":{},"105":{},"106":{},"107":{},"108":{},"115":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"131":{},"132":{},"139":{},"140":{},"141":{},"142":{},"163":{},"173":{},"174":{},"178":{},"179":{},"186":{},"189":{},"190":{},"191":{},"195":{},"198":{},"200":{},"201":{},"210":{},"212":{},"213":{},"223":{},"226":{},"227":{},"228":{},"233":{},"235":{},"282":{},"289":{},"290":{},"292":{},"295":{},"336":{},"347":{},"353":{},"371":{},"374":{},"375":{},"380":{},"381":{},"382":{},"388":{},"389":{},"393":{},"396":{},"398":{},"412":{},"453":{},"454":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"464":{},"465":{},"466":{},"475":{},"495":{},"497":{},"501":{},"510":{},"518":{},"519":{},"520":{},"521":{},"524":{},"574":{},"587":{},"604":{},"612":{},"613":{},"616":{},"625":{},"628":{},"633":{},"650":{},"677":{},"687":{},"688":{},"690":{},"691":{},"693":{},"702":{},"705":{},"716":{},"717":{},"736":{},"737":{},"738":{},"753":{},"754":{},"758":{},"768":{},"772":{},"774":{},"778":{},"786":{},"793":{},"796":{},"799":{},"806":{},"808":{},"811":{},"814":{},"834":{},"835":{},"837":{},"838":{},"855":{},"858":{}}}],["address'",{"_index":1543,"title":{},"content":{"290":{}}}],["address_index",{"_index":666,"title":{},"content":{"189":{},"190":{},"191":{},"195":{},"196":{}}}],["address_len",{"_index":768,"title":{},"content":{"190":{},"191":{}}}],["addressit",{"_index":769,"title":{},"content":{"190":{}}}],["addresslength",{"_index":779,"title":{},"content":{"191":{}}}],["adher",{"_index":2629,"title":{},"content":{"554":{}}}],["admin",{"_index":1220,"title":{},"content":{"273":{}}}],["administr",{"_index":1357,"title":{},"content":{"243":{},"725":{},"738":{}}}],["adopt",{"_index":1809,"title":{},"content":{"345":{},"618":{},"640":{},"644":{},"655":{},"714":{}}}],["adpu",{"_index":828,"title":{"192":{}},"content":{}}],["advantag",{"_index":2937,"title":{},"content":{"639":{}}}],["ae",{"_index":861,"title":{},"content":{"202":{},"207":{},"212":{},"213":{},"639":{},"648":{}}}],["aebnb",{"_index":2721,"title":{},"content":{"593":{}}}],["aeeth",{"_index":2719,"title":{},"content":{"593":{}}}],["aeip",{"_index":2574,"title":{"734":{},"735":{}},"content":{"516":{},"520":{},"645":{},"730":{},"734":{},"735":{},"756":{},"815":{}}}],["aemail",{"_index":3002,"title":{},"content":{"642":{}}}],["aemat",{"_index":2720,"title":{},"content":{"593":{}}}],["aenft",{"_index":3006,"title":{},"content":{"642":{}}}],["aeronaut",{"_index":2856,"title":{},"content":{"623":{}}}],["aerospik",{"_index":1456,"title":{},"content":{"284":{}}}],["aes256",{"_index":881,"title":{},"content":{"198":{},"202":{},"634":{}}}],["aes256(mode=cbc",{"_index":948,"title":{},"content":{"202":{}}}],["aes256(mode=ctr",{"_index":939,"title":{},"content":{"202":{}}}],["aes\\_key",{"_index":949,"title":{},"content":{"202":{}}}],["aes_key",{"_index":884,"title":{},"content":{"198":{},"202":{}}}],["aes_key_iv_tag",{"_index":733,"title":{},"content":{"190":{},"191":{}}}],["aewallet",{"_index":3635,"title":{},"content":{"788":{},"791":{},"800":{},"809":{}}}],["aeweb",{"_index":1803,"title":{"536":{},"540":{},"557":{},"580":{},"584":{},"720":{},"737":{},"743":{},"750":{},"752":{},"757":{},"758":{},"759":{}},"content":{"343":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"556":{},"557":{},"583":{},"584":{},"642":{},"722":{},"725":{},"727":{},"740":{},"742":{},"743":{},"745":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"757":{},"758":{},"759":{},"830":{}}}],["aeweb'",{"_index":3378,"title":{},"content":{"727":{}}}],["aewebvers",{"_index":3420,"title":{},"content":{"753":{},"756":{}}}],["af28c3d5b3828ad3f8682f1b1d14a8507b829f65f7be6c50427a6019ccb6801c",{"_index":2140,"title":{},"content":{"396":{}}}],["again",{"_index":1125,"title":{},"content":{"220":{},"296":{},"323":{},"754":{},"778":{}}}],["against",{"_index":2923,"title":{},"content":{"637":{}}}],["aggreg",{"_index":74,"title":{"221":{}},"content":{"15":{},"103":{},"221":{},"233":{},"294":{},"307":{},"316":{},"320":{},"516":{},"639":{},"712":{},"822":{}}}],["ago",{"_index":3374,"title":{},"content":{"726":{}}}],["agpl",{"_index":3140,"title":{},"content":{"680":{}}}],["agre",{"_index":3454,"title":{},"content":{"746":{}}}],["agreement",{"_index":2659,"title":{},"content":{"560":{},"623":{}}}],["agvsbg8gd29ybgq",{"_index":3432,"title":{},"content":{"753":{}}}],["aim",{"_index":871,"title":{},"content":{"197":{},"552":{},"618":{},"642":{},"661":{},"663":{},"679":{},"776":{}}}],["aka",{"_index":846,"title":{},"content":{"197":{},"211":{},"289":{},"300":{},"533":{},"534":{},"535":{},"625":{},"703":{}}}],["al",{"_index":1073,"title":{},"content":{"226":{}}}],["alca",{"_index":507,"title":{},"content":{"181":{},"182":{},"183":{}}}],["algo",{"_index":972,"title":{},"content":{"210":{},"469":{},"472":{},"802":{}}}],["algorithm",{"_index":374,"title":{"325":{},"634":{}},"content":{"106":{},"142":{},"157":{},"163":{},"202":{},"210":{},"265":{},"273":{},"290":{},"299":{},"300":{},"304":{},"307":{},"308":{},"319":{},"320":{},"325":{},"327":{},"469":{},"472":{},"622":{},"623":{},"624":{},"625":{},"630":{},"631":{},"632":{},"633":{},"644":{},"650":{},"651":{},"665":{},"675":{},"702":{},"717":{},"835":{}}}],["alic",{"_index":2166,"title":{},"content":{"416":{},"434":{},"555":{},"584":{}}}],["alloc",{"_index":292,"title":{},"content":{"70":{},"76":{},"89":{},"141":{},"236":{}}}],["allow",{"_index":848,"title":{},"content":{"211":{},"329":{},"349":{},"370":{},"398":{},"488":{},"522":{},"524":{},"533":{},"534":{},"535":{},"564":{},"575":{},"578":{},"593":{},"603":{},"621":{},"622":{},"629":{},"641":{},"642":{},"644":{},"646":{},"647":{},"649":{},"660":{},"672":{},"679":{},"682":{},"683":{},"696":{},"716":{},"722":{},"727":{},"728":{},"732":{},"742":{},"745":{},"746":{},"747":{},"748":{},"755":{},"775":{},"776":{},"778":{},"783":{},"785":{},"815":{},"817":{},"834":{},"835":{},"836":{},"837":{},"839":{},"840":{},"841":{},"843":{},"850":{},"851":{},"853":{}}}],["allow_mint",{"_index":3271,"title":{},"content":{"732":{}}}],["alogrithm",{"_index":2910,"title":{},"content":{"637":{}}}],["alon",{"_index":2902,"title":{},"content":{"636":{}}}],["along",{"_index":1164,"title":{},"content":{"299":{},"300":{},"312":{},"324":{},"340":{},"390":{},"633":{},"639":{},"644":{}}}],["alreadi",{"_index":608,"title":{},"content":{"188":{},"312":{},"419":{},"745":{},"782":{}}}],["although",{"_index":3581,"title":{},"content":{"776":{}}}],["alway",{"_index":2305,"title":{},"content":{"412":{},"451":{},"471":{},"493":{},"733":{},"756":{},"821":{}}}],["amang",{"_index":1461,"title":{},"content":{"284":{}}}],["amazon",{"_index":2967,"title":{},"content":{"649":{}}}],["amd",{"_index":1427,"title":{},"content":{"260":{}}}],["among",{"_index":1540,"title":{},"content":{"290":{}}}],["amort",{"_index":1759,"title":{},"content":{"329":{}}}],["amount",{"_index":226,"title":{},"content":{"58":{},"61":{},"70":{},"76":{},"89":{},"92":{},"141":{},"191":{},"224":{},"227":{},"323":{},"329":{},"371":{},"374":{},"388":{},"389":{},"393":{},"396":{},"462":{},"477":{},"478":{},"495":{},"497":{},"519":{},"520":{},"604":{},"735":{},"736":{},"753":{},"772":{},"820":{},"837":{},"855":{}}}],["amount'",{"_index":2776,"title":{},"content":{"613":{}}}],["amount_send",{"_index":2063,"title":{},"content":{"374":{},"389":{}}}],["an",{"_index":3334,"title":{},"content":{"714":{}}}],["analys",{"_index":3336,"title":{},"content":{"714":{}}}],["analysi",{"_index":3185,"title":{},"content":{"683":{},"771":{}}}],["analyz",{"_index":1447,"title":{"576":{},"617":{}},"content":{"284":{},"753":{}}}],["anchor",{"_index":1146,"title":{},"content":{"237":{}}}],["and/or",{"_index":3408,"title":{},"content":{"741":{}}}],["android",{"_index":3557,"title":{},"content":{"775":{},"782":{},"785":{}}}],["announc",{"_index":3106,"title":{},"content":{"672":{},"716":{}}}],["anoth",{"_index":1946,"title":{},"content":{"363":{},"436":{},"637":{},"671":{},"735":{},"759":{},"775":{},"776":{},"778":{},"840":{},"841":{}}}],["answer",{"_index":2845,"title":{},"content":{"623":{}}}],["anymor",{"_index":2020,"title":{},"content":{"379":{}}}],["anyon",{"_index":2602,"title":{},"content":{"552":{},"588":{},"696":{},"726":{}}}],["anyth",{"_index":907,"title":{},"content":{"200":{},"355":{},"371":{},"407":{},"408":{},"447":{},"494":{},"521":{}}}],["apdu",{"_index":596,"title":{"193":{}},"content":{"188":{},"191":{},"194":{},"195":{},"196":{}}}],["api",{"_index":581,"title":{"187":{},"528":{}},"content":{"290":{},"299":{},"364":{},"488":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"726":{},"736":{},"754":{},"777":{},"778":{},"785":{},"815":{}}}],["app",{"_index":497,"title":{"567":{}},"content":{"181":{},"182":{},"183":{},"187":{},"209":{},"567":{},"588":{},"642":{},"725":{},"759":{},"775":{},"778":{}}}],["appear",{"_index":366,"title":{},"content":{"106":{},"142":{},"157":{},"163":{},"408":{},"588":{},"745":{},"766":{},"768":{}}}],["append",{"_index":822,"title":{},"content":{"191":{},"271":{},"285":{},"286":{},"287":{},"289":{},"290":{},"437":{},"438":{}}}],["append/2",{"_index":2238,"title":{"437":{}},"content":{}}],["appendix",{"_index":1960,"title":{"371":{}},"content":{"368":{},"377":{},"379":{},"381":{},"383":{},"457":{},"459":{}}}],["appli",{"_index":808,"title":{},"content":{"191":{},"290":{},"295":{},"296":{},"379":{},"480":{},"644":{},"657":{},"660":{},"661":{},"664":{},"823":{},"824":{},"838":{},"839":{}}}],["applic",{"_index":488,"title":{"187":{},"578":{},"642":{},"763":{},"777":{}},"content":{"181":{},"188":{},"212":{},"213":{},"216":{},"240":{},"282":{},"287":{},"291":{},"295":{},"337":{},"345":{},"349":{},"536":{},"537":{},"538":{},"539":{},"573":{},"576":{},"578":{},"587":{},"588":{},"590":{},"597":{},"598":{},"615":{},"617":{},"618":{},"642":{},"647":{},"657":{},"679":{},"714":{},"725":{},"726":{},"743":{},"746":{},"747":{},"748":{},"750":{},"760":{},"762":{},"763":{},"775":{},"777":{},"778":{},"782":{},"783":{},"785":{},"815":{},"833":{},"834":{}}}],["application'",{"_index":3508,"title":{},"content":{"769":{}}}],["application(i",{"_index":918,"title":{},"content":{"201":{}}}],["appnam",{"_index":620,"title":{},"content":{"188":{}}}],["approach",{"_index":1492,"title":{"287":{}},"content":{"286":{},"289":{},"291":{},"328":{},"639":{},"668":{},"738":{},"775":{},"854":{}}}],["appropri",{"_index":2772,"title":{},"content":{"613":{},"760":{}}}],["approv",{"_index":95,"title":{"318":{}},"content":{"21":{},"191":{},"273":{},"282":{},"318":{},"661":{},"823":{},"824":{}}}],["approx",{"_index":3244,"title":{},"content":{"709":{}}}],["approxim",{"_index":2304,"title":{},"content":{"451":{}}}],["appup",{"_index":1613,"title":{},"content":{"282":{}}}],["appvers",{"_index":612,"title":{},"content":{"188":{}}}],["appversion[0",{"_index":618,"title":{},"content":{"188":{}}}],["arch",{"_index":1672,"title":{"622":{}},"content":{"304":{},"309":{},"346":{},"618":{},"620":{},"622":{},"623":{},"641":{},"664":{},"682":{},"723":{}}}],["arch_address",{"_index":838,"title":{},"content":{"195":{},"198":{}}}],["archer",{"_index":2801,"title":{},"content":{"590":{}}}],["archeth",{"_index":239,"title":{"190":{},"195":{},"536":{},"539":{},"541":{},"542":{},"558":{},"560":{},"561":{},"564":{},"565":{},"566":{},"567":{},"569":{},"578":{},"582":{},"584":{},"587":{},"588":{},"589":{},"590":{},"591":{},"593":{},"594":{},"596":{},"597":{},"606":{},"607":{},"610":{},"618":{},"637":{},"639":{},"680":{},"720":{},"773":{},"779":{},"848":{},"858":{},"859":{}},"content":{"64":{},"109":{},"114":{},"130":{},"133":{},"138":{},"157":{},"181":{},"182":{},"183":{},"187":{},"190":{},"191":{},"195":{},"197":{},"198":{},"200":{},"202":{},"210":{},"211":{},"214":{},"215":{},"222":{},"230":{},"235":{},"240":{},"248":{},"252":{},"265":{},"282":{},"283":{},"295":{},"296":{},"305":{},"323":{},"324":{},"328":{},"330":{},"334":{},"336":{},"342":{},"343":{},"345":{},"346":{},"347":{},"348":{},"349":{},"353":{},"362":{},"390":{},"394":{},"412":{},"413":{},"478":{},"488":{},"508":{},"512":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"552":{},"553":{},"564":{},"566":{},"569":{},"573":{},"584":{},"587":{},"588":{},"589":{},"593":{},"596":{},"597":{},"599":{},"606":{},"607":{},"610":{},"615":{},"618":{},"620":{},"621":{},"622":{},"623":{},"626":{},"628":{},"630":{},"633":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"649":{},"650":{},"651":{},"656":{},"657":{},"660":{},"661":{},"663":{},"666":{},"670":{},"672":{},"674":{},"675":{},"679":{},"685":{},"689":{},"690":{},"695":{},"697":{},"700":{},"701":{},"703":{},"704":{},"713":{},"715":{},"720":{},"723":{},"724":{},"725":{},"727":{},"728":{},"729":{},"731":{},"736":{},"738":{},"740":{},"743":{},"745":{},"746":{},"747":{},"748":{},"750":{},"752":{},"754":{},"757":{},"760":{},"762":{},"763":{},"764":{},"765":{},"766":{},"768":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"778":{},"779":{},"783":{},"785":{},"815":{},"833":{},"834":{},"848":{},"851":{},"854":{},"855":{},"858":{},"859":{}}}],["archethic'",{"_index":492,"title":{"197":{},"211":{},"283":{},"534":{},"535":{},"537":{},"538":{},"602":{},"603":{},"604":{},"670":{},"833":{},"851":{},"854":{}},"content":{"181":{},"182":{},"183":{},"200":{},"325":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"560":{},"593":{},"602":{},"603":{},"604":{},"606":{},"618":{},"646":{},"695":{},"730":{},"760":{},"851":{},"853":{},"854":{},"858":{},"859":{}}}],["archethic.net",{"_index":517,"title":{},"content":{"181":{}}}],["archethic.oraclechain",{"_index":1748,"title":{},"content":{"324":{}}}],["archethic.oraclechain.service.mynewservic",{"_index":1751,"title":{},"content":{"324":{}}}],["archethic.oraclechain.services.ucopric",{"_index":1749,"title":{},"content":{"324":{}}}],["archethic_derive_with_seed_key",{"_index":677,"title":{},"content":{"189":{}}}],["archethic_lib_dart",{"_index":3612,"title":{},"content":{"779":{}}}],["archethic_nod",{"_index":1624,"title":{},"content":{"295":{},"296":{}}}],["archethicindex",{"_index":1393,"title":{"248":{},"264":{}},"content":{"248":{},"251":{},"252":{},"260":{},"262":{},"264":{}}}],["archethic’",{"_index":2671,"title":{},"content":{"564":{},"566":{}}}],["archiv",{"_index":1852,"title":{},"content":{"349":{},"745":{},"746":{},"751":{}}}],["area",{"_index":2520,"title":{},"content":{"405":{},"660":{}}}],["areaes_key",{"_index":738,"title":{},"content":{"190":{},"191":{}}}],["aren't",{"_index":1945,"title":{},"content":{"363":{},"708":{}}}],["arg",{"_index":2087,"title":{},"content":{"375":{},"491":{}}}],["arg1",{"_index":1958,"title":{},"content":{"365":{}}}],["arg2",{"_index":1955,"title":{},"content":{"365":{}}}],["argument",{"_index":5,"title":{"2":{},"4":{},"102":{},"105":{},"108":{},"113":{},"116":{},"121":{},"126":{},"129":{},"132":{},"137":{},"140":{},"174":{},"179":{},"369":{}},"content":{"1":{},"3":{},"363":{},"369":{},"378":{},"399":{},"413":{},"468":{},"470":{},"471":{},"491":{},"526":{}}}],["arithemet",{"_index":1604,"title":{},"content":{"268":{}}}],["arithmet",{"_index":1898,"title":{"356":{}},"content":{"356":{}}}],["ariti",{"_index":2158,"title":{},"content":{"413":{}}}],["around",{"_index":1714,"title":{},"content":{"305":{},"652":{},"724":{},"736":{}}}],["arriv",{"_index":1121,"title":{},"content":{"220":{},"622":{},"624":{}}}],["arrow",{"_index":3521,"title":{},"content":{"836":{}}}],["arsèn",{"_index":2191,"title":{},"content":{"420":{}}}],["articl",{"_index":3553,"title":{},"content":{"774":{},"778":{}}}],["artist",{"_index":3011,"title":{},"content":{"642":{}}}],["asc",{"_index":36,"title":{},"content":{"5":{}}}],["ascend",{"_index":39,"title":{},"content":{"6":{}}}],["ascii",{"_index":1890,"title":{"354":{}},"content":{}}],["ask",{"_index":1550,"title":{},"content":{"290":{},"784":{},"859":{}}}],["asn",{"_index":841,"title":{},"content":{"196":{},"271":{},"272":{},"273":{},"280":{},"729":{}}}],["asn1",{"_index":1179,"title":{},"content":{"271":{}}}],["asn_der_sign",{"_index":774,"title":{},"content":{"191":{}}}],["asn_sign",{"_index":813,"title":{},"content":{"191":{}}}],["asnsigns",{"_index":1193,"title":{"272":{}},"content":{}}],["aspect",{"_index":1776,"title":{},"content":{"330":{},"721":{}}}],["assert",{"_index":1066,"title":{},"content":{"222":{},"233":{},"300":{},"312":{},"314":{},"315":{},"316":{},"317":{},"322":{},"325":{},"326":{},"607":{},"741":{},"859":{}}}],["asset",{"_index":108,"title":{"564":{},"565":{},"765":{}},"content":{"28":{},"34":{},"58":{},"70":{},"76":{},"89":{},"92":{},"141":{},"181":{},"222":{},"314":{},"343":{},"509":{},"564":{},"578":{},"593":{},"602":{},"604":{},"733":{},"760":{},"773":{},"851":{},"853":{},"855":{},"858":{},"859":{}}}],["assets/app.css",{"_index":3434,"title":{},"content":{"753":{}}}],["assets/image.jpg",{"_index":3435,"title":{},"content":{"753":{}}}],["assign",{"_index":1311,"title":{},"content":{"275":{},"280":{},"281":{},"359":{}}}],["associ",{"_index":1218,"title":{"566":{}},"content":{"273":{},"367":{},"377":{},"575":{},"604":{},"621":{},"644":{},"647":{},"650":{},"662":{},"682":{},"687":{},"717":{},"742":{},"745":{},"746":{},"747":{},"748":{},"778":{},"845":{},"855":{}}}],["assum",{"_index":533,"title":{},"content":{"182":{},"379":{}}}],["assur",{"_index":3209,"title":{},"content":{"687":{}}}],["ast",{"_index":2402,"title":{},"content":{"477":{}}}],["async",{"_index":635,"title":{},"content":{"189":{}}}],["asynchron",{"_index":2812,"title":{},"content":{"619":{},"682":{},"711":{}}}],["at/2",{"_index":2220,"title":{"432":{}},"content":{}}],["ath",{"_index":1975,"title":{},"content":{"370":{}}}],["atom",{"_index":1686,"title":{"623":{}},"content":{"308":{},"345":{},"346":{},"488":{},"521":{},"560":{},"564":{},"578":{},"593":{},"602":{},"603":{},"606":{},"618":{},"620":{},"622":{},"623":{},"625":{},"664":{},"682":{},"715":{},"851":{},"853":{},"854":{}}}],["attack",{"_index":2849,"title":{},"content":{"623":{},"636":{},"679":{}}}],["attempt",{"_index":2628,"title":{},"content":{"554":{}}}],["attest",{"_index":265,"title":{"708":{}},"content":{"67":{},"175":{},"233":{},"246":{},"705":{},"709":{},"712":{}}}],["attribut",{"_index":1208,"title":{"351":{}},"content":{"273":{},"350":{},"351":{},"776":{}}}],["audit",{"_index":542,"title":{},"content":{"183":{},"348":{},"661":{}}}],["auth",{"_index":3589,"title":{},"content":{"777":{}}}],["auth_key",{"_index":744,"title":{},"content":{"190":{},"191":{},"202":{}}}],["auth_se",{"_index":742,"title":{},"content":{"190":{},"191":{},"202":{}}}],["auth_tag",{"_index":728,"title":{},"content":{"190":{},"191":{},"202":{}}}],["authent",{"_index":1359,"title":{},"content":{"243":{},"621":{},"648":{},"649":{},"672":{},"682":{},"683":{},"696":{},"725":{},"751":{},"775":{},"777":{},"778":{}}}],["authenticateyk",{"_index":1356,"title":{"243":{}},"content":{}}],["authentif",{"_index":3596,"title":{},"content":{"778":{}}}],["author",{"_index":45,"title":{"340":{}},"content":{"18":{},"28":{},"37":{},"46":{},"49":{},"52":{},"124":{},"127":{},"197":{},"202":{},"207":{},"211":{},"212":{},"213":{},"237":{},"273":{},"312":{},"313":{},"336":{},"340":{},"346":{},"396":{},"412":{},"499":{},"522":{},"533":{},"534":{},"535":{},"621":{},"624":{},"646":{},"648":{},"666":{},"682":{},"695":{},"717":{},"827":{},"839":{}}}],["authorit",{"_index":3294,"title":{},"content":{"716":{}}}],["authorization/deleg",{"_index":119,"title":{},"content":{"28":{},"49":{},"127":{}}}],["authorizationd",{"_index":155,"title":{},"content":{"37":{}}}],["authorized_key",{"_index":2118,"title":{},"content":{"392":{},"393":{},"499":{}}}],["authorized_public_key",{"_index":2146,"title":{},"content":{"396":{},"522":{}}}],["authorizedkey",{"_index":44,"title":{"18":{}},"content":{"18":{},"46":{},"47":{},"152":{},"164":{}}}],["authorizedkey.encryptedsecretkey",{"_index":57,"title":{},"content":{"19":{}}}],["authorizedkey.publickey",{"_index":58,"title":{},"content":{"19":{}}}],["authorizedpublickey",{"_index":192,"title":{},"content":{"46":{}}}],["authpolici",{"_index":1244,"title":{},"content":{"273":{}}}],["authvalu",{"_index":1235,"title":{},"content":{"273":{}}}],["auto",{"_index":3084,"title":{},"content":{"665":{},"778":{}}}],["autolock",{"_index":3599,"title":{},"content":{"778":{}}}],["autom",{"_index":1609,"title":{"727":{}},"content":{"282":{},"657":{},"661":{},"726":{},"727":{}}}],["automat",{"_index":1620,"title":{},"content":{"282":{},"345":{},"375":{},"378":{},"407":{},"412":{},"522":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"661":{},"766":{},"768":{},"772":{},"836":{},"839":{},"843":{},"850":{}}}],["autonom",{"_index":1811,"title":{"346":{}},"content":{"345":{},"346":{},"620":{},"657":{},"688":{}}}],["autor",{"_index":3528,"title":{},"content":{"839":{}}}],["avail",{"_index":156,"title":{"219":{},"339":{},"569":{},"597":{},"786":{}},"content":{"37":{},"220":{},"221":{},"223":{},"226":{},"231":{},"294":{},"313":{},"334":{},"336":{},"338":{},"339":{},"342":{},"343":{},"363":{},"365":{},"368":{},"376":{},"377":{},"386":{},"398":{},"399":{},"402":{},"411":{},"413":{},"506":{},"511":{},"551":{},"573":{},"576":{},"582":{},"615":{},"622":{},"623":{},"624":{},"651":{},"668":{},"671":{},"673":{},"675":{},"688":{},"692":{},"693":{},"708":{},"709":{},"720":{},"723":{},"724":{},"731":{},"734":{},"749":{},"757":{},"760":{},"766":{},"769":{},"774":{},"778":{},"779":{},"784":{},"785":{},"787":{},"815":{},"833":{},"848":{},"851":{}}}],["availability/lat",{"_index":3111,"title":{},"content":{"673":{}}}],["availabilityaddingtim",{"_index":77,"title":{},"content":{"15":{}}}],["avala",{"_index":3638,"title":{},"content":{"791":{}}}],["averag",{"_index":1132,"title":{},"content":{"221":{},"266":{},"336":{},"338":{}}}],["averageavail",{"_index":157,"title":{},"content":{"37":{}}}],["aviat",{"_index":2992,"title":{},"content":{"641":{}}}],["avoid",{"_index":851,"title":{},"content":{"211":{},"283":{},"286":{},"287":{},"289":{},"291":{},"320":{},"348":{},"382":{},"402":{},"648":{},"666":{},"695":{},"720":{},"751":{},"784":{},"785":{}}}],["avro",{"_index":1773,"title":{},"content":{"330":{}}}],["awar",{"_index":2786,"title":{},"content":{"587":{},"704":{}}}],["away",{"_index":3280,"title":{},"content":{"733":{}}}],["awc",{"_index":3628,"title":{},"content":{"785":{},"815":{}}}],["awri",{"_index":1029,"title":{},"content":{"216":{}}}],["b",{"_index":1467,"title":{},"content":{"284":{},"363":{},"432":{}}}],["b298kjkfs98dj7xdnsq",{"_index":3431,"title":{},"content":{"753":{}}}],["back",{"_index":818,"title":{},"content":{"191":{},"216":{},"329":{},"588":{},"725":{},"754":{},"842":{}}}],["backend",{"_index":512,"title":{},"content":{"181":{},"725":{}}}],["backpressur",{"_index":1526,"title":{},"content":{"289":{}}}],["backup",{"_index":1478,"title":{},"content":{"285":{},"287":{},"290":{}}}],["backward",{"_index":2881,"title":{},"content":{"630":{},"795":{},"813":{}}}],["bad",{"_index":2924,"title":{},"content":{"637":{}}}],["balanc",{"_index":60,"title":{"11":{},"115":{}},"content":{"11":{},"13":{},"61":{},"63":{},"64":{},"65":{},"115":{},"117":{},"144":{},"154":{},"222":{},"223":{},"226":{},"308":{},"461":{},"464":{},"465":{},"466":{},"510":{},"621":{},"691":{},"778":{},"786":{}}}],["balance.address",{"_index":359,"title":{},"content":{"116":{}}}],["balance.token",{"_index":66,"title":{},"content":{"12":{}}}],["balance.uco",{"_index":68,"title":{},"content":{"12":{},"461":{}}}],["ban",{"_index":2909,"title":{},"content":{"637":{}}}],["bandwidth",{"_index":1771,"title":{},"content":{"330":{},"668":{},"674":{},"692":{},"693":{}}}],["banish",{"_index":2853,"title":{},"content":{"623":{},"637":{}}}],["bar",{"_index":2268,"title":{},"content":{"443":{},"447":{},"448":{}}}],["base",{"_index":449,"title":{},"content":{"181":{},"182":{},"201":{},"218":{},"231":{},"238":{},"266":{},"309":{},"320":{},"336":{},"345":{},"346":{},"352":{},"391":{},"432":{},"554":{},"620":{},"622":{},"623":{},"624":{},"629":{},"633":{},"638":{},"639":{},"641":{},"644":{},"645":{},"651":{},"652":{},"656":{},"657":{},"672":{},"679":{},"688":{},"699":{},"700":{},"702":{},"713":{},"714":{},"724":{},"775":{},"779":{},"819":{},"836":{},"859":{}}}],["base16",{"_index":369,"title":{},"content":{"106":{},"142":{},"157":{},"163":{}}}],["base64",{"_index":3274,"title":{},"content":{"733":{},"735":{},"753":{},"778":{}}}],["basic",{"_index":453,"title":{"352":{}},"content":{"181":{},"554":{},"698":{}}}],["baz(uint,address",{"_index":2491,"title":{},"content":{"504":{},"505":{}}}],["be",{"_index":868,"title":{},"content":{"213":{},"290":{},"291":{},"294":{},"471":{},"488":{},"521":{},"648":{},"657":{},"696":{},"699":{},"723":{},"724":{},"725":{},"745":{}}}],["beacon",{"_index":71,"title":{"673":{},"689":{},"697":{}},"content":{"15":{},"101":{},"103":{},"219":{},"220":{},"231":{},"232":{},"294":{},"307":{},"625":{},"654":{},"670":{},"687":{},"689":{},"690":{},"691":{},"692":{},"693":{},"698":{},"699":{},"700":{},"702":{},"703":{},"708":{},"709":{}}}],["beaconchain",{"_index":1082,"title":{"230":{}},"content":{"221":{},"230":{},"231":{},"232":{},"233":{},"290":{},"336":{},"664":{},"673":{},"676":{},"687":{},"697":{},"703":{}}}],["beaconchainsummari",{"_index":70,"title":{"15":{},"101":{}},"content":{"15":{},"17":{},"82":{},"101":{},"103":{},"154":{},"160":{},"168":{}}}],["beaconchainsummary.availabilityaddingtim",{"_index":87,"title":{},"content":{"16":{}}}],["beaconchainsummary.p2pavail",{"_index":88,"title":{},"content":{"16":{}}}],["beaconchainsummary.summarytim",{"_index":89,"title":{},"content":{"16":{}}}],["beaconchainsummary.timestamp",{"_index":362,"title":{},"content":{"102":{}}}],["beaconchainsummary.transactionsummari",{"_index":90,"title":{},"content":{"16":{}}}],["beaconchainsummary.transactionsummaries.limit",{"_index":91,"title":{},"content":{"16":{}}}],["beaconchainsummary.transactionsummaries.pagingoffset",{"_index":92,"title":{},"content":{"16":{}}}],["beaconchainsummary.vers",{"_index":93,"title":{},"content":{"16":{}}}],["beauti",{"_index":3360,"title":{},"content":{"725":{}}}],["becom",{"_index":858,"title":{},"content":{"212":{},"327":{},"685":{},"716":{},"753":{},"783":{},"855":{}}}],["befor",{"_index":546,"title":{},"content":{"183":{},"203":{},"209":{},"220":{},"233":{},"289":{},"296":{},"312":{},"370":{},"380":{},"386":{},"398":{},"399":{},"575":{},"622":{},"633":{},"683":{},"709":{},"741":{},"743":{},"760":{},"766":{},"775":{},"777":{},"823":{}}}],["begin",{"_index":1688,"title":{},"content":{"309":{},"588":{},"661":{},"753":{},"762":{},"858":{}}}],["behalf",{"_index":1820,"title":{},"content":{"346":{}}}],["behav",{"_index":2536,"title":{},"content":{"407":{},"664":{}}}],["behavior",{"_index":1160,"title":{"322":{}},"content":{"298":{},"299":{},"322":{},"323":{},"346":{},"351":{},"664":{}}}],["behaviour",{"_index":1568,"title":{},"content":{"291":{},"524":{},"755":{}}}],["behind",{"_index":1413,"title":{},"content":{"254":{},"255":{},"461":{},"661":{},"703":{}}}],["believ",{"_index":3020,"title":{},"content":{"643":{}}}],["below",{"_index":1734,"title":{},"content":{"320":{},"522":{},"526":{},"698":{},"717":{}}}],["benchmark",{"_index":1448,"title":{},"content":{"284":{},"296":{}}}],["best",{"_index":1046,"title":{},"content":{"216":{},"217":{},"308":{},"328":{},"651":{},"688":{}}}],["beta",{"_index":3375,"title":{},"content":{"726":{},"745":{}}}],["better",{"_index":273,"title":{"563":{},"595":{}},"content":{"67":{},"175":{},"216":{},"218":{},"268":{},"287":{},"319":{},"348":{},"691":{},"698":{}}}],["between",{"_index":415,"title":{},"content":{"153":{},"181":{},"186":{},"210":{},"282":{},"326":{},"329":{},"371":{},"563":{},"564":{},"579":{},"593":{},"595":{},"596":{},"609":{},"620":{},"624":{},"691":{},"700":{},"740":{},"746":{},"764":{},"783":{},"785":{},"815":{},"853":{},"855":{}}}],["beyond",{"_index":2989,"title":{},"content":{"641":{},"777":{}}}],["bia",{"_index":2634,"title":{},"content":{"554":{}}}],["big",{"_index":788,"title":{},"content":{"191":{},"268":{},"408":{},"695":{},"753":{}}}],["bigger",{"_index":3100,"title":{},"content":{"669":{}}}],["biggest",{"_index":3067,"title":{},"content":{"657":{}}}],["billion",{"_index":2805,"title":{},"content":{"618":{},"619":{},"641":{}}}],["binanc",{"_index":2757,"title":{"612":{}},"content":{"612":{}}}],["binari",{"_index":373,"title":{"330":{}},"content":{"106":{},"142":{},"157":{},"163":{},"203":{},"289":{},"328":{},"330":{},"472":{},"693":{},"834":{}}}],["biometr",{"_index":2120,"title":{"683":{}},"content":{"392":{},"588":{},"621":{},"629":{},"643":{},"648":{},"679":{},"683":{},"696":{},"773":{},"774":{},"778":{}}}],["bip32",{"_index":897,"title":{},"content":{"200":{},"201":{}}}],["bip32/bip44",{"_index":900,"title":{},"content":{"200":{}}}],["bip39",{"_index":3579,"title":{},"content":{"776":{}}}],["bip39_mnemon",{"_index":3585,"title":{},"content":{"776":{}}}],["bip43",{"_index":903,"title":{},"content":{"200":{}}}],["bip44",{"_index":698,"title":{},"content":{"190":{},"191":{},"195":{},"196":{},"650":{}}}],["bip44path",{"_index":756,"title":{},"content":{"190":{},"191":{}}}],["bip44pathlen",{"_index":760,"title":{},"content":{"190":{},"191":{}}}],["bit",{"_index":914,"title":{},"content":{"201":{},"290":{},"330":{},"377":{},"664":{},"778":{}}}],["bitcask",{"_index":1488,"title":{},"content":{"286":{}}}],["bitcoin",{"_index":446,"title":{},"content":{"181":{},"641":{},"650":{}}}],["bitfield",{"_index":3251,"title":{},"content":{"712":{}}}],["bitstr",{"_index":1777,"title":{},"content":{"330":{}}}],["blake2b",{"_index":960,"title":{},"content":{"206":{},"469":{},"650":{}}}],["blind",{"_index":1842,"title":{},"content":{"348":{}}}],["blob",{"_index":3418,"title":{},"content":{"753":{}}}],["block",{"_index":190,"title":{"367":{},"377":{}},"content":{"46":{},"286":{},"329":{},"350":{},"359":{},"363":{},"364":{},"367":{},"368":{},"369":{},"370":{},"377":{},"378":{},"379":{},"380":{},"381":{},"383":{},"391":{},"392":{},"393":{},"394":{},"395":{},"398":{},"399":{},"402":{},"413":{},"610":{},"619":{},"620":{},"621":{},"715":{},"772":{}}}],["blockag",{"_index":3060,"title":{},"content":{"655":{}}}],["blockchain",{"_index":439,"title":{"563":{},"564":{},"565":{},"566":{},"582":{},"588":{},"595":{},"596":{},"682":{},"779":{}},"content":{"181":{},"197":{},"200":{},"202":{},"211":{},"215":{},"216":{},"282":{},"328":{},"334":{},"342":{},"343":{},"345":{},"353":{},"390":{},"533":{},"534":{},"535":{},"563":{},"569":{},"578":{},"587":{},"593":{},"595":{},"596":{},"598":{},"603":{},"606":{},"607":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"637":{},"642":{},"644":{},"651":{},"657":{},"660":{},"661":{},"663":{},"675":{},"682":{},"685":{},"689":{},"690":{},"696":{},"697":{},"701":{},"704":{},"713":{},"723":{},"724":{},"725":{},"726":{},"740":{},"743":{},"745":{},"746":{},"747":{},"748":{},"749":{},"752":{},"754":{},"756":{},"757":{},"764":{},"766":{},"773":{},"777":{},"778":{},"779":{},"783":{},"785":{},"786":{},"815":{},"833":{},"851":{},"854":{},"858":{},"859":{}}}],["blockchain'",{"_index":3069,"title":{},"content":{"657":{}}}],["blockchain/ecosystem",{"_index":2929,"title":{"639":{}},"content":{}}],["blog",{"_index":3552,"title":{},"content":{"774":{},"778":{}}}],["bloom",{"_index":1582,"title":{},"content":{"292":{},"293":{}}}],["bnb",{"_index":2716,"title":{"613":{}},"content":{"593":{},"613":{}}}],["bodi",{"_index":2433,"title":{},"content":{"487":{},"488":{},"489":{}}}],["body'",{"_index":2440,"title":{},"content":{"488":{}}}],["bolo",{"_index":487,"title":{},"content":{"181":{},"183":{},"187":{}}}],["book",{"_index":3550,"title":{},"content":{"774":{}}}],["bool",{"_index":1330,"title":{"241":{},"280":{}},"content":{}}],["boolean",{"_index":7,"title":{"145":{}},"content":{"1":{},"2":{},"3":{},"4":{},"37":{},"38":{},"76":{},"77":{},"145":{},"352":{},"377":{},"378":{}}}],["boot",{"_index":2898,"title":{},"content":{"636":{}}}],["bootstrap",{"_index":1080,"title":{"235":{},"237":{},"238":{},"704":{}},"content":{"229":{},"235":{},"237":{},"238":{},"294":{},"319":{},"337":{},"675":{},"704":{},"705":{}}}],["both",{"_index":610,"title":{},"content":{"188":{},"290":{},"606":{},"607":{},"619":{},"638":{},"643":{},"765":{},"766":{},"778":{},"853":{},"855":{},"858":{},"859":{}}}],["bottleneckarcheth",{"_index":2828,"title":{},"content":{"620":{}}}],["bottom",{"_index":2522,"title":{},"content":{"405":{},"590":{}}}],["boundari",{"_index":1538,"title":{},"content":{"289":{}}}],["box",{"_index":1042,"title":{},"content":{"216":{},"777":{},"853":{}}}],["bracket",{"_index":1935,"title":{},"content":{"361":{}}}],["branch",{"_index":1614,"title":{},"content":{"282":{},"295":{},"554":{},"619":{},"639":{}}}],["brand",{"_index":1752,"title":{},"content":{"328":{}}}],["brave",{"_index":2753,"title":{"610":{}},"content":{"610":{}}}],["break",{"_index":1859,"title":{},"content":{"351":{},"629":{}}}],["bridg",{"_index":502,"title":{"537":{},"541":{},"542":{},"551":{},"558":{},"560":{},"561":{},"563":{},"564":{},"565":{},"566":{},"578":{},"591":{},"593":{},"594":{},"595":{},"596":{},"597":{},"602":{},"604":{},"605":{},"606":{},"607":{},"760":{},"765":{},"851":{}},"content":{"181":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"551":{},"560":{},"561":{},"564":{},"565":{},"566":{},"573":{},"575":{},"578":{},"593":{},"594":{},"596":{},"597":{},"602":{},"604":{},"606":{},"607":{},"615":{},"760":{},"761":{},"762":{},"764":{},"765":{},"851":{},"853":{},"855":{},"858":{},"859":{}}}],["bridge'",{"_index":2750,"title":{},"content":{"604":{},"855":{},"858":{}}}],["bridge.testnet.archethic.net",{"_index":3475,"title":{},"content":{"851":{}}}],["bring",{"_index":1508,"title":{},"content":{"287":{},"345":{},"564":{}}}],["broad",{"_index":2618,"title":{},"content":{"554":{}}}],["broadcast",{"_index":3097,"title":{"669":{}},"content":{"669":{},"673":{},"708":{}}}],["broader",{"_index":2730,"title":{},"content":{"593":{}}}],["brought",{"_index":2950,"title":{},"content":{"695":{}}}],["brows",{"_index":2588,"title":{},"content":{"510":{},"778":{}}}],["browser",{"_index":2702,"title":{"610":{}},"content":{"575":{},"723":{},"740":{},"752":{},"754":{},"760":{}}}],["browser’",{"_index":2755,"title":{},"content":{"610":{}}}],["bsc",{"_index":2718,"title":{},"content":{"593":{},"613":{},"851":{}}}],["buck",{"_index":3353,"title":{},"content":{"724":{}}}],["buffer",{"_index":606,"title":{},"content":{"188":{},"190":{},"191":{},"273":{}}}],["build",{"_index":850,"title":{"404":{},"679":{},"753":{},"836":{}},"content":{"211":{},"213":{},"216":{},"229":{},"295":{},"315":{},"343":{},"410":{},"411":{},"508":{},"509":{},"533":{},"534":{},"535":{},"553":{},"618":{},"625":{},"629":{},"646":{},"725":{},"752":{},"782":{},"834":{}}}],["built",{"_index":1439,"title":{},"content":{"283":{},"290":{},"305":{},"618":{},"743":{},"757":{},"760":{},"782":{}}}],["burger",{"_index":2682,"title":{},"content":{"567":{}}}],["burn",{"_index":2321,"title":{},"content":{"456":{},"651":{},"820":{}}}],["burnt",{"_index":3489,"title":{},"content":{"859":{}}}],["busi",{"_index":3367,"title":{},"content":{"725":{}}}],["button",{"_index":2526,"title":{},"content":{"406":{},"407":{},"412":{},"506":{},"525":{},"573":{},"587":{},"615":{},"750":{},"762":{},"836":{},"837":{},"839":{},"842":{},"844":{},"845":{},"847":{}}}],["buy",{"_index":2771,"title":{"613":{}},"content":{"613":{},"774":{}}}],["buytoken",{"_index":2086,"title":{},"content":{"375":{}}}],["buytoken(recipient_address",{"_index":2060,"title":{},"content":{"374":{}}}],["byte",{"_index":412,"title":{"272":{},"280":{},"281":{}},"content":{"157":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{},"201":{},"202":{},"204":{},"205":{},"206":{},"209":{},"210":{},"272":{},"273":{},"280":{},"289":{},"290":{},"330":{},"631":{},"632":{},"633":{},"652":{},"701":{},"778":{}}}],["c",{"_index":490,"title":{"217":{}},"content":{"181":{},"215":{},"217":{},"267":{},"268":{},"432":{}}}],["ca",{"_index":1247,"title":{},"content":{"273":{}}}],["cach",{"_index":1110,"title":{},"content":{"233":{},"268":{},"290":{},"319":{},"337":{},"754":{}}}],["calcul",{"_index":732,"title":{"652":{}},"content":{"190":{},"191":{},"256":{},"258":{},"260":{},"261":{},"262":{},"263":{},"264":{},"274":{},"349":{},"482":{},"619":{},"651":{},"714":{}}}],["calculate(x",{"_index":2508,"title":{},"content":{"403":{}}}],["call",{"_index":637,"title":{},"content":{"189":{},"202":{},"216":{},"274":{},"276":{},"280":{},"329":{},"337":{},"345":{},"361":{},"363":{},"364":{},"375":{},"377":{},"378":{},"413":{},"460":{},"463":{},"488":{},"491":{},"496":{},"498":{},"500":{},"502":{},"506":{},"525":{},"526":{},"564":{},"620":{},"622":{},"663":{},"669":{},"670":{},"685":{},"697":{},"705":{},"710":{},"753":{},"775":{},"784":{},"787":{},"848":{}}}],["call_function/3",{"_index":2455,"title":{"491":{}},"content":{}}],["callabl",{"_index":1940,"title":{},"content":{"363":{},"364":{}}}],["caller",{"_index":1961,"title":{},"content":{"369":{},"399":{}}}],["calul",{"_index":791,"title":{},"content":{"191":{}}}],["can't",{"_index":2752,"title":{"610":{}},"content":{"740":{}}}],["candid",{"_index":1051,"title":{"326":{}},"content":{"217":{},"325":{},"327":{},"376":{},"382":{}}}],["capabl",{"_index":1043,"title":{},"content":{"216":{},"289":{},"291":{},"296":{},"346":{},"506":{},"578":{},"629":{},"641":{},"679":{},"682":{},"703":{},"723":{},"725":{},"777":{},"853":{},"854":{}}}],["capac",{"_index":2987,"title":{},"content":{"641":{},"701":{},"858":{}}}],["capit",{"_index":3104,"title":{},"content":{"671":{}}}],["captur",{"_index":2278,"title":{},"content":{"443":{}}}],["card",{"_index":1362,"title":{},"content":{"244":{},"679":{}}}],["care",{"_index":1853,"title":{},"content":{"349":{},"369":{},"554":{}}}],["carri",{"_index":2932,"title":{},"content":{"639":{}}}],["carriag",{"_index":2403,"title":{},"content":{"477":{}}}],["case",{"_index":647,"title":{},"content":{"189":{},"216":{},"273":{},"287":{},"296":{},"351":{},"369":{},"371":{},"575":{},"619":{},"621":{},"622":{},"656":{},"677":{},"717":{},"725":{},"728":{},"758":{},"776":{},"777":{},"778":{},"843":{},"855":{},"858":{}}}],["cassandra",{"_index":1454,"title":{},"content":{"284":{}}}],["categor",{"_index":2879,"title":{},"content":{"629":{}}}],["categori",{"_index":2124,"title":{},"content":{"394":{},"590":{},"816":{}}}],["caution",{"_index":2019,"title":{},"content":{"379":{},"381":{},"383":{},"488":{},"588":{},"760":{},"766":{},"768":{},"769":{}}}],["cbc",{"_index":885,"title":{},"content":{"198":{},"202":{}}}],["cc",{"_index":2927,"title":{},"content":{"638":{}}}],["cd",{"_index":1622,"title":{"296":{}},"content":{"296":{},"509":{},"834":{}}}],["censorship",{"_index":3338,"title":{},"content":{"720":{},"723":{}}}],["central",{"_index":2999,"title":{},"content":{"642":{},"643":{},"723":{},"724":{},"725":{},"853":{}}}],["cert.pem",{"_index":3413,"title":{},"content":{"742":{}}}],["certain",{"_index":75,"title":{},"content":{"15":{},"103":{},"285":{},"310":{},"329":{},"610":{},"644":{},"660":{},"777":{}}}],["certainti",{"_index":2843,"title":{},"content":{"623":{}}}],["certbot",{"_index":3402,"title":{},"content":{"741":{}}}],["certif",{"_index":1205,"title":{"741":{},"742":{},"747":{}},"content":{"244":{},"252":{},"253":{},"257":{},"258":{},"259":{},"260":{},"273":{},"312":{},"682":{},"705":{},"726":{},"740":{},"741":{},"742":{},"745":{},"747":{},"749":{}}}],["certifi",{"_index":2916,"title":{},"content":{"637":{},"638":{},"740":{}}}],["certificates",{"_index":1418,"title":{"257":{},"260":{}},"content":{}}],["certonli",{"_index":3404,"title":{},"content":{"741":{}}}],["chach",{"_index":1560,"title":{},"content":{"290":{}}}],["chain",{"_index":72,"title":{"289":{},"290":{},"291":{},"294":{},"321":{},"452":{},"603":{},"659":{},"672":{},"673":{},"689":{},"715":{},"742":{},"854":{}},"content":{"15":{},"49":{},"101":{},"103":{},"115":{},"127":{},"131":{},"197":{},"200":{},"201":{},"212":{},"216":{},"220":{},"229":{},"236":{},"238":{},"289":{},"290":{},"291":{},"292":{},"294":{},"305":{},"307":{},"308":{},"310":{},"316":{},"317":{},"318":{},"319":{},"345":{},"346":{},"347":{},"349":{},"370":{},"371":{},"374":{},"375":{},"379":{},"380":{},"382":{},"392":{},"393":{},"412":{},"453":{},"454":{},"458":{},"459":{},"461":{},"462":{},"464":{},"465":{},"466":{},"494":{},"524":{},"564":{},"578":{},"584":{},"593":{},"603":{},"606":{},"612":{},"619":{},"620":{},"621":{},"622":{},"625":{},"628":{},"633":{},"644":{},"646":{},"648":{},"649":{},"650":{},"651":{},"652":{},"654":{},"660":{},"663":{},"664":{},"670":{},"672":{},"682":{},"685":{},"687":{},"689":{},"690":{},"691":{},"692":{},"693":{},"695":{},"696":{},"698":{},"699":{},"700":{},"702":{},"703":{},"708":{},"709":{},"710":{},"716":{},"717":{},"721":{},"723":{},"724":{},"725":{},"731":{},"734":{},"738":{},"739":{},"742":{},"745":{},"746":{},"747":{},"748":{},"752":{},"754":{},"755":{},"759":{},"804":{},"807":{},"821":{},"853":{},"854":{},"855":{},"858":{}}}],["chain'",{"_index":1114,"title":{},"content":{"219":{},"290":{},"292":{},"346":{}}}],["chain.get_balance(0x00abcd",{"_index":2337,"title":{},"content":{"461":{}}}],["chain.get_burn_address",{"_index":2319,"title":{},"content":{"456":{}}}],["chain.get_first_transaction_address(\"000012345",{"_index":2312,"title":{},"content":{"454":{}}}],["chain.get_first_transaction_address/1",{"_index":2555,"title":{},"content":{"524":{}}}],["chain.get_genesis_address",{"_index":2037,"title":{},"content":{"382":{}}}],["chain.get_genesis_address(\"000012345",{"_index":2308,"title":{},"content":{"453":{}}}],["chain.get_genesis_address(contract.address",{"_index":2080,"title":{},"content":{"374":{}}}],["chain.get_genesis_address/1",{"_index":2554,"title":{"526":{}},"content":{"524":{}}}],["chain.get_genesis_public_key(\"00013b08d",{"_index":2315,"title":{},"content":{"455":{}}}],["chain.get_genesis_public_key/1",{"_index":2556,"title":{},"content":{"524":{}}}],["chain.get_last_address(0x00abcd",{"_index":2326,"title":{},"content":{"458":{}}}],["chain.get_last_transaction(0x00abcd",{"_index":2329,"title":{},"content":{"459":{}}}],["chain.get_last_transaction(0x00abcf",{"_index":2330,"title":{},"content":{"459":{}}}],["chain.get_previous_address(0x00abcd",{"_index":2332,"title":{},"content":{"460":{}}}],["chain.get_previous_address(transact",{"_index":2333,"title":{},"content":{"460":{}}}],["chain.get_token_balance(transaction_address",{"_index":2357,"title":{},"content":{"464":{}}}],["chain.get_tokens_balance(0x00abcd",{"_index":2361,"title":{},"content":{"465":{},"466":{}}}],["chain.get_transaction(0x00abcd",{"_index":2323,"title":{},"content":{"457":{}}}],["chain.get_uco_balance(0x00abcd",{"_index":2349,"title":{},"content":{"462":{}}}],["chainlength",{"_index":240,"title":{},"content":{"64":{}}}],["challeng",{"_index":3068,"title":{},"content":{"657":{},"741":{}}}],["chang",{"_index":916,"title":{},"content":{"201":{},"232":{},"238":{},"268":{},"273":{},"282":{},"287":{},"295":{},"315":{},"316":{},"317":{},"351":{},"408":{},"488":{},"516":{},"554":{},"587":{},"622":{},"637":{},"643":{},"661":{},"672":{},"675":{},"687":{},"703":{},"716":{},"724":{},"759":{},"784":{},"786":{},"817":{},"821":{},"823":{}}}],["channel",{"_index":3207,"title":{},"content":{"686":{},"787":{}}}],["char",{"_index":761,"title":{},"content":{"190":{},"191":{},"776":{}}}],["charact",{"_index":424,"title":{"354":{}},"content":{"165":{},"354":{},"415":{},"518":{},"519":{},"520":{}}}],["charg",{"_index":1075,"title":{},"content":{"219":{},"229":{},"236":{},"320":{},"622":{},"687":{},"692":{},"703":{},"709":{}}}],["chars[rng.nextint(chars.length",{"_index":3577,"title":{},"content":{"776":{}}}],["chart",{"_index":3551,"title":{},"content":{"774":{},"778":{}}}],["cheap",{"_index":3258,"title":{},"content":{"724":{},"729":{}}}],["check",{"_index":671,"title":{},"content":{"189":{},"191":{},"231":{},"272":{},"280":{},"281":{},"293":{},"295":{},"309":{},"312":{},"313":{},"317":{},"318":{},"322":{},"348":{},"350":{},"365":{},"377":{},"379":{},"381":{},"383":{},"389":{},"398":{},"399":{},"402":{},"510":{},"632":{},"661":{},"683":{},"692":{},"709":{},"727":{}}}],["check/recheck",{"_index":3105,"title":{},"content":{"671":{}}}],["check_amount(transaction.uco_mov",{"_index":2061,"title":{},"content":{"374":{}}}],["check_amount(transf",{"_index":2077,"title":{},"content":{"374":{}}}],["checkyk",{"_index":1349,"title":{"241":{}},"content":{}}],["child'",{"_index":1914,"title":{},"content":{"359":{}}}],["chip",{"_index":2904,"title":{},"content":{"636":{}}}],["choic",{"_index":1462,"title":{},"content":{"284":{},"630":{},"775":{},"778":{},"815":{}}}],["choos",{"_index":2543,"title":{},"content":{"412":{},"514":{},"590":{},"612":{},"766":{}}}],["chosen",{"_index":3501,"title":{},"content":{"766":{},"776":{},"778":{}}}],["chunk",{"_index":3438,"title":{},"content":{"753":{}}}],["ci",{"_index":1631,"title":{"295":{}},"content":{"295":{},"296":{}}}],["ci/cd",{"_index":1621,"title":{},"content":{"282":{}}}],["ci_logfile.txt",{"_index":1652,"title":{},"content":{"295":{}}}],["cipher",{"_index":1225,"title":{},"content":{"273":{}}}],["cla",{"_index":829,"title":{},"content":{"194":{},"195":{},"196":{}}}],["claim",{"_index":2664,"title":{},"content":{"560":{}}}],["clair",{"_index":2043,"title":{},"content":{"382":{}}}],["classic",{"_index":3098,"title":{},"content":{"669":{},"737":{}}}],["clean",{"_index":1486,"title":{},"content":{"285":{},"296":{}}}],["cleanup",{"_index":1484,"title":{},"content":{"285":{}}}],["clear",{"_index":2703,"title":{},"content":{"575":{},"730":{},"778":{},"836":{}}}],["cli",{"_index":508,"title":{"538":{},"556":{},"584":{},"757":{},"833":{},"848":{}},"content":{"181":{},"182":{},"536":{},"537":{},"538":{},"539":{},"556":{},"557":{},"584":{},"726":{},"727":{},"741":{},"742":{},"753":{},"757":{},"834":{},"848":{}}}],["cli.git",{"_index":3518,"title":{},"content":{"834":{}}}],["cli@latest",{"_index":3516,"title":{},"content":{"834":{}}}],["click",{"_index":2525,"title":{},"content":{"406":{},"407":{},"412":{},"506":{},"525":{},"567":{},"587":{},"588":{},"589":{},"590":{},"739":{},"745":{},"746":{},"747":{},"748":{},"749":{},"750":{},"762":{}}}],["client",{"_index":855,"title":{"527":{},"711":{}},"content":{"209":{},"211":{},"213":{},"326":{},"329":{},"347":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"625":{},"703":{},"711":{},"723":{},"741":{},"754":{},"785":{},"815":{},"858":{}}}],["client'",{"_index":379,"title":{},"content":{"110":{}}}],["clone",{"_index":557,"title":{},"content":{"184":{},"509":{},"834":{}}}],["close",{"_index":1930,"title":{},"content":{"361":{},"379":{},"380":{},"494":{},"575":{}}}],["closer",{"_index":3101,"title":{},"content":{"670":{}}}],["closest",{"_index":1680,"title":{},"content":{"307":{},"620":{},"677":{},"688":{},"705":{}}}],["cloudfar",{"_index":3398,"title":{},"content":{"739":{}}}],["cloudflar",{"_index":2644,"title":{},"content":{"582":{}}}],["cn108780501",{"_index":3189,"title":{},"content":{"683":{}}}],["cn109074478",{"_index":3190,"title":{},"content":{"683":{}}}],["cname",{"_index":3391,"title":{},"content":{"738":{},"739":{}}}],["code",{"_index":110,"title":{"282":{},"317":{},"318":{},"476":{},"515":{},"659":{}},"content":{"28":{},"98":{},"134":{},"135":{},"188":{},"216":{},"218":{},"242":{},"282":{},"289":{},"290":{},"295":{},"296":{},"345":{},"346":{},"347":{},"348":{},"350":{},"351":{},"364":{},"367":{},"370":{},"371":{},"377":{},"379":{},"380":{},"392":{},"393":{},"396":{},"398":{},"405":{},"412":{},"477":{},"478":{},"488":{},"494":{},"506":{},"515":{},"555":{},"564":{},"587":{},"588":{},"644":{},"657":{},"660":{},"661":{},"675":{},"680":{},"717":{},"743":{},"756":{},"760":{},"773":{},"774":{},"775":{},"777":{},"778":{},"785":{},"823":{},"832":{},"849":{},"853":{}}}],["code.is_same?(cod",{"_index":2397,"title":{},"content":{"477":{}}}],["code.is_valid?(cod",{"_index":2404,"title":{},"content":{"478":{}}}],["code_approv",{"_index":3321,"title":{"824":{}},"content":{}}],["code_propos",{"_index":3320,"title":{"823":{}},"content":{"824":{}}}],["code_s",{"_index":802,"title":{},"content":{"191":{}}}],["codebas",{"_index":3384,"title":{},"content":{"727":{}}}],["coin",{"_index":648,"title":{"374":{}},"content":{"189":{}}}],["coin_typ",{"_index":665,"title":{},"content":{"189":{}}}],["coingecko",{"_index":1739,"title":{},"content":{"323":{},"599":{},"665":{}}}],["coinmarketcap",{"_index":2737,"title":{},"content":{"599":{}}}],["cold",{"_index":475,"title":{},"content":{"181":{}}}],["collabor",{"_index":3010,"title":{},"content":{"642":{}}}],["collect",{"_index":211,"title":{},"content":{"49":{},"127":{},"295":{},"360":{},"464":{},"656":{},"728":{},"733":{},"736":{}}}],["collet",{"_index":3276,"title":{},"content":{"733":{}}}],["colletion_symbol",{"_index":3277,"title":{},"content":{"733":{}}}],["column",{"_index":1496,"title":{},"content":{"287":{},"288":{},"289":{},"291":{}}}],["combin",{"_index":978,"title":{},"content":{"215":{},"248":{},"295":{},"854":{}}}],["come",{"_index":357,"title":{},"content":{"115":{},"285":{},"290":{},"382":{},"628":{},"633":{},"637":{},"642":{},"652":{},"705":{}}}],["command",{"_index":522,"title":{"192":{},"193":{},"757":{},"786":{},"848":{}},"content":{"182":{},"184":{},"194":{},"195":{},"295":{},"726":{},"727":{},"741":{},"742":{},"757":{},"758":{},"759":{},"786":{},"833":{},"848":{}}}],["comment",{"_index":1863,"title":{},"content":{"352":{}}}],["commerc",{"_index":1844,"title":{},"content":{"349":{}}}],["commiss",{"_index":3335,"title":{},"content":{"714":{}}}],["commit",{"_index":1655,"title":{"623":{}},"content":{"295":{},"308":{},"317":{},"346":{},"488":{},"618":{},"620":{},"622":{},"623":{},"625":{},"664":{},"682":{},"709":{}}}],["commite",{"_index":1709,"title":{},"content":{"318":{}}}],["common",{"_index":1129,"title":{},"content":{"221":{},"329":{},"638":{}}}],["commun",{"_index":503,"title":{"680":{},"783":{}},"content":{"181":{},"217":{},"268":{},"329":{},"412":{},"552":{},"625":{},"645":{},"663":{},"667":{},"669":{},"670":{},"671":{},"684":{},"686":{},"742":{},"775":{},"779":{},"783":{},"785":{},"815":{}}}],["compact",{"_index":1487,"title":{},"content":{"285":{},"286":{}}}],["compaction/merg",{"_index":1503,"title":{},"content":{"287":{}}}],["companion",{"_index":501,"title":{},"content":{"181":{}}}],["compar",{"_index":750,"title":{},"content":{"190":{},"191":{},"323":{},"353":{},"355":{},"477":{},"746":{},"775":{}}}],["comparaison",{"_index":1883,"title":{"355":{}},"content":{"353":{}}}],["compat",{"_index":2686,"title":{},"content":{"569":{},"596":{},"597":{},"598":{},"630":{},"634":{},"695":{},"760":{},"815":{}}}],["compatibl",{"_index":3639,"title":{},"content":{"795":{},"813":{}}}],["compens",{"_index":3167,"title":{},"content":{"683":{}}}],["competitor",{"_index":3564,"title":{},"content":{"775":{}}}],["compil",{"_index":1641,"title":{},"content":{"295":{},"348":{},"775":{},"834":{}}}],["complet",{"_index":1959,"title":{},"content":{"366":{},"575":{},"649":{},"685":{},"687":{},"703":{},"711":{},"717":{},"723":{},"725":{},"726":{},"730":{},"854":{},"859":{}}}],["completli",{"_index":1541,"title":{},"content":{"290":{},"345":{}}}],["complex",{"_index":1055,"title":{},"content":{"217":{},"377":{},"380":{},"408":{},"437":{},"629":{},"630":{},"637":{},"651":{},"652":{},"669":{},"725":{},"729":{}}}],["complianc",{"_index":2964,"title":{"649":{}},"content":{}}],["compliant",{"_index":2965,"title":{},"content":{"649":{}}}],["compon",{"_index":485,"title":{},"content":{"181":{},"217":{},"305":{},"319":{},"325":{},"775":{}}}],["compos",{"_index":2149,"title":{},"content":{"408":{},"413":{},"730":{},"753":{},"754":{},"778":{}}}],["comprehens",{"_index":2998,"title":{},"content":{"642":{}}}],["compress",{"_index":3464,"title":{},"content":{"759":{}}}],["compris",{"_index":3586,"title":{},"content":{"777":{}}}],["compromis",{"_index":2018,"title":{},"content":{"379":{}}}],["comput",{"_index":911,"title":{},"content":{"200":{},"217":{},"222":{},"233":{},"267":{},"268":{},"287":{},"319":{},"345":{},"348":{},"625":{},"629":{},"633":{},"636":{},"652":{},"656":{},"657":{},"684":{},"688":{},"691":{},"692":{}}}],["concat/2",{"_index":2231,"title":{"436":{}},"content":{}}],["concaten",{"_index":1301,"title":{},"content":{"274":{},"436":{}}}],["concept",{"_index":1515,"title":{"601":{},"690":{},"698":{},"852":{}},"content":{"288":{},"289":{},"290":{},"621":{},"622":{},"637":{},"646":{},"649":{},"670":{},"698":{},"760":{}}}],["concern",{"_index":598,"title":{},"content":{"188":{},"273":{},"679":{}}}],["concis",{"_index":1040,"title":{},"content":{"216":{}}}],["conclus",{"_index":3652,"title":{"815":{}},"content":{}}],["concord",{"_index":2838,"title":{},"content":{"622":{}}}],["concret",{"_index":1966,"title":{},"content":{"369":{}}}],["concurr",{"_index":1442,"title":{},"content":{"283":{},"307":{},"329":{},"685":{}}}],["concurrent/parallel",{"_index":1007,"title":{},"content":{"216":{}}}],["condit",{"_index":1611,"title":{"377":{},"379":{},"381":{},"383":{},"392":{}},"content":{"282":{},"345":{},"346":{},"350":{},"363":{},"374":{},"376":{},"377":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"388":{},"389":{},"390":{},"392":{},"393":{},"394":{},"395":{},"398":{},"399":{},"402":{},"404":{},"477":{},"478":{},"494":{},"506":{},"682":{},"717":{},"816":{},"858":{},"859":{}}}],["confid",{"_index":3347,"title":{},"content":{"723":{}}}],["confidenti",{"_index":2875,"title":{},"content":{"621":{},"682":{}}}],["config",{"_index":1747,"title":{},"content":{"324":{}}}],["config.ex",{"_index":1746,"title":{},"content":{"324":{}}}],["configur",{"_index":1694,"title":{"324":{}},"content":{"309":{},"324":{},"582":{},"583":{},"612":{},"646":{},"683":{},"761":{},"817":{},"836":{},"837":{},"839":{},"842":{},"847":{}}}],["confirm",{"_index":271,"title":{"767":{}},"content":{"67":{},"175":{},"220":{},"231":{},"233":{},"488":{},"588":{},"589":{},"590":{},"708":{},"709":{},"710":{},"712":{},"745":{},"748":{},"750":{},"759":{},"765":{},"767":{},"768":{},"772":{},"784":{},"786":{},"796":{},"799":{},"859":{}}}],["conflict",{"_index":2944,"title":{},"content":{"695":{}}}],["conform",{"_index":1708,"title":{},"content":{"317":{}}}],["congratul",{"_index":2549,"title":{},"content":{"412":{}}}],["connect",{"_index":520,"title":{"610":{}},"content":{"182":{},"235":{},"237":{},"240":{},"329":{},"578":{},"584":{},"610":{},"613":{},"620":{},"671":{},"672":{},"682":{},"684":{},"696":{},"750":{},"759":{},"766":{},"772":{},"778":{},"800":{},"833":{}}}],["connectivity/crypto",{"_index":1154,"title":{},"content":{"238":{}}}],["consensu",{"_index":1673,"title":{"622":{}},"content":{"304":{},"309":{},"346":{},"603":{},"618":{},"619":{},"620":{},"622":{},"623":{},"641":{},"664":{},"672":{},"682":{},"723":{},"854":{}}}],["consensusarcheth",{"_index":2821,"title":{},"content":{"620":{}}}],["consid",{"_index":473,"title":{},"content":{"181":{},"220":{},"221":{},"287":{},"307":{},"340":{},"347":{},"461":{},"465":{},"466":{},"644":{},"661":{},"671":{},"716":{},"717":{},"729":{},"742":{}}}],["consider",{"_index":2880,"title":{},"content":{"629":{},"686":{}}}],["consist",{"_index":2676,"title":{},"content":{"564":{},"619":{},"621":{},"622":{},"661":{},"766":{}}}],["consol",{"_index":2521,"title":{},"content":{"405":{},"506":{},"525":{},"526":{}}}],["consolid",{"_index":2736,"title":{},"content":{"599":{}}}],["const",{"_index":3573,"title":{},"content":{"776":{}}}],["constant",{"_index":921,"title":{},"content":{"201":{}}}],["constantli",{"_index":2839,"title":{},"content":{"622":{}}}],["constrain",{"_index":3073,"title":{},"content":{"657":{}}}],["constraint",{"_index":1592,"title":{"266":{}},"content":{"265":{},"266":{},"346":{},"619":{},"624":{},"639":{},"662":{},"682":{}}}],["consult",{"_index":2868,"title":{},"content":{"621":{},"761":{},"848":{}}}],["consum",{"_index":3063,"title":{},"content":{"656":{}}}],["consumpt",{"_index":2808,"title":{},"content":{"618":{},"621":{},"641":{},"679":{}}}],["contact",{"_index":1145,"title":{},"content":{"237":{},"859":{}}}],["contain",{"_index":120,"title":{},"content":{"28":{},"49":{},"127":{},"241":{},"244":{},"271":{},"273":{},"282":{},"290":{},"295":{},"296":{},"310":{},"320":{},"338":{},"350":{},"371":{},"392":{},"393":{},"402":{},"453":{},"454":{},"458":{},"459":{},"461":{},"462":{},"464":{},"465":{},"466":{},"477":{},"478":{},"587":{},"620":{},"628":{},"636":{},"661":{},"692":{},"693":{},"709":{},"717":{},"725":{},"742":{},"745":{},"746":{},"749":{},"753":{},"778":{},"786":{},"816":{},"817":{},"821":{},"823":{},"828":{},"831":{},"832":{},"839":{}}}],["content",{"_index":114,"title":{"149":{},"516":{},"754":{},"840":{}},"content":{"28":{},"29":{},"149":{},"191":{},"309":{},"312":{},"313":{},"314":{},"315":{},"316":{},"370":{},"371":{},"373":{},"376":{},"377":{},"380":{},"382":{},"384":{},"392":{},"393":{},"395":{},"396":{},"407":{},"457":{},"459":{},"493":{},"516":{},"554":{},"625":{},"660":{},"717":{},"731":{},"734":{},"735":{},"742":{},"745":{},"746":{},"747":{},"749":{},"751":{},"753":{},"754":{},"759":{},"821":{},"831":{},"840":{}}}],["content_s",{"_index":803,"title":{},"content":{"191":{}}}],["context",{"_index":18,"title":{"306":{},"602":{}},"content":{"8":{},"73":{},"188":{},"218":{},"240":{},"276":{},"300":{},"306":{},"583":{},"625":{},"746":{},"747":{},"748":{},"786":{}}}],["continu",{"_index":1847,"title":{},"content":{"349":{},"575":{},"633":{},"661":{},"727":{},"759":{}}}],["contract",{"_index":112,"title":{"310":{},"344":{},"345":{},"350":{},"367":{},"372":{},"377":{},"386":{},"387":{},"390":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"404":{},"405":{},"411":{},"412":{},"413":{},"490":{},"506":{},"513":{},"524":{},"531":{},"602":{},"832":{},"841":{},"853":{}},"content":{"28":{},"52":{},"124":{},"290":{},"309":{},"310":{},"326":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"353":{},"356":{},"361":{},"362":{},"363":{},"364":{},"365":{},"368":{},"370":{},"371":{},"373":{},"374":{},"375":{},"376":{},"377":{},"379":{},"381":{},"382":{},"383":{},"389":{},"390":{},"393":{},"394":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"404":{},"405":{},"406":{},"407":{},"408":{},"410":{},"411":{},"412":{},"413":{},"451":{},"471":{},"477":{},"478":{},"488":{},"491":{},"492":{},"493":{},"494":{},"501":{},"506":{},"513":{},"515":{},"516":{},"521":{},"522":{},"524":{},"525":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"564":{},"578":{},"593":{},"598":{},"602":{},"606":{},"607":{},"613":{},"652":{},"663":{},"664":{},"679":{},"682":{},"710":{},"717":{},"725":{},"729":{},"736":{},"768":{},"795":{},"813":{},"832":{},"839":{},"841":{},"853":{},"858":{},"859":{}}}],["contract'",{"_index":1821,"title":{},"content":{"346":{},"368":{},"374":{},"407":{},"412":{},"451":{},"491":{},"522":{},"839":{}}}],["contract.add_ownership",{"_index":2478,"title":{},"content":{"499":{}}}],["contract.add_recipi",{"_index":2085,"title":{},"content":{"375":{}}}],["contract.add_recipient(\"000012345",{"_index":2485,"title":{},"content":{"501":{}}}],["contract.add_token_transf",{"_index":2470,"title":{},"content":{"497":{}}}],["contract.add_token_transfer(to",{"_index":2070,"title":{},"content":{"374":{}}}],["contract.add_token_transfer(token_address",{"_index":3290,"title":{},"content":{"736":{}}}],["contract.add_uco_transf",{"_index":2394,"title":{},"content":{"477":{},"478":{}}}],["contract.add_uco_transfer(amount",{"_index":2089,"title":{},"content":{"375":{}}}],["contract.add_uco_transfer(to",{"_index":2466,"title":{},"content":{"495":{}}}],["contract.address",{"_index":2075,"title":{},"content":{"374":{},"389":{}}}],["contract.call_function(0x0000abcd",{"_index":2456,"title":{},"content":{"491":{}}}],["contract.cont",{"_index":1952,"title":{},"content":{"364":{},"376":{},"506":{}}}],["contract.set_code(\"@vers",{"_index":2463,"title":{},"content":{"494":{}}}],["contract.set_cont",{"_index":2518,"title":{},"content":{"404":{},"506":{}}}],["contract.set_content(\"hello",{"_index":2055,"title":{},"content":{"373":{},"493":{}}}],["contract.set_content(chain.get_genesis_address(0x00002223bbd4ec3d64ae597696c7d7ade1cee65c639d885450ad2d7b75592ac76afa",{"_index":2565,"title":{},"content":{"526":{}}}],["contract.set_content(json.to_string(vot",{"_index":2096,"title":{},"content":{"376":{}}}],["contract.set_content(new_pric",{"_index":1982,"title":{},"content":{"370":{}}}],["contract.set_content(time.now",{"_index":2561,"title":{},"content":{"525":{}}}],["contract.set_type(\"transf",{"_index":2069,"title":{},"content":{"374":{},"375":{},"492":{}}}],["contract.uco_mov",{"_index":1999,"title":{},"content":{"371":{}}}],["contract.uco_transf",{"_index":1998,"title":{},"content":{"371":{}}}],["contract1",{"_index":1834,"title":{},"content":{"347":{}}}],["contract2",{"_index":1836,"title":{},"content":{"347":{}}}],["contract_address",{"_index":2457,"title":{},"content":{"491":{}}}],["contractcalls)1",{"_index":3050,"title":{},"content":{"652":{}}}],["contrast",{"_index":3177,"title":{},"content":{"683":{}}}],["contribut",{"_index":2600,"title":{"552":{},"553":{},"849":{}},"content":{"552":{},"553":{},"554":{},"637":{},"644":{},"645":{},"662":{},"849":{}}}],["contributor",{"_index":2622,"title":{},"content":{"554":{},"657":{},"661":{}}}],["control",{"_index":2535,"title":{},"content":{"407":{},"408":{},"583":{},"621":{},"643":{},"644":{},"695":{},"713":{},"773":{},"777":{}}}],["conveni",{"_index":1868,"title":{},"content":{"352":{},"493":{}}}],["convent",{"_index":3476,"title":{},"content":{"854":{}}}],["convert",{"_index":372,"title":{},"content":{"106":{},"142":{},"157":{},"163":{},"189":{},"190":{},"191":{},"271":{},"272":{},"273":{},"280":{},"291":{},"353":{},"374":{},"389":{},"477":{}}}],["coordin",{"_index":337,"title":{"692":{}},"content":{"95":{},"271":{},"621":{},"622":{},"625":{},"692":{},"717":{}}}],["coordinator'",{"_index":3308,"title":{},"content":{"717":{}}}],["copi",{"_index":611,"title":{},"content":{"188":{},"191":{},"244":{},"253":{},"257":{},"279":{},"295":{},"296":{},"413":{},"427":{},"430":{},"587":{}}}],["copy/past",{"_index":2785,"title":{},"content":{"617":{}}}],["core",{"_index":974,"title":{"214":{},"529":{}},"content":{"527":{},"528":{},"529":{},"530":{},"531":{},"532":{}}}],["corpor",{"_index":3364,"title":{},"content":{"725":{}}}],["correct",{"_index":1104,"title":{},"content":{"233":{},"315":{},"408":{},"554":{},"661":{}}}],["correctli",{"_index":1656,"title":{},"content":{"295":{}}}],["correl",{"_index":3162,"title":{},"content":{"682":{}}}],["correspond",{"_index":680,"title":{},"content":{"189":{},"196":{},"275":{},"279":{},"587":{},"588":{},"717":{},"848":{}}}],["cosign",{"_index":3250,"title":{},"content":{"712":{}}}],["cost",{"_index":3001,"title":{},"content":{"642":{},"651":{},"652":{},"654":{},"655":{},"656":{},"714":{},"724":{},"775":{}}}],["cost_per_recipi",{"_index":3058,"title":{},"content":{"652":{}}}],["costli",{"_index":3348,"title":{"724":{}},"content":{}}],["council",{"_index":1618,"title":{},"content":{"282":{},"661":{}}}],["count",{"_index":1388,"title":{},"content":{"247":{},"376":{}}}],["count_i",{"_index":2102,"title":{},"content":{"376":{}}}],["count_x",{"_index":2100,"title":{},"content":{"376":{}}}],["counter",{"_index":2551,"title":{},"content":{"506":{}}}],["counterparti",{"_index":3485,"title":{},"content":{"858":{},"859":{}}}],["countri",{"_index":2884,"title":{},"content":{"630":{}}}],["coupl",{"_index":2968,"title":{},"content":{"649":{},"684":{},"724":{}}}],["cover",{"_index":1585,"title":{},"content":{"294":{},"408":{}}}],["covert",{"_index":3623,"title":{},"content":{"784":{}}}],["cp",{"_index":1650,"title":{},"content":{"295":{}}}],["crash",{"_index":2313,"title":{},"content":{"454":{}}}],["creat",{"_index":859,"title":{"578":{},"584":{},"588":{},"589":{},"590":{},"844":{},"847":{}},"content":{"200":{},"212":{},"231":{},"236":{},"237":{},"273":{},"288":{},"295":{},"296":{},"310":{},"314":{},"346":{},"349":{},"359":{},"361":{},"371":{},"373":{},"376":{},"380":{},"404":{},"471":{},"494":{},"506":{},"522":{},"552":{},"553":{},"555":{},"564":{},"578":{},"587":{},"588":{},"589":{},"590":{},"607":{},"645":{},"647":{},"648":{},"649":{},"656":{},"661":{},"684":{},"696":{},"713":{},"725":{},"728":{},"729":{},"731":{},"733":{},"735":{},"736":{},"740":{},"759":{},"775":{},"776":{},"817":{},"826":{},"836":{},"837":{},"839":{},"843":{},"844":{},"845":{},"846":{},"847":{},"859":{}}}],["create/assign",{"_index":2028,"title":{},"content":{"380":{}}}],["create/import",{"_index":2713,"title":{},"content":{"579":{},"609":{}}}],["created/manipul",{"_index":328,"title":{},"content":{"89":{}}}],["creation",{"_index":1101,"title":{"731":{}},"content":{"220":{},"232":{},"307":{},"578":{},"621":{},"655":{},"656":{},"735":{},"745":{},"774":{},"775":{},"839":{}}}],["credenti",{"_index":2969,"title":{},"content":{"649":{}}}],["credit",{"_index":2065,"title":{},"content":{"374":{},"389":{}}}],["credo",{"_index":1658,"title":{},"content":{"295":{}}}],["criteria",{"_index":1691,"title":{},"content":{"309":{},"638":{},"688":{}}}],["critic",{"_index":2962,"title":{},"content":{"648":{}}}],["cron",{"_index":1818,"title":{},"content":{"346":{},"401":{}}}],["cross",{"_index":98,"title":{"603":{},"854":{}},"content":{"21":{},"347":{},"578":{},"593":{},"603":{},"606":{},"625":{},"682":{},"686":{},"708":{},"717":{},"775":{},"785":{},"815":{},"854":{},"858":{}}}],["crossvalidationstamp",{"_index":94,"title":{"21":{}},"content":{"21":{},"64":{},"65":{},"152":{},"164":{}}}],["crossvalidationstamp.nodepublickey",{"_index":103,"title":{},"content":{"22":{}}}],["crossvalidationstamp.signatur",{"_index":104,"title":{},"content":{"22":{}}}],["crowdfund",{"_index":2112,"title":{"389":{}},"content":{}}],["crowdsal",{"_index":2058,"title":{},"content":{"374":{}}}],["crypto",{"_index":440,"title":{"467":{},"564":{},"565":{},"566":{}},"content":{"181":{},"197":{},"237":{},"513":{},"639":{},"643":{},"714":{},"778":{}}}],["crypto.hash(\"mi",{"_index":2374,"title":{},"content":{"469":{}}}],["crypto.hash(\"tintin",{"_index":2386,"title":{},"content":{"473":{}}}],["crypto.hmac(\"mi",{"_index":2381,"title":{},"content":{"472":{}}}],["crypto.sign_with_recovery(signature_payload",{"_index":2387,"title":{},"content":{"473":{}}}],["cryptocurr",{"_index":444,"title":{},"content":{"181":{},"560":{},"593":{},"713":{},"717":{},"773":{},"774":{}}}],["cryptograph",{"_index":410,"title":{},"content":{"157":{},"327":{},"346":{},"395":{},"560":{},"630":{},"632":{},"636":{},"639":{},"682":{},"683":{},"717":{},"776":{},"853":{},"854":{}}}],["cryptographi",{"_index":854,"title":{"199":{},"297":{},"626":{}},"content":{"200":{},"202":{},"211":{},"271":{},"273":{},"297":{},"298":{},"331":{},"607":{},"626":{},"628":{},"630":{},"639":{},"648":{},"672":{},"854":{},"859":{}}}],["css",{"_index":3416,"title":{},"content":{"753":{}}}],["ctr",{"_index":882,"title":{},"content":{"198":{},"202":{}}}],["curent",{"_index":1422,"title":{},"content":{"258":{}}}],["currenc",{"_index":3082,"title":{},"content":{"665":{},"774":{},"778":{}}}],["current",{"_index":545,"title":{},"content":{"183":{},"189":{},"205":{},"206":{},"209":{},"231":{},"232":{},"252":{},"258":{},"261":{},"263":{},"275":{},"277":{},"278":{},"282":{},"320":{},"329":{},"346":{},"368":{},"379":{},"381":{},"383":{},"413":{},"451":{},"454":{},"525":{},"551":{},"575":{},"584":{},"596":{},"619":{},"642":{},"652":{},"661":{},"667":{},"679":{},"691":{},"700":{},"703":{},"726":{},"745":{},"746":{},"747":{},"748":{},"753":{},"760":{},"778":{},"784":{},"786":{},"809":{},"851":{}}}],["current_ath",{"_index":1977,"title":{},"content":{"370":{}}}],["currentkeyhandl",{"_index":1312,"title":{},"content":{"275":{}}}],["currentkeyindex",{"_index":1429,"title":{},"content":{"261":{}}}],["cursor",{"_index":1576,"title":{},"content":{"291":{}}}],["curv",{"_index":645,"title":{"205":{}},"content":{"189":{},"190":{},"201":{},"202":{},"204":{},"205":{},"209":{},"210":{},"211":{},"271":{},"281":{},"290":{},"631":{},"633":{},"639":{},"648":{},"650":{},"802":{},"835":{},"847":{}}}],["curve,fn",{"_index":707,"title":{},"content":{"190":{},"191":{}}}],["curve25519",{"_index":2897,"title":{},"content":{"634":{}}}],["curve_typ",{"_index":682,"title":{},"content":{"189":{},"190":{},"191":{},"205":{}}}],["curveid",{"_index":1288,"title":{},"content":{"273":{}}}],["curvetyp",{"_index":1186,"title":{},"content":{"271":{}}}],["custodi",{"_index":3533,"title":{},"content":{"773":{}}}],["custom",{"_index":909,"title":{"650":{}},"content":{"200":{},"283":{},"330":{},"349":{},"390":{},"570":{},"633":{},"650":{},"728":{},"774":{}}}],["customiz",{"_index":2970,"title":{},"content":{"650":{}}}],["customizationsupport",{"_index":3545,"title":{},"content":{"774":{}}}],["cx_curve_t",{"_index":672,"title":{},"content":{"189":{}}}],["cx_ecdh",{"_index":715,"title":{},"content":{"190":{},"191":{}}}],["cx_ecdh(&originprivatekey",{"_index":717,"title":{},"content":{"190":{},"191":{}}}],["cx_ecdh_x",{"_index":718,"title":{},"content":{"190":{},"191":{}}}],["cx_ecfp_init_private_key(curv",{"_index":693,"title":{},"content":{"189":{}}}],["cx_ecfp_private_key_t",{"_index":668,"title":{},"content":{"189":{}}}],["cx_ecfp_public_key_t",{"_index":670,"title":{},"content":{"189":{},"190":{}}}],["cx_hash_sha256",{"_index":809,"title":{},"content":{"191":{}}}],["cyber",{"_index":3129,"title":{},"content":{"679":{}}}],["cycl",{"_index":1150,"title":{},"content":{"237":{},"676":{},"677":{}}}],["cycle/epoch",{"_index":1704,"title":{},"content":{"316":{}}}],["d",{"_index":3525,"title":{},"content":{"837":{},"839":{},"846":{}}}],["d3e4f5",{"_index":2277,"title":{},"content":{"443":{}}}],["daili",{"_index":1165,"title":{},"content":{"299":{},"624":{},"700":{},"818":{},"819":{},"820":{},"822":{}}}],["dailli",{"_index":1144,"title":{},"content":{"236":{}}}],["damag",{"_index":3204,"title":{},"content":{"684":{}}}],["danger",{"_index":1171,"title":{},"content":{"270":{},"271":{},"273":{},"274":{},"276":{},"278":{},"280":{},"454":{},"652":{}}}],["dao",{"_index":3066,"title":{},"content":{"657":{}}}],["dapp",{"_index":2705,"title":{"783":{}},"content":{"578":{},"598":{},"725":{},"778":{},"779":{},"783":{},"784":{},"785":{},"815":{},"858":{}}}],["dart",{"_index":1795,"title":{"334":{}},"content":{"334":{},"775":{},"776":{},"779":{},"781":{},"785":{},"815":{}}}],["data",{"_index":105,"title":{"28":{},"336":{},"674":{},"778":{},"831":{}},"content":{"28":{},"33":{},"40":{},"48":{},"52":{},"64":{},"65":{},"89":{},"122":{},"124":{},"125":{},"144":{},"150":{},"165":{},"166":{},"176":{},"177":{},"181":{},"188":{},"190":{},"191":{},"202":{},"207":{},"212":{},"216":{},"221":{},"222":{},"244":{},"252":{},"270":{},"273":{},"283":{},"285":{},"286":{},"287":{},"288":{},"290":{},"291":{},"294":{},"305":{},"307":{},"315":{},"316":{},"319":{},"320":{},"322":{},"323":{},"328":{},"330":{},"337":{},"340":{},"346":{},"347":{},"349":{},"360":{},"361":{},"395":{},"402":{},"413":{},"441":{},"443":{},"445":{},"471":{},"472":{},"492":{},"493":{},"504":{},"505":{},"506":{},"578":{},"603":{},"619":{},"622":{},"632":{},"663":{},"664":{},"667":{},"668":{},"669":{},"671":{},"674":{},"675":{},"682":{},"683":{},"687":{},"688":{},"702":{},"705":{},"706":{},"708":{},"717":{},"723":{},"724":{},"725":{},"736":{},"746":{},"753":{},"754":{},"756":{},"775":{},"777":{},"778":{},"795":{},"813":{},"821":{},"854":{}}}],["data.cod",{"_index":126,"title":{},"content":{"29":{}}}],["data.cont",{"_index":127,"title":{},"content":{"29":{}}}],["data.ledg",{"_index":128,"title":{},"content":{"29":{}}}],["data.ownership",{"_index":129,"title":{},"content":{"29":{}}}],["data.recipi",{"_index":130,"title":{},"content":{"29":{}}}],["data/ownership",{"_index":860,"title":{},"content":{"212":{}}}],["data=hashedpath",{"_index":926,"title":{},"content":{"201":{}}}],["databas",{"_index":1081,"title":{"283":{}},"content":{"229":{},"283":{},"284":{},"285":{},"287":{},"305":{},"345":{},"347":{},"349":{},"488":{},"725":{},"778":{}}}],["databuff",{"_index":590,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["datalength",{"_index":592,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["datastructur",{"_index":1473,"title":{},"content":{"285":{}}}],["date",{"_index":76,"title":{"400":{}},"content":{"15":{},"76":{},"89":{},"103":{},"141":{},"224":{},"227":{},"232":{},"235":{},"294":{},"319":{},"336":{},"338":{},"340":{},"345":{},"346":{},"400":{},"524":{},"676":{},"677":{},"690":{},"702":{},"741":{},"778":{}}}],["datetim",{"_index":1817,"title":{"409":{}},"content":{"346":{},"373":{},"396":{},"400":{},"403":{},"409":{}}}],["day",{"_index":1728,"title":{},"content":{"320":{},"391":{},"401":{},"673":{},"676":{},"690":{},"691":{},"692":{},"693":{},"702":{},"820":{},"822":{}}}],["dbft",{"_index":2991,"title":{},"content":{"641":{}}}],["ddress",{"_index":1791,"title":{},"content":{"338":{}}}],["de",{"_index":2930,"title":{},"content":{"639":{}}}],["deal",{"_index":1497,"title":{},"content":{"287":{},"330":{},"361":{},"710":{}}}],["decentr",{"_index":985,"title":{"578":{},"643":{},"658":{},"694":{}},"content":{"215":{},"345":{},"578":{},"587":{},"588":{},"593":{},"598":{},"603":{},"613":{},"618":{},"622":{},"633":{},"641":{},"642":{},"643":{},"644":{},"645":{},"647":{},"649":{},"657":{},"679":{},"682":{},"683":{},"685":{},"695":{},"720":{},"723":{},"724":{},"727":{},"737":{},"745":{},"773":{},"783":{},"784":{},"786":{},"833":{},"851":{},"854":{}}}],["decid",{"_index":3038,"title":{},"content":{"644":{},"660":{},"676":{},"727":{}}}],["decim",{"_index":208,"title":{},"content":{"49":{},"127":{},"356":{},"519":{},"732":{},"733":{}}}],["decimals=8",{"_index":3281,"title":{},"content":{"734":{}}}],["decis",{"_index":3041,"title":{},"content":{"645":{}}}],["declar",{"_index":1910,"title":{},"content":{"359":{},"362":{},"363":{},"364":{},"745":{},"748":{}}}],["declin",{"_index":2701,"title":{},"content":{"575":{},"768":{}}}],["decod",{"_index":1358,"title":{},"content":{"243":{},"244":{},"289":{},"312":{},"313":{},"317":{},"472":{},"499":{},"505":{}}}],["decrypt",{"_index":51,"title":{},"content":{"18":{},"46":{},"52":{},"124":{},"190":{},"191":{},"202":{},"213":{},"273":{},"522":{},"639":{},"646":{},"648":{},"717":{}}}],["decrypt/load",{"_index":1149,"title":{},"content":{"237":{}}}],["decryptwallet(ecdhpointx",{"_index":722,"title":{},"content":{"190":{},"191":{}}}],["dedic",{"_index":521,"title":{},"content":{"182":{},"300":{},"582":{},"663":{},"754":{},"761":{},"855":{}}}],["deduct",{"_index":3481,"title":{},"content":{"855":{}}}],["deeplink",{"_index":3627,"title":{},"content":{"785":{},"787":{}}}],["defacoin_bal",{"_index":2366,"title":{},"content":{"465":{}}}],["default",{"_index":908,"title":{"634":{}},"content":{"200":{},"370":{},"426":{},"520":{},"634":{},"650":{},"804":{},"807":{},"834":{},"835":{},"836":{},"845":{},"846":{}}}],["defici",{"_index":2747,"title":{},"content":{"604":{},"855":{}}}],["defin",{"_index":613,"title":{},"content":{"188":{},"189":{},"200":{},"209":{},"223":{},"226":{},"234":{},"235":{},"236":{},"266":{},"270":{},"273":{},"289":{},"298":{},"300":{},"304":{},"308":{},"309":{},"322":{},"325":{},"327":{},"345":{},"346":{},"349":{},"350":{},"374":{},"389":{},"390":{},"391":{},"392":{},"399":{},"464":{},"519":{},"520":{},"522":{},"622":{},"668":{},"669":{},"690":{},"693":{},"717":{},"728":{},"731":{},"740":{},"827":{},"829":{},"839":{},"850":{}}}],["definit",{"_index":1745,"title":{},"content":{"324":{},"369":{},"520":{},"730":{},"731":{},"733":{},"736":{}}}],["deflat",{"_index":3049,"title":{},"content":{"651":{}}}],["delay",{"_index":2693,"title":{},"content":{"573":{},"615":{}}}],["deleg",{"_index":1830,"title":{},"content":{"346":{},"639":{},"682":{},"783":{},"815":{},"839":{}}}],["delegationsauthor",{"_index":3303,"title":{},"content":{"717":{}}}],["delet",{"_index":1485,"title":{},"content":{"285":{},"488":{},"770":{},"837":{},"839":{},"846":{}}}],["delete/2",{"_index":2218,"title":{"430":{}},"content":{}}],["deliv",{"_index":3062,"title":{},"content":{"656":{},"723":{}}}],["deliveri",{"_index":3150,"title":{"754":{}},"content":{"682":{},"723":{},"752":{}}}],["demand",{"_index":3329,"title":{},"content":{"713":{}}}],["demo",{"_index":570,"title":{"186":{}},"content":{"186":{}}}],["depend",{"_index":397,"title":{},"content":{"149":{},"189":{},"190":{},"290":{},"295":{},"300":{},"345":{},"347":{},"349":{},"368":{},"380":{},"509":{},"516":{},"636":{},"652":{},"664":{},"706":{},"777":{},"779":{}}}],["deploy",{"_index":1804,"title":{"412":{},"517":{},"518":{},"582":{},"727":{},"745":{},"759":{}},"content":{"343":{},"347":{},"410":{},"411":{},"412":{},"513":{},"522":{},"584":{},"606":{},"644":{},"661":{},"722":{},"724":{},"725":{},"726":{},"727":{},"742":{},"743":{},"745":{},"746":{},"747":{},"748":{},"749":{},"757":{},"759":{},"853":{},"858":{}}}],["deposit",{"_index":3482,"title":{},"content":{"760":{},"855":{}}}],["deprec",{"_index":2050,"title":{},"content":{"385":{},"386":{}}}],["deps.get",{"_index":2586,"title":{},"content":{"509":{}}}],["der",{"_index":842,"title":{},"content":{"196":{},"271":{},"272":{},"273":{},"280":{}}}],["deriv",{"_index":629,"title":{"200":{},"201":{}},"content":{"189":{},"190":{},"191":{},"197":{},"200":{},"201":{},"202":{},"204":{},"213":{},"251":{},"281":{},"290":{},"346":{},"633":{},"647":{},"650":{},"786":{},"802":{},"803":{},"804":{},"806":{},"807":{},"808":{},"813":{},"846":{}}}],["derivationpath",{"_index":3643,"title":{},"content":{"802":{}}}],["derivearchethickeypair",{"_index":638,"title":{},"content":{"189":{},"190":{},"191":{}}}],["derivearchethickeypair(cx_curve_secp256k1",{"_index":639,"title":{},"content":{"189":{}}}],["derivearchethickeypair(cx_curve_t",{"_index":663,"title":{},"content":{"189":{}}}],["desc",{"_index":37,"title":{},"content":{"5":{}}}],["descend",{"_index":41,"title":{},"content":{"6":{}}}],["describ",{"_index":902,"title":{},"content":{"200":{},"216":{},"513":{},"576":{},"590":{},"617":{},"646":{},"717":{},"750":{},"752":{},"847":{}}}],["descript",{"_index":187,"title":{},"content":{"43":{},"83":{},"159":{},"282":{},"289":{},"590":{},"733":{},"735":{}}}],["deseri",{"_index":1109,"title":{},"content":{"233":{}}}],["design",{"_index":1509,"title":{"288":{}},"content":{"390":{},"555":{},"597":{},"598":{},"604":{},"636":{},"695":{},"696":{},"713":{},"714":{},"722":{},"726":{},"729":{},"775":{},"855":{}}}],["desktop",{"_index":459,"title":{},"content":{"181":{},"183":{},"209":{},"597":{},"760":{},"775":{},"777":{},"785":{}}}],["destin",{"_index":1837,"title":{},"content":{"347":{},"389":{},"495":{},"497":{},"519":{},"520":{},"716":{}}}],["destruct",{"_index":3048,"title":{},"content":{"651":{}}}],["detail",{"_index":1107,"title":{"661":{},"767":{}},"content":{"233":{},"273":{},"298":{},"299":{},"379":{},"381":{},"383":{},"489":{},"514":{},"661":{},"717":{},"765":{},"767":{},"771":{},"830":{},"848":{}}}],["detect",{"_index":1689,"title":{},"content":{"309":{},"623":{},"666":{},"754":{}}}],["determin",{"_index":289,"title":{},"content":{"76":{},"141":{},"220":{},"221":{},"232":{},"235":{},"238":{},"310":{},"320":{},"331":{},"339":{},"340":{},"599":{},"621":{},"625":{},"632":{},"656":{},"671":{},"676":{},"677":{},"758":{},"778":{}}}],["determinist",{"_index":2306,"title":{},"content":{"451":{},"471":{},"620":{},"702":{}}}],["dev",{"_index":1162,"title":{"577":{}},"content":{"298":{},"509":{}}}],["develop",{"_index":532,"title":{"214":{},"529":{},"576":{},"578":{},"617":{}},"content":{"182":{},"183":{},"216":{},"308":{},"345":{},"346":{},"401":{},"510":{},"524":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"536":{},"537":{},"538":{},"539":{},"576":{},"578":{},"583":{},"617":{},"639":{},"700":{},"714":{},"720":{},"722":{},"726":{},"729":{},"730":{},"773":{},"775":{},"779":{},"783":{},"785":{},"815":{},"833":{},"849":{},"851":{}}}],["developer'",{"_index":2481,"title":{},"content":{"499":{}}}],["deviat",{"_index":1743,"title":{},"content":{"323":{}}}],["devic",{"_index":461,"title":{"189":{},"597":{},"629":{}},"content":{"181":{},"182":{},"183":{},"188":{},"189":{},"198":{},"207":{},"212":{},"213":{},"240":{},"241":{},"392":{},"621":{},"629":{},"682":{},"683":{},"684":{},"717":{},"769":{},"773":{},"775":{},"777":{},"814":{}}}],["device_origin",{"_index":683,"title":{},"content":{"189":{}}}],["dex",{"_index":2773,"title":{},"content":{"613":{}}}],["diagram",{"_index":2607,"title":{"555":{}},"content":{"552":{},"555":{}}}],["dialyz",{"_index":1662,"title":{},"content":{"295":{}}}],["dictionari",{"_index":3583,"title":{},"content":{"776":{}}}],["didn't",{"_index":3085,"title":{},"content":{"665":{}}}],["diff",{"_index":1337,"title":{},"content":{"281":{},"282":{},"823":{},"824":{}}}],["differ",{"_index":270,"title":{},"content":{"67":{},"175":{},"200":{},"202":{},"284":{},"287":{},"290":{},"320":{},"330":{},"346":{},"363":{},"368":{},"371":{},"374":{},"375":{},"377":{},"393":{},"404":{},"405":{},"407":{},"513":{},"524":{},"578":{},"700":{},"746":{},"773":{},"815":{}}}],["differenti",{"_index":1932,"title":{},"content":{"361":{},"683":{}}}],["digest",{"_index":1544,"title":{},"content":{"290":{},"633":{}}}],["digit",{"_index":448,"title":{},"content":{"181":{},"598":{},"649":{},"650":{},"682":{},"696":{},"777":{}}}],["digitalis",{"_index":3255,"title":{},"content":{"728":{}}}],["dimens",{"_index":1570,"title":{},"content":{"291":{}}}],["dimension",{"_index":1569,"title":{},"content":{"291":{}}}],["direct",{"_index":1,"title":{"545":{}},"content":{"1":{},"3":{},"146":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"751":{},"766":{}}}],["directli",{"_index":2335,"title":{},"content":{"460":{},"488":{},"584":{},"607":{},"716":{},"723":{},"775":{},"785":{},"855":{}}}],["directori",{"_index":1653,"title":{},"content":{"295":{},"583":{}}}],["disabl",{"_index":2542,"title":{},"content":{"412":{},"756":{}}}],["disagr",{"_index":2855,"title":{},"content":{"623":{},"717":{}}}],["disast",{"_index":2835,"title":{},"content":{"622":{}}}],["disclaim",{"_index":2103,"title":{},"content":{"386":{},"488":{}}}],["disclos",{"_index":3295,"title":{},"content":{"716":{}}}],["disclosur",{"_index":852,"title":{},"content":{"211":{},"628":{},"633":{},"648":{},"666":{},"682":{},"683":{}}}],["discolur",{"_index":2877,"title":{"628":{}},"content":{}}],["disconnect",{"_index":3458,"title":{"750":{}},"content":{"750":{}}}],["discourag",{"_index":2447,"title":{},"content":{"488":{}}}],["discov",{"_index":3094,"title":{},"content":{"668":{},"727":{}}}],["discoveri",{"_index":1789,"title":{"338":{}},"content":{"340":{},"341":{},"620":{},"649":{},"667":{}}}],["discret",{"_index":2627,"title":{},"content":{"554":{}}}],["discuss",{"_index":2609,"title":{},"content":{"552":{}}}],["disk",{"_index":1460,"title":{},"content":{"284":{},"285":{},"287":{},"289":{},"290":{},"291":{},"292":{},"294":{},"778":{}}}],["dispatch",{"_index":3099,"title":{},"content":{"669":{}}}],["display",{"_index":398,"title":{},"content":{"149":{},"191":{},"241":{},"406":{},"412":{},"510":{},"567":{},"587":{},"588":{},"649":{},"697":{},"703":{},"723":{},"754":{},"772":{},"778":{},"846":{},"848":{}}}],["dispos",{"_index":1651,"title":{},"content":{"295":{}}}],["disrupt",{"_index":2748,"title":{},"content":{"604":{},"623":{},"855":{}}}],["dissemin",{"_index":3110,"title":{},"content":{"672":{}}}],["distilleri",{"_index":1664,"title":{},"content":{"295":{}}}],["distinct",{"_index":3077,"title":{},"content":{"661":{}}}],["distinguish",{"_index":1761,"title":{},"content":{"329":{},"725":{}}}],["distribut",{"_index":995,"title":{"268":{},"302":{},"308":{}},"content":{"216":{},"236":{},"266":{},"268":{},"304":{},"308":{},"336":{},"619":{},"620":{},"623":{},"624":{},"651":{},"662":{},"667":{},"674":{},"686":{},"687":{},"688":{},"689":{},"691":{},"714":{},"721":{},"858":{}}}],["divid",{"_index":1057,"title":{},"content":{"218":{},"231":{},"483":{},"685":{},"690":{},"693":{}}}],["dividend",{"_index":2424,"title":{},"content":{"483":{}}}],["divis",{"_index":2428,"title":{},"content":{"483":{}}}],["divisor",{"_index":2425,"title":{},"content":{"483":{}}}],["dn",{"_index":2642,"title":{},"content":{"582":{},"726":{},"737":{},"738":{},"739":{},"741":{}}}],["dnslink",{"_index":3373,"title":{"738":{}},"content":{"726":{},"737":{}}}],["dnslink=/archethic/0f1e3",{"_index":3395,"title":{},"content":{"738":{}}}],["do",{"_index":1548,"title":{},"content":{"290":{},"656":{}}}],["doc",{"_index":499,"title":{},"content":{"181":{},"553":{},"850":{}}}],["docker",{"_index":1649,"title":{},"content":{"295":{}}}],["document",{"_index":496,"title":{"544":{},"850":{}},"content":{"181":{},"376":{},"444":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"552":{},"553":{},"555":{},"610":{},"618":{},"649":{},"763":{},"849":{},"850":{}}}],["docusauru",{"_index":2610,"title":{},"content":{"553":{}}}],["doe",{"_index":2283,"title":{},"content":{"445":{}}}],["doesdecrypt",{"_index":754,"title":{},"content":{"190":{},"191":{}}}],["doesn't",{"_index":752,"title":{},"content":{"190":{},"191":{},"307":{},"349":{},"412":{},"437":{},"494":{},"723":{},"724":{},"732":{}}}],["doesn’t",{"_index":3021,"title":{},"content":{"643":{}}}],["domain",{"_index":1058,"title":{"582":{},"737":{}},"content":{"218":{},"345":{},"726":{},"737":{},"738":{},"740":{},"741":{},"745":{},"747":{}}}],["don't",{"_index":1556,"title":{},"content":{"290":{},"347":{},"353":{},"370":{},"403":{},"413":{},"575":{},"587":{},"628":{},"654":{},"655":{},"696":{}}}],["done",{"_index":543,"title":{},"content":{"183":{},"189":{},"273":{},"291":{},"309":{},"346":{},"356":{},"371":{},"412":{},"560":{},"564":{},"588":{},"734":{},"738":{},"777":{},"839":{},"842":{}}}],["don’t",{"_index":2710,"title":{},"content":{"579":{},"609":{}}}],["dot",{"_index":3456,"title":{},"content":{"749":{}}}],["doubl",{"_index":404,"title":{},"content":{"147":{},"190":{},"191":{},"202":{},"352":{}}}],["down",{"_index":1034,"title":{},"content":{"216":{},"588":{},"619":{},"837":{},"846":{}}}],["download",{"_index":867,"title":{},"content":{"213":{},"588":{},"648":{},"754":{},"755":{},"760":{},"775":{},"782":{},"834":{}}}],["dri",{"_index":2577,"title":{},"content":{"521":{}}}],["drop",{"_index":1767,"title":{},"content":{"329":{}}}],["due",{"_index":1212,"title":{},"content":{"273":{},"279":{},"320":{},"346":{},"637":{},"724":{},"768":{}}}],["dump",{"_index":1481,"title":{},"content":{"285":{},"287":{},"289":{}}}],["duplic",{"_index":1687,"title":{},"content":{"308":{}}}],["durabl",{"_index":2949,"title":{},"content":{"695":{}}}],["durat",{"_index":2694,"title":{},"content":{"573":{},"615":{}}}],["dure",{"_index":1128,"title":{"573":{},"615":{}},"content":{"221":{},"237":{},"273":{},"290":{},"291":{},"301":{},"307":{},"319":{},"337":{},"346":{},"349":{},"369":{},"573":{},"583":{},"590":{},"615":{},"621":{},"650":{},"651":{},"656":{},"670":{},"671":{},"691":{},"693":{},"709":{},"733":{},"859":{}}}],["dynam",{"_index":986,"title":{},"content":{"216":{},"361":{}}}],["e",{"_index":1573,"title":{},"content":{"291":{},"349":{}}}],["e.g",{"_index":123,"title":{},"content":{"28":{},"589":{},"851":{}}}],["e0",{"_index":830,"title":{},"content":{"194":{},"195":{},"196":{}}}],["e_{key",{"_index":889,"title":{},"content":{"198":{}}}],["e_{priv",{"_index":893,"title":{},"content":{"198":{}}}],["e_{pub",{"_index":892,"title":{},"content":{"198":{},"202":{}}}],["each",{"_index":1068,"title":{},"content":{"219":{},"224":{},"227":{},"231":{},"232":{},"273":{},"289":{},"290":{},"304":{},"308":{},"319":{},"320":{},"329":{},"331":{},"347":{},"349":{},"370":{},"374":{},"376":{},"388":{},"389":{},"391":{},"393":{},"401":{},"413":{},"496":{},"498":{},"499":{},"500":{},"502":{},"553":{},"587":{},"604":{},"612":{},"613":{},"620":{},"621":{},"622":{},"624":{},"628":{},"631":{},"633":{},"641":{},"644":{},"648":{},"650":{},"651":{},"652":{},"656":{},"660":{},"664":{},"668":{},"672":{},"673":{},"676":{},"679":{},"686":{},"687":{},"688":{},"691":{},"692":{},"693":{},"697":{},"700":{},"703":{},"709":{},"715":{},"716":{},"723":{},"724":{},"727":{},"749":{},"751":{},"754":{},"778":{},"839":{},"855":{}}}],["earlier",{"_index":1712,"title":{},"content":{"318":{}}}],["earth",{"_index":2994,"title":{},"content":{"641":{}}}],["eas",{"_index":2826,"title":{},"content":{"620":{},"655":{},"700":{},"721":{}}}],["easi",{"_index":2533,"title":{"722":{}},"content":{"407":{},"553":{},"695":{},"775":{},"785":{},"815":{}}}],["easier",{"_index":1807,"title":{},"content":{"345":{},"348":{},"833":{}}}],["easili",{"_index":929,"title":{},"content":{"201":{},"210":{},"290":{},"298":{},"349":{},"376":{},"696":{},"702":{},"785":{}}}],["ecc",{"_index":1376,"title":{},"content":{"245":{},"254":{},"639":{}}}],["ecc_public_key",{"_index":1374,"title":{},"content":{"244":{},"255":{}}}],["eccpoints",{"_index":1433,"title":{"263":{},"264":{}},"content":{}}],["eccsigns",{"_index":1329,"title":{"261":{},"262":{},"280":{}},"content":{}}],["ecdh",{"_index":714,"title":{},"content":{"190":{},"191":{},"202":{},"250":{},"263":{},"264":{},"281":{}}}],["ecdh_point_x(e_{priv",{"_index":946,"title":{},"content":{"202":{}}}],["ecdh_point_x(e_{pub",{"_index":945,"title":{},"content":{"202":{}}}],["ecdh_secret",{"_index":944,"title":{},"content":{"202":{}}}],["ecdhcurrentkey(euphemeralkey",{"_index":1432,"title":{"263":{}},"content":{}}],["ecdhpastkey",{"_index":1435,"title":{"264":{}},"content":{}}],["ecdhpointx",{"_index":711,"title":{},"content":{"190":{},"191":{}}}],["ecdsa",{"_index":1285,"title":{},"content":{"273":{}}}],["eci",{"_index":931,"title":{},"content":{"202":{},"331":{}}}],["eciese(ellipt",{"_index":932,"title":{},"content":{"202":{}}}],["econom",{"_index":3332,"title":{"714":{}},"content":{}}],["economi",{"_index":3328,"title":{},"content":{"713":{},"714":{}}}],["ecosystem",{"_index":537,"title":{"640":{},"679":{}},"content":{"182":{},"552":{},"588":{},"593":{},"638":{},"642":{},"644":{},"657":{},"658":{},"783":{}}}],["ed25519",{"_index":955,"title":{},"content":{"205":{},"631":{},"633":{},"650":{}}}],["eddsa",{"_index":2896,"title":{},"content":{"634":{}}}],["edit",{"_index":3530,"title":{},"content":{"840":{},"841":{}}}],["editor",{"_index":2639,"title":{},"content":{"555":{}}}],["editori",{"_index":2633,"title":{},"content":{"554":{}}}],["effect",{"_index":2532,"title":{},"content":{"406":{},"524":{},"637":{},"666":{},"760":{}}}],["effici",{"_index":1441,"title":{"724":{}},"content":{"268":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"291":{},"292":{},"293":{},"307":{},"330":{},"620":{},"669":{},"724":{},"729":{},"815":{}}}],["effort",{"_index":1501,"title":{},"content":{"287":{}}}],["effortlessli",{"_index":3131,"title":{},"content":{"679":{}}}],["elaps",{"_index":2740,"title":{},"content":{"602":{}}}],["elect",{"_index":1106,"title":{"265":{},"624":{},"688":{}},"content":{"233":{},"265":{},"299":{},"300":{},"320":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"641":{},"677":{},"682":{},"688":{},"702":{},"717":{},"816":{}}}],["electr",{"_index":3202,"title":{},"content":{"684":{}}}],["electron",{"_index":3149,"title":{},"content":{"682":{},"777":{}}}],["element",{"_index":2224,"title":{},"content":{"432":{},"434":{},"437":{},"438":{},"439":{},"441":{},"442":{},"443":{},"464":{},"496":{},"498":{},"500":{},"502":{},"638":{},"644":{},"662":{},"666":{},"682":{},"705":{},"778":{}}}],["elig",{"_index":3512,"title":{},"content":{"772":{}}}],["elimin",{"_index":2917,"title":{},"content":{"637":{},"682":{}}}],["elixir",{"_index":979,"title":{"216":{}},"content":{"215":{},"216":{},"352":{},"509":{},"660":{}}}],["ellipt",{"_index":853,"title":{},"content":{"202":{},"211":{},"271":{},"281":{},"631":{},"633":{},"639":{},"648":{},"650":{},"835":{},"847":{}}}],["email",{"_index":3003,"title":{},"content":{"642":{}}}],["emb",{"_index":1705,"title":{},"content":{"317":{},"380":{},"642":{},"649":{},"712":{},"740":{}}}],["embed",{"_index":999,"title":{},"content":{"216":{},"305":{},"648":{},"657":{},"696":{}}}],["emiss",{"_index":3182,"title":{},"content":{"683":{}}}],["emit",{"_index":1155,"title":{},"content":{"238":{},"320":{},"700":{},"778":{}}}],["emploi",{"_index":3567,"title":{},"content":{"775":{}}}],["employ",{"_index":3487,"title":{},"content":{"859":{}}}],["empti",{"_index":1922,"title":{},"content":{"360":{},"361":{},"379":{},"381":{},"383":{},"423":{},"435":{},"804":{},"807":{}}}],["empty?/1",{"_index":2228,"title":{"435":{}},"content":{}}],["emul",{"_index":3619,"title":{},"content":{"782":{}}}],["en",{"_index":3570,"title":{},"content":{"775":{}}}],["enabl",{"_index":525,"title":{},"content":{"182":{},"510":{},"578":{},"593":{},"621":{},"636":{},"684":{},"695":{},"740":{},"745":{},"751":{},"760":{},"773":{},"783":{},"785":{},"853":{},"854":{}}}],["enc($wk_{a",{"_index":730,"title":{},"content":{"190":{},"191":{}}}],["enc($wk{a",{"_index":746,"title":{},"content":{"190":{},"191":{}}}],["enc(w_{",{"_index":883,"title":{},"content":{"198":{},"202":{}}}],["enc(wk_{a",{"_index":886,"title":{},"content":{"198":{},"202":{}}}],["enclav",{"_index":3087,"title":{},"content":{"666":{}}}],["enclos",{"_index":2010,"title":{},"content":{"377":{}}}],["encod",{"_index":755,"title":{"203":{},"204":{},"205":{},"206":{}},"content":{"190":{},"191":{},"194":{},"195":{},"198":{},"202":{},"203":{},"205":{},"206":{},"209":{},"271":{},"289":{},"291":{},"310":{},"323":{},"499":{},"504":{},"564":{},"633":{},"753":{},"778":{},"853":{}}}],["encode(o_{pub",{"_index":833,"title":{},"content":{"194":{},"198":{}}}],["encode(pub_key",{"_index":845,"title":{},"content":{"196":{},"198":{}}}],["encoded_data",{"_index":2494,"title":{},"content":{"505":{}}}],["encoded_secret1",{"_index":2479,"title":{},"content":{"499":{}}}],["encoded_secret_key",{"_index":2477,"title":{},"content":{"499":{}}}],["encoded_wallet",{"_index":765,"title":{},"content":{"190":{},"191":{}}}],["encodedwallet",{"_index":824,"title":{},"content":{"191":{}}}],["encoding/decod",{"_index":2889,"title":{},"content":{"632":{}}}],["encount",{"_index":2566,"title":{},"content":{"513":{}}}],["encourag",{"_index":2579,"title":{},"content":{"508":{},"552":{},"554":{}}}],["encrypt",{"_index":48,"title":{"202":{},"648":{}},"content":{"18":{},"52":{},"124":{},"190":{},"197":{},"198":{},"202":{},"203":{},"207":{},"211":{},"212":{},"213":{},"273":{},"331":{},"393":{},"522":{},"533":{},"534":{},"535":{},"621":{},"639":{},"646":{},"648":{},"672":{},"695":{},"696":{},"717":{},"741":{},"742":{},"778":{}}}],["encryptedsecretkey",{"_index":54,"title":{},"content":{"18":{}}}],["end",{"_index":624,"title":{"551":{},"557":{},"648":{},"743":{},"760":{}},"content":{"188":{},"211":{},"284":{},"285":{},"289":{},"291":{},"295":{},"330":{},"355":{},"358":{},"359":{},"363":{},"364":{},"366":{},"369":{},"370":{},"373":{},"374":{},"375":{},"376":{},"377":{},"380":{},"388":{},"389":{},"391":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"428":{},"437":{},"477":{},"478":{},"488":{},"489":{},"506":{},"525":{},"526":{},"551":{},"556":{},"557":{},"573":{},"615":{},"648":{},"691":{},"692":{},"693":{},"695":{},"696":{},"707":{},"708":{},"725":{},"741":{},"742":{},"749":{},"753":{}}}],["endianthen",{"_index":789,"title":{},"content":{"191":{}}}],["endord",{"_index":1215,"title":{},"content":{"273":{}}}],["endors",{"_index":1200,"title":{},"content":{"273":{}}}],["endpoint",{"_index":131,"title":{"25":{}},"content":{"25":{},"110":{},"111":{},"154":{},"166":{},"329":{},"584":{},"742":{},"756":{},"759":{},"778":{},"785":{},"786":{},"788":{},"790":{},"836":{},"839":{},"843":{},"847":{}}}],["endpoint.ip",{"_index":134,"title":{},"content":{"26":{}}}],["endpoint.port",{"_index":135,"title":{},"content":{"26":{}}}],["endpointurl",{"_index":3636,"title":{},"content":{"790":{}}}],["energi",{"_index":2807,"title":{},"content":{"618":{},"621":{},"641":{}}}],["enf",{"_index":1581,"title":{},"content":{"291":{}}}],["engin",{"_index":1438,"title":{},"content":{"283":{},"284":{},"639":{},"775":{}}}],["english",{"_index":3546,"title":{},"content":{"774":{},"776":{},"778":{}}}],["enhanc",{"_index":2606,"title":{"645":{}},"content":{"552":{},"593":{},"603":{},"645":{},"682":{},"854":{}}}],["enjoy",{"_index":2800,"title":{},"content":{"588":{},"775":{}}}],["enlist",{"_index":3237,"title":{},"content":{"703":{}}}],["enough",{"_index":1616,"title":{},"content":{"282":{},"661":{},"665":{}}}],["enrol",{"_index":856,"title":{"212":{}},"content":{"338":{},"702":{}}}],["enrollmentd",{"_index":159,"title":{},"content":{"37":{}}}],["ensur",{"_index":272,"title":{},"content":{"67":{},"175":{},"216":{},"233":{},"296":{},"307":{},"308":{},"323":{},"328":{},"346":{},"356":{},"379":{},"389":{},"583":{},"602":{},"607":{},"613":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"637":{},"651":{},"661":{},"664":{},"675":{},"685":{},"686":{},"688":{},"689":{},"691":{},"695":{},"704":{},"705":{},"708":{},"709":{},"714":{},"760":{},"766":{},"853":{},"858":{},"859":{}}}],["enter",{"_index":1911,"title":{},"content":{"359":{},"510":{},"643":{},"751":{},"765":{},"767":{},"778":{},"836":{},"840":{},"841":{},"847":{}}}],["entir",{"_index":1033,"title":{},"content":{"216":{},"291":{},"316":{},"320":{},"326":{},"327":{},"341":{},"345":{},"461":{},"606":{},"620":{},"622":{},"651":{},"666":{},"672":{},"673":{},"676":{},"680":{},"697":{},"700":{},"707":{},"717":{},"754":{}}}],["entri",{"_index":1069,"title":{},"content":{"224":{},"227":{},"285":{},"738":{},"739":{},"770":{}}}],["entropi",{"_index":910,"title":{},"content":{"200":{},"776":{}}}],["entrust",{"_index":2942,"title":{},"content":{"695":{}}}],["enum",{"_index":19,"title":{"546":{}},"content":{"5":{},"8":{},"74":{},"132":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"850":{}}}],["envelop",{"_index":1779,"title":{"331":{}},"content":{"331":{}}}],["environ",{"_index":1625,"title":{},"content":{"296":{},"320":{},"509":{},"679":{},"750":{}}}],["environmn",{"_index":3225,"title":{},"content":{"699":{}}}],["ephemer",{"_index":890,"title":{},"content":{"198":{},"202":{}}}],["ephpublickey",{"_index":709,"title":{},"content":{"190":{},"191":{}}}],["ephpublickeys",{"_index":710,"title":{},"content":{"190":{},"191":{}}}],["epoch",{"_index":1092,"title":{"700":{}},"content":{"231":{},"316":{},"400":{},"451":{},"525":{},"700":{}}}],["epoch/cycl",{"_index":1135,"title":{},"content":{"221":{}}}],["epoch/slot",{"_index":3113,"title":{},"content":{"673":{}}}],["equal",{"_index":751,"title":{},"content":{"190":{},"191":{},"252":{}}}],["equip",{"_index":3075,"title":{},"content":{"660":{}}}],["equival",{"_index":1905,"title":{},"content":{"357":{},"468":{},"470":{},"471":{},"496":{},"498":{},"500":{},"502":{},"593":{},"680":{}}}],["era",{"_index":3023,"title":{},"content":{"643":{}}}],["erc20",{"_index":2666,"title":{},"content":{"560":{},"573":{},"593":{},"615":{},"774":{},"851":{}}}],["erlang",{"_index":990,"title":{},"content":{"216":{},"268":{},"337":{}}}],["error",{"_index":17,"title":{},"content":{"8":{},"73":{},"178":{},"180":{},"353":{},"405":{},"574":{},"616":{},"717":{}}}],["errorcontext",{"_index":15,"title":{"8":{}},"content":{"8":{},"73":{},"74":{}}}],["errorcontext.invalid_transact",{"_index":23,"title":{},"content":{"9":{}}}],["errorcontext.network_issu",{"_index":25,"title":{},"content":{"9":{}}}],["errorn",{"_index":1690,"title":{},"content":{"309":{}}}],["esc",{"_index":3531,"title":{},"content":{"840":{},"841":{}}}],["especi",{"_index":2617,"title":{},"content":{"554":{},"815":{}}}],["essenti",{"_index":2650,"title":{},"content":{"583":{},"644":{},"658":{},"662":{},"763":{}}}],["establish",{"_index":1760,"title":{},"content":{"329":{},"603":{},"623":{},"854":{}}}],["estim",{"_index":2547,"title":{"599":{}},"content":{"412":{},"759":{}}}],["esys_createprimari",{"_index":1295,"title":{},"content":{"273":{}}}],["esys_ecdh_zgen",{"_index":1343,"title":{},"content":{"281":{}}}],["esys_initi",{"_index":1315,"title":{},"content":{"276":{}}}],["esys_sign",{"_index":1333,"title":{},"content":{"280":{}}}],["esys_tr_password",{"_index":1298,"title":{},"content":{"273":{}}}],["esys_tr_rh_endors",{"_index":1296,"title":{},"content":{"273":{}}}],["et",{"_index":1064,"title":{},"content":{"222":{},"266":{},"319":{},"337":{}}}],["etc",{"_index":968,"title":{},"content":{"209":{},"233":{},"284":{},"287":{},"299":{},"330":{},"524":{},"552":{},"634":{},"639":{},"648":{},"652":{},"654":{},"679":{},"695":{},"717":{},"723":{},"725":{},"728":{},"737":{},"795":{},"813":{},"833":{},"849":{}}}],["etc/letsencrypt/live/example.com/cert.pem",{"_index":3405,"title":{},"content":{"741":{}}}],["etc/letsencrypt/live/example.com/privatekey.pem",{"_index":3406,"title":{},"content":{"741":{}}}],["eth",{"_index":2715,"title":{"613":{}},"content":{"593":{},"598":{},"612":{},"613":{}}}],["eth/bsc/mat",{"_index":2673,"title":{},"content":{"564":{},"566":{}}}],["eth/matic/bsc",{"_index":2668,"title":{},"content":{"563":{},"595":{}}}],["ether",{"_index":2735,"title":{},"content":{"598":{}}}],["ethereum",{"_index":447,"title":{"612":{}},"content":{"181":{},"569":{},"593":{},"596":{},"598":{},"612":{},"851":{}}}],["euphemer",{"_index":1339,"title":{},"content":{"281":{}}}],["euphemeralkey",{"_index":1336,"title":{"264":{},"281":{}},"content":{}}],["euphermerakley",{"_index":1399,"title":{"250":{}},"content":{}}],["eur",{"_index":319,"title":{},"content":{"83":{},"319":{}}}],["even",{"_index":1024,"title":{},"content":{"216":{},"296":{},"329":{},"353":{},"552":{},"554":{},"621":{},"622":{},"633":{},"637":{},"643":{},"647":{},"657":{},"721":{},"723":{}}}],["evenif",{"_index":1506,"title":{},"content":{"287":{}}}],["event",{"_index":1726,"title":{},"content":{"320":{},"345":{},"350":{},"696":{},"855":{}}}],["everyon",{"_index":2053,"title":{},"content":{"385":{}}}],["everyth",{"_index":1507,"title":{},"content":{"287":{},"513":{},"731":{}}}],["evid",{"_index":3293,"title":{},"content":{"715":{}}}],["evm",{"_index":2487,"title":{"503":{},"598":{},"606":{},"607":{},"612":{},"858":{},"859":{}},"content":{"569":{},"596":{},"598":{},"603":{},"606":{},"607":{},"612":{},"761":{},"764":{},"765":{},"766":{},"768":{},"854":{},"855":{},"858":{},"859":{}}}],["evm.abi_decode(signatur",{"_index":2493,"title":{},"content":{"505":{}}}],["evm.abi_encode(signatur",{"_index":2489,"title":{},"content":{"504":{}}}],["evolut",{"_index":1671,"title":{},"content":{"304":{}}}],["evolv",{"_index":971,"title":{},"content":{"210":{},"290":{},"630":{},"754":{}}}],["ew_{a",{"_index":837,"title":{},"content":{"195":{},"196":{},"198":{}}}],["ewk_{a",{"_index":836,"title":{},"content":{"195":{},"196":{},"198":{}}}],["ewka",{"_index":699,"title":{},"content":{"190":{}}}],["ex",{"_index":2490,"title":{},"content":{"504":{},"505":{}}}],["exact",{"_index":3473,"title":{},"content":{"759":{}}}],["exactli",{"_index":1246,"title":{},"content":{"273":{}}}],["exampl",{"_index":450,"title":{"323":{},"372":{},"380":{},"382":{},"384":{},"387":{},"525":{},"526":{}},"content":{"181":{},"268":{},"310":{},"319":{},"320":{},"330":{},"347":{},"349":{},"359":{},"371":{},"377":{},"378":{},"391":{},"392":{},"413":{},"493":{},"494":{},"524":{},"526":{},"553":{},"574":{},"575":{},"582":{},"584":{},"616":{},"633":{},"649":{},"650":{},"656":{},"661":{},"690":{},"709":{},"710":{},"724":{},"732":{},"733":{},"734":{},"735":{},"736":{},"753":{},"758":{},"778":{},"784":{},"821":{},"836":{}}}],["example.com",{"_index":3390,"title":{},"content":{"738":{},"740":{},"741":{}}}],["exce",{"_index":1692,"title":{},"content":{"309":{}}}],["excel",{"_index":3559,"title":{},"content":{"775":{}}}],["except",{"_index":1206,"title":{},"content":{"273":{},"401":{},"634":{},"664":{}}}],["excess",{"_index":2814,"title":{},"content":{"619":{}}}],["exchang",{"_index":457,"title":{},"content":{"181":{},"216":{},"281":{},"564":{},"593":{},"602":{},"613":{},"670":{},"679":{},"682":{},"774":{},"851":{},"853":{},"859":{}}}],["exclud",{"_index":2648,"title":{},"content":{"583":{},"745":{}}}],["exclus",{"_index":2599,"title":{},"content":{"551":{},"597":{},"760":{}}}],["execut",{"_index":1012,"title":{"768":{}},"content":{"216":{},"294":{},"295":{},"345":{},"347":{},"348":{},"350":{},"367":{},"370":{},"379":{},"380":{},"398":{},"399":{},"451":{},"488":{},"506":{},"521":{},"522":{},"525":{},"598":{},"675":{},"765":{},"839":{},"858":{}}}],["executor",{"_index":2,"title":{},"content":{"1":{},"3":{}}}],["exhaust",{"_index":1495,"title":{},"content":{"286":{},"287":{},"289":{}}}],["exist",{"_index":1148,"title":{"667":{}},"content":{"237":{},"290":{},"293":{},"312":{},"318":{},"330":{},"359":{},"459":{},"677":{},"707":{},"721":{},"724":{},"726":{},"859":{}}}],["exit",{"_index":1919,"title":{},"content":{"359":{},"697":{},"840":{},"841":{}}}],["exlud",{"_index":1545,"title":{},"content":{"290":{}}}],["expand",{"_index":2016,"title":{},"content":{"378":{},"593":{}}}],["expect",{"_index":1893,"title":{},"content":{"355":{},"392":{},"407":{},"412":{},"525":{},"526":{},"587":{}}}],["expens",{"_index":3356,"title":{},"content":{"724":{}}}],["experi",{"_index":530,"title":{},"content":{"182":{},"512":{},"775":{},"851":{}}}],["expir",{"_index":3117,"title":{},"content":{"706":{},"716":{}}}],["explain",{"_index":466,"title":{"564":{}},"content":{"181":{},"239":{},"269":{},"552":{}}}],["explicit",{"_index":2151,"title":{},"content":{"413":{}}}],["explicitli",{"_index":3223,"title":{},"content":{"699":{}}}],["exploit",{"_index":2864,"title":{},"content":{"621":{},"643":{},"695":{}}}],["explor",{"_index":1094,"title":{"697":{}},"content":{"231":{},"336":{},"412":{},"612":{},"697":{},"698":{},"702":{},"703":{},"759":{}}}],["expon",{"_index":2410,"title":{},"content":{"480":{}}}],["export",{"_index":1939,"title":{"364":{}},"content":{"362":{},"363":{},"364":{},"376":{},"491":{},"506":{},"576":{}}}],["expos",{"_index":3234,"title":{},"content":{"702":{},"754":{},"783":{}}}],["exposur",{"_index":3164,"title":{},"content":{"682":{},"784":{}}}],["expr",{"_index":1897,"title":{},"content":{"355":{},"377":{}}}],["express",{"_index":2001,"title":{},"content":{"377":{},"378":{},"382":{},"390":{},"395":{}}}],["extend",{"_index":1735,"title":{},"content":{"321":{},"322":{}}}],["extendedprivatekey",{"_index":927,"title":{},"content":{"201":{}}}],["extendedse",{"_index":924,"title":{},"content":{"201":{}}}],["extendedseed.slice(0",{"_index":928,"title":{},"content":{"201":{}}}],["extens",{"_index":1877,"title":{},"content":{"353":{},"552":{},"553":{},"729":{},"737":{},"745":{},"775":{}}}],["extern",{"_index":1176,"title":{},"content":{"270":{},"305":{},"315":{},"320":{},"345":{},"364":{},"554":{},"663":{},"664":{},"679":{},"682":{},"725":{}}}],["extract",{"_index":308,"title":{},"content":{"80":{},"201":{},"244":{},"291":{},"326":{},"395":{},"441":{},"443":{}}}],["extract/2",{"_index":2257,"title":{"441":{}},"content":{}}],["f",{"_index":1090,"title":{},"content":{"231":{}}}],["f28c3d5b3828ad3f8682f1b1d14a8507b829f65f7be6c50427a6019ccb6801c",{"_index":2139,"title":{},"content":{"396":{}}}],["f9",{"_index":1410,"title":{},"content":{"253":{}}}],["fabric",{"_index":2915,"title":{},"content":{"637":{}}}],["face",{"_index":1878,"title":{},"content":{"353":{},"618":{},"690":{},"695":{},"774":{},"777":{}}}],["facial",{"_index":3590,"title":{},"content":{"777":{}}}],["facilit",{"_index":1882,"title":{},"content":{"353":{},"578":{},"593":{},"785":{},"815":{},"851":{}}}],["fact",{"_index":2919,"title":{},"content":{"637":{},"756":{}}}],["facto",{"_index":2931,"title":{},"content":{"639":{}}}],["factor",{"_index":3592,"title":{},"content":{"777":{}}}],["fail",{"_index":1681,"title":{},"content":{"307":{},"378":{},"521":{}}}],["failur",{"_index":1032,"title":{},"content":{"216":{},"296":{},"356":{}}}],["fair",{"_index":1684,"title":{},"content":{"308":{},"651":{}}}],["fallback",{"_index":1562,"title":{},"content":{"290":{}}}],["fals",{"_index":396,"title":{},"content":{"145":{},"352":{},"355":{},"378":{},"380":{},"416":{},"434":{},"435":{},"442":{},"446":{},"449":{},"477":{},"478":{}}}],["famili",{"_index":1465,"title":{},"content":{"284":{},"326":{},"621":{},"629":{}}}],["familiar",{"_index":3495,"title":{},"content":{"760":{}}}],["faq",{"_index":3497,"title":{},"content":{"761":{},"766":{}}}],["far",{"_index":3365,"title":{},"content":{"725":{}}}],["fashion",{"_index":3240,"title":{},"content":{"703":{}}}],["fast",{"_index":983,"title":{},"content":{"215":{},"216":{},"222":{},"267":{},"286":{},"290":{},"327":{},"337":{},"339":{},"340":{},"641":{},"729":{}}}],["faster",{"_index":1065,"title":{},"content":{"222":{},"233":{},"266":{},"307":{},"319":{},"349":{}}}],["faucet",{"_index":2546,"title":{},"content":{"412":{},"510":{},"512":{},"758":{}}}],["fault",{"_index":996,"title":{},"content":{"216":{},"622":{},"668":{}}}],["favorit",{"_index":3018,"title":{},"content":{"643":{}}}],["featur",{"_index":1031,"title":{"764":{},"774":{}},"content":{"216":{},"290":{},"328":{},"345":{},"347":{},"390":{},"506":{},"578":{},"610":{},"644":{},"660":{},"662":{},"685":{},"727":{},"728":{},"769":{},"772":{},"774":{},"775":{},"859":{}}}],["featuresdecentr",{"_index":3536,"title":{},"content":{"774":{}}}],["featuresloc",{"_index":3549,"title":{},"content":{"774":{}}}],["fee",{"_index":148,"title":{"344":{},"566":{},"651":{}},"content":{"34":{},"80":{},"319":{},"412":{},"563":{},"566":{},"584":{},"595":{},"604":{},"618":{},"641":{},"651":{},"652":{},"654":{},"655":{},"656":{},"665":{},"717":{},"724":{},"745":{},"746":{},"747":{},"748":{},"759":{},"767":{},"772":{},"855":{},"858":{}}}],["fee_for_complex",{"_index":3057,"title":{},"content":{"652":{}}}],["fee_for_storage(s",{"_index":3055,"title":{},"content":{"652":{}}}],["feed",{"_index":3081,"title":{},"content":{"665":{},"843":{}}}],["feedback",{"_index":2625,"title":{},"content":{"554":{}}}],["fetch",{"_index":1147,"title":{},"content":{"237":{},"244":{},"247":{},"251":{},"253":{},"254":{},"255":{},"256":{},"258":{},"259":{},"260":{},"305":{},"306":{},"307":{},"316":{},"320":{},"322":{},"323":{},"337":{},"340":{},"413":{},"488":{},"509":{},"665":{},"671":{},"702":{},"725":{},"754":{},"821":{},"854":{}}}],["fetch_id_from_address/1",{"_index":2390,"title":{"475":{}},"content":{}}],["fetchkey",{"_index":1369,"title":{},"content":{"244":{}}}],["fetchkey(keyindex",{"_index":1361,"title":{"244":{}},"content":{}}],["few",{"_index":268,"title":{},"content":{"67":{},"175":{},"223":{},"226":{},"230":{},"236":{},"461":{},"524":{},"554":{},"588":{},"722":{},"726":{},"736":{},"847":{}}}],["ff",{"_index":3227,"title":{},"content":{"701":{}}}],["fiat",{"_index":3598,"title":{},"content":{"778":{}}}],["fibonacci",{"_index":3330,"title":{"714":{}},"content":{}}],["fido2",{"_index":2952,"title":{},"content":{"695":{}}}],["field",{"_index":3,"title":{"12":{},"16":{},"19":{},"22":{},"26":{},"29":{},"32":{},"35":{},"38":{},"41":{},"44":{},"47":{},"50":{},"53":{},"56":{},"59":{},"62":{},"65":{},"68":{},"71":{},"74":{},"77":{},"81":{},"84":{},"87":{},"90":{},"93":{},"96":{},"99":{}},"content":{"1":{},"3":{},"205":{},"206":{},"209":{},"282":{},"293":{},"370":{},"376":{},"379":{},"382":{},"392":{},"393":{},"395":{},"398":{},"515":{},"516":{},"519":{},"520":{},"522":{},"649":{},"661":{},"735":{},"766":{},"832":{},"846":{}}}],["figur",{"_index":482,"title":{},"content":{"181":{}}}],["file",{"_index":584,"title":{"583":{},"584":{}},"content":{"188":{},"189":{},"190":{},"191":{},"216":{},"239":{},"269":{},"282":{},"285":{},"287":{},"289":{},"290":{},"291":{},"292":{},"293":{},"295":{},"583":{},"584":{},"725":{},"726":{},"745":{},"749":{},"753":{},"754":{},"757":{},"759":{}}}],["filesystem",{"_index":1494,"title":{},"content":{"286":{},"295":{}}}],["fill",{"_index":1557,"title":{},"content":{"290":{},"291":{},"337":{},"369":{},"525":{},"739":{},"858":{}}}],["filter",{"_index":1518,"title":{},"content":{"288":{},"291":{},"292":{},"293":{},"624":{},"770":{}}}],["final",{"_index":1189,"title":{},"content":{"252":{},"253":{},"263":{},"271":{},"273":{},"275":{},"279":{},"280":{},"295":{},"296":{},"619":{},"648":{},"661":{},"677":{},"679":{},"776":{},"777":{},"778":{},"784":{},"815":{}}}],["financ",{"_index":3040,"title":{},"content":{"644":{},"662":{}}}],["financi",{"_index":3301,"title":{},"content":{"717":{},"778":{}}}],["find",{"_index":356,"title":{},"content":{"104":{},"107":{},"115":{},"125":{},"128":{},"131":{},"136":{},"190":{},"191":{},"290":{},"320":{},"582":{},"621":{},"695":{},"775":{},"776":{},"785":{},"815":{},"850":{}}}],["fine",{"_index":1593,"title":{},"content":{"265":{},"835":{}}}],["finger",{"_index":3171,"title":{},"content":{"683":{}}}],["fingerprint",{"_index":3180,"title":{},"content":{"683":{},"777":{}}}],["finish",{"_index":3218,"title":{},"content":{"693":{}}}],["finit",{"_index":1720,"title":{},"content":{"320":{}}}],["fire",{"_index":1668,"title":{},"content":{"301":{}}}],["firmwar",{"_index":551,"title":{},"content":{"183":{}}}],["first",{"_index":643,"title":{"237":{},"745":{}},"content":{"189":{},"190":{},"191":{},"201":{},"212":{},"235":{},"236":{},"237":{},"243":{},"256":{},"262":{},"271":{},"272":{},"278":{},"290":{},"296":{},"307":{},"336":{},"338":{},"339":{},"340":{},"341":{},"351":{},"395":{},"454":{},"588":{},"637":{},"647":{},"650":{},"672":{},"693":{},"698":{},"701":{},"702":{},"705":{},"723":{},"746":{},"747":{},"748":{},"755":{},"761":{},"778":{}}}],["first'",{"_index":1519,"title":{},"content":{"289":{}}}],["first_cod",{"_index":2399,"title":{},"content":{"477":{}}}],["firstli",{"_index":1202,"title":{},"content":{"273":{},"506":{},"587":{},"588":{},"766":{}}}],["firstnam",{"_index":2282,"title":{},"content":{"445":{}}}],["firstpublickey",{"_index":160,"title":{},"content":{"37":{}}}],["fit",{"_index":1450,"title":{},"content":{"284":{},"753":{}}}],["fix",{"_index":646,"title":{},"content":{"189":{},"347":{},"554":{}}}],["flag",{"_index":595,"title":{},"content":{"188":{},"273":{}}}],["flags)*flag",{"_index":632,"title":{},"content":{"189":{}}}],["flags)first",{"_index":701,"title":{},"content":{"190":{},"191":{}}}],["flaw",{"_index":3561,"title":{},"content":{"775":{}}}],["flexibl",{"_index":2729,"title":{},"content":{"593":{}}}],["fli",{"_index":869,"title":{},"content":{"213":{},"647":{}}}],["float",{"_index":158,"title":{"147":{}},"content":{"37":{},"38":{},"83":{},"84":{},"147":{},"191":{},"268":{},"323":{},"352":{},"356":{},"461":{},"465":{},"466":{},"493":{},"519":{},"520":{}}}],["flow",{"_index":1142,"title":{},"content":{"235":{},"271":{}}}],["flush",{"_index":1307,"title":{},"content":{"275":{},"278":{},"279":{},"285":{}}}],["flutter",{"_index":509,"title":{},"content":{"181":{},"334":{},"743":{},"760":{},"775":{},"776":{},"777":{},"778":{},"779":{},"781":{},"782":{},"785":{}}}],["flutter'",{"_index":3556,"title":{},"content":{"775":{}}}],["fluttersecurestorag",{"_index":3610,"title":{},"content":{"778":{}}}],["fn",{"_index":721,"title":{},"content":{"190":{},"191":{}}}],["focu",{"_index":1458,"title":{},"content":{"284":{},"785":{},"815":{}}}],["fold",{"_index":1792,"title":{},"content":{"340":{}}}],["folder",{"_index":561,"title":{},"content":{"184":{},"296":{},"726":{},"746":{},"753":{},"759":{},"782":{}}}],["folder/fil",{"_index":3463,"title":{},"content":{"759":{}}}],["follow",{"_index":936,"title":{},"content":{"202":{},"205":{},"206":{},"209":{},"210":{},"271":{},"273":{},"282":{},"290":{},"292":{},"312":{},"313":{},"317":{},"318":{},"350":{},"391":{},"393":{},"411":{},"412":{},"514":{},"588":{},"607":{},"613":{},"620":{},"625":{},"656":{},"661":{},"693":{},"743":{},"749":{},"752":{},"756":{},"774":{},"777":{},"778":{},"815":{},"859":{}}}],["foo",{"_index":2298,"title":{},"content":{"448":{}}}],["foo\\\":\\\"bar",{"_index":2292,"title":{},"content":{"447":{}}}],["forc",{"_index":2616,"title":{},"content":{"554":{},"644":{},"660":{},"785":{}}}],["foreach",{"_index":3385,"title":{},"content":{"727":{}}}],["forfeit",{"_index":3161,"title":{},"content":{"682":{}}}],["forgeri",{"_index":2918,"title":{},"content":{"637":{}}}],["forget",{"_index":870,"title":{},"content":{"213":{},"579":{},"609":{}}}],["fork",{"_index":2619,"title":{},"content":{"554":{},"680":{}}}],["form",{"_index":427,"title":{"513":{},"524":{}},"content":{"165":{},"197":{},"211":{},"272":{},"406":{},"408":{},"513":{},"524":{},"526":{},"533":{},"534":{},"535":{},"587":{},"593":{},"622":{},"660":{},"661":{},"685":{},"691":{},"692":{},"693":{},"715":{},"739":{},"745":{},"836":{},"849":{},"858":{}}}],["form.therefor",{"_index":2819,"title":{},"content":{"620":{}}}],["formal",{"_index":2842,"title":{},"content":{"623":{}}}],["format",{"_index":370,"title":{"208":{},"209":{},"210":{}},"content":{"106":{},"142":{},"157":{},"163":{},"189":{},"191":{},"202":{},"203":{},"210":{},"271":{},"272":{},"273":{},"280":{},"281":{},"289":{},"295":{},"314":{},"317":{},"352":{},"401":{},"553":{}}}],["formula",{"_index":3053,"title":{},"content":{"652":{},"656":{}}}],["fortuna",{"_index":3609,"title":{},"content":{"778":{}}}],["forward",{"_index":1565,"title":{},"content":{"290":{},"347":{},"625":{}}}],["found",{"_index":493,"title":{},"content":{"181":{},"214":{},"327":{},"717":{},"737":{},"741":{}}}],["foundat",{"_index":2601,"title":{},"content":{"552":{},"636":{},"644":{}}}],["foundation/aeip/blob/main/aeip",{"_index":3654,"title":{},"content":{"815":{}}}],["foundation/aeweb",{"_index":2596,"title":{},"content":{"556":{},"557":{},"743":{},"757":{}}}],["foundation/archeth",{"_index":2582,"title":{},"content":{"509":{},"553":{},"815":{},"834":{}}}],["foundation/bridg",{"_index":3492,"title":{},"content":{"760":{}}}],["foundation/libj",{"_index":3657,"title":{},"content":{"815":{}}}],["four",{"_index":2473,"title":{},"content":{"497":{},"644":{}}}],["fr3049085",{"_index":3201,"title":{},"content":{"684":{}}}],["fr3049086",{"_index":3172,"title":{},"content":{"683":{}}}],["fr3049087",{"_index":3166,"title":{},"content":{"682":{}}}],["fr3049088",{"_index":3159,"title":{},"content":{"682":{}}}],["fr3049089",{"_index":3144,"title":{},"content":{"682":{}}}],["fr3049090",{"_index":3188,"title":{},"content":{"683":{}}}],["fr3049091",{"_index":3196,"title":{},"content":{"683":{}}}],["fr3049092",{"_index":3198,"title":{},"content":{"683":{}}}],["fr3049093",{"_index":3193,"title":{},"content":{"683":{}}}],["fr3049101",{"_index":3154,"title":{},"content":{"682":{}}}],["fr3049121",{"_index":3205,"title":{},"content":{"684":{}}}],["fr3098972",{"_index":3155,"title":{},"content":{"682":{}}}],["fraction",{"_index":406,"title":{},"content":{"147":{},"153":{},"642":{}}}],["fragment",{"_index":4,"title":{},"content":{"1":{},"3":{}}}],["framework",{"_index":3370,"title":{"775":{}},"content":{"725":{},"775":{}}}],["fraud",{"_index":2993,"title":{},"content":{"641":{}}}],["fred",{"_index":2167,"title":{},"content":{"416":{},"434":{}}}],["free",{"_index":115,"title":{},"content":{"28":{},"165":{},"512":{},"593":{},"777":{}}}],["freedom",{"_index":2939,"title":{},"content":{"639":{},"643":{}}}],["french",{"_index":3547,"title":{},"content":{"774":{},"776":{},"778":{}}}],["frequenc",{"_index":1131,"title":{},"content":{"221":{}}}],["frequent",{"_index":3380,"title":{},"content":{"727":{}}}],["fresh",{"_index":1733,"title":{},"content":{"320":{},"619":{}}}],["fresher",{"_index":3114,"title":{},"content":{"673":{}}}],["friendli",{"_index":2995,"title":{},"content":{"641":{}}}],["friendlier",{"_index":1862,"title":{},"content":{"352":{}}}],["from_number/1",{"_index":2177,"title":{"418":{}},"content":{}}],["front",{"_index":2597,"title":{"551":{},"557":{},"743":{},"760":{}},"content":{"551":{},"556":{},"557":{},"633":{},"725":{}}}],["frontend",{"_index":3361,"title":{},"content":{"725":{}}}],["fsm",{"_index":1670,"title":{"304":{}},"content":{"304":{}}}],["fucntion",{"_index":1389,"title":{},"content":{"247":{},"263":{}}}],["fuell",{"_index":3325,"title":{},"content":{"713":{}}}],["full",{"_index":3005,"title":{},"content":{"642":{}}}],["full_nam",{"_index":1973,"title":{},"content":{"369":{}}}],["fullfil",{"_index":1510,"title":{},"content":{"288":{}}}],["fulli",{"_index":2741,"title":{},"content":{"603":{},"721":{},"773":{}}}],["fun",{"_index":1937,"title":{},"content":{"362":{},"363":{},"364":{},"374":{},"376":{},"506":{}}}],["funcion",{"_index":777,"title":{},"content":{"191":{}}}],["function",{"_index":495,"title":{"362":{},"363":{},"364":{},"394":{},"506":{}},"content":{"181":{},"188":{},"189":{},"190":{},"191":{},"216":{},"223":{},"226":{},"230":{},"271":{},"273":{},"276":{},"280":{},"281":{},"300":{},"322":{},"323":{},"352":{},"361":{},"362":{},"363":{},"364":{},"365":{},"369":{},"376":{},"378":{},"394":{},"406":{},"413":{},"443":{},"444":{},"477":{},"488":{},"491":{},"504":{},"505":{},"506":{},"524":{},"526":{},"593":{},"619":{},"636":{},"640":{},"657":{},"661":{},"717":{},"745":{},"764":{},"778":{},"785":{}}}],["function/ar",{"_index":2156,"title":{},"content":{"413":{}}}],["function_nam",{"_index":2459,"title":{},"content":{"491":{}}}],["fund",{"_index":1839,"title":{"510":{},"512":{},"584":{}},"content":{"347":{},"398":{},"412":{},"510":{},"560":{},"564":{},"566":{},"575":{},"584":{},"587":{},"588":{},"602":{},"604":{},"606":{},"607":{},"745":{},"746":{},"747":{},"748":{},"759":{},"761":{},"768":{},"772":{},"853":{},"855":{},"858":{},"859":{}}}],["fundament",{"_index":3074,"title":{},"content":{"657":{}}}],["fungibl",{"_index":2359,"title":{"589":{},"732":{},"733":{},"734":{}},"content":{"464":{},"656":{},"732":{},"733":{},"734":{},"735":{},"774":{}}}],["fungible_token_address",{"_index":2353,"title":{},"content":{"464":{}}}],["further",{"_index":1152,"title":{"712":{}},"content":{"238":{},"637":{},"709":{}}}],["futur",{"_index":2545,"title":{},"content":{"412":{},"516":{},"525":{},"588":{},"696":{}}}],["g_amount",{"_index":790,"title":{},"content":{"191":{}}}],["g_bip44_path",{"_index":759,"title":{},"content":{"190":{},"191":{}}}],["g_io_apdu_buff",{"_index":607,"title":{},"content":{"188":{},"191":{}}}],["g_state",{"_index":1348,"title":{},"content":{"240":{}}}],["g_tx.recieveraddr",{"_index":787,"title":{},"content":{"191":{}}}],["g_wallet.encodedwallet",{"_index":724,"title":{},"content":{"190":{},"191":{}}}],["g_wallet.walletlen",{"_index":725,"title":{},"content":{"190":{},"191":{}}}],["gandi",{"_index":2643,"title":{},"content":{"582":{},"739":{}}}],["gateway",{"_index":3389,"title":{},"content":{"738":{}}}],["gather",{"_index":1138,"title":{},"content":{"235":{},"296":{},"323":{},"625":{},"661":{},"663":{},"671":{},"692":{}}}],["gener",{"_index":291,"title":{"370":{},"559":{},"581":{},"586":{},"592":{},"647":{},"758":{},"835":{}},"content":{"76":{},"141":{},"157":{},"181":{},"182":{},"183":{},"188":{},"189":{},"190":{},"191":{},"200":{},"213":{},"221":{},"232":{},"245":{},"247":{},"248":{},"250":{},"252":{},"254":{},"271":{},"272":{},"273":{},"274":{},"275":{},"278":{},"279":{},"281":{},"334":{},"342":{},"343":{},"345":{},"346":{},"370":{},"379":{},"392":{},"394":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"554":{},"618":{},"620":{},"621":{},"629":{},"631":{},"633":{},"644":{},"647":{},"648":{},"650":{},"664":{},"691":{},"692":{},"702":{},"705":{},"706":{},"717":{},"725":{},"753":{},"758":{},"775":{},"776":{},"778":{},"814":{},"834":{},"835":{},"850":{},"859":{}}}],["generatearchethicaddress(uint8_t",{"_index":763,"title":{},"content":{"190":{},"191":{}}}],["generatecertificate(ykindex",{"_index":1381,"title":{"246":{}},"content":{}}],["generatekey",{"_index":815,"title":{},"content":{"191":{}}}],["generatekey(ykindex",{"_index":1375,"title":{"245":{}},"content":{}}],["generatekeyfromwallet(address_index",{"_index":771,"title":{},"content":{"190":{}}}],["generatekeypair(extendedprivatekey",{"_index":930,"title":{},"content":{"201":{}}}],["generatepublickey(0",{"_index":1300,"title":{},"content":{"274":{}}}],["generatepublickey(int",{"_index":1198,"title":{"273":{}},"content":{}}],["generatese",{"_index":3572,"title":{},"content":{"776":{}}}],["generationtx_vers",{"_index":800,"title":{},"content":{"191":{}}}],["genesi",{"_index":204,"title":{},"content":{"49":{},"104":{},"127":{},"236":{},"289":{},"290":{},"292":{},"371":{},"382":{},"412":{},"453":{},"455":{},"524":{},"793":{},"811":{}}}],["genesisaddress",{"_index":363,"title":{"104":{}},"content":{"104":{},"143":{},"144":{},"793":{},"811":{}}}],["genesisaddress.address",{"_index":364,"title":{},"content":{"105":{}}}],["genrat",{"_index":1230,"title":{},"content":{"273":{}}}],["genserv",{"_index":1764,"title":{},"content":{"329":{}}}],["geo",{"_index":1790,"title":{},"content":{"338":{},"682":{}}}],["geograph",{"_index":1596,"title":{},"content":{"266":{},"336":{},"624":{},"688":{},"723":{}}}],["geoip",{"_index":1785,"title":{},"content":{"336":{}}}],["geoloc",{"_index":3142,"title":{},"content":{"682":{}}}],["geopatch",{"_index":161,"title":{},"content":{"37":{},"336":{}}}],["get",{"_index":575,"title":{},"content":{"186":{},"188":{},"189":{},"190":{},"191":{},"240":{},"264":{},"788":{},"791":{},"800":{},"809":{}}}],["get/2",{"_index":2202,"title":{"425":{}},"content":{}}],["get/3",{"_index":2206,"title":{"426":{}},"content":{}}],["get_account",{"_index":3637,"title":{"791":{}},"content":{}}],["get_balance/1",{"_index":2336,"title":{"461":{}},"content":{}}],["get_burn_address/0",{"_index":2318,"title":{"456":{}},"content":{}}],["get_current_account",{"_index":3649,"title":{"809":{}},"content":{}}],["get_current_count",{"_index":1950,"title":{},"content":{"364":{}}}],["get_endpoint",{"_index":3634,"title":{"788":{}},"content":{}}],["get_first_transaction_address/1",{"_index":2311,"title":{"454":{}},"content":{}}],["get_genesis_address/1",{"_index":2307,"title":{"453":{}},"content":{}}],["get_genesis_public_key/1",{"_index":2314,"title":{"455":{}},"content":{}}],["get_last_address/1",{"_index":2325,"title":{"458":{}},"content":{}}],["get_last_transaction/1",{"_index":2328,"title":{"459":{}},"content":{}}],["get_previous_address/1",{"_index":2331,"title":{"460":{}},"content":{}}],["get_services_from_keychain",{"_index":3642,"title":{"800":{}},"content":{}}],["get_token_balance/2",{"_index":2347,"title":{"463":{}},"content":{"461":{},"465":{},"466":{}}}],["get_token_balance/3",{"_index":2351,"title":{"464":{}},"content":{"463":{}}}],["get_tokens_balance/1",{"_index":2360,"title":{"465":{}},"content":{}}],["get_tokens_balance/2",{"_index":2348,"title":{"466":{}},"content":{"461":{}}}],["get_transaction/1",{"_index":2322,"title":{"457":{}},"content":{}}],["get_transfered_amount",{"_index":2062,"title":{},"content":{"374":{}}}],["get_uco_balance/1",{"_index":2346,"title":{"462":{}},"content":{"461":{}}}],["get_vot",{"_index":2094,"title":{},"content":{"376":{}}}],["getaddress.c",{"_index":695,"title":{},"content":{"190":{}}}],["getappvers",{"_index":566,"title":{},"content":{"185":{}}}],["getarchaddress",{"_index":568,"title":{},"content":{"185":{}}}],["getarchethicindex",{"_index":1401,"title":{"251":{}},"content":{}}],["getbip44path(address_index",{"_index":758,"title":{},"content":{"190":{},"191":{}}}],["getcurrentcertificate(certificates",{"_index":1421,"title":{"258":{}},"content":{}}],["getcurrentkey(publickeys",{"_index":1412,"title":{"254":{}},"content":{}}],["getecdhpoint",{"_index":1434,"title":{},"content":{"263":{}}}],["getecdhpoint(int",{"_index":1335,"title":{"281":{}},"content":{}}],["getecdhpoint(ykindex",{"_index":1398,"title":{"250":{}},"content":{}}],["getkeyindex",{"_index":1316,"title":{"277":{}},"content":{}}],["getnextcertificate(certificates",{"_index":1423,"title":{"259":{}},"content":{}}],["getnextkey",{"_index":1414,"title":{"255":{}},"content":{}}],["getoriginpublickey(cx_ecfp_public_key_t",{"_index":636,"title":{},"content":{"189":{}}}],["getpastcertificate(archethicindex",{"_index":1424,"title":{"260":{}},"content":{}}],["getpastkey(archethicindex",{"_index":1415,"title":{"256":{}},"content":{}}],["getpublickey",{"_index":567,"title":{},"content":{"185":{}}}],["getpublickey(int",{"_index":1320,"title":{"279":{}},"content":{}}],["getpublickey.c",{"_index":627,"title":{},"content":{"189":{}}}],["getrootcertif",{"_index":1417,"title":{"257":{}},"content":{}}],["getrootkey",{"_index":1409,"title":{"253":{}},"content":{}}],["gettransactionhash(uint8_t",{"_index":793,"title":{},"content":{"191":{}}}],["getversion.c",{"_index":585,"title":{},"content":{"188":{}}}],["getykindex",{"_index":1385,"title":{"247":{}},"content":{}}],["git",{"_index":1707,"title":{},"content":{"317":{},"509":{},"554":{},"583":{},"644":{},"660":{},"834":{}}}],["github",{"_index":494,"title":{},"content":{"181":{},"184":{},"334":{},"342":{},"343":{},"727":{},"731":{},"734":{},"779":{},"848":{},"849":{}}}],["github'",{"_index":3382,"title":{},"content":{"727":{}}}],["github.com/archeth",{"_index":3515,"title":{},"content":{"834":{}}}],["gitignor",{"_index":2646,"title":{"583":{}},"content":{"583":{},"745":{}}}],["give",{"_index":817,"title":{},"content":{"191":{},"201":{},"222":{},"290":{},"412":{},"514":{},"522":{},"570":{},"571":{},"588":{},"699":{},"741":{},"816":{},"839":{},"845":{}}}],["given",{"_index":50,"title":{},"content":{"18":{},"181":{},"201":{},"220":{},"223":{},"225":{},"226":{},"228":{},"266":{},"268":{},"279":{},"280":{},"281":{},"290":{},"291":{},"300":{},"308":{},"320":{},"326":{},"327":{},"338":{},"349":{},"376":{},"388":{},"395":{},"430":{},"473":{},"491":{},"504":{},"505":{},"510":{},"526":{},"619":{},"620":{},"625":{},"628":{},"639":{},"656":{},"690":{},"691":{},"693":{},"702":{},"703":{},"708":{},"710":{},"717":{},"786":{},"803":{},"805":{},"806":{},"814":{},"835":{},"843":{}}}],["global",{"_index":1085,"title":{"270":{},"368":{},"393":{}},"content":{"230":{},"270":{},"287":{},"336":{},"368":{},"379":{},"381":{},"383":{},"393":{},"640":{},"641":{},"644":{},"661":{},"689":{},"690":{},"778":{}}}],["globalproperti",{"_index":3278,"title":{},"content":{"733":{}}}],["globe",{"_index":3346,"title":{},"content":{"723":{}}}],["glossari",{"_index":878,"title":{"198":{}},"content":{}}],["gmp",{"_index":1603,"title":{},"content":{"268":{},"509":{}}}],["go",{"_index":1022,"title":{"342":{}},"content":{"216":{},"342":{},"406":{},"506":{},"510":{},"512":{},"590":{},"612":{},"661":{},"746":{},"747":{},"748":{},"834":{},"842":{},"846":{}}}],["goal",{"_index":1640,"title":{},"content":{"295":{},"353":{},"370":{},"513":{},"753":{}}}],["goe",{"_index":1079,"title":{},"content":{"229":{},"293":{},"675":{}}}],["golden",{"_index":3331,"title":{"714":{}},"content":{}}],["good",{"_index":1831,"title":{},"content":{"346":{},"731":{},"754":{}}}],["goods/suppli",{"_index":3151,"title":{},"content":{"682":{}}}],["googl",{"_index":3554,"title":{},"content":{"775":{}}}],["google'",{"_index":3562,"title":{},"content":{"775":{}}}],["gossip",{"_index":3090,"title":{"668":{}},"content":{"668":{},"672":{}}}],["gossip'",{"_index":3092,"title":{},"content":{"668":{}}}],["goto",{"_index":3617,"title":{},"content":{"782":{}}}],["govern",{"_index":1048,"title":{"644":{},"657":{}},"content":{"216":{},"282":{},"317":{},"318":{},"604":{},"644":{},"657":{},"658":{},"660":{},"661":{},"679":{},"855":{}}}],["gradual",{"_index":3065,"title":{},"content":{"656":{}}}],["grain",{"_index":1594,"title":{},"content":{"265":{}}}],["grammar",{"_index":2632,"title":{},"content":{"554":{}}}],["grant",{"_index":3500,"title":{},"content":{"764":{}}}],["granular",{"_index":2499,"title":{},"content":{"401":{}}}],["graph",{"_index":3602,"title":{},"content":{"778":{}}}],["graphql",{"_index":426,"title":{"523":{}},"content":{"165":{},"488":{},"523":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"850":{}}}],["grate",{"_index":2603,"title":{},"content":{"552":{}}}],["great",{"_index":2638,"title":{},"content":{"555":{},"727":{}}}],["greater",{"_index":2027,"title":{},"content":{"380":{},"593":{},"776":{}}}],["greatli",{"_index":3631,"title":{},"content":{"785":{}}}],["greet",{"_index":3498,"title":{},"content":{"762":{}}}],["ground",{"_index":2615,"title":{},"content":{"554":{},"666":{}}}],["group",{"_index":1685,"title":{},"content":{"308":{},"371":{},"443":{},"621":{},"644":{},"658":{},"670":{},"753":{},"778":{}}}],["grow",{"_index":3480,"title":{},"content":{"855":{}}}],["growth",{"_index":3333,"title":{},"content":{"714":{}}}],["guarante",{"_index":933,"title":{},"content":{"202":{},"216":{},"346":{},"619":{},"679":{}}}],["guard",{"_index":1826,"title":{},"content":{"346":{}}}],["gui",{"_index":510,"title":{},"content":{"181":{},"182":{},"183":{},"191":{}}}],["guid",{"_index":465,"title":{},"content":{"181":{},"182":{},"183":{},"768":{}}}],["guidelin",{"_index":2614,"title":{"554":{}},"content":{}}],["gzip",{"_index":3425,"title":{},"content":{"753":{}}}],["hack",{"_index":2047,"title":{},"content":{"382":{}}}],["halt",{"_index":3505,"title":{},"content":{"768":{}}}],["hand",{"_index":1888,"title":{},"content":{"353":{},"406":{},"412":{},"763":{},"778":{}}}],["handi",{"_index":3379,"title":{},"content":{"727":{}}}],["handl",{"_index":1308,"title":{},"content":{"275":{},"276":{},"278":{},"279":{},"280":{},"281":{},"329":{},"641":{},"642":{},"723":{}}}],["handlegetaddress(uint8_t",{"_index":700,"title":{},"content":{"190":{}}}],["handlegetpublickey(uint8_t",{"_index":631,"title":{},"content":{"189":{}}}],["handlegetversion(uint8_t",{"_index":586,"title":{},"content":{"188":{}}}],["handlesignhash(uint8_t",{"_index":778,"title":{},"content":{"191":{}}}],["happen",{"_index":1630,"title":{"573":{},"615":{}},"content":{"296":{},"307":{},"488":{}}}],["hard",{"_index":2679,"title":{},"content":{"564":{},"630":{},"853":{}}}],["hardwar",{"_index":455,"title":{"635":{},"636":{},"637":{},"638":{},"684":{}},"content":{"181":{},"189":{},"209":{},"217":{},"240":{},"298":{},"312":{},"629":{},"631":{},"634":{},"636":{},"637":{},"638":{},"666":{},"696":{}}}],["hardware(devic",{"_index":628,"title":{},"content":{"189":{}}}],["hash",{"_index":312,"title":{"157":{},"206":{},"286":{},"602":{},"632":{},"853":{}},"content":{"80":{},"81":{},"95":{},"96":{},"157":{},"190":{},"191":{},"201":{},"204":{},"206":{},"210":{},"273":{},"274":{},"280":{},"286":{},"290":{},"353":{},"395":{},"469":{},"472":{},"473":{},"564":{},"593":{},"602":{},"606":{},"624":{},"628":{},"632":{},"633":{},"639":{},"650":{},"716":{},"717":{},"753":{},"802":{},"814":{},"835":{},"853":{},"858":{},"859":{}}}],["hash(contract.cod",{"_index":2127,"title":{},"content":{"395":{}}}],["hash(data",{"_index":2126,"title":{},"content":{"395":{}}}],["hash(encode(pub_key",{"_index":973,"title":{},"content":{"210":{}}}],["hash/1",{"_index":2372,"title":{"468":{}},"content":{}}],["hash/2",{"_index":2373,"title":{"469":{}},"content":{"468":{}}}],["hash_typ",{"_index":764,"title":{},"content":{"190":{},"191":{},"195":{},"196":{},"206":{}}}],["hashalg",{"_index":1286,"title":{},"content":{"273":{}}}],["hashalgo",{"_index":3644,"title":{},"content":{"802":{}}}],["hashedpath",{"_index":922,"title":{},"content":{"201":{}}}],["hashfunct",{"_index":3421,"title":{},"content":{"753":{}}}],["hashrat",{"_index":2865,"title":{},"content":{"621":{}}}],["hashtosign",{"_index":1328,"title":{"262":{},"280":{}},"content":{"249":{},"261":{}}}],["hasn't",{"_index":1711,"title":{},"content":{"318":{}}}],["have",{"_index":1182,"title":{},"content":{"271":{},"647":{},"683":{},"815":{}}}],["haystack",{"_index":2169,"title":{},"content":{"416":{},"434":{}}}],["header",{"_index":307,"title":{},"content":{"80":{},"271":{},"486":{},"488":{},"489":{},"763":{}}}],["health",{"_index":3152,"title":{},"content":{"682":{}}}],["heart",{"_index":3183,"title":{},"content":{"683":{}}}],["heartbeat",{"_index":1117,"title":{"220":{}},"content":{}}],["heavi",{"_index":1502,"title":{},"content":{"287":{}}}],["held",{"_index":1968,"title":{},"content":{"369":{},"855":{},"858":{}}}],["hellmen",{"_index":1338,"title":{},"content":{"281":{}}}],["hello",{"_index":1866,"title":{"373":{}},"content":{"352":{},"354":{},"363":{},"373":{},"392":{},"396":{},"404":{},"407":{},"555":{}}}],["help",{"_index":519,"title":{"576":{},"617":{}},"content":{"182":{},"210":{},"216":{},"230":{},"290":{},"292":{},"328":{},"329":{},"330":{},"334":{},"342":{},"343":{},"413":{},"555":{},"576":{},"617":{},"621":{},"632":{},"643":{},"649":{},"726":{},"730":{},"753":{},"777":{},"833":{},"848":{}}}],["helper",{"_index":1102,"title":{},"content":{"232":{},"778":{}}}],["henc",{"_index":702,"title":{},"content":{"190":{},"191":{},"211":{},"273":{},"349":{},"369":{},"656":{},"695":{},"723":{}}}],["here",{"_index":975,"title":{},"content":{"214":{},"290":{},"291":{},"298":{},"299":{},"348":{},"359":{},"371":{},"386":{},"407":{},"411":{},"493":{},"513":{},"570":{},"571":{},"643":{},"756":{},"760":{},"775":{},"777":{},"778":{},"839":{}}}],["here'",{"_index":1921,"title":{},"content":{"359":{},"371":{},"584":{},"613":{},"734":{},"735":{}}}],["heritag",{"_index":3137,"title":{},"content":{"680":{}}}],["heurist",{"_index":1591,"title":{"266":{},"709":{}},"content":{"265":{},"618":{},"620":{},"622":{},"641":{},"651":{},"675":{},"682":{},"717":{}}}],["hex",{"_index":55,"title":{"151":{}},"content":{"18":{},"19":{},"21":{},"22":{},"46":{},"47":{},"64":{},"65":{},"95":{},"96":{},"151":{},"205":{},"206":{},"209":{},"231":{},"243":{},"393":{},"419":{},"461":{},"465":{},"466":{}}}],["hexadecim",{"_index":113,"title":{"353":{}},"content":{"28":{},"149":{},"151":{},"231":{},"353":{},"354":{},"419":{},"472":{},"518":{},"519":{},"520":{}}}],["hid",{"_index":634,"title":{},"content":{"189":{}}}],["hidden",{"_index":2572,"title":{},"content":{"515":{}}}],["hierarch",{"_index":894,"title":{},"content":{"200":{}}}],["hierarchi",{"_index":1201,"title":{},"content":{"273":{}}}],["hierarchy6",{"_index":1297,"title":{},"content":{"273":{}}}],["hierarchy:tpma_object_restrict",{"_index":1239,"title":{},"content":{"273":{}}}],["high",{"_index":1016,"title":{},"content":{"216":{},"222":{},"300":{},"620":{},"622":{},"668":{},"672":{},"686":{},"720":{},"723":{},"724":{},"854":{}}}],["higher",{"_index":2975,"title":{},"content":{"650":{},"666":{},"776":{}}}],["highest",{"_index":2823,"title":{},"content":{"620":{},"657":{},"723":{}}}],["highlight",{"_index":3524,"title":{},"content":{"837":{},"839":{},"846":{},"847":{}}}],["hint",{"_index":2569,"title":{},"content":{"514":{},"816":{}}}],["his/her",{"_index":2947,"title":{},"content":{"695":{}}}],["histori",{"_index":1402,"title":{"769":{}},"content":{"251":{},"338":{},"554":{},"617":{},"633":{},"764":{},"769":{},"770":{},"771":{}}}],["hive",{"_index":3606,"title":{},"content":{"778":{}}}],["hmac",{"_index":747,"title":{},"content":{"190":{},"191":{},"201":{},"472":{}}}],["hmac(authkey",{"_index":745,"title":{},"content":{"190":{},"191":{}}}],["hmac/1",{"_index":2378,"title":{"470":{}},"content":{}}],["hmac/2",{"_index":2379,"title":{"471":{}},"content":{"470":{}}}],["hmac/3",{"_index":2380,"title":{"472":{}},"content":{"471":{}}}],["hmac256(key",{"_index":951,"title":{},"content":{"202":{}}}],["hold",{"_index":1491,"title":{},"content":{"268":{},"286":{},"319":{},"349":{},"564":{},"853":{},"858":{}}}],["holm",{"_index":2194,"title":{},"content":{"421":{}}}],["home",{"_index":3459,"title":{},"content":{"750":{}}}],["hood",{"_index":3383,"title":{},"content":{"727":{}}}],["hopefulli",{"_index":2548,"title":{},"content":{"412":{}}}],["host",{"_index":117,"title":{"584":{},"739":{},"830":{}},"content":{"28":{},"343":{},"412":{},"492":{},"584":{},"642":{},"644":{},"660":{},"684":{},"717":{},"720":{},"721":{},"723":{},"724":{},"725":{},"727":{},"738":{},"739":{},"740":{},"746":{},"752":{},"753":{},"754":{}}}],["hot",{"_index":1044,"title":{},"content":{"216":{},"660":{},"773":{}}}],["hour",{"_index":2082,"title":{},"content":{"375":{},"401":{},"562":{},"600":{}}}],["hrt",{"_index":1166,"title":{"638":{},"639":{}},"content":{"239":{},"269":{},"639":{}}}],["hsm",{"_index":2895,"title":{},"content":{"634":{}}}],["htlc",{"_index":2723,"title":{"602":{},"853":{}},"content":{"593":{},"602":{},"606":{},"607":{},"768":{},"853":{},"854":{},"858":{},"859":{}}}],["html",{"_index":3299,"title":{},"content":{"717":{},"725":{},"753":{}}}],["http",{"_index":1784,"title":{"484":{}},"content":{"336":{},"338":{},"488":{},"489":{},"726":{},"754":{},"756":{},"785":{}}}],["http.fetch/1",{"_index":2559,"title":{},"content":{"524":{}}}],["http.fetch_many/1",{"_index":2560,"title":{},"content":{"524":{}}}],["http.request(\"https://fakerapi.it/api/v1/addresses?_quantity=1&_seed=watermelon",{"_index":2434,"title":{},"content":{"488":{}}}],["http.request_mani",{"_index":2449,"title":{},"content":{"489":{}}}],["http://127.0.0.1:4000",{"_index":3462,"title":{},"content":{"759":{}}}],["http://localhost:4000/explorer/transaction/{type_your_address_in_hexadecim",{"_index":2590,"title":{},"content":{"510":{}}}],["http://localhost:4000/faucet",{"_index":2589,"title":{},"content":{"510":{}}}],["https://aeweb.archethic.net",{"_index":3446,"title":{},"content":{"743":{}}}],["https://app.uniswap.org",{"_index":2779,"title":{},"content":{"613":{}}}],["https://bridge.archethic.net",{"_index":2667,"title":{},"content":{"561":{}}}],["https://bridge.testnet.archethic.net",{"_index":2731,"title":{},"content":{"594":{},"760":{}}}],["https://chainlist.org/chain/11155111",{"_index":2761,"title":{},"content":{"612":{}}}],["https://chainlist.org/chain/80001",{"_index":2768,"title":{},"content":{"612":{}}}],["https://chainlist.org/chain/97",{"_index":2764,"title":{},"content":{"612":{}}}],["https://fakerapi.it/api/v1/users?_quantity=1&_gender=female&_seed=tomato",{"_index":2451,"title":{},"content":{"489":{}}}],["https://fakerapi.it/api/v1/users?_quantity=1&_gender=male&_seed=cucumb",{"_index":2450,"title":{},"content":{"489":{}}}],["https://github.com/archeth",{"_index":2581,"title":{},"content":{"509":{},"743":{},"757":{},"760":{},"815":{},"834":{}}}],["https://mainnet.archethic.net",{"_index":3415,"title":{},"content":{"742":{},"759":{}}}],["https://mainnet.archethic.net/api/web_hosting/0c19fd13......../image.jpg",{"_index":3440,"title":{},"content":{"754":{}}}],["https://metamask.zendesk.com/hc/en",{"_index":2688,"title":{},"content":{"570":{}}}],["https://mobiskill.fr/blog/conseil",{"_index":3566,"title":{},"content":{"775":{}}}],["https://mumbai.polygonscan.com",{"_index":2770,"title":{},"content":{"612":{}}}],["https://pancakeswap.finance/liquidity?chain=bsctestnet",{"_index":2782,"title":{},"content":{"613":{}}}],["https://playground.archethic.net",{"_index":2513,"title":{},"content":{"411":{}}}],["https://sepolia.etherscan.io",{"_index":2763,"title":{},"content":{"612":{}}}],["https://testnet.archethic.net",{"_index":2544,"title":{},"content":{"412":{},"511":{},"584":{},"759":{}}}],["https://testnet.archethic.net/api/web_hosting/00007d9167",{"_index":3472,"title":{},"content":{"759":{}}}],["https://testnet.archethic.net/explorer/transaction/000013c531",{"_index":3469,"title":{},"content":{"759":{}}}],["https://testnet.archethic.net/explorer/transaction/0000a78a35",{"_index":3470,"title":{},"content":{"759":{}}}],["https://testnet.archethic.net/explorer/transaction/0000f1126",{"_index":3471,"title":{},"content":{"759":{}}}],["https://testnet.bscscan.com",{"_index":2767,"title":{},"content":{"612":{}}}],["https://www.archethic.net/privaci",{"_index":2793,"title":{},"content":{"588":{}}}],["https://www.coindesk.com/learn/how",{"_index":2690,"title":{},"content":{"571":{}}}],["https://www.educative.io/answers/paramet",{"_index":1969,"title":{},"content":{"369":{}}}],["huge",{"_index":3072,"title":{},"content":{"657":{},"775":{}}}],["human",{"_index":428,"title":{},"content":{"165":{},"348":{},"644":{},"658":{}}}],["humanitarian",{"_index":3136,"title":{"680":{}},"content":{}}],["hundr",{"_index":3243,"title":{},"content":{"708":{}}}],["hybrid",{"_index":2934,"title":{},"content":{"639":{},"670":{},"738":{}}}],["hypergeometr",{"_index":1601,"title":{},"content":{"268":{},"623":{}}}],["hypergeomtr",{"_index":1600,"title":{"268":{}},"content":{}}],["i.",{"_index":832,"title":{},"content":{"194":{},"195":{},"196":{},"336":{},"621":{},"631":{},"632":{},"717":{}}}],["i/o",{"_index":1444,"title":{"453":{},"454":{},"455":{},"457":{},"458":{},"459":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"475":{},"485":{},"486":{},"487":{},"488":{},"489":{},"491":{}},"content":{"283":{},"285":{},"287":{},"289":{},"363":{},"364":{},"413":{},"687":{}}}],["ico",{"_index":2056,"title":{"374":{},"375":{},"389":{}},"content":{"374":{},"375":{}}}],["ico_contract",{"_index":2083,"title":{},"content":{"375":{}}}],["icon",{"_index":2683,"title":{},"content":{"567":{},"587":{},"745":{},"749":{}}}],["id",{"_index":212,"title":{},"content":{"49":{},"61":{},"70":{},"76":{},"89":{},"127":{},"141":{},"209":{},"244":{},"329":{},"331":{},"475":{},"612":{},"736":{},"774":{},"777":{},"778":{},"838":{}}}],["idea",{"_index":2956,"title":{},"content":{"661":{},"696":{},"849":{}}}],["ideal",{"_index":3326,"title":{},"content":{"713":{}}}],["idempot",{"_index":2442,"title":{},"content":{"488":{}}}],["ident",{"_index":1832,"title":{"643":{},"658":{},"694":{},"695":{}},"content":{"346":{},"488":{},"621":{},"637":{},"643":{},"644":{},"647":{},"649":{},"650":{},"679":{},"682":{},"695":{},"696":{},"795":{},"813":{}}}],["identi",{"_index":2954,"title":{},"content":{"696":{}}}],["identif",{"_index":214,"title":{"676":{}},"content":{"49":{},"127":{},"157":{},"197":{},"209":{},"290":{},"679":{},"682":{}}}],["identifi",{"_index":873,"title":{},"content":{"197":{},"224":{},"227":{},"231":{},"244":{},"289":{},"290":{},"291":{},"293":{},"320":{},"382":{},"461":{},"465":{},"466":{},"632":{},"637":{},"644":{},"656":{},"658":{},"682":{},"695":{},"696":{},"777":{},"804":{},"807":{}}}],["identitifi",{"_index":2966,"title":{},"content":{"649":{}}}],["idl",{"_index":1722,"title":{},"content":{"320":{}}}],["ie",{"_index":1451,"title":{},"content":{"284":{},"379":{},"839":{}}}],["ieee",{"_index":408,"title":{},"content":{"147":{}}}],["iex",{"_index":2587,"title":{},"content":{"509":{}}}],["ignor",{"_index":3071,"title":{},"content":{"657":{}}}],["ii",{"_index":2523,"title":{"406":{}},"content":{}}],["imag",{"_index":1623,"title":{"584":{}},"content":{"295":{},"296":{},"553":{},"584":{},"717":{},"725":{},"733":{},"735":{},"753":{}}}],["image.jpg",{"_index":3436,"title":{},"content":{"753":{}}}],["imagin",{"_index":2891,"title":{},"content":{"633":{}}}],["immedi",{"_index":3037,"title":{},"content":{"644":{},"660":{}}}],["immediately(sync",{"_index":603,"title":{},"content":{"188":{}}}],["immun",{"_index":2900,"title":{},"content":{"636":{}}}],["immut",{"_index":1472,"title":{},"content":{"285":{},"286":{},"287":{},"657":{}}}],["impact",{"_index":2777,"title":{},"content":{"613":{},"639":{},"641":{},"644":{},"660":{}}}],["imper",{"_index":1860,"title":{},"content":{"352":{}}}],["implement",{"_index":912,"title":{"239":{},"269":{},"638":{}},"content":{"201":{},"239":{},"269":{},"284":{},"290":{},"298":{},"299":{},"300":{},"309":{},"323":{},"329":{},"347":{},"636":{},"637":{},"638":{},"641":{},"679":{},"703":{},"730":{},"774":{},"775":{},"785":{}}}],["implementationtpm",{"_index":1163,"title":{},"content":{"298":{}}}],["impli",{"_index":2837,"title":{},"content":{"622":{}}}],["import",{"_index":484,"title":{},"content":{"181":{},"274":{},"290":{},"294":{},"330":{},"588":{},"590":{},"637":{},"721":{},"728":{}}}],["impos",{"_index":2571,"title":{},"content":{"514":{},"642":{}}}],["imposs",{"_index":1931,"title":{},"content":{"361":{},"494":{}}}],["improv",{"_index":1827,"title":{"712":{}},"content":{"346":{},"552":{},"576":{},"617":{},"642":{},"645":{}}}],["in",{"_index":696,"title":{},"content":{"190":{},"191":{},"194":{},"195":{},"196":{}}}],["in?/2",{"_index":2164,"title":{"416":{},"434":{}},"content":{}}],["inadvertedli",{"_index":1963,"title":{},"content":{"369":{}}}],["incent",{"_index":3039,"title":{"662":{}},"content":{"644":{}}}],["incentiv",{"_index":3032,"title":{},"content":{"644":{},"714":{}}}],["includ",{"_index":0,"title":{"1":{},"770":{}},"content":{"1":{},"2":{},"11":{},"21":{},"28":{},"34":{},"49":{},"52":{},"61":{},"70":{},"76":{},"89":{},"95":{},"117":{},"124":{},"127":{},"141":{},"146":{},"181":{},"190":{},"271":{},"307":{},"336":{},"384":{},"593":{},"599":{},"610":{},"631":{},"639":{},"705":{},"709":{},"745":{},"747":{},"760":{},"763":{},"785":{},"858":{}}}],["include.if",{"_index":9,"title":{},"content":{"2":{}}}],["inclus",{"_index":3031,"title":{},"content":{"644":{},"658":{}}}],["incom",{"_index":1737,"title":{},"content":{"322":{},"350":{},"389":{},"391":{},"392":{},"393":{},"398":{},"399":{},"620":{},"669":{},"671":{}}}],["inconsist",{"_index":2863,"title":{},"content":{"625":{},"717":{}}}],["incorpor",{"_index":2726,"title":{},"content":{"593":{}}}],["increas",{"_index":823,"title":{},"content":{"191":{},"202":{},"272":{},"637":{},"641":{},"651":{},"652":{},"656":{},"720":{},"855":{}}}],["increasingli",{"_index":3621,"title":{},"content":{"783":{}}}],["increment",{"_index":1306,"title":{"280":{}},"content":{"252":{},"275":{},"292":{},"376":{},"506":{}}}],["incrementindex",{"_index":1403,"title":{"252":{}},"content":{}}],["inde",{"_index":3400,"title":{},"content":{"740":{},"778":{}}}],["indeped",{"_index":3076,"title":{},"content":{"661":{}}}],["independ",{"_index":1757,"title":{},"content":{"329":{},"622":{}}}],["index",{"_index":657,"title":{"225":{},"228":{},"290":{}},"content":{"189":{},"190":{},"191":{},"200":{},"201":{},"224":{},"225":{},"227":{},"228":{},"229":{},"240":{},"244":{},"246":{},"248":{},"252":{},"254":{},"255":{},"258":{},"261":{},"263":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"286":{},"287":{},"290":{},"291":{},"292":{},"293":{},"294":{},"298":{},"338":{},"380":{},"432":{},"464":{},"497":{},"520":{},"651":{},"758":{},"786":{},"803":{},"804":{},"805":{},"806":{},"807":{},"835":{},"836":{},"847":{}}}],["index.html",{"_index":3422,"title":{},"content":{"753":{}}}],["index/summari",{"_index":1564,"title":{},"content":{"290":{}}}],["index_yk",{"_index":1391,"title":{},"content":{"247":{},"251":{}}}],["indic",{"_index":1229,"title":{},"content":{"273":{},"327":{},"339":{},"413":{},"631":{},"641":{},"650":{},"712":{},"738":{},"778":{}}}],["individu",{"_index":3156,"title":{},"content":{"682":{},"683":{},"713":{}}}],["industri",{"_index":1004,"title":{},"content":{"216":{},"649":{},"657":{},"695":{}}}],["infinit",{"_index":2960,"title":{},"content":{"647":{}}}],["info",{"_index":539,"title":{},"content":{"183":{},"188":{},"189":{},"190":{},"191":{},"202":{},"220":{},"271":{},"273":{},"277":{},"281":{},"289":{},"319":{},"320":{},"327":{},"334":{},"343":{},"346":{},"347":{},"356":{},"360":{},"363":{},"364":{},"370":{},"376":{},"378":{},"395":{},"499":{},"501":{},"519":{},"621":{},"633":{},"652":{},"724":{},"733":{},"741":{},"742":{},"745":{},"760":{},"766":{},"778":{},"836":{},"839":{}}}],["inform",{"_index":197,"title":{"749":{}},"content":{"52":{},"124":{},"211":{},"216":{},"235":{},"237":{},"238":{},"271":{},"285":{},"290":{},"291":{},"293":{},"294":{},"319":{},"320":{},"322":{},"324":{},"336":{},"337":{},"338":{},"340":{},"554":{},"576":{},"578":{},"582":{},"588":{},"589":{},"590":{},"599":{},"607":{},"617":{},"618":{},"625":{},"631":{},"632":{},"633":{},"645":{},"648":{},"650":{},"652":{},"660":{},"664":{},"671":{},"672":{},"674":{},"692":{},"693":{},"706":{},"745":{},"746":{},"749":{},"761":{},"763":{},"765":{},"767":{},"777":{},"778":{},"783":{},"784":{},"786":{},"804":{},"807":{},"813":{},"815":{},"817":{},"821":{},"836":{},"839":{},"859":{}}}],["infrar",{"_index":3178,"title":{},"content":{"683":{}}}],["infrastructur",{"_index":3324,"title":{},"content":{"713":{}}}],["ingest",{"_index":1000,"title":{},"content":{"216":{}}}],["inher",{"_index":2899,"title":{},"content":{"636":{}}}],["inherit",{"_index":1825,"title":{"379":{}},"content":{"346":{},"350":{},"377":{},"379":{},"380":{},"385":{},"388":{},"389":{},"392":{},"393":{},"494":{}}}],["initi",{"_index":550,"title":{"374":{},"766":{}},"content":{"183":{},"216":{},"235":{},"236":{},"237":{},"240":{},"274":{},"276":{},"278":{},"295":{},"301":{},"413":{},"506":{},"589":{},"639":{},"682":{},"745":{},"765":{},"858":{},"859":{}}}],["initializetpm(int",{"_index":1314,"title":{"276":{}},"content":{}}],["initializeyk",{"_index":1347,"title":{"240":{}},"content":{}}],["initiziali",{"_index":1143,"title":{"236":{}},"content":{}}],["inject",{"_index":2913,"title":{},"content":{"637":{},"775":{}}}],["inmemori",{"_index":1477,"title":{},"content":{"285":{},"305":{}}}],["inner",{"_index":1181,"title":{},"content":{"271":{}}}],["innov",{"_index":2816,"title":{"620":{}},"content":{"643":{},"721":{}}}],["inpublicec",{"_index":1292,"title":{},"content":{"273":{}}}],["inpublicec.i",{"_index":1304,"title":{},"content":{"274":{}}}],["inpublicec.x",{"_index":1303,"title":{},"content":{"274":{}}}],["inpublicecc",{"_index":1204,"title":{},"content":{"273":{}}}],["input",{"_index":241,"title":{},"content":{"64":{},"76":{},"139":{},"141":{},"188":{},"223":{},"226":{},"244":{},"246":{},"248":{},"273":{},"346":{},"349":{},"389":{},"510":{},"524":{},"526":{},"686":{},"765":{},"850":{}}}],["input/outputs:transact",{"_index":3208,"title":{},"content":{"687":{}}}],["insecur",{"_index":3344,"title":{},"content":{"723":{}}}],["insert",{"_index":1587,"title":{},"content":{"294":{},"555":{},"589":{},"590":{},"859":{}}}],["insid",{"_index":1009,"title":{},"content":{"216":{},"305":{},"337":{},"380":{},"633":{},"663":{}}}],["inspir",{"_index":896,"title":{},"content":{"200":{},"201":{},"668":{}}}],["instal",{"_index":552,"title":{"184":{},"509":{},"571":{},"834":{}},"content":{"183":{},"184":{},"509":{},"571":{},"588":{},"657":{},"757":{},"760":{},"775":{},"778":{},"782":{},"834":{}}}],["instanc",{"_index":864,"title":{},"content":{"212":{},"217":{},"290":{},"508":{},"509":{},"693":{},"700":{},"724":{},"725":{},"727":{}}}],["instantli",{"_index":3135,"title":{},"content":{"679":{}}}],["instead",{"_index":1466,"title":{},"content":{"284":{},"348":{},"371":{},"437":{},"488":{},"574":{},"607":{},"616":{},"650":{},"725":{},"738":{},"751":{},"853":{}}}],["instruct",{"_index":556,"title":{"184":{},"782":{}},"content":{"348":{},"477":{},"613":{},"757":{}}}],["insuffici",{"_index":3506,"title":{},"content":{"768":{}}}],["int",{"_index":65,"title":{"153":{},"272":{},"279":{},"280":{}},"content":{"11":{},"12":{},"15":{},"16":{},"25":{},"26":{},"34":{},"35":{},"37":{},"38":{},"49":{},"50":{},"58":{},"59":{},"61":{},"62":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"76":{},"77":{},"80":{},"81":{},"89":{},"90":{},"92":{},"93":{},"95":{},"96":{},"153":{},"188":{},"189":{},"190":{},"191":{},"776":{}}}],["integ",{"_index":419,"title":{},"content":{"155":{},"161":{},"188":{},"272":{},"352":{},"481":{},"488":{},"489":{},"493":{},"497":{}}}],["integr",{"_index":341,"title":{"267":{},"739":{}},"content":{"95":{},"202":{},"319":{},"593":{},"619":{},"644":{},"658":{},"661":{},"682":{},"683":{},"695":{},"700":{},"717":{},"726":{},"785":{},"815":{}}}],["intend",{"_index":651,"title":{},"content":{"189":{},"717":{}}}],["intens",{"_index":1052,"title":{},"content":{"217":{}}}],["intent",{"_index":3059,"title":{},"content":{"654":{},"748":{}}}],["intepret",{"_index":1841,"title":{},"content":{"348":{}}}],["interact",{"_index":124,"title":{"779":{}},"content":{"28":{},"181":{},"217":{},"347":{},"349":{},"598":{},"649":{},"760":{},"761":{},"775":{},"777":{},"779":{},"785":{},"815":{},"833":{},"834":{}}}],["interest",{"_index":1489,"title":{},"content":{"286":{},"288":{},"334":{},"461":{},"462":{},"464":{},"465":{},"466":{},"645":{},"695":{}}}],["interfac",{"_index":524,"title":{"757":{}},"content":{"182":{},"242":{},"353":{},"515":{},"576":{},"679":{},"726":{},"775":{},"785":{},"815":{},"834":{},"850":{}}}],["intermediari",{"_index":2724,"title":{},"content":{"593":{},"602":{},"853":{}}}],["intern",{"_index":1713,"title":{"363":{}},"content":{"305":{},"345":{},"347":{},"349":{},"362":{},"363":{},"364":{},"413":{},"488":{},"679":{},"779":{}}}],["internet",{"_index":3130,"title":{},"content":{"679":{},"760":{}}}],["interoper",{"_index":1363,"title":{},"content":{"244":{},"578":{},"593":{},"643":{},"646":{},"695":{}}}],["interpol",{"_index":1865,"title":{},"content":{"352":{}}}],["interpret",{"_index":1695,"title":{"348":{},"848":{}},"content":{"310":{},"314":{},"345":{},"348":{},"351":{},"717":{},"733":{},"833":{}}}],["interrog",{"_index":2827,"title":{},"content":{"620":{},"668":{}}}],["interrupt",{"_index":3509,"title":{},"content":{"771":{}}}],["interv",{"_index":1100,"title":{"401":{},"407":{}},"content":{"232":{},"320":{},"346":{},"375":{},"388":{},"391":{},"401":{},"403":{},"404":{},"407":{},"409":{},"525":{},"526":{},"691":{},"693":{},"699":{},"700":{}}}],["intervent",{"_index":3624,"title":{},"content":{"784":{}}}],["intrins",{"_index":3181,"title":{},"content":{"683":{}}}],["introduc",{"_index":1810,"title":{},"content":{"345":{},"353":{},"382":{},"506":{},"607":{},"670":{},"756":{},"855":{},"859":{}}}],["introduct",{"_index":438,"title":{"181":{},"618":{},"660":{}},"content":{}}],["invalid",{"_index":24,"title":{},"content":{"9":{},"106":{},"142":{},"157":{},"163":{},"327":{},"521":{}}}],["invalid_transact",{"_index":20,"title":{},"content":{"8":{}}}],["invent",{"_index":3139,"title":{},"content":{"680":{}}}],["inventori",{"_index":3133,"title":{},"content":{"679":{}}}],["investig",{"_index":2854,"title":{},"content":{"623":{}}}],["invit",{"_index":2789,"title":{},"content":{"587":{},"588":{}}}],["invoc",{"_index":1967,"title":{},"content":{"369":{}}}],["involv",{"_index":577,"title":{},"content":{"186":{},"285":{},"606":{},"607":{},"625":{},"637":{},"639":{},"645":{},"682":{},"703":{},"765":{},"853":{},"855":{},"858":{}}}],["invovl",{"_index":1493,"title":{},"content":{"286":{},"308":{}}}],["io",{"_index":3558,"title":{},"content":{"775":{},"778":{},"785":{}}}],["io_asynch_repli",{"_index":633,"title":{},"content":{"189":{}}}],["io_exchange_with_code(sw_ok",{"_index":621,"title":{},"content":{"188":{}}}],["ip",{"_index":132,"title":{},"content":{"25":{},"37":{},"110":{},"235":{},"312":{},"336":{},"338":{},"705":{},"737":{}}}],["ip/port/key",{"_index":3109,"title":{},"content":{"672":{}}}],["irrefut",{"_index":1849,"title":{},"content":{"349":{}}}],["is_same?/2",{"_index":2393,"title":{"477":{}},"content":{}}],["is_valid?/1",{"_index":2299,"title":{"449":{},"478":{}},"content":{}}],["isn't",{"_index":2497,"title":{},"content":{"400":{}}}],["isol",{"_index":1013,"title":{},"content":{"216":{},"234":{}}}],["issu",{"_index":1599,"title":{"572":{},"614":{}},"content":{"267":{},"347":{},"348":{},"349":{},"356":{},"390":{},"552":{},"554":{},"618":{},"620":{},"634":{},"643":{},"686":{},"690":{},"695":{},"727":{},"766":{},"775":{},"849":{}}}],["issuer",{"_index":3307,"title":{},"content":{"717":{}}}],["it'",{"_index":1093,"title":{},"content":{"231":{},"281":{},"286":{},"305":{},"320":{},"353":{},"371":{},"382":{},"407":{},"518":{},"552":{},"583":{},"630":{},"647":{},"650":{},"656":{},"657":{},"664":{},"668":{},"716":{},"724":{},"727":{},"734":{}}}],["item",{"_index":2591,"title":{},"content":{"523":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"656":{}}}],["iter",{"_index":2213,"title":{},"content":{"428":{}}}],["itself",{"_index":863,"title":{},"content":{"212":{},"287":{},"564":{},"644":{},"648":{},"657":{},"660":{},"695":{},"784":{}}}],["iv",{"_index":740,"title":{},"content":{"190":{},"191":{},"202":{}}}],["i’m",{"_index":2706,"title":{"579":{},"609":{}},"content":{}}],["javascript",{"_index":1802,"title":{"343":{}},"content":{"343":{},"753":{},"785":{},"815":{}}}],["jerri",{"_index":1916,"title":{},"content":{"359":{}}}],["job",{"_index":2482,"title":{},"content":{"499":{},"625":{}}}],["joe",{"_index":2252,"title":{},"content":{"439":{}}}],["john",{"_index":1896,"title":{},"content":{"355":{},"445":{},"555":{}}}],["join",{"_index":1137,"title":{"705":{}},"content":{"235":{},"236":{},"237":{},"312":{},"439":{},"650":{},"666":{},"702":{},"705":{},"717":{},"817":{}}}],["join/2",{"_index":2248,"title":{"439":{}},"content":{}}],["joins/rejoin",{"_index":3108,"title":{},"content":{"672":{}}}],["js",{"_index":3611,"title":{},"content":{"779":{},"785":{},"815":{}}}],["json",{"_index":367,"title":{"444":{}},"content":{"106":{},"142":{},"157":{},"163":{},"364":{},"376":{},"384":{},"407":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"493":{},"649":{},"731":{},"734":{},"785":{}}}],["json.is_valid?(\"\\\"str",{"_index":2301,"title":{},"content":{"449":{}}}],["json.is_valid?(\"str",{"_index":2300,"title":{},"content":{"449":{}}}],["json.parse(\"1",{"_index":2294,"title":{},"content":{"448":{}}}],["json.parse(\"[1,2,3",{"_index":2296,"title":{},"content":{"448":{}}}],["json.parse(\"\\\"str",{"_index":2295,"title":{},"content":{"448":{}}}],["json.parse(\"{\\\"foo\\\":\\\"bar",{"_index":2297,"title":{},"content":{"448":{}}}],["json.path_extract",{"_index":2281,"title":{},"content":{"445":{}}}],["json.path_extract(contract.cont",{"_index":2101,"title":{},"content":{"376":{}}}],["json.path_extract(next.cont",{"_index":2036,"title":{},"content":{"380":{}}}],["json.path_extract(previous.cont",{"_index":2034,"title":{},"content":{"380":{}}}],["json.path_extract(transaction.cont",{"_index":1980,"title":{},"content":{"370":{}}}],["json.path_match?(\"{\\\"1622541930\\\":{\\\"uco\\\":{\\\"eur\\\":0.176922,\\\"usd\\\":0.21642",{"_index":2285,"title":{},"content":{"446":{}}}],["json.path_match?(next.cont",{"_index":2032,"title":{},"content":{"380":{}}}],["json.path_match?(transaction.cont",{"_index":2048,"title":{},"content":{"384":{}}}],["json.to_string(\"str",{"_index":2289,"title":{},"content":{"447":{}}}],["json.to_string(1",{"_index":2288,"title":{},"content":{"447":{}}}],["json.to_string([1,2,3",{"_index":2290,"title":{},"content":{"447":{}}}],["json.to_string([count",{"_index":2553,"title":{},"content":{"506":{}}}],["json.to_string(foo",{"_index":2291,"title":{},"content":{"447":{}}}],["json_extract(\"$.uco.usd",{"_index":2137,"title":{},"content":{"395":{}}}],["json_extract(data",{"_index":2136,"title":{},"content":{"395":{}}}],["json_match",{"_index":2133,"title":{},"content":{"395":{}}}],["json_match?(\"$.uco.usd",{"_index":2135,"title":{},"content":{"395":{}}}],["json_path",{"_index":2031,"title":{},"content":{"380":{}}}],["jsonpath",{"_index":2134,"title":{},"content":{"395":{},"444":{}}}],["jsonrpc",{"_index":3286,"title":{},"content":{"736":{}}}],["kdf",{"_index":1290,"title":{},"content":{"273":{}}}],["keccak",{"_index":959,"title":{},"content":{"206":{}}}],["keccak256",{"_index":2377,"title":{},"content":{"469":{},"473":{}}}],["keep",{"_index":1387,"title":{},"content":{"247":{},"248":{},"285":{},"287":{},"290":{},"356":{},"633":{},"670":{},"689":{},"696":{},"755":{},"760":{},"775":{},"778":{}}}],["kept",{"_index":3297,"title":{},"content":{"716":{}}}],["key",{"_index":47,"title":{"189":{},"194":{},"201":{},"209":{},"326":{},"341":{},"601":{},"628":{},"631":{},"647":{},"852":{}},"content":{"18":{},"21":{},"28":{},"46":{},"49":{},"52":{},"95":{},"123":{},"124":{},"127":{},"163":{},"181":{},"186":{},"189":{},"190":{},"191":{},"194":{},"196":{},"197":{},"198":{},"200":{},"201":{},"202":{},"207":{},"209":{},"212":{},"213":{},"231":{},"240":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"258":{},"259":{},"261":{},"262":{},"263":{},"264":{},"271":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"285":{},"286":{},"287":{},"289":{},"290":{},"291":{},"292":{},"294":{},"298":{},"310":{},"312":{},"325":{},"326":{},"327":{},"331":{},"336":{},"338":{},"339":{},"340":{},"341":{},"346":{},"353":{},"361":{},"377":{},"380":{},"393":{},"396":{},"412":{},"424":{},"425":{},"426":{},"427":{},"428":{},"430":{},"433":{},"455":{},"461":{},"465":{},"466":{},"471":{},"472":{},"499":{},"522":{},"621":{},"624":{},"628":{},"629":{},"631":{},"632":{},"633":{},"636":{},"637":{},"639":{},"641":{},"643":{},"644":{},"647":{},"648":{},"649":{},"650":{},"666":{},"672":{},"682":{},"683":{},"687":{},"692":{},"693":{},"696":{},"705":{},"716":{},"717":{},"741":{},"742":{},"745":{},"747":{},"760":{},"777":{},"778":{},"783":{},"784":{},"786":{},"803":{},"805":{},"814":{},"837":{},"839":{}}}],["key(enc(aes_key",{"_index":934,"title":{},"content":{"202":{}}}],["key.pem",{"_index":3414,"title":{},"content":{"742":{}}}],["key/valu",{"_index":1531,"title":{},"content":{"289":{}}}],["key1",{"_index":1923,"title":{},"content":{"361":{},"425":{},"426":{},"427":{},"428":{},"430":{}}}],["key2",{"_index":1924,"title":{},"content":{"361":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{}}}],["key3",{"_index":2204,"title":{},"content":{"425":{},"426":{},"427":{}}}],["key_certificates[ykindex",{"_index":1371,"title":{},"content":{"244":{}}}],["key_slots[ykindex",{"_index":1380,"title":{},"content":{"245":{},"249":{},"250":{}}}],["keybits.a",{"_index":1280,"title":{},"content":{"273":{}}}],["keyboard",{"_index":3522,"title":{},"content":{"777":{},"778":{},"836":{}}}],["keychain",{"_index":847,"title":{"213":{},"646":{},"655":{},"826":{},"843":{},"844":{},"845":{}},"content":{"197":{},"200":{},"202":{},"211":{},"212":{},"213":{},"533":{},"534":{},"535":{},"584":{},"587":{},"588":{},"633":{},"646":{},"648":{},"649":{},"650":{},"655":{},"696":{},"726":{},"745":{},"759":{},"773":{},"774":{},"778":{},"785":{},"795":{},"797":{},"800":{},"813":{},"827":{},"833":{},"834":{},"843":{},"844":{},"845":{},"847":{}}}],["keychain'",{"_index":862,"title":{},"content":{"201":{},"212":{},"648":{},"778":{},"800":{}}}],["keychain/wallet",{"_index":2961,"title":{},"content":{"648":{}}}],["keychain_access",{"_index":3323,"title":{"827":{}},"content":{}}],["keychain_derive_address",{"_index":3648,"title":{"806":{}},"content":{}}],["keychain_derive_keypair",{"_index":3645,"title":{"803":{}},"content":{}}],["keyindex",{"_index":1199,"title":{"273":{},"276":{},"278":{},"279":{},"280":{},"281":{}},"content":{"278":{},"279":{},"280":{}}}],["keyindex+1",{"_index":1318,"title":{},"content":{"278":{}}}],["keypair",{"_index":712,"title":{},"content":{"190":{},"191":{},"637":{},"803":{}}}],["keys/1",{"_index":2211,"title":{"428":{}},"content":{}}],["keys:secret",{"_index":2480,"title":{},"content":{"499":{}}}],["keys:to",{"_index":2467,"title":{},"content":{"495":{},"497":{}}}],["keystor",{"_index":1159,"title":{"298":{},"299":{}},"content":{"297":{},"298":{},"299":{},"778":{}}}],["keytoasn",{"_index":1178,"title":{"271":{}},"content":{"271":{}}}],["keytyp",{"_index":1185,"title":{},"content":{"271":{}}}],["keyvalu",{"_index":1482,"title":{},"content":{"285":{}}}],["keyword",{"_index":1938,"title":{"366":{}},"content":{"362":{},"363":{},"369":{}}}],["kind",{"_index":1099,"title":{},"content":{"232":{},"287":{},"290":{},"294":{},"330":{},"346":{},"621":{},"633":{},"670":{},"708":{},"717":{},"787":{}}}],["knigg",{"_index":1660,"title":{},"content":{"295":{}}}],["know",{"_index":1537,"title":{"567":{}},"content":{"289":{},"290":{},"620":{},"628":{},"633":{},"672":{},"689":{},"707":{},"722":{},"754":{},"778":{}}}],["knowledg",{"_index":536,"title":{},"content":{"182":{},"552":{},"643":{},"668":{},"669":{},"682":{},"695":{}}}],["known",{"_index":992,"title":{},"content":{"216":{},"273":{},"326":{},"331":{},"471":{},"560":{},"621":{},"629":{},"672":{},"688":{},"853":{}}}],["kyc",{"_index":3535,"title":{},"content":{"773":{}}}],["lack",{"_index":3341,"title":{},"content":{"721":{}}}],["languag",{"_index":981,"title":{"350":{},"390":{}},"content":{"215":{},"216":{},"217":{},"352":{},"361":{},"362":{},"365":{},"390":{},"478":{},"554":{},"774":{},"775":{},"776":{},"778":{}}}],["last",{"_index":361,"title":{},"content":{"101":{},"107":{},"120":{},"201":{},"235":{},"266":{},"268":{},"285":{},"287":{},"290":{},"292":{},"294":{},"336":{},"338":{},"341":{},"347":{},"562":{},"600":{},"624":{},"661":{},"676":{},"677":{},"691":{},"692":{},"716":{},"778":{},"786":{},"836":{}}}],["lastnam",{"_index":1972,"title":{},"content":{"369":{},"399":{},"445":{}}}],["lastpublickey",{"_index":162,"title":{},"content":{"37":{}}}],["lasttransact",{"_index":262,"title":{"107":{}},"content":{"66":{},"107":{},"144":{}}}],["lasttransaction.address",{"_index":377,"title":{},"content":{"108":{}}}],["latenc",{"_index":994,"title":{},"content":{"216":{},"290":{},"319":{},"328":{},"330":{},"336":{},"639":{},"668":{},"692":{},"693":{}}}],["later",{"_index":1553,"title":{},"content":{"290":{},"555":{},"575":{},"579":{},"609":{},"683":{},"709":{},"717":{},"732":{},"768":{}}}],["latest",{"_index":358,"title":{},"content":{"115":{},"183":{},"290":{},"317":{},"371":{},"458":{},"459":{},"622":{},"703":{},"746":{},"755":{},"756":{},"760":{},"774":{}}}],["latter",{"_index":3342,"title":{},"content":{"723":{}}}],["launch",{"_index":1136,"title":{},"content":{"235":{},"282":{},"345":{},"588":{},"604":{},"661":{},"679":{},"778":{},"834":{},"855":{}}}],["law",{"_index":2840,"title":{},"content":{"623":{},"657":{}}}],["layer",{"_index":1512,"title":{},"content":{"288":{},"328":{},"330":{},"336":{},"620":{},"637":{},"663":{},"666":{},"673":{},"682":{},"729":{},"773":{}}}],["layer.thu",{"_index":2825,"title":{},"content":{"620":{}}}],["layout",{"_index":2631,"title":{},"content":{"554":{}}}],["lc",{"_index":697,"title":{},"content":{"190":{},"194":{},"195":{},"196":{}}}],["leak",{"_index":1175,"title":{},"content":{"270":{},"775":{}}}],["learn",{"_index":2612,"title":{},"content":{"553":{},"775":{}}}],["led",{"_index":1524,"title":{},"content":{"289":{}}}],["ledger",{"_index":61,"title":{"31":{},"187":{},"224":{},"227":{},"533":{}},"content":{"11":{},"28":{},"29":{},"31":{},"34":{},"55":{},"57":{},"61":{},"70":{},"86":{},"88":{},"95":{},"117":{},"181":{},"182":{},"183":{},"188":{},"189":{},"190":{},"209":{},"510":{},"533":{},"534":{},"535":{},"696":{},"717":{},"729":{},"736":{}}}],["ledger.token",{"_index":141,"title":{},"content":{"32":{}}}],["ledger.uco",{"_index":142,"title":{},"content":{"32":{}}}],["ledger_cli",{"_index":564,"title":{},"content":{"184":{},"185":{}}}],["ledgeroper",{"_index":143,"title":{"34":{}},"content":{"34":{},"72":{},"91":{},"95":{},"96":{},"154":{}}}],["ledgeroperations.fe",{"_index":151,"title":{},"content":{"35":{}}}],["ledgeroperations.transactionmov",{"_index":152,"title":{},"content":{"35":{}}}],["ledgeroperations.unspentoutput",{"_index":153,"title":{},"content":{"35":{}}}],["left",{"_index":2527,"title":{},"content":{"406":{},"412":{},"506":{},"554":{},"764":{},"778":{},"836":{}}}],["legaci",{"_index":2049,"title":{"385":{},"386":{}},"content":{}}],["len(ewk{aes}+ew{a",{"_index":835,"title":{},"content":{"195":{}}}],["len(txhash+ewk{aes}+ew_{a",{"_index":840,"title":{},"content":{"196":{}}}],["length",{"_index":600,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"204":{},"246":{},"289":{},"489":{},"632":{}}}],["less",{"_index":1530,"title":{"696":{}},"content":{"289":{},"488":{},"641":{},"696":{}}}],["let",{"_index":1536,"title":{},"content":{"289":{}}}],["let'",{"_index":2515,"title":{},"content":{"404":{},"407":{},"506":{},"526":{},"741":{}}}],["level",{"_index":1060,"title":{"267":{}},"content":{"222":{},"267":{},"300":{},"515":{},"620":{},"633":{},"672":{},"710":{},"854":{}}}],["leveldb",{"_index":1452,"title":{},"content":{"284":{}}}],["leverag",{"_index":989,"title":{},"content":{"216":{},"267":{},"290":{},"294":{},"299":{},"329":{},"345":{},"555":{},"564":{},"626":{},"652":{},"672":{},"697":{},"725":{},"727":{},"753":{},"754":{}}}],["lib",{"_index":3656,"title":{},"content":{"815":{}}}],["libj",{"_index":3630,"title":{},"content":{"785":{},"815":{}}}],["librari",{"_index":1167,"title":{"365":{},"413":{}},"content":{"239":{},"269":{},"356":{},"360":{},"361":{},"363":{},"364":{},"365":{},"413":{},"639":{},"775":{},"776":{},"777":{},"778":{},"779":{},"785":{},"815":{}}}],["licens",{"_index":3141,"title":{},"content":{"680":{}}}],["life",{"_index":1806,"title":{},"content":{"345":{}}}],["lifecycl",{"_index":1173,"title":{},"content":{"270":{},"753":{}}}],["lifelong",{"_index":3168,"title":{},"content":{"683":{}}}],["light",{"_index":3176,"title":{},"content":{"683":{}}}],["lightweight",{"_index":1010,"title":{},"content":{"216":{}}}],["like",{"_index":2796,"title":{},"content":{"588":{}}}],["limit",{"_index":82,"title":{},"content":{"15":{},"64":{},"139":{},"279":{},"403":{},"620":{},"674":{},"682":{},"745":{},"753":{},"785":{},"787":{}}}],["limitless",{"_index":2803,"title":{"641":{}},"content":{"618":{},"641":{}}}],["line",{"_index":523,"title":{"757":{},"848":{}},"content":{"182":{},"324":{},"351":{},"352":{},"377":{},"477":{},"726":{},"727":{},"749":{},"833":{},"848":{}}}],["linear",{"_index":2806,"title":{},"content":{"618":{},"641":{},"686":{}}}],["link",{"_index":563,"title":{"584":{}},"content":{"184":{},"360":{},"408":{},"412":{},"431":{},"553":{},"570":{},"571":{},"708":{},"733":{},"740":{},"763":{},"815":{}}}],["linkag",{"_index":3305,"title":{},"content":{"717":{}}}],["linter",{"_index":1647,"title":{},"content":{"295":{}}}],["linux",{"_index":2733,"title":{},"content":{"597":{},"760":{},"775":{},"785":{}}}],["liquid",{"_index":2778,"title":{},"content":{"613":{},"855":{}}}],["list",{"_index":67,"title":{"360":{},"431":{},"681":{}},"content":{"12":{},"16":{},"28":{},"29":{},"35":{},"47":{},"49":{},"50":{},"56":{},"65":{},"81":{},"87":{},"110":{},"112":{},"118":{},"127":{},"134":{},"139":{},"197":{},"212":{},"223":{},"226":{},"241":{},"265":{},"290":{},"291":{},"305":{},"325":{},"326":{},"327":{},"330":{},"336":{},"340":{},"360":{},"361":{},"363":{},"365":{},"371":{},"376":{},"382":{},"392":{},"393":{},"398":{},"428":{},"429":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"441":{},"442":{},"443":{},"461":{},"466":{},"489":{},"491":{},"496":{},"497":{},"498":{},"500":{},"502":{},"506":{},"519":{},"520":{},"521":{},"522":{},"587":{},"621":{},"624":{},"625":{},"648":{},"649":{},"656":{},"665":{},"672":{},"676":{},"677":{},"688":{},"693":{},"705":{},"707":{},"709":{},"716":{},"717":{},"735":{},"745":{},"774":{},"778":{},"786":{},"837":{},"839":{},"845":{},"846":{}}}],["list'",{"_index":2255,"title":{},"content":{"439":{}}}],["list.append",{"_index":2239,"title":{},"content":{"437":{}}}],["list.append([1",{"_index":2240,"title":{},"content":{"437":{}}}],["list.at",{"_index":2222,"title":{},"content":{"432":{}}}],["list.at([\"a",{"_index":2221,"title":{},"content":{"432":{}}}],["list.concat",{"_index":2232,"title":{},"content":{"436":{}}}],["list.concat([1,2",{"_index":2233,"title":{},"content":{"436":{}}}],["list.concat(sold_item",{"_index":2154,"title":{},"content":{"413":{}}}],["list.empti",{"_index":2229,"title":{},"content":{"435":{}}}],["list.empty?([\"appl",{"_index":2230,"title":{},"content":{"435":{}}}],["list.in?([\"bob",{"_index":2227,"title":{},"content":{"434":{}}}],["list.in?([\"pet",{"_index":2041,"title":{},"content":{"382":{}}}],["list.in?([\"x",{"_index":2092,"title":{},"content":{"376":{}}}],["list.join",{"_index":2249,"title":{},"content":{"439":{}}}],["list.join([\"mik",{"_index":2250,"title":{},"content":{"439":{}}}],["list.prepend",{"_index":2245,"title":{},"content":{"438":{}}}],["list.prepend([1",{"_index":2246,"title":{},"content":{"438":{}}}],["list.siz",{"_index":2225,"title":{},"content":{"433":{}}}],["list.size([1,2,3,4",{"_index":2226,"title":{},"content":{"433":{}}}],["list1",{"_index":2236,"title":{},"content":{"436":{}}}],["list2",{"_index":2237,"title":{},"content":{"436":{}}}],["listen",{"_index":3625,"title":{},"content":{"784":{},"786":{}}}],["live",{"_index":1782,"title":{},"content":{"331":{},"716":{}}}],["load",{"_index":553,"title":{"229":{},"233":{}},"content":{"183":{},"222":{},"229":{},"233":{},"291":{},"294":{},"319":{},"337":{},"839":{}}}],["local",{"_index":394,"title":{"508":{},"769":{}},"content":{"136":{},"220":{},"336":{},"401":{},"508":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"575":{},"576":{},"610":{},"617":{},"671":{},"746":{},"754":{},"764":{},"769":{},"770":{},"771":{},"777":{},"778":{},"785":{}}}],["locat",{"_index":1542,"title":{},"content":{"290":{},"590":{},"648":{}}}],["lock",{"_index":2674,"title":{"602":{},"853":{}},"content":{"564":{},"593":{},"602":{},"606":{},"778":{},"853":{},"855":{},"858":{},"859":{}}}],["log",{"_index":1463,"title":{"285":{},"286":{}},"content":{"284":{},"285":{},"286":{},"288":{},"290":{},"295":{},"296":{},"763":{},"764":{}}}],["log10(numb",{"_index":3064,"title":{},"content":{"656":{}}}],["logic",{"_index":1187,"title":{},"content":{"271":{},"329":{},"377":{},"725":{},"838":{},"839":{}}}],["login",{"_index":3124,"title":{},"content":{"679":{}}}],["long",{"_index":954,"title":{"562":{},"600":{}},"content":{"205":{},"206":{},"209":{},"290":{},"644":{},"664":{},"666":{},"724":{},"756":{},"776":{},"778":{}}}],["longer",{"_index":3132,"title":{},"content":{"679":{},"748":{}}}],["look",{"_index":1801,"title":{},"content":{"334":{},"343":{},"553":{}}}],["lookup",{"_index":1574,"title":{"327":{},"339":{},"341":{}},"content":{"266":{},"268":{},"291":{},"325":{},"340":{}}}],["loop",{"_index":1907,"title":{"358":{}},"content":{"428":{}}}],["lose",{"_index":2696,"title":{},"content":{"574":{},"616":{}}}],["loss",{"_index":3478,"title":{},"content":{"855":{}}}],["lost",{"_index":1855,"title":{},"content":{"349":{},"575":{}}}],["lot",{"_index":1500,"title":{},"content":{"287":{},"621":{},"725":{}}}],["low",{"_index":993,"title":{"267":{}},"content":{"216":{},"267":{},"328":{},"618":{},"670":{},"727":{}}}],["lower",{"_index":3483,"title":{},"content":{"855":{}}}],["lowercas",{"_index":2196,"title":{},"content":{"421":{}}}],["lowest",{"_index":2670,"title":{},"content":{"563":{},"595":{},"696":{}}}],["loyalti",{"_index":3302,"title":{},"content":{"717":{}}}],["lsm",{"_index":1471,"title":{},"content":{"285":{},"287":{}}}],["lupin",{"_index":2190,"title":{},"content":{"420":{}}}],["m/650'/0/0",{"_index":915,"title":{},"content":{"201":{},"650":{}}}],["m/650'/0/1",{"_index":919,"title":{},"content":{"201":{}}}],["m/650'/account/index",{"_index":904,"title":{},"content":{"200":{}}}],["m/650'/amazon/0",{"_index":2973,"title":{},"content":{"650":{}}}],["m/650'/johndoeuco@!/0",{"_index":2974,"title":{},"content":{"650":{}}}],["machin",{"_index":1721,"title":{},"content":{"320":{},"569":{},"596":{},"598":{},"724":{}}}],["maco",{"_index":2732,"title":{},"content":{"597":{},"760":{},"775":{},"785":{}}}],["made",{"_index":844,"title":{},"content":{"196":{},"647":{},"775":{},"778":{},"858":{}}}],["main",{"_index":877,"title":{},"content":{"197":{},"200":{},"286":{},"289":{},"305":{},"320":{},"325":{},"370":{},"554":{},"567":{},"587":{},"589":{},"649":{},"710":{},"745":{},"774":{},"775":{},"778":{},"834":{},"836":{},"839":{},"842":{}}}],["mainli",{"_index":1799,"title":{},"content":{"334":{},"520":{},"695":{}}}],["mainnet",{"_index":1724,"title":{"567":{},"574":{},"579":{},"609":{},"616":{}},"content":{"320":{},"412":{},"574":{},"579":{},"609":{},"616":{},"700":{},"778":{}}}],["mainnet.archethic.net",{"_index":3392,"title":{},"content":{"738":{},"739":{},"740":{}}}],["maintain",{"_index":988,"title":{},"content":{"216":{},"231":{},"270":{},"297":{},"298":{},"304":{},"319":{},"552":{},"620":{},"673":{},"779":{}}}],["mainten",{"_index":3000,"title":{},"content":{"642":{},"724":{},"775":{}}}],["major",{"_index":2714,"title":{},"content":{"593":{}}}],["make",{"_index":478,"title":{},"content":{"181":{},"183":{},"230":{},"268":{},"290":{},"291":{},"292":{},"293":{},"305":{},"307":{},"345":{},"346":{},"348":{},"349":{},"352":{},"402":{},"413":{},"553":{},"603":{},"613":{},"623":{},"636":{},"637":{},"640":{},"646":{},"649":{},"651":{},"683":{},"696":{},"723":{},"726":{},"729":{},"733":{},"737":{},"748":{},"753":{},"759":{},"776":{},"833":{},"854":{}}}],["makefil",{"_index":614,"title":{},"content":{"188":{}}}],["malciou",{"_index":2907,"title":{},"content":{"637":{}}}],["malici",{"_index":2851,"title":{},"content":{"623":{},"637":{},"641":{},"723":{},"775":{}}}],["malwar",{"_index":2901,"title":{},"content":{"636":{}}}],["manag",{"_index":443,"title":{"572":{},"614":{},"769":{},"843":{}},"content":{"181":{},"230":{},"232":{},"234":{},"243":{},"285":{},"287":{},"301":{},"604":{},"622":{},"623":{},"643":{},"654":{},"655":{},"679":{},"682":{},"725":{},"743":{},"751":{},"753":{},"773":{},"774":{},"778":{},"785":{},"815":{},"833":{},"834":{},"843":{},"855":{}}}],["mandatori",{"_index":1365,"title":{},"content":{"244":{},"371":{},"377":{},"745":{}}}],["mani",{"_index":480,"title":{},"content":{"181":{},"290":{},"329":{},"413":{},"451":{},"465":{},"466":{},"643":{},"700":{},"717":{},"730":{},"812":{}}}],["manipul",{"_index":1241,"title":{},"content":{"273":{},"360":{},"361":{},"444":{}}}],["manner",{"_index":2739,"title":{},"content":{"602":{},"784":{},"853":{}}}],["manual",{"_index":2759,"title":{},"content":{"612":{},"741":{},"772":{}}}],["map",{"_index":1736,"title":{"361":{},"371":{},"422":{}},"content":{"322":{},"323":{},"361":{},"368":{},"371":{},"377":{},"379":{},"381":{},"383":{},"393":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"460":{},"461":{},"465":{},"466":{},"488":{},"489":{},"495":{},"497":{},"499":{}}}],["map.delete([key1",{"_index":2219,"title":{},"content":{"430":{}}}],["map.get([key1",{"_index":2203,"title":{},"content":{"425":{},"426":{},"427":{}}}],["map.get(bal",{"_index":2363,"title":{},"content":{"465":{},"466":{}}}],["map.get(balance.token",{"_index":2341,"title":{},"content":{"461":{}}}],["map.get(contract.address",{"_index":2039,"title":{},"content":{"382":{}}}],["map.get(map",{"_index":1928,"title":{},"content":{"361":{}}}],["map.get(transaction.uco_mov",{"_index":2074,"title":{},"content":{"374":{}}}],["map.get(transaction.uco_transf",{"_index":2076,"title":{},"content":{"374":{}}}],["map.get(transf",{"_index":2079,"title":{},"content":{"374":{}}}],["map.key",{"_index":2205,"title":{},"content":{"425":{}}}],["map.keys(key1",{"_index":2212,"title":{},"content":{"428":{}}}],["map.keys(map",{"_index":2214,"title":{},"content":{"428":{}}}],["map.new",{"_index":1934,"title":{},"content":{"361":{},"423":{},"486":{},"488":{},"489":{},"499":{}}}],["map.properti",{"_index":1926,"title":{},"content":{"361":{}}}],["map.set([key1",{"_index":2208,"title":{},"content":{"427":{}}}],["map.set(authorized_key",{"_index":2476,"title":{},"content":{"499":{}}}],["map.set(vot",{"_index":2097,"title":{},"content":{"376":{}}}],["map.siz",{"_index":2014,"title":{},"content":{"377":{},"378":{},"380":{}}}],["map.size(key1",{"_index":2200,"title":{},"content":{"424":{}}}],["map.size(transaction.uco_transf",{"_index":2017,"title":{},"content":{"378":{}}}],["map.values(key1",{"_index":2217,"title":{},"content":{"429":{}}}],["map[\"properti",{"_index":1927,"title":{},"content":{"361":{}}}],["map[key",{"_index":2215,"title":{},"content":{"428":{}}}],["marathon",{"_index":3028,"title":{},"content":{"644":{}}}],["markdown",{"_index":2611,"title":{},"content":{"553":{},"554":{},"555":{}}}],["market",{"_index":2980,"title":{},"content":{"641":{}}}],["marketplac",{"_index":3008,"title":{},"content":{"642":{}}}],["mass",{"_index":1808,"title":{},"content":{"345":{},"618":{}}}],["master",{"_index":660,"title":{},"content":{"189":{},"197":{},"201":{},"679":{}}}],["masterse",{"_index":659,"title":{},"content":{"189":{}}}],["masterseedlen",{"_index":667,"title":{},"content":{"189":{}}}],["match",{"_index":339,"title":{},"content":{"95":{},"216":{},"279":{},"316":{},"346":{},"395":{},"442":{},"604":{},"679":{},"717":{},"722":{},"742":{},"814":{},"855":{}}}],["match?/2",{"_index":2263,"title":{"442":{}},"content":{}}],["materi",{"_index":965,"title":{},"content":{"209":{},"619":{},"649":{}}}],["math",{"_index":2405,"title":{"479":{}},"content":{}}],["math.pow(1.7",{"_index":2408,"title":{},"content":{"480":{}}}],["math.pow(2",{"_index":2407,"title":{},"content":{"480":{}}}],["math.rem",{"_index":2422,"title":{},"content":{"483":{}}}],["math.rem(10",{"_index":2421,"title":{},"content":{"483":{}}}],["math.rem(10.2",{"_index":2423,"title":{},"content":{"483":{}}}],["math.rem(2.1",{"_index":2419,"title":{},"content":{"483":{}}}],["math.sqrt(12.5",{"_index":2415,"title":{},"content":{"482":{}}}],["math.sqrt(16",{"_index":2414,"title":{},"content":{"482":{}}}],["math.trunc(8.32",{"_index":2412,"title":{},"content":{"481":{}}}],["mathemat",{"_index":3128,"title":{},"content":{"679":{}}}],["matic",{"_index":2669,"title":{"613":{}},"content":{"563":{},"593":{},"595":{},"612":{},"613":{}}}],["matter",{"_index":2241,"title":{},"content":{"437":{},"643":{},"756":{}}}],["max",{"_index":1323,"title":{},"content":{"279":{},"796":{},"799":{}}}],["maxconfirm",{"_index":276,"title":{},"content":{"67":{},"796":{},"799":{}}}],["maximum",{"_index":1857,"title":{},"content":{"350":{},"519":{},"589":{},"622":{},"753":{},"855":{}}}],["mb",{"_index":3452,"title":{},"content":{"745":{}}}],["mean",{"_index":1626,"title":{},"content":{"296":{},"347":{},"355":{},"379":{},"381":{},"383":{},"413":{},"521":{},"588":{},"668":{},"690":{},"702":{},"749":{},"755":{},"777":{}}}],["meant",{"_index":3061,"title":{},"content":{"655":{},"774":{}}}],["measur",{"_index":1480,"title":{},"content":{"285":{},"683":{}}}],["mechan",{"_index":1527,"title":{},"content":{"289":{},"290":{},"305":{},"620":{},"628":{},"633":{},"639":{},"651":{},"664":{},"675":{},"684":{},"689":{},"708":{},"717":{},"737":{},"777":{},"847":{}}}],["medium",{"_index":3608,"title":{},"content":{"778":{}}}],["meet",{"_index":2446,"title":{},"content":{"412":{},"488":{}}}],["member",{"_index":28,"title":{"7":{},"10":{},"14":{},"20":{},"23":{},"30":{},"33":{},"36":{},"45":{},"48":{},"57":{},"60":{},"63":{},"72":{},"79":{},"82":{},"85":{},"88":{},"91":{},"94":{},"97":{},"144":{},"146":{},"148":{},"150":{},"152":{},"154":{},"156":{},"158":{},"160":{},"162":{},"164":{},"166":{},"168":{},"170":{},"172":{}},"content":{"282":{},"318":{},"661":{},"682":{}}}],["memori",{"_index":1062,"title":{"319":{}},"content":{"222":{},"223":{},"226":{},"229":{},"286":{},"287":{},"290":{},"291":{},"292":{},"294":{},"319":{},"337":{},"575":{}}}],["memtableload",{"_index":1788,"title":{},"content":{"337":{}}}],["mention",{"_index":505,"title":{},"content":{"181":{},"201":{},"290":{},"346":{},"717":{},"734":{}}}],["menu",{"_index":2514,"title":{"763":{}},"content":{"411":{},"567":{},"745":{},"746":{},"747":{},"748":{},"763":{},"764":{},"834":{},"836":{},"843":{},"847":{}}}],["merchant",{"_index":1845,"title":{},"content":{"349":{},"643":{}}}],["merg",{"_index":1470,"title":{"285":{}},"content":{"285":{},"286":{},"554":{}}}],["mermaid",{"_index":2635,"title":{},"content":{"555":{}}}],["mermaidsequencediagram",{"_index":2637,"title":{},"content":{"555":{}}}],["mesh",{"_index":3200,"title":{},"content":{"684":{}}}],["messag",{"_index":1015,"title":{"328":{},"331":{}},"content":{"216":{},"296":{},"304":{},"328":{},"329":{},"330":{},"331":{},"412":{},"620":{},"642":{},"649":{},"671":{},"674":{},"682":{},"708":{}}}],["messageenvelop",{"_index":1780,"title":{},"content":{"331":{}}}],["metadata",{"_index":203,"title":{},"content":{"49":{},"127":{},"290":{},"630":{},"631":{},"753":{}}}],["metamask",{"_index":2684,"title":{"568":{},"569":{},"570":{},"571":{}},"content":{"570":{},"571":{}}}],["method",{"_index":476,"title":{"787":{}},"content":{"181":{},"485":{},"488":{},"489":{},"593":{},"619":{},"648":{},"650":{},"667":{},"682":{},"683":{},"696":{},"736":{},"768":{},"773":{},"776":{},"778":{},"785":{},"787":{},"815":{},"853":{}}}],["metric",{"_index":1637,"title":{},"content":{"296":{}}}],["migrat",{"_index":1838,"title":{},"content":{"347":{},"679":{}}}],["mike",{"_index":2253,"title":{},"content":{"439":{}}}],["million",{"_index":2981,"title":{},"content":{"641":{}}}],["min",{"_index":3216,"title":{},"content":{"693":{}}}],["mind",{"_index":1902,"title":{},"content":{"356":{},"775":{}}}],["mine",{"_index":1665,"title":{"300":{}},"content":{"300":{},"336":{},"621":{},"656":{},"665":{},"671":{},"716":{}}}],["miner",{"_index":1813,"title":{},"content":{"345":{},"348":{},"412":{},"637":{},"639":{},"641":{},"733":{}}}],["miner'",{"_index":3070,"title":{},"content":{"657":{}}}],["minim",{"_index":3044,"title":{},"content":{"651":{},"682":{}}}],["minimum",{"_index":1595,"title":{},"content":{"266":{},"401":{},"652":{},"656":{},"708":{}}}],["minimum_fe",{"_index":3054,"title":{},"content":{"652":{}}}],["mint",{"_index":293,"title":{},"content":{"70":{},"76":{},"89":{},"141":{},"314":{},"590":{},"606":{},"729":{},"732":{},"734":{},"735":{},"820":{},"858":{}}}],["mint_reward",{"_index":3317,"title":{"820":{}},"content":{}}],["minting'",{"_index":3263,"title":{},"content":{"730":{}}}],["minu",{"_index":3513,"title":{},"content":{"772":{}}}],["minut",{"_index":1727,"title":{},"content":{"320":{},"400":{},"401":{},"700":{},"821":{}}}],["mismatch",{"_index":3241,"title":{},"content":{"708":{}}}],["miss",{"_index":1158,"title":{},"content":{"238":{},"522":{},"554":{},"675":{},"676":{},"707":{}}}],["misus",{"_index":3595,"title":{},"content":{"777":{}}}],["misusag",{"_index":1823,"title":{},"content":{"346":{}}}],["mitig",{"_index":2744,"title":{},"content":{"604":{},"775":{},"855":{}}}],["mix",{"_index":2585,"title":{},"content":{"509":{},"777":{}}}],["mnemon",{"_index":3544,"title":{},"content":{"774":{},"776":{}}}],["mnft",{"_index":3273,"title":{},"content":{"733":{},"735":{}}}],["mobil",{"_index":458,"title":{"597":{}},"content":{"181":{},"183":{},"209":{},"774":{},"775":{},"777":{},"778":{},"785":{}}}],["mock",{"_index":2531,"title":{"524":{}},"content":{"406":{},"408":{},"517":{},"518":{},"522":{},"524":{},"525":{},"526":{}}}],["mode",{"_index":601,"title":{},"content":{"188":{},"189":{},"298":{},"510":{},"521":{},"669":{},"778":{},"840":{},"841":{}}}],["mode.sym",{"_index":1282,"title":{},"content":{"273":{}}}],["model",{"_index":1350,"title":{},"content":{"241":{},"320":{},"345":{},"346":{},"603":{},"633":{},"657":{},"686":{},"716":{},"729":{},"854":{}}}],["modern",{"_index":1755,"title":{},"content":{"328":{},"740":{},"775":{}}}],["modif",{"_index":2621,"title":{},"content":{"554":{},"746":{}}}],["modifi",{"_index":1207,"title":{"347":{}},"content":{"273":{},"345":{},"412":{},"554":{},"610":{},"644":{}}}],["modul",{"_index":1086,"title":{"604":{},"855":{}},"content":{"230":{},"320":{},"337":{},"360":{},"361":{},"363":{},"364":{},"370":{},"413":{},"493":{},"604":{},"636":{},"638":{},"660":{},"682":{},"855":{},"858":{}}}],["module.funct",{"_index":1957,"title":{},"content":{"365":{}}}],["module.function(arg1",{"_index":1954,"title":{},"content":{"365":{}}}],["modulo",{"_index":2427,"title":{},"content":{"483":{}}}],["moment",{"_index":2709,"title":{},"content":{"579":{},"609":{}}}],["monitor",{"_index":1116,"title":{},"content":{"219":{},"673":{}}}],["monopoli",{"_index":3017,"title":{},"content":{"643":{}}}],["month",{"_index":2107,"title":{},"content":{"388":{},"401":{},"724":{},"726":{}}}],["more",{"_index":540,"title":{},"content":{"183":{},"200":{},"216":{},"233":{},"282":{},"284":{},"287":{},"298":{},"299":{},"321":{},"363":{},"389":{},"408":{},"477":{},"489":{},"623":{},"629":{},"633":{},"637":{},"642":{},"643":{},"651":{},"652":{},"666":{},"679":{},"682":{},"709":{},"717":{},"724":{},"725":{},"729":{},"776":{},"785":{},"815":{},"855":{}}}],["moreov",{"_index":2725,"title":{},"content":{"593":{},"710":{}}}],["morpholog",{"_index":3169,"title":{},"content":{"683":{}}}],["mostli",{"_index":200,"title":{},"content":{"52":{},"124":{},"361":{}}}],["motiv",{"_index":2809,"title":{"619":{},"721":{}},"content":{"722":{}}}],["move",{"_index":726,"title":{"564":{},"565":{}},"content":{"190":{},"191":{},"272":{},"290":{},"642":{},"736":{},"775":{}}}],["movement",{"_index":144,"title":{},"content":{"34":{},"70":{},"371":{},"522":{},"578":{},"625":{},"687":{},"693":{},"717":{}}}],["movementsaddress",{"_index":310,"title":{},"content":{"80":{}}}],["mr.x",{"_index":2090,"title":{},"content":{"376":{}}}],["mrs.i",{"_index":2091,"title":{},"content":{"376":{}}}],["msb",{"_index":1195,"title":{},"content":{"272":{}}}],["msg",{"_index":1762,"title":{},"content":{"329":{}}}],["msgpack",{"_index":1775,"title":{},"content":{"330":{}}}],["much",{"_index":1443,"title":{},"content":{"283":{},"355":{}}}],["muco",{"_index":3315,"title":{},"content":{"819":{},"820":{}}}],["multi",{"_index":2009,"title":{},"content":{"377":{},"646":{},"670":{},"682":{},"774":{}}}],["multicast",{"_index":1753,"title":{},"content":{"328":{},"336":{},"620":{},"670":{},"682":{},"704":{}}}],["multichain",{"_index":874,"title":{},"content":{"197":{}}}],["multidimension",{"_index":3120,"title":{},"content":{"675":{}}}],["multilin",{"_index":2029,"title":{},"content":{"380":{}}}],["multimedia",{"_index":1001,"title":{},"content":{"216":{}}}],["multipl",{"_index":1120,"title":{"403":{}},"content":{"220":{},"221":{},"284":{},"285":{},"295":{},"296":{},"304":{},"307":{},"329":{},"398":{},"403":{},"524":{},"578":{},"629":{},"633":{},"652":{},"656":{},"661":{},"675":{},"682":{},"693":{},"754":{},"765":{},"774":{}}}],["multiplex",{"_index":1756,"title":{"329":{}},"content":{"328":{},"329":{},"331":{}}}],["multireferenti",{"_index":3186,"title":{},"content":{"683":{}}}],["multise",{"_index":2708,"title":{},"content":{"579":{},"609":{}}}],["multisignatur",{"_index":2749,"title":{},"content":{"604":{},"855":{}}}],["multitud",{"_index":2948,"title":{},"content":{"695":{}}}],["mumbai",{"_index":2758,"title":{"612":{}},"content":{"612":{}}}],["mutabl",{"_index":1909,"title":{},"content":{"359":{},"682":{}}}],["mutat",{"_index":1499,"title":{},"content":{"287":{},"413":{},"492":{},"493":{},"494":{},"495":{},"497":{},"499":{},"501":{},"850":{}}}],["my_websit",{"_index":3412,"title":{},"content":{"742":{}}}],["myamazingcontract",{"_index":1995,"title":{},"content":{"371":{}}}],["myimageaeweb",{"_index":2658,"title":{},"content":{"584":{}}}],["mynewservic",{"_index":1750,"title":{},"content":{"324":{}}}],["myseedphras",{"_index":2657,"title":{},"content":{"584":{},"758":{},"759":{}}}],["n",{"_index":953,"title":{},"content":{"204":{},"209":{},"210":{},"350":{},"359":{}}}],["name",{"_index":205,"title":{"369":{},"399":{},"582":{},"737":{}},"content":{"49":{},"127":{},"204":{},"289":{},"291":{},"295":{},"352":{},"355":{},"358":{},"359":{},"363":{},"369":{},"399":{},"403":{},"491":{},"588":{},"589":{},"590":{},"618":{},"624":{},"726":{},"732":{},"733":{},"735":{},"737":{},"738":{},"745":{},"777":{},"793":{},"798":{},"804":{},"807":{},"811":{},"813":{},"846":{}}}],["name}#{new_lin",{"_index":1918,"title":{},"content":{"359":{}}}],["nano",{"_index":468,"title":{},"content":{"181":{},"183":{}}}],["narr",{"_index":3022,"title":{},"content":{"643":{}}}],["nativ",{"_index":3007,"title":{"729":{}},"content":{"642":{},"669":{},"713":{},"726":{},"728":{},"729":{},"775":{},"859":{}}}],["natur",{"_index":3350,"title":{},"content":{"724":{}}}],["navig",{"_index":3520,"title":{},"content":{"836":{},"840":{},"841":{}}}],["nb",{"_index":952,"title":{},"content":{"204":{},"294":{},"296":{},"652":{}}}],["nb_replica",{"_index":3056,"title":{},"content":{"652":{}}}],["nbconfirm",{"_index":277,"title":{},"content":{"67":{},"796":{},"799":{}}}],["near",{"_index":2573,"title":{},"content":{"516":{},"696":{}}}],["nearbi",{"_index":3199,"title":{},"content":{"684":{}}}],["nearest",{"_index":378,"title":{},"content":{"110":{},"668":{}}}],["nearestendpoint",{"_index":136,"title":{"110":{}},"content":{"27":{},"110":{}}}],["necessari",{"_index":2653,"title":{},"content":{"584":{},"716":{},"717":{},"742":{},"745":{},"768":{},"778":{}}}],["need",{"_index":615,"title":{},"content":{"188":{},"189":{},"216":{},"217":{},"220":{},"230":{},"232":{},"282":{},"284":{},"285":{},"286":{},"287":{},"288":{},"290":{},"294":{},"310":{},"319":{},"324":{},"347":{},"348":{},"354":{},"370":{},"391":{},"392":{},"400":{},"401":{},"406":{},"451":{},"461":{},"465":{},"466":{},"525":{},"610":{},"612":{},"629":{},"633":{},"641":{},"643":{},"675":{},"677":{},"679":{},"695":{},"698":{},"713":{},"716":{},"722":{},"724":{},"727":{},"729":{},"737":{},"738":{},"739":{},"742":{},"759":{},"773":{},"777":{},"778":{},"823":{},"836":{},"838":{},"839":{},"843":{}}}],["needl",{"_index":2171,"title":{},"content":{"416":{},"434":{}}}],["neg",{"_index":418,"title":{},"content":{"155":{}}}],["neighbor",{"_index":3093,"title":{},"content":{"668":{},"669":{}}}],["nest",{"_index":1517,"title":{"710":{}},"content":{"288":{},"361":{}}}],["network",{"_index":26,"title":{"236":{},"569":{},"570":{},"579":{},"609":{},"641":{},"654":{},"672":{},"692":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{}},"content":{"9":{},"25":{},"37":{},"64":{},"101":{},"104":{},"107":{},"109":{},"111":{},"112":{},"114":{},"115":{},"118":{},"119":{},"120":{},"123":{},"125":{},"128":{},"130":{},"131":{},"133":{},"136":{},"138":{},"139":{},"157":{},"213":{},"215":{},"216":{},"230":{},"235":{},"236":{},"290":{},"294":{},"295":{},"301":{},"312":{},"314":{},"317":{},"326":{},"330":{},"331":{},"336":{},"337":{},"338":{},"412":{},"413":{},"508":{},"512":{},"566":{},"567":{},"570":{},"578":{},"579":{},"593":{},"598":{},"609":{},"612":{},"613":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"626":{},"630":{},"634":{},"637":{},"642":{},"644":{},"651":{},"652":{},"654":{},"656":{},"660":{},"661":{},"662":{},"663":{},"666":{},"667":{},"668":{},"669":{},"670":{},"672":{},"673":{},"674":{},"676":{},"679":{},"680":{},"682":{},"683":{},"684":{},"685":{},"686":{},"688":{},"689":{},"692":{},"693":{},"695":{},"700":{},"704":{},"705":{},"706":{},"707":{},"708":{},"715":{},"720":{},"723":{},"724":{},"742":{},"759":{},"761":{},"778":{},"816":{},"817":{},"839":{}}}],["network_issu",{"_index":21,"title":{},"content":{"8":{}}}],["networkarcheth",{"_index":2820,"title":{},"content":{"620":{}}}],["networkfe",{"_index":3306,"title":{},"content":{"717":{}}}],["networkpatch",{"_index":163,"title":{},"content":{"37":{},"336":{}}}],["networktransact",{"_index":263,"title":{"112":{}},"content":{"66":{},"112":{},"162":{},"172":{}}}],["networktransactions.pag",{"_index":382,"title":{},"content":{"113":{}}}],["networktransactions.typ",{"_index":383,"title":{},"content":{"113":{}}}],["never",{"_index":1498,"title":{},"content":{"287":{},"683":{},"732":{},"778":{}}}],["nevertheless",{"_index":1513,"title":{},"content":{"288":{},"687":{}}}],["new",{"_index":434,"title":{"578":{},"679":{}},"content":{"176":{},"212":{},"223":{},"226":{},"229":{},"231":{},"237":{},"252":{},"274":{},"275":{},"281":{},"285":{},"288":{},"289":{},"290":{},"296":{},"310":{},"313":{},"314":{},"315":{},"317":{},"320":{},"322":{},"324":{},"328":{},"345":{},"346":{},"347":{},"349":{},"353":{},"359":{},"370":{},"373":{},"376":{},"382":{},"385":{},"386":{},"389":{},"390":{},"396":{},"436":{},"437":{},"438":{},"494":{},"575":{},"578":{},"606":{},"618":{},"621":{},"622":{},"625":{},"633":{},"639":{},"644":{},"646":{},"655":{},"656":{},"660":{},"661":{},"662":{},"664":{},"666":{},"670":{},"672":{},"677":{},"679":{},"685":{},"686":{},"687":{},"691":{},"696":{},"700":{},"703":{},"706":{},"720":{},"728":{},"731":{},"737":{},"741":{},"745":{},"746":{},"755":{},"814":{},"839":{},"844":{},"846":{},"847":{},"858":{},"859":{}}}],["new/0",{"_index":2197,"title":{"423":{}},"content":{}}],["new_index",{"_index":2035,"title":{},"content":{"380":{}}}],["new_lin",{"_index":1917,"title":{},"content":{"359":{}}}],["new_pric",{"_index":1979,"title":{},"content":{"370":{}}}],["newarcheth",{"_index":1408,"title":{},"content":{"252":{}}}],["newer",{"_index":2940,"title":{},"content":{"639":{}}}],["newli",{"_index":2652,"title":{"584":{}},"content":{}}],["newykindex",{"_index":1406,"title":{},"content":{"252":{}}}],["next",{"_index":673,"title":{"238":{},"370":{}},"content":{"189":{},"191":{},"221":{},"232":{},"235":{},"237":{},"275":{},"278":{},"279":{},"281":{},"295":{},"296":{},"345":{},"346":{},"349":{},"379":{},"389":{},"393":{},"410":{},"412":{},"413":{},"492":{},"493":{},"494":{},"495":{},"497":{},"499":{},"501":{},"618":{},"620":{},"628":{},"633":{},"661":{},"677":{},"702":{},"703":{},"716":{},"726":{},"754":{}}}],["next.cod",{"_index":2021,"title":{},"content":{"379":{}}}],["next.timestamp",{"_index":2022,"title":{},"content":{"380":{}}}],["nextkey",{"_index":1313,"title":{},"content":{"275":{},"276":{},"278":{},"279":{}}}],["nextkeyhandl",{"_index":1309,"title":{},"content":{"275":{}}}],["nextkeyindex",{"_index":1310,"title":{},"content":{"275":{}}}],["nfc",{"_index":3588,"title":{},"content":{"777":{}}}],["nft",{"_index":451,"title":{"584":{},"590":{}},"content":{"181":{},"497":{},"520":{},"590":{},"642":{},"733":{},"735":{},"736":{},"774":{}}}],["nft1",{"_index":2369,"title":{},"content":{"466":{}}}],["nft2",{"_index":2370,"title":{},"content":{"466":{}}}],["nibbl",{"_index":3229,"title":{},"content":{"701":{}}}],["nice",{"_index":2613,"title":{},"content":{"553":{}}}],["nicer",{"_index":3387,"title":{},"content":{"737":{}}}],["nil",{"_index":1876,"title":{},"content":{"352":{},"374":{},"425":{},"432":{},"457":{},"459":{},"487":{},"488":{},"489":{}}}],["nist",{"_index":2886,"title":{},"content":{"631":{},"650":{}}}],["nistp256",{"_index":956,"title":{},"content":{"205":{}}}],["node",{"_index":99,"title":{"37":{},"118":{},"237":{},"298":{},"299":{},"308":{},"312":{},"313":{},"335":{},"340":{},"341":{},"692":{},"817":{}},"content":{"21":{},"37":{},"39":{},"52":{},"110":{},"118":{},"119":{},"124":{},"144":{},"146":{},"148":{},"154":{},"164":{},"166":{},"168":{},"173":{},"181":{},"209":{},"214":{},"215":{},"216":{},"219":{},"220":{},"221":{},"222":{},"229":{},"231":{},"232":{},"233":{},"235":{},"236":{},"237":{},"238":{},"265":{},"266":{},"268":{},"290":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"304":{},"305":{},"306":{},"307":{},"308":{},"310":{},"312":{},"313":{},"314":{},"315":{},"316":{},"320":{},"322":{},"326":{},"329":{},"331":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"346":{},"412":{},"451":{},"471":{},"488":{},"522":{},"603":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"637":{},"639":{},"644":{},"651":{},"654":{},"656":{},"660":{},"661":{},"664":{},"665":{},"666":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"675":{},"677":{},"686":{},"687":{},"688":{},"691":{},"692":{},"693":{},"695":{},"700":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"717":{},"738":{},"742":{},"754":{},"755":{},"756":{},"778":{},"816":{},"817":{},"818":{},"819":{},"823":{},"824":{},"836":{},"854":{}}}],["node'",{"_index":101,"title":{},"content":{"21":{},"25":{},"111":{},"637":{},"693":{},"717":{}}}],["node.author",{"_index":167,"title":{},"content":{"38":{}}}],["node.authorizationd",{"_index":166,"title":{},"content":{"38":{}}}],["node.avail",{"_index":168,"title":{},"content":{"38":{}}}],["node.averageavail",{"_index":169,"title":{},"content":{"38":{}}}],["node.enrollmentd",{"_index":170,"title":{},"content":{"38":{}}}],["node.firstpublickey",{"_index":171,"title":{},"content":{"38":{}}}],["node.geopatch",{"_index":172,"title":{},"content":{"38":{}}}],["node.git",{"_index":2583,"title":{},"content":{"509":{}}}],["node.ip",{"_index":173,"title":{},"content":{"38":{}}}],["node.lastpublickey",{"_index":174,"title":{},"content":{"38":{}}}],["node.networkpatch",{"_index":175,"title":{},"content":{"38":{}}}],["node.originpublickey",{"_index":176,"title":{},"content":{"38":{}}}],["node.port",{"_index":177,"title":{},"content":{"38":{}}}],["node.rewardaddress",{"_index":178,"title":{},"content":{"38":{}}}],["node_reward",{"_index":3313,"title":{"819":{}},"content":{}}],["node_shared_secret",{"_index":3311,"title":{"818":{}},"content":{}}],["nodej",{"_index":554,"title":{},"content":{"183":{},"509":{},"757":{}}}],["nodeproof",{"_index":3304,"title":{},"content":{"717":{}}}],["nodepublickey",{"_index":102,"title":{},"content":{"21":{}}}],["non",{"_index":10,"title":{"628":{},"733":{}},"content":{"2":{},"4":{},"28":{},"105":{},"108":{},"113":{},"116":{},"126":{},"129":{},"132":{},"140":{},"153":{},"155":{},"174":{},"179":{},"182":{},"329":{},"464":{},"513":{},"522":{},"554":{},"607":{},"628":{},"633":{},"644":{},"648":{},"656":{},"717":{},"733":{},"735":{},"773":{},"859":{}}}],["non_fungible_token_address",{"_index":2355,"title":{},"content":{"464":{}}}],["nonc",{"_index":199,"title":{},"content":{"52":{},"123":{},"124":{},"236":{},"237":{},"294":{},"299":{},"310":{},"412":{},"522":{},"619":{},"624":{},"688":{},"839":{}}}],["none",{"_index":1322,"title":{},"content":{"279":{}}}],["nonneginteg",{"_index":85,"title":{"155":{}},"content":{"15":{},"16":{},"64":{},"65":{},"139":{},"140":{},"155":{}}}],["nosql",{"_index":1459,"title":{},"content":{"284":{}}}],["notat",{"_index":2199,"title":{},"content":{"423":{},"425":{}}}],["note",{"_index":642,"title":{},"content":{"189":{},"320":{},"361":{},"370":{},"377":{},"380":{},"401":{},"443":{},"521":{},"717":{},"731":{},"768":{},"772":{},"785":{},"821":{}}}],["noth",{"_index":2972,"title":{},"content":{"650":{},"687":{}}}],["notic",{"_index":2044,"title":{},"content":{"382":{},"741":{}}}],["notif",{"_index":1566,"title":{"702":{},"711":{}},"content":{"290":{},"703":{},"709":{},"711":{},"774":{},"778":{}}}],["notifi",{"_index":433,"title":{},"content":{"173":{},"176":{},"178":{},"231":{},"290":{},"488":{},"625":{},"664":{},"703":{},"709":{},"710":{},"711":{}}}],["nouc",{"_index":3526,"title":{},"content":{"839":{}}}],["nounc",{"_index":3527,"title":{},"content":{"839":{}}}],["now",{"_index":720,"title":{},"content":{"190":{},"191":{},"201":{},"294":{},"299":{},"406":{},"408":{},"410":{},"412":{},"506":{},"521":{},"564":{},"588":{},"633":{},"639":{},"643":{},"695":{},"702":{},"725":{},"726":{},"736":{},"853":{},"859":{}}}],["now/0",{"_index":2302,"title":{"451":{}},"content":{}}],["nowaday",{"_index":3252,"title":{},"content":{"721":{},"728":{}}}],["npm",{"_index":560,"title":{},"content":{"184":{},"509":{}}}],["nuclear",{"_index":2857,"title":{},"content":{"623":{}}}],["null",{"_index":11,"title":{},"content":{"2":{},"4":{},"105":{},"108":{},"113":{},"116":{},"126":{},"129":{},"132":{},"140":{},"174":{},"179":{},"188":{},"189":{},"190":{},"276":{}}}],["number",{"_index":209,"title":{},"content":{"49":{},"127":{},"155":{},"161":{},"200":{},"201":{},"266":{},"268":{},"290":{},"292":{},"300":{},"308":{},"327":{},"361":{},"374":{},"376":{},"389":{},"413":{},"415":{},"417":{},"418":{},"424":{},"433":{},"477":{},"480":{},"481":{},"482":{},"483":{},"495":{},"497":{},"641":{},"647":{},"652":{},"656":{},"674":{},"682":{},"710":{},"776":{},"777":{},"778":{},"795":{},"796":{},"799":{},"804":{},"807":{},"813":{}}}],["number_of_tokens(amount_send",{"_index":2068,"title":{},"content":{"374":{}}}],["number_of_tokens(uco_amount",{"_index":2072,"title":{},"content":{"374":{}}}],["number_of_uco_s",{"_index":2064,"title":{},"content":{"374":{}}}],["numer",{"_index":414,"title":{},"content":{"153":{}}}],["o",{"_index":2978,"title":{},"content":{"650":{}}}],["o(1",{"_index":2243,"title":{},"content":{"437":{}}}],["o(n",{"_index":2244,"title":{},"content":{"437":{}}}],["o_{key",{"_index":652,"title":{},"content":{"189":{}}}],["o_{priv",{"_index":887,"title":{},"content":{"198":{},"202":{}}}],["o_{pub",{"_index":888,"title":{},"content":{"198":{},"202":{}}}],["object",{"_index":30,"title":{"547":{}},"content":{"10":{},"12":{},"14":{},"16":{},"20":{},"23":{},"29":{},"30":{},"32":{},"33":{},"35":{},"36":{},"41":{},"44":{},"45":{},"47":{},"48":{},"50":{},"56":{},"57":{},"60":{},"63":{},"65":{},"72":{},"79":{},"82":{},"85":{},"87":{},"88":{},"91":{},"94":{},"96":{},"97":{},"103":{},"109":{},"111":{},"114":{},"117":{},"119":{},"122":{},"124":{},"127":{},"130":{},"133":{},"135":{},"138":{},"141":{},"144":{},"146":{},"148":{},"150":{},"152":{},"154":{},"158":{},"160":{},"164":{},"166":{},"168":{},"170":{},"175":{},"177":{},"180":{},"244":{},"246":{},"251":{},"252":{},"258":{},"260":{},"273":{},"280":{},"296":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"554":{},"682":{},"714":{},"778":{},"795":{},"813":{},"850":{}}}],["objectattribut",{"_index":1236,"title":{},"content":{"273":{}}}],["observ",{"_index":3587,"title":{},"content":{"777":{}}}],["obtain",{"_index":1648,"title":{},"content":{"295":{},"623":{},"683":{},"761":{},"859":{}}}],["occas",{"_index":3121,"title":{},"content":{"675":{}}}],["occur",{"_index":2691,"title":{"573":{},"615":{}},"content":{"855":{}}}],["offer",{"_index":2057,"title":{"374":{}},"content":{"633":{},"645":{},"679":{},"702":{},"775":{},"778":{},"779":{}}}],["offic",{"_index":3366,"title":{},"content":{"725":{}}}],["offici",{"_index":498,"title":{},"content":{"181":{},"334":{},"342":{},"343":{}}}],["offlin",{"_index":463,"title":{},"content":{"181":{},"220":{},"307":{},"675":{},"778":{}}}],["offset",{"_index":1426,"title":{},"content":{"260":{},"262":{},"264":{},"290":{},"291":{}}}],["oin",{"_index":3138,"title":{},"content":{"680":{}}}],["old",{"_index":2788,"title":{},"content":{"587":{}}}],["omit",{"_index":1936,"title":{},"content":{"361":{}}}],["omp",{"_index":1605,"title":{},"content":{"268":{}}}],["on",{"_index":474,"title":{"542":{},"558":{},"560":{},"561":{}},"content":{"181":{},"231":{},"233":{},"245":{},"273":{},"281":{},"282":{},"290":{},"291":{},"347":{},"350":{},"353":{},"363":{},"380":{},"395":{},"412":{},"501":{},"525":{},"540":{},"541":{},"542":{},"543":{},"564":{},"575":{},"620":{},"628":{},"642":{},"643":{},"644":{},"650":{},"657":{},"662":{},"682":{},"683":{},"695":{},"698":{},"700":{},"722":{},"749":{},"753":{},"759":{},"775":{},"778":{},"787":{},"828":{},"831":{},"836":{},"839":{},"845":{},"847":{},"853":{}}}],["onc",{"_index":514,"title":{},"content":{"181":{},"183":{},"191":{},"201":{},"213":{},"237":{},"238":{},"252":{},"290":{},"300":{},"327":{},"373":{},"412":{},"488":{},"564":{},"587":{},"588":{},"625":{},"637":{},"648":{},"649":{},"677":{},"680":{},"703":{},"705":{},"707":{},"711":{},"716":{},"724":{},"725":{},"745":{},"746":{},"747":{},"748":{},"754":{},"757":{},"782":{},"824":{},"839":{},"853":{}}}],["onchain",{"_index":576,"title":{},"content":{"186":{},"191":{},"197":{},"198":{},"202":{},"209":{},"211":{},"533":{},"534":{},"535":{}}}],["one'",{"_index":2943,"title":{},"content":{"695":{}}}],["ongo",{"_index":3507,"title":{},"content":{"768":{}}}],["onlin",{"_index":2512,"title":{},"content":{"411":{},"649":{},"749":{},"778":{}}}],["open",{"_index":1783,"title":{"645":{}},"content":{"336":{},"406":{},"412":{},"506":{},"552":{},"589":{},"642":{},"645":{},"680":{},"713":{},"775":{},"778":{},"779":{}}}],["oper",{"_index":137,"title":{},"content":{"31":{},"34":{},"95":{},"189":{},"268":{},"273":{},"285":{},"345":{},"349":{},"597":{},"604":{},"622":{},"636":{},"639":{},"682":{},"683":{},"704":{},"717":{},"738":{},"850":{},"855":{}}}],["operationsuco",{"_index":3300,"title":{},"content":{"717":{}}}],["opportun",{"_index":3043,"title":{},"content":{"645":{}}}],["opposit",{"_index":3206,"title":{},"content":{"685":{}}}],["optim",{"_index":1511,"title":{},"content":{"288":{},"330":{},"620":{},"682":{},"760":{}}}],["option",{"_index":1367,"title":{"584":{},"770":{}},"content":{"244":{},"361":{},"365":{},"377":{},"497":{},"520":{},"525":{},"575":{},"576":{},"745":{},"763":{},"764":{},"766":{},"804":{},"807":{},"813":{}}}],["oracl",{"_index":180,"title":{"315":{},"321":{},"383":{},"402":{},"410":{},"821":{}},"content":{"40":{},"120":{},"122":{},"176":{},"177":{},"316":{},"319":{},"320":{},"322":{},"346":{},"350":{},"368":{},"370":{},"377":{},"383":{},"384":{},"385":{},"395":{},"402":{},"410":{},"578":{},"599":{},"651":{},"654":{},"664":{},"821":{},"822":{}}}],["oracle_summari",{"_index":3318,"title":{"822":{}},"content":{}}],["oraclechain",{"_index":1699,"title":{"305":{},"319":{},"320":{},"663":{}},"content":{"305":{},"315":{},"319":{},"320":{},"321":{},"345":{},"346":{},"663":{},"664":{},"665":{}}}],["oracledata",{"_index":179,"title":{"40":{},"120":{}},"content":{"40":{},"42":{},"45":{},"120":{},"122":{},"168":{},"176":{},"177":{}}}],["oracledata.servic",{"_index":183,"title":{},"content":{"41":{}}}],["oracledata.timestamp",{"_index":184,"title":{},"content":{"41":{},"121":{}}}],["oracleservic",{"_index":182,"title":{"43":{}},"content":{"40":{},"41":{},"43":{},"85":{}}}],["oracleservices.uco",{"_index":189,"title":{},"content":{"44":{}}}],["oraclesummari",{"_index":1703,"title":{"316":{}},"content":{}}],["oracleupd",{"_index":185,"title":{"176":{}},"content":{"42":{},"176":{}}}],["order",{"_index":33,"title":{},"content":{"5":{},"6":{},"131":{},"181":{},"190":{},"191":{},"201":{},"202":{},"213":{},"223":{},"226":{},"288":{},"289":{},"290":{},"292":{},"340":{},"341":{},"346":{},"349":{},"437":{},"489":{},"584":{},"588":{},"629":{},"630":{},"633":{},"648":{},"731":{},"735":{},"776":{},"778":{},"779":{},"785":{},"836":{},"839":{},"859":{}}}],["ordinari",{"_index":3388,"title":{},"content":{"738":{}}}],["organ",{"_index":2870,"title":{},"content":{"621":{},"630":{},"644":{},"657":{},"682":{}}}],["origin",{"_index":340,"title":{"189":{},"194":{},"326":{},"629":{},"825":{}},"content":{"95":{},"186":{},"189":{},"194":{},"198":{},"207":{},"209":{},"312":{},"325":{},"326":{},"327":{},"621":{},"623":{},"629":{},"631":{},"717":{},"766":{},"814":{},"854":{},"855":{}}}],["origin_famili",{"_index":2007,"title":{},"content":{"377":{},"392":{}}}],["origin_typ",{"_index":967,"title":{},"content":{"209":{}}}],["originprivatekey",{"_index":713,"title":{},"content":{"190":{},"191":{}}}],["originpublickey",{"_index":164,"title":{},"content":{"37":{}}}],["originsignatur",{"_index":243,"title":{},"content":{"64":{},"814":{}}}],["os_perso_derive_node_with_se",{"_index":675,"title":{},"content":{"189":{}}}],["other",{"_index":1588,"title":{},"content":{"294":{},"621":{},"695":{},"816":{}}}],["otherwis",{"_index":402,"title":{},"content":{"149":{},"220":{},"272":{},"280":{},"286":{},"293":{},"477":{},"478":{},"769":{}}}],["otp",{"_index":3541,"title":{},"content":{"774":{},"777":{},"778":{}}}],["ought",{"_index":2623,"title":{},"content":{"554":{}}}],["ourselv",{"_index":2941,"title":{},"content":{"695":{}}}],["out",{"_index":1041,"title":{},"content":{"216":{},"376":{},"639":{},"686":{},"723":{},"777":{},"850":{}}}],["outdat",{"_index":1663,"title":{},"content":{"295":{}}}],["outer",{"_index":1180,"title":{},"content":{"271":{}}}],["outgo",{"_index":1858,"title":{},"content":{"350":{},"668":{},"671":{}}}],["outperform",{"_index":2979,"title":{},"content":{"641":{},"697":{}}}],["output",{"_index":146,"title":{},"content":{"34":{},"89":{},"188":{},"307":{},"308":{},"407":{},"408":{},"510":{},"525":{},"526":{},"555":{},"625":{},"656":{},"693":{},"716":{},"717":{}}}],["outsid",{"_index":1941,"title":{},"content":{"363":{},"364":{},"413":{},"603":{},"716":{},"854":{},"859":{}}}],["over",{"_index":1098,"title":{},"content":{"232":{},"285":{},"639":{},"661":{},"671":{},"702":{},"703":{},"712":{},"855":{}}}],["overal",{"_index":3052,"title":{},"content":{"652":{},"712":{}}}],["overcom",{"_index":2804,"title":{},"content":{"618":{},"697":{}}}],["overhead",{"_index":943,"title":{},"content":{"202":{},"329":{},"697":{}}}],["overlap",{"_index":3210,"title":{},"content":{"687":{}}}],["overload",{"_index":3242,"title":{},"content":{"708":{}}}],["overview",{"_index":3222,"title":{},"content":{"698":{}}}],["overwritten",{"_index":825,"title":{},"content":{"191":{}}}],["ovh",{"_index":2645,"title":{},"content":{"582":{},"739":{}}}],["own",{"_index":3016,"title":{},"content":{"643":{}}}],["owner",{"_index":1822,"title":{},"content":{"346":{},"657":{},"682":{},"759":{}}}],["ownership",{"_index":59,"title":{"46":{},"522":{}},"content":{"20":{},"28":{},"29":{},"46":{},"49":{},"50":{},"127":{},"152":{},"207":{},"310":{},"370":{},"396":{},"412":{},"499":{},"522":{},"643":{},"717":{},"728":{},"734":{},"741":{},"831":{},"839":{}}}],["ownership.authorizedpublickey",{"_index":193,"title":{},"content":{"47":{}}}],["ownership.secret",{"_index":194,"title":{},"content":{"47":{}}}],["ownership_length",{"_index":804,"title":{},"content":{"191":{}}}],["p1",{"_index":587,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{}}}],["p2",{"_index":589,"title":{},"content":{"188":{},"189":{},"190":{},"191":{},"194":{},"195":{},"196":{}}}],["p2p",{"_index":1005,"title":{"219":{},"332":{},"337":{},"666":{}},"content":{"216":{},"220":{},"221":{},"231":{},"237":{},"294":{},"304":{},"307":{},"328":{},"331":{},"336":{},"337":{},"338":{},"619":{},"620":{},"624":{},"666":{},"667":{},"672":{},"673":{},"682":{},"688":{},"693":{},"704":{},"717":{},"721":{},"723":{},"851":{}}}],["p2pavail",{"_index":78,"title":{"159":{}},"content":{"15":{},"16":{},"159":{}}}],["packag",{"_index":1796,"title":{},"content":{"334":{},"753":{},"779":{},"782":{},"834":{}}}],["pad",{"_index":3600,"title":{},"content":{"778":{}}}],["page",{"_index":380,"title":{},"content":{"112":{},"136":{},"365":{},"413":{},"553":{},"588":{},"717":{},"725":{},"739":{},"753":{},"775":{},"778":{},"834":{},"835":{},"849":{}}}],["pagin",{"_index":3235,"title":{},"content":{"702":{}}}],["pagingaddress",{"_index":387,"title":{},"content":{"131":{}}}],["pagingoffset",{"_index":84,"title":{},"content":{"15":{},"64":{},"139":{}}}],["pair",{"_index":891,"title":{},"content":{"198":{},"289":{},"291":{},"323":{},"637":{},"786":{}}}],["panel",{"_index":2524,"title":{},"content":{"406":{},"407":{},"412":{},"506":{},"513":{},"524":{}}}],["paradigm",{"_index":898,"title":{},"content":{"200":{},"685":{}}}],["parallel",{"_index":1606,"title":{},"content":{"268":{}}}],["param",{"_index":644,"title":{},"content":{"189":{},"736":{}}}],["paramet",{"_index":597,"title":{},"content":{"188":{},"273":{},"274":{},"275":{},"278":{},"369":{},"391":{},"395":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"441":{},"442":{},"443":{},"445":{},"446":{},"447":{},"448":{},"449":{},"453":{},"454":{},"455":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"464":{},"465":{},"466":{},"469":{},"472":{},"473":{},"475":{},"477":{},"478":{},"480":{},"481":{},"482":{},"483":{},"488":{},"489":{},"491":{},"492":{},"493":{},"494":{},"495":{},"497":{},"499":{},"501":{},"504":{},"505":{},"640":{},"754":{},"759":{}}}],["parameters.eccdetail",{"_index":1278,"title":{},"content":{"273":{}}}],["params:coin_typ",{"_index":772,"title":{},"content":{"190":{}}}],["parent",{"_index":1232,"title":{},"content":{"273":{},"359":{}}}],["parent'",{"_index":1913,"title":{},"content":{"359":{}}}],["parenthesi",{"_index":1956,"title":{},"content":{"365":{},"377":{},"380":{}}}],["pariti",{"_index":3486,"title":{},"content":{"858":{},"859":{}}}],["pars",{"_index":371,"title":{},"content":{"106":{},"142":{},"157":{},"163":{},"310":{},"322":{},"323":{},"400":{},"754":{}}}],["parse/1",{"_index":2293,"title":{"448":{}},"content":{}}],["part",{"_index":736,"title":{},"content":{"190":{},"191":{},"216":{},"274":{},"281":{},"295":{},"296":{},"380":{},"398":{},"524":{},"564":{},"623":{},"637":{},"657":{},"661":{},"683":{},"727":{},"785":{},"853":{}}}],["parti",{"_index":580,"title":{},"content":{"186":{},"216":{},"648":{},"649":{},"695":{},"778":{}}}],["particip",{"_index":3079,"title":{},"content":{"661":{},"666":{},"672":{}}}],["particular",{"_index":2920,"title":{"653":{}},"content":{"637":{},"682":{}}}],["partit",{"_index":1571,"title":{},"content":{"291":{}}}],["pass",{"_index":1291,"title":{},"content":{"273":{},"274":{},"278":{},"295":{},"369":{},"378":{},"380":{},"382":{},"384":{},"661":{},"753":{},"778":{},"824":{}}}],["passphras",{"_index":2656,"title":{},"content":{"584":{},"696":{}}}],["password",{"_index":962,"title":{"696":{}},"content":{"207":{},"273":{},"588":{},"649":{},"679":{},"696":{},"773":{},"774":{},"777":{},"778":{}}}],["patch",{"_index":1597,"title":{},"content":{"266":{},"317":{},"338":{},"488":{}}}],["patent",{"_index":3122,"title":{"678":{},"679":{},"681":{}},"content":{"679":{},"680":{}}}],["path",{"_index":876,"title":{"200":{},"292":{},"293":{}},"content":{"197":{},"200":{},"201":{},"204":{},"292":{},"293":{},"445":{},"446":{},"584":{},"647":{},"650":{},"742":{},"754":{},"759":{},"802":{},"804":{},"807":{},"813":{},"846":{}}}],["path_extract/2",{"_index":2280,"title":{"445":{}},"content":{}}],["path_match?/2",{"_index":2284,"title":{"446":{}},"content":{}}],["pathsuffix",{"_index":3647,"title":{},"content":{"804":{},"807":{},"813":{}}}],["pattern",{"_index":2129,"title":{},"content":{"395":{},"441":{},"442":{},"443":{},"607":{},"859":{}}}],["pay",{"_index":2655,"title":{},"content":{"566":{},"584":{},"724":{},"759":{}}}],["payload",{"_index":2534,"title":{},"content":{"407":{},"408":{},"513":{},"789":{},"792":{},"801":{},"810":{}}}],["payment",{"_index":2661,"title":{},"content":{"560":{},"642":{},"679":{}}}],["peer",{"_index":1119,"title":{},"content":{"220":{},"329":{},"593":{},"602":{},"620":{},"853":{},"854":{}}}],["pend",{"_index":1610,"title":{"309":{},"718":{}},"content":{"282":{},"304":{},"306":{},"711":{},"717":{}}}],["peopl",{"_index":2580,"title":{},"content":{"508":{},"630":{},"642":{},"713":{}}}],["per",{"_index":678,"title":{},"content":{"189":{},"350":{},"403":{},"406":{},"488":{},"610":{},"641":{},"759":{},"768":{}}}],["perform",{"_index":138,"title":{},"content":{"31":{},"34":{},"55":{},"86":{},"95":{},"186":{},"189":{},"190":{},"191":{},"202":{},"213":{},"217":{},"219":{},"220":{},"233":{},"235":{},"267":{},"277":{},"281":{},"288":{},"290":{},"292":{},"293":{},"307":{},"309":{},"312":{},"313":{},"317":{},"318":{},"322":{},"340":{},"345":{},"395":{},"472":{},"488":{},"489":{},"584":{},"621":{},"632":{},"639":{},"656":{},"661":{},"668":{},"677":{},"683":{},"688":{},"704":{},"713":{},"717":{},"729":{},"741":{},"742":{},"760":{},"775":{},"778":{},"784":{},"859":{}}}],["performecdh",{"_index":705,"title":{},"content":{"190":{},"191":{}}}],["performecdh(uint8_t",{"_index":708,"title":{},"content":{"190":{},"191":{}}}],["performecdsa",{"_index":811,"title":{},"content":{"191":{}}}],["performecdsa(uint8_t",{"_index":812,"title":{},"content":{"191":{}}}],["period",{"_index":1118,"title":{},"content":{"220":{},"313":{},"316":{},"602":{},"668":{},"853":{},"858":{}}}],["peripheri",{"_index":3203,"title":{},"content":{"684":{}}}],["perman",{"_index":3160,"title":{},"content":{"682":{},"745":{},"756":{}}}],["permissionless",{"_index":3086,"title":{},"content":{"666":{}}}],["permit",{"_index":2636,"title":{},"content":{"555":{},"688":{},"717":{}}}],["persist",{"_index":1522,"title":{},"content":{"289":{},"294":{},"676":{},"677":{},"703":{},"778":{}}}],["person",{"_index":1555,"title":{},"content":{"290":{},"644":{},"646":{},"652":{},"658":{},"695":{},"754":{}}}],["perspect",{"_index":866,"title":{},"content":{"213":{},"287":{}}}],["phase",{"_index":1103,"title":{},"content":{"233":{},"296":{},"625":{},"661":{},"670":{},"726":{}}}],["photograph",{"_index":3174,"title":{},"content":{"683":{}}}],["photographi",{"_index":3197,"title":{},"content":{"683":{}}}],["phrase",{"_index":2799,"title":{},"content":{"588":{},"776":{},"778":{}}}],["physic",{"_index":460,"title":{},"content":{"181":{},"619":{}}}],["pick",{"_index":1578,"title":{},"content":{"291":{},"671":{}}}],["pillar",{"_index":3033,"title":{},"content":{"644":{}}}],["pin",{"_index":1353,"title":{},"content":{"242":{},"261":{},"262":{},"263":{},"264":{},"588":{},"773":{},"774":{},"777":{},"778":{}}}],["piv",{"_index":1355,"title":{},"content":{"242":{},"244":{},"638":{}}}],["place",{"_index":1476,"title":{},"content":{"285":{},"369":{},"513":{},"651":{}}}],["placehold",{"_index":1965,"title":{},"content":{"369":{}}}],["placement",{"_index":2928,"title":{"639":{}},"content":{}}],["plain",{"_index":400,"title":{},"content":{"149":{},"553":{}}}],["plane",{"_index":3381,"title":{},"content":{"727":{}}}],["platform",{"_index":2784,"title":{},"content":{"588":{},"613":{},"638":{},"642":{},"679":{},"760":{},"775":{},"785":{},"815":{}}}],["play",{"_index":2873,"title":{},"content":{"621":{}}}],["playbook",{"_index":1636,"title":{},"content":{"296":{}}}],["playground",{"_index":2511,"title":{"404":{},"411":{},"412":{},"506":{},"513":{},"524":{}},"content":{"411":{},"506":{},"515":{},"522":{},"525":{}}}],["pleas",{"_index":1800,"title":{},"content":{"334":{},"343":{},"412":{},"554":{},"645":{},"821":{},"849":{}}}],["plugin",{"_index":3560,"title":{},"content":{"775":{}}}],["point",{"_index":1196,"title":{"784":{},"785":{}},"content":{"245":{},"246":{},"249":{},"250":{},"252":{},"258":{},"259":{},"262":{},"263":{},"264":{},"272":{},"275":{},"278":{},"281":{},"356":{},"738":{},"739":{},"859":{}}}],["pointer",{"_index":727,"title":{},"content":{"190":{},"191":{},"753":{}}}],["pointx",{"_index":706,"title":{},"content":{"190":{},"191":{}}}],["polici",{"_index":1222,"title":{},"content":{"273":{},"588":{}}}],["poll",{"_index":1700,"title":{},"content":{"315":{},"320":{},"619":{},"664":{}}}],["pollut",{"_index":3125,"title":{},"content":{"679":{}}}],["polygon",{"_index":2717,"title":{"612":{}},"content":{"593":{},"612":{},"613":{},"851":{}}}],["polymorph",{"_index":2986,"title":{},"content":{"641":{}}}],["pool",{"_index":2678,"title":{},"content":{"564":{},"604":{},"676":{},"687":{},"853":{},"855":{},"858":{},"859":{}}}],["popul",{"_index":1319,"title":{},"content":{"278":{},"337":{}}}],["popular",{"_index":3555,"title":{},"content":{"775":{},"783":{}}}],["popup",{"_index":2795,"title":{},"content":{"588":{},"768":{}}}],["port",{"_index":133,"title":{},"content":{"25":{},"37":{},"235":{},"268":{},"312":{},"336":{},"338":{},"705":{}}}],["portal",{"_index":3362,"title":{},"content":{"725":{}}}],["portion",{"_index":1226,"title":{},"content":{"273":{}}}],["pos_int",{"_index":2345,"title":{},"content":{"461":{},"465":{},"466":{}}}],["pose",{"_index":3013,"title":{},"content":{"643":{}}}],["posinteg",{"_index":83,"title":{"161":{}},"content":{"15":{},"16":{},"64":{},"65":{},"112":{},"113":{},"136":{},"137":{},"139":{},"140":{},"161":{}}}],["posist",{"_index":1425,"title":{},"content":{"260":{}}}],["posit",{"_index":420,"title":{},"content":{"161":{},"256":{},"260":{},"262":{},"290":{},"291":{},"293":{},"683":{},"705":{}}}],["possibl",{"_index":35,"title":{},"content":{"5":{},"230":{},"283":{},"290":{},"328":{},"353":{},"361":{},"374":{},"460":{},"493":{},"554":{},"579":{},"609":{},"619":{},"623":{},"633":{},"637":{},"639":{},"644":{},"647":{},"648":{},"649":{},"683":{},"696":{},"733":{},"735":{},"753":{},"759":{},"777":{},"847":{},"848":{}}}],["post",{"_index":2439,"title":{},"content":{"488":{},"766":{},"767":{}}}],["potenti",{"_index":2746,"title":{},"content":{"604":{},"629":{}}}],["pow",{"_index":2815,"title":{},"content":{"619":{},"641":{}}}],["pow/2",{"_index":2406,"title":{"480":{}},"content":{}}],["power",{"_index":1642,"title":{},"content":{"295":{},"480":{},"657":{},"685":{},"746":{},"833":{}}}],["practic",{"_index":3264,"title":{},"content":{"731":{}}}],["pratic",{"_index":2894,"title":{},"content":{"633":{}}}],["pre",{"_index":3514,"title":{"781":{}},"content":{"834":{}}}],["precis",{"_index":405,"title":{},"content":{"147":{},"356":{},"464":{}}}],["preconfigur",{"_index":3115,"title":{},"content":{"705":{}}}],["predetermin",{"_index":2662,"title":{"562":{},"600":{}},"content":{"560":{}}}],["predict",{"_index":1490,"title":{},"content":{"286":{},"290":{},"622":{},"682":{}}}],["preemptiv",{"_index":2908,"title":{},"content":{"637":{}}}],["prefer",{"_index":479,"title":{},"content":{"181":{},"554":{},"741":{},"778":{}}}],["prefix",{"_index":1889,"title":{},"content":{"353":{},"354":{}}}],["preliminari",{"_index":2860,"title":{},"content":{"625":{}}}],["prepar",{"_index":2567,"title":{},"content":{"513":{}}}],["prepend",{"_index":964,"title":{},"content":{"209":{},"272":{},"289":{},"631":{},"633":{}}}],["prepend/2",{"_index":2242,"title":{"438":{}},"content":{"437":{}}}],["prerequisit",{"_index":538,"title":{"183":{},"761":{}},"content":{"644":{},"658":{}}}],["present",{"_index":1561,"title":{},"content":{"290":{},"293":{},"339":{},"340":{},"391":{},"554":{},"670":{},"746":{}}}],["preserv",{"_index":2454,"title":{},"content":{"489":{}}}],["preset",{"_index":1983,"title":{},"content":{"370":{}}}],["press",{"_index":3523,"title":{},"content":{"837":{},"839":{},"840":{},"841":{},"842":{},"844":{},"845":{},"846":{},"847":{}}}],["pretti",{"_index":1892,"title":{},"content":{"355":{},"407":{}}}],["prevail",{"_index":2630,"title":{},"content":{"554":{}}}],["prevent",{"_index":1174,"title":{},"content":{"270":{},"583":{},"648":{},"650":{},"687":{},"696":{},"777":{}}}],["previou",{"_index":342,"title":{},"content":{"95":{},"191":{},"220":{},"232":{},"254":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"289":{},"290":{},"307":{},"308":{},"309":{},"370":{},"379":{},"380":{},"389":{},"393":{},"460":{},"513":{},"628":{},"629":{},"633":{},"706":{},"717":{},"749":{},"756":{},"814":{},"820":{},"822":{}}}],["previous",{"_index":1416,"title":{},"content":{"256":{}}}],["previous.cod",{"_index":2013,"title":{},"content":{"377":{},"379":{}}}],["previous_index",{"_index":2033,"title":{},"content":{"380":{}}}],["previous_public_key",{"_index":2119,"title":{},"content":{"392":{},"393":{},"460":{}}}],["previousaddress",{"_index":244,"title":{},"content":{"64":{}}}],["previouspublickey",{"_index":245,"title":{},"content":{"64":{},"814":{}}}],["previoussignatur",{"_index":246,"title":{},"content":{"64":{},"814":{}}}],["price",{"_index":1741,"title":{"599":{}},"content":{"323":{},"349":{},"384":{},"599":{},"651":{},"652":{},"665":{},"774":{},"778":{},"821":{}}}],["primari",{"_index":1294,"title":{},"content":{"273":{},"274":{},"778":{}}}],["primarili",{"_index":1061,"title":{},"content":{"222":{}}}],["principl",{"_index":1059,"title":{"716":{}},"content":{"218":{},"290":{},"637":{},"713":{}}}],["prior",{"_index":535,"title":{},"content":{"182":{},"309":{}}}],["prioriti",{"_index":3597,"title":{},"content":{"778":{}}}],["privaci",{"_index":1213,"title":{},"content":{"273":{},"331":{},"588":{},"672":{},"679":{},"682":{}}}],["privat",{"_index":477,"title":{},"content":{"181":{},"189":{},"196":{},"198":{},"201":{},"213":{},"273":{},"281":{},"346":{},"564":{},"629":{},"666":{},"682":{},"696":{},"717":{},"742":{},"745":{},"747":{},"783":{},"784":{},"853":{}}}],["privateket",{"_index":821,"title":{},"content":{"191":{}}}],["privatekey",{"_index":669,"title":{},"content":{"189":{},"190":{},"191":{}}}],["probabl",{"_index":2537,"title":{},"content":{"407":{},"835":{}}}],["problem",{"_index":27,"title":{"573":{},"576":{},"615":{},"617":{}},"content":{"9":{},"290":{}}}],["proce",{"_index":2677,"title":{},"content":{"564":{},"566":{},"746":{},"754":{},"853":{}}}],["proceed",{"_index":3494,"title":{},"content":{"760":{}}}],["process",{"_index":604,"title":{"564":{},"575":{},"606":{},"607":{},"671":{},"702":{},"772":{}},"content":{"188":{},"216":{},"217":{},"229":{},"231":{},"234":{},"268":{},"282":{},"295":{},"300":{},"301":{},"304":{},"309":{},"320":{},"349":{},"583":{},"588":{},"603":{},"606":{},"620":{},"636":{},"645":{},"661":{},"682":{},"685":{},"686":{},"705":{},"752":{},"765":{},"768":{},"854":{},"858":{},"859":{}}}],["processor",{"_index":2903,"title":{},"content":{"636":{}}}],["produc",{"_index":963,"title":{},"content":{"209":{},"295":{},"296":{},"451":{},"621":{},"624":{},"650":{},"673":{},"726":{}}}],["product",{"_index":1020,"title":{},"content":{"216":{},"343":{},"536":{},"537":{},"538":{},"539":{},"833":{},"849":{}}}],["profit",{"_index":3025,"title":{},"content":{"644":{}}}],["progess",{"_index":2883,"title":{},"content":{"630":{}}}],["program",{"_index":980,"title":{},"content":{"215":{},"216":{},"267":{},"268":{},"775":{},"782":{}}}],["programm",{"_index":3047,"title":{},"content":{"651":{}}}],["progress",{"_index":2698,"title":{},"content":{"575":{},"662":{},"765":{}}}],["prohibit",{"_index":2866,"title":{},"content":{"621":{},"682":{}}}],["project",{"_index":562,"title":{"680":{}},"content":{"184":{},"188":{},"295":{},"552":{},"644":{},"645":{},"779":{},"848":{}}}],["prometheu",{"_index":1629,"title":{},"content":{"296":{}}}],["promot",{"_index":1036,"title":{},"content":{"216":{},"644":{}}}],["prompt",{"_index":810,"title":{},"content":{"191":{},"745":{},"746":{},"747":{},"748":{},"768":{}}}],["proof",{"_index":121,"title":{"325":{},"621":{},"658":{}},"content":{"28":{},"49":{},"95":{},"127":{},"325":{},"327":{},"560":{},"621":{},"624":{},"629":{},"644":{},"717":{},"728":{},"814":{},"859":{}}}],["proofofintegr",{"_index":344,"title":{},"content":{"95":{}}}],["proofofwork",{"_index":345,"title":{},"content":{"95":{}}}],["prop",{"_index":1645,"title":{},"content":{"295":{},"377":{}}}],["prop1",{"_index":2003,"title":{},"content":{"377":{}}}],["prop2",{"_index":2004,"title":{},"content":{"377":{}}}],["prop3",{"_index":2005,"title":{},"content":{"377":{}}}],["prop4",{"_index":2006,"title":{},"content":{"377":{}}}],["prop_{proposal_address",{"_index":1654,"title":{},"content":{"295":{}}}],["propag",{"_index":3089,"title":{"674":{}},"content":{"667":{},"668":{}}}],["proper",{"_index":1111,"title":{},"content":{"234":{},"661":{}}}],["properti",{"_index":210,"title":{},"content":{"49":{},"127":{},"169":{},"336":{},"347":{},"361":{},"377":{},"378":{},"622":{},"650":{},"652":{},"656":{},"668":{},"670":{},"674":{},"732":{},"733":{},"735":{}}}],["property_nam",{"_index":3269,"title":{},"content":{"732":{}}}],["property_valu",{"_index":3270,"title":{},"content":{"732":{}}}],["propos",{"_index":1607,"title":{"282":{},"317":{}},"content":{"282":{},"295":{},"296":{},"313":{},"315":{},"317":{},"318":{},"552":{},"645":{},"661":{},"815":{}}}],["protect",{"_index":2798,"title":{},"content":{"588":{},"773":{},"778":{},"783":{},"784":{}}}],["protobuf",{"_index":1772,"title":{},"content":{"330":{}}}],["protocol",{"_index":343,"title":{"330":{}},"content":{"95":{},"98":{},"134":{},"135":{},"328":{},"330":{},"331":{},"336":{},"488":{},"644":{},"645":{},"670":{},"682":{},"705":{},"724":{},"783":{},"785":{},"815":{},"854":{}}}],["protocolvers",{"_index":346,"title":{},"content":{"95":{}}}],["prove",{"_index":1559,"title":{},"content":{"290":{},"717":{},"734":{},"741":{},"759":{}}}],["proven",{"_index":1848,"title":{},"content":{"349":{}}}],["provid",{"_index":679,"title":{"739":{}},"content":{"189":{},"201":{},"216":{},"222":{},"223":{},"225":{},"226":{},"228":{},"230":{},"232":{},"265":{},"268":{},"284":{},"285":{},"287":{},"290":{},"291":{},"299":{},"305":{},"307":{},"309":{},"319":{},"321":{},"322":{},"339":{},"347":{},"348":{},"369":{},"389":{},"564":{},"587":{},"593":{},"604":{},"612":{},"618":{},"620":{},"629":{},"630":{},"633":{},"641":{},"642":{},"643":{},"644":{},"646":{},"657":{},"672":{},"673":{},"695":{},"708":{},"709":{},"721":{},"723":{},"725":{},"738":{},"745":{},"746":{},"747":{},"748":{},"763":{},"768":{},"776":{},"777":{},"778":{},"785":{},"818":{},"821":{},"836":{},"844":{},"853":{},"854":{},"859":{}}}],["provis",{"_index":2654,"title":{},"content":{"584":{},"859":{}}}],["pseudo",{"_index":2002,"title":{},"content":{"377":{},"621":{}}}],["pub",{"_index":3618,"title":{},"content":{"782":{}}}],["pub.dev",{"_index":1797,"title":{},"content":{"334":{},"779":{}}}],["public",{"_index":46,"title":{"189":{},"194":{},"209":{},"326":{},"511":{},"628":{},"631":{}},"content":{"18":{},"21":{},"28":{},"46":{},"49":{},"52":{},"95":{},"123":{},"124":{},"127":{},"163":{},"182":{},"183":{},"186":{},"189":{},"191":{},"194":{},"196":{},"197":{},"198":{},"201":{},"202":{},"207":{},"209":{},"212":{},"231":{},"244":{},"253":{},"271":{},"273":{},"275":{},"278":{},"279":{},"281":{},"282":{},"289":{},"290":{},"292":{},"298":{},"310":{},"312":{},"325":{},"326":{},"327":{},"331":{},"336":{},"338":{},"339":{},"340":{},"341":{},"353":{},"376":{},"393":{},"396":{},"412":{},"455":{},"506":{},"511":{},"522":{},"564":{},"621":{},"624":{},"628":{},"631":{},"632":{},"633":{},"637":{},"644":{},"647":{},"649":{},"672":{},"682":{},"687":{},"692":{},"693":{},"713":{},"716":{},"717":{},"745":{},"746":{},"747":{},"786":{},"803":{},"805":{},"814":{},"839":{},"853":{}}}],["public_key",{"_index":2317,"title":{},"content":{"455":{},"499":{}}}],["publicarea",{"_index":1210,"title":{},"content":{"273":{}}}],["publicationstatu",{"_index":3444,"title":{},"content":{"756":{}}}],["publickey",{"_index":56,"title":{"163":{}},"content":{"18":{},"19":{},"21":{},"22":{},"37":{},"38":{},"52":{},"53":{},"64":{},"65":{},"95":{},"96":{},"163":{},"189":{},"190":{},"191":{},"201":{},"271":{},"805":{}}}],["publickeys",{"_index":1321,"title":{"255":{},"256":{},"279":{}},"content":{}}],["publish",{"_index":515,"title":{},"content":{"181":{},"237":{},"334":{},"707":{},"745":{},"746":{},"747":{}}}],["pull",{"_index":2608,"title":{},"content":{"552":{},"554":{},"702":{},"727":{}}}],["pure",{"_index":2938,"title":{},"content":{"639":{}}}],["purpos",{"_index":905,"title":{"583":{}},"content":{"200":{},"290":{},"319":{},"339":{},"377":{},"379":{},"381":{},"383":{},"566":{},"639":{},"644":{},"662":{},"763":{},"766":{},"775":{}}}],["push",{"_index":1819,"title":{},"content":{"346":{},"554":{},"671":{},"727":{}}}],["put",{"_index":1575,"title":{},"content":{"291":{},"488":{},"588":{},"651":{}}}],["qr",{"_index":2792,"title":{},"content":{"587":{},"774":{}}}],["qualif",{"_index":1786,"title":{},"content":{"336":{}}}],["qualifi",{"_index":2831,"title":{},"content":{"620":{},"673":{}}}],["quantiti",{"_index":3503,"title":{},"content":{"767":{}}}],["quantum",{"_index":2876,"title":{"627":{}},"content":{"626":{},"629":{},"716":{}}}],["queri",{"_index":43,"title":{"548":{}},"content":{"7":{},"13":{},"17":{},"27":{},"39":{},"42":{},"51":{},"54":{},"66":{},"78":{},"100":{},"101":{},"104":{},"107":{},"112":{},"115":{},"120":{},"123":{},"125":{},"128":{},"131":{},"136":{},"139":{},"143":{},"144":{},"156":{},"162":{},"168":{},"172":{},"223":{},"226":{},"307":{},"308":{},"337":{},"349":{},"376":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"623":{},"850":{}}}],["question",{"_index":3532,"title":{},"content":{"849":{}}}],["queue",{"_index":1768,"title":{},"content":{"329":{}}}],["quick",{"_index":3594,"title":{},"content":{"777":{}}}],["quicker",{"_index":1725,"title":{},"content":{"320":{}}}],["quickli",{"_index":1122,"title":{},"content":{"220":{},"290":{},"319":{}}}],["quit",{"_index":3343,"title":{},"content":{"723":{}}}],["quorum",{"_index":3035,"title":{},"content":{"644":{},"660":{}}}],["quot",{"_index":1864,"title":{},"content":{"352":{},"353":{}}}],["r",{"_index":1191,"title":{"272":{}},"content":{"272":{},"473":{},"489":{}}}],["r.bodi",{"_index":2453,"title":{},"content":{"489":{}}}],["r.statu",{"_index":2452,"title":{},"content":{"489":{}}}],["race",{"_index":3029,"title":{},"content":{"644":{}}}],["rais",{"_index":2445,"title":{},"content":{"488":{}}}],["ran",{"_index":1674,"title":{},"content":{"304":{}}}],["random",{"_index":1469,"title":{},"content":{"284":{},"524":{},"621":{},"776":{},"778":{}}}],["random.secur",{"_index":3576,"title":{},"content":{"776":{}}}],["randomli",{"_index":2959,"title":{},"content":{"647":{},"668":{},"776":{}}}],["rang",{"_index":1003,"title":{"357":{}},"content":{"216":{},"673":{}}}],["rar",{"_index":3450,"title":{},"content":{"745":{}}}],["rare",{"_index":3046,"title":{},"content":{"651":{},"724":{}}}],["rate",{"_index":3184,"title":{},"content":{"683":{},"855":{}}}],["rational",{"_index":1445,"title":{"284":{}},"content":{}}],["raw",{"_index":692,"title":{},"content":{"189":{},"198":{},"271":{},"272":{},"274":{},"371":{},"522":{}}}],["rawprivatekey",{"_index":676,"title":{},"content":{"189":{}}}],["re",{"_index":1342,"title":{},"content":{"281":{}}}],["reach",{"_index":1579,"title":{},"content":{"291":{},"330":{},"336":{},"396":{},"488":{},"625":{},"641":{},"705":{}}}],["react",{"_index":2517,"title":{},"content":{"404":{},"405":{},"775":{}}}],["read",{"_index":849,"title":{"293":{}},"content":{"211":{},"253":{},"257":{},"283":{},"284":{},"286":{},"289":{},"290":{},"291":{},"292":{},"293":{},"349":{},"493":{},"514":{},"533":{},"534":{},"535":{},"588":{},"723":{},"743":{},"776":{},"830":{}}}],["read/writ",{"_index":1912,"title":{},"content":{"359":{}}}],["readabl",{"_index":429,"title":{},"content":{"165":{},"346":{}}}],["reader",{"_index":534,"title":{"291":{}},"content":{"182":{},"293":{}}}],["readi",{"_index":2541,"title":{},"content":{"412":{},"564":{},"640":{},"707":{},"853":{}}}],["readm",{"_index":3460,"title":{},"content":{"757":{},"848":{}}}],["real",{"_index":1716,"title":{},"content":{"319":{},"345":{},"620":{},"644":{},"651":{},"660":{},"661":{},"679":{},"703":{}}}],["realiti",{"_index":1814,"title":{},"content":{"345":{},"686":{},"716":{}}}],["realiz",{"_index":3014,"title":{},"content":{"643":{}}}],["realli",{"_index":1054,"title":{},"content":{"217":{},"285":{},"286":{},"290":{},"294":{},"330":{},"339":{},"633":{},"727":{}}}],["realtim",{"_index":3236,"title":{"703":{}},"content":{}}],["reason",{"_index":282,"title":{},"content":{"73":{},"348":{},"361":{},"412":{},"633":{},"696":{},"716":{},"775":{},"778":{}}}],["rebind",{"_index":1962,"title":{},"content":{"369":{}}}],["rebuild",{"_index":2829,"title":{},"content":{"620":{}}}],["receiv",{"_index":269,"title":{"613":{}},"content":{"67":{},"175":{},"182":{},"213":{},"290":{},"295":{},"307":{},"346":{},"374":{},"391":{},"488":{},"587":{},"598":{},"625":{},"664":{},"665":{},"671":{},"709":{},"735":{},"755":{},"772":{},"774":{},"796":{},"799":{},"858":{},"859":{}}}],["receive/send",{"_index":3322,"title":{},"content":{"826":{}}}],["receiveaddr",{"_index":796,"title":{},"content":{"191":{}}}],["receiveaddrlen",{"_index":797,"title":{},"content":{"191":{}}}],["recent",{"_index":3537,"title":{},"content":{"774":{}}}],["recept",{"_index":3604,"title":{},"content":{"778":{}}}],["recertif",{"_index":3158,"title":{},"content":{"682":{}}}],["recieveraddr",{"_index":806,"title":{},"content":{"191":{}}}],["recieveraddress",{"_index":784,"title":{},"content":{"191":{}}}],["recipi",{"_index":122,"title":{"521":{},"735":{},"839":{}},"content":{"28":{},"70":{},"191":{},"224":{},"225":{},"227":{},"228":{},"229":{},"290":{},"331":{},"381":{},"393":{},"398":{},"501":{},"564":{},"606":{},"625":{},"652":{},"687":{},"710":{},"717":{},"730":{},"735":{},"828":{},"839":{},"853":{},"858":{}}}],["recipient'",{"_index":3288,"title":{},"content":{"736":{},"858":{},"859":{}}}],["recipient/send",{"_index":1071,"title":{},"content":{"224":{}}}],["recipient/sender/token",{"_index":1074,"title":{},"content":{"227":{}}}],["recipient_address",{"_index":2071,"title":{},"content":{"374":{},"393":{}}}],["recognit",{"_index":3591,"title":{},"content":{"777":{}}}],["recommand",{"_index":3401,"title":{},"content":{"741":{}}}],["recommend",{"_index":3491,"title":{},"content":{"760":{},"761":{}}}],["record",{"_index":3170,"title":{},"content":{"683":{},"739":{},"778":{}}}],["recoveri",{"_index":3632,"title":{},"content":{"786":{}}}],["recur",{"_index":2081,"title":{"375":{}},"content":{}}],["recurr",{"_index":2106,"title":{"388":{}},"content":{}}],["red",{"_index":3457,"title":{},"content":{"749":{},"750":{}}}],["redefin",{"_index":3004,"title":{},"content":{"642":{},"714":{}}}],["redesign",{"_index":3088,"title":{},"content":{"666":{}}}],["redi",{"_index":1457,"title":{},"content":{"284":{}}}],["redirect",{"_index":1677,"title":{"582":{}},"content":{"304":{},"738":{},"740":{}}}],["reduc",{"_index":941,"title":{},"content":{"202":{},"287":{},"329":{},"330":{},"353":{},"620":{},"674":{},"679":{},"712":{},"715":{},"775":{},"777":{}}}],["redund",{"_index":1483,"title":{},"content":{"285":{}}}],["ref",{"_index":3143,"title":{},"content":{"682":{},"683":{},"684":{}}}],["refer",{"_index":582,"title":{},"content":{"187":{},"239":{},"269":{},"280":{},"281":{},"298":{},"347":{},"587":{},"682":{},"689":{},"738":{},"742":{},"745":{},"746":{},"747":{},"748":{},"753":{},"754":{},"755":{},"756":{},"766":{}}}],["referenc",{"_index":2958,"title":{},"content":{"647":{},"691":{},"734":{}}}],["refin",{"_index":3212,"title":{},"content":{"688":{}}}],["refund",{"_index":2665,"title":{"772":{}},"content":{"560":{},"573":{},"615":{},"764":{},"771":{},"772":{},"853":{}}}],["refus",{"_index":2692,"title":{"573":{},"615":{}},"content":{"622":{}}}],["regard",{"_index":1701,"title":{},"content":{"315":{},"320":{},"340":{},"582":{},"633":{},"651":{},"724":{},"749":{},"836":{},"859":{}}}],["regardless",{"_index":2811,"title":{},"content":{"619":{}}}],["regener",{"_index":1326,"title":{},"content":{"279":{}}}],["regex",{"_index":2256,"title":{"440":{}},"content":{"441":{},"443":{}}}],["regex.extract(\"123456abc",{"_index":2258,"title":{},"content":{"441":{}}}],["regex.extract(\"voodoo",{"_index":2261,"title":{},"content":{"441":{}}}],["regex.match?(\"123456",{"_index":2264,"title":{},"content":{"442":{}}}],["regex.match?(\"123456abc",{"_index":2265,"title":{},"content":{"442":{}}}],["regex.scan(\"a0b1c2,123\\nd3e4f5,456\\n",{"_index":2274,"title":{},"content":{"443":{}}}],["regex.scan(\"foo",{"_index":2267,"title":{},"content":{"443":{}}}],["regex.scan(\"toto,123\\ntutu,456\\n",{"_index":2269,"title":{},"content":{"443":{}}}],["regex_extract(data",{"_index":2132,"title":{},"content":{"395":{}}}],["regex_match?(\"hello",{"_index":2131,"title":{},"content":{"395":{}}}],["regex_match?(data",{"_index":2128,"title":{},"content":{"395":{}}}],["regist",{"_index":384,"title":{},"content":{"118":{},"859":{}}}],["registr",{"_index":3157,"title":{},"content":{"682":{}}}],["registri",{"_index":1676,"title":{},"content":{"304":{}}}],["regular",{"_index":2130,"title":{},"content":{"395":{},"652":{}}}],["reimagin",{"_index":3009,"title":{},"content":{"642":{}}}],["reintegr",{"_index":3298,"title":{},"content":{"716":{}}}],["reject",{"_index":376,"title":{},"content":{"106":{},"142":{},"157":{},"163":{}}}],["rejoin",{"_index":2912,"title":{},"content":{"637":{},"706":{}}}],["rel",{"_index":3279,"title":{},"content":{"733":{}}}],["relat",{"_index":52,"title":{},"content":{"18":{},"320":{},"623":{},"633":{},"647":{},"682":{},"683":{},"754":{},"761":{},"778":{},"786":{}}}],["relay",{"_index":1682,"title":{},"content":{"307":{},"657":{}}}],["releas",{"_index":541,"title":{},"content":{"183":{},"295":{},"296":{},"727":{},"834":{}}}],["relev",{"_index":3034,"title":{},"content":{"644":{},"658":{}}}],["reli",{"_index":1056,"title":{},"content":{"217":{},"347":{},"349":{},"394":{},"488":{},"560":{},"679":{},"853":{},"854":{}}}],["reliabl",{"_index":984,"title":{},"content":{"215":{},"683":{},"775":{},"783":{}}}],["reload",{"_index":1045,"title":{},"content":{"216":{},"660":{}}}],["rem/2",{"_index":2418,"title":{"483":{}},"content":{}}],["remain",{"_index":147,"title":{},"content":{"34":{},"89":{},"554":{},"648":{},"671":{},"717":{},"753":{},"756":{},"766":{},"858":{},"859":{}}}],["remaind",{"_index":2426,"title":{},"content":{"483":{}}}],["rememb",{"_index":2774,"title":{},"content":{"613":{},"778":{}}}],["remind",{"_index":2797,"title":{},"content":{"588":{},"633":{},"676":{}}}],["remot",{"_index":511,"title":{},"content":{"181":{},"329":{}}}],["remov",{"_index":1341,"title":{"846":{}},"content":{"281":{},"430":{},"579":{},"609":{},"679":{},"680":{},"682":{},"729":{},"771":{},"843":{}}}],["render",{"_index":399,"title":{},"content":{"149":{},"553":{},"740":{},"754":{},"775":{}}}],["renew",{"_index":1697,"title":{},"content":{"313":{},"621":{},"624":{},"682":{}}}],["rent",{"_index":3351,"title":{},"content":{"724":{}}}],["repair",{"_index":1134,"title":{"675":{}},"content":{"221":{},"237":{},"238":{},"670":{},"675":{},"676":{},"682":{},"707":{}}}],["repaireveri",{"_index":2824,"title":{},"content":{"620":{}}}],["replac",{"_index":527,"title":{},"content":{"182":{},"201":{},"642":{},"679":{}}}],["repli",{"_index":3407,"title":{},"content":{"741":{}}}],["replic",{"_index":275,"title":{"708":{},"710":{}},"content":{"67":{},"175":{},"229":{},"231":{},"233":{},"290":{},"307":{},"620":{},"625":{},"641":{},"652":{},"671":{},"672":{},"674":{},"677":{},"682":{},"687":{},"700":{},"702":{},"703":{},"709":{},"710":{},"712":{},"816":{},"858":{}}}],["replica",{"_index":1076,"title":{},"content":{"229":{},"652":{},"710":{},"724":{}}}],["replicast",{"_index":1598,"title":{},"content":{"266":{}}}],["repo",{"_index":3616,"title":{},"content":{"782":{}}}],["repositori",{"_index":500,"title":{},"content":{"181":{},"184":{},"187":{},"214":{},"509":{},"553":{},"583":{},"645":{},"757":{}}}],["repository//github.com/archeth",{"_index":2595,"title":{},"content":{"556":{},"557":{}}}],["repres",{"_index":32,"title":{},"content":{"5":{},"11":{},"15":{},"18":{},"21":{},"25":{},"28":{},"31":{},"34":{},"37":{},"40":{},"46":{},"49":{},"52":{},"55":{},"58":{},"61":{},"64":{},"67":{},"70":{},"73":{},"76":{},"80":{},"86":{},"89":{},"92":{},"95":{},"98":{},"103":{},"106":{},"109":{},"111":{},"114":{},"117":{},"119":{},"122":{},"124":{},"127":{},"130":{},"133":{},"135":{},"138":{},"141":{},"142":{},"145":{},"147":{},"149":{},"151":{},"153":{},"155":{},"157":{},"161":{},"163":{},"165":{},"167":{},"169":{},"171":{},"175":{},"177":{},"180":{},"319":{},"320":{},"393":{},"448":{},"517":{},"633":{},"778":{},"855":{}}}],["represent",{"_index":961,"title":{"207":{}},"content":{"354":{},"407":{},"417":{},"418":{},"419":{},"447":{},"637":{},"649":{}}}],["reproduc",{"_index":1552,"title":{},"content":{"290":{},"624":{},"633":{},"683":{},"688":{},"702":{},"717":{}}}],["repudi",{"_index":2751,"title":{},"content":{"607":{},"859":{}}}],["reput",{"_index":3153,"title":{},"content":{"682":{}}}],["request",{"_index":1584,"title":{"789":{},"792":{},"795":{},"798":{},"801":{},"804":{},"807":{},"810":{},"813":{}},"content":{"293":{},"307":{},"323":{},"376":{},"413":{},"488":{},"489":{},"552":{},"554":{},"607":{},"620":{},"623":{},"676":{},"677":{},"679":{},"688":{},"703":{},"705":{},"707":{},"727":{},"740":{},"741":{},"754":{},"755":{},"789":{},"858":{},"859":{}}}],["request/1",{"_index":2429,"title":{"485":{}},"content":{}}],["request/1,2,3,4",{"_index":2443,"title":{},"content":{"488":{}}}],["request/2",{"_index":2430,"title":{"486":{}},"content":{"485":{}}}],["request/3",{"_index":2431,"title":{"487":{}},"content":{"486":{}}}],["request/4",{"_index":2432,"title":{"488":{}},"content":{"487":{},"489":{}}}],["request_many/1",{"_index":2444,"title":{"489":{}},"content":{"488":{}}}],["requir",{"_index":599,"title":{"584":{}},"content":{"188":{},"190":{},"191":{},"216":{},"238":{},"242":{},"243":{},"271":{},"284":{},"286":{},"287":{},"288":{},"289":{},"349":{},"402":{},"407":{},"408":{},"443":{},"488":{},"519":{},"520":{},"522":{},"588":{},"621":{},"652":{},"666":{},"704":{},"717":{},"741":{},"745":{},"759":{},"778":{},"784":{},"786":{},"834":{}}}],["requisit",{"_index":3613,"title":{"781":{}},"content":{}}],["research",{"_index":2882,"title":{},"content":{"630":{},"679":{}}}],["resend",{"_index":1835,"title":{},"content":{"347":{}}}],["reserv",{"_index":749,"title":{"366":{}},"content":{"190":{},"191":{},"202":{},"369":{},"604":{},"644":{},"662":{},"745":{},"855":{}}}],["reset",{"_index":2697,"title":{"575":{}},"content":{"575":{},"682":{},"836":{}}}],["resid",{"_index":491,"title":{},"content":{"181":{}}}],["resili",{"_index":2922,"title":{},"content":{"637":{},"679":{},"720":{}}}],["resist",{"_index":2848,"title":{},"content":{"623":{},"716":{}}}],["resolut",{"_index":1549,"title":{},"content":{"290":{},"716":{}}}],["resolv",{"_index":1547,"title":{},"content":{"290":{},"371":{},"390":{},"695":{},"717":{},"727":{},"737":{}}}],["resourc",{"_index":1026,"title":{},"content":{"216":{},"444":{},"552":{},"618":{},"644":{},"652":{},"656":{}}}],["respect",{"_index":1368,"title":{},"content":{"244":{},"314":{},"346":{},"379":{},"606":{},"613":{},"625":{},"709":{},"816":{}}}],["respond",{"_index":602,"title":{},"content":{"188":{},"220":{},"307":{}}}],["respond(async",{"_index":605,"title":{},"content":{"188":{}}}],["respons",{"_index":368,"title":{"790":{},"793":{},"796":{},"799":{},"802":{},"805":{},"808":{},"811":{},"814":{}},"content":{"106":{},"142":{},"157":{},"163":{},"189":{},"191":{},"194":{},"195":{},"196":{},"218":{},"219":{},"231":{},"296":{},"308":{},"336":{},"488":{},"489":{},"622":{},"625":{},"699":{},"754":{}}}],["response.bodi",{"_index":2437,"title":{},"content":{"488":{}}}],["response.statu",{"_index":2436,"title":{},"content":{"488":{}}}],["rest",{"_index":748,"title":{},"content":{"190":{},"191":{},"351":{}}}],["restart",{"_index":1028,"title":{},"content":{"216":{}}}],["restor",{"_index":3119,"title":{},"content":{"675":{},"776":{}}}],["restrict",{"_index":1211,"title":{},"content":{"273":{},"346":{}}}],["result",{"_index":34,"title":{},"content":{"5":{},"190":{},"191":{},"201":{},"216":{},"350":{},"408":{},"480":{},"488":{},"491":{},"563":{},"595":{},"775":{},"776":{},"784":{},"858":{}}}],["result.touppercas",{"_index":3578,"title":{},"content":{"776":{}}}],["resum",{"_index":2699,"title":{},"content":{"575":{},"764":{},"768":{},"771":{}}}],["resuppli",{"_index":3261,"title":{"734":{}},"content":{"730":{},"732":{},"734":{},"735":{}}}],["resync",{"_index":1157,"title":{},"content":{"238":{}}}],["retain",{"_index":2945,"title":{},"content":{"695":{}}}],["retriev",{"_index":865,"title":{"213":{},"306":{},"307":{},"587":{}},"content":{"213":{},"222":{},"225":{},"228":{},"291":{},"293":{},"294":{},"307":{},"308":{},"320":{},"361":{},"412":{},"461":{},"465":{},"466":{},"524":{},"584":{},"603":{},"648":{},"753":{},"754":{},"772":{},"784":{},"785":{},"786":{},"854":{}}}],["return",{"_index":69,"title":{"13":{},"17":{},"27":{},"39":{},"42":{},"51":{},"54":{},"66":{},"69":{},"75":{},"78":{},"100":{},"143":{}},"content":{"188":{},"189":{},"190":{},"191":{},"241":{},"243":{},"246":{},"247":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"259":{},"260":{},"263":{},"264":{},"273":{},"277":{},"279":{},"280":{},"281":{},"322":{},"377":{},"378":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"441":{},"442":{},"443":{},"445":{},"446":{},"447":{},"448":{},"449":{},"451":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"464":{},"465":{},"466":{},"469":{},"472":{},"473":{},"475":{},"477":{},"478":{},"480":{},"481":{},"482":{},"483":{},"488":{},"489":{},"491":{},"506":{},"661":{},"711":{},"750":{},"776":{}}}],["reveal",{"_index":2675,"title":{},"content":{"564":{},"602":{},"607":{},"683":{},"853":{},"854":{},"858":{},"859":{}}}],["revers",{"_index":1793,"title":{},"content":{"341":{},"602":{},"607":{},"853":{},"859":{}}}],["review",{"_index":3502,"title":{},"content":{"767":{}}}],["revoc",{"_index":3148,"title":{},"content":{"682":{}}}],["revok",{"_index":3165,"title":{},"content":{"682":{}}}],["reward",{"_index":1140,"title":{},"content":{"235":{},"336":{},"338":{},"651":{},"661":{},"665":{},"705":{},"819":{}}}],["rewardaddress",{"_index":165,"title":{},"content":{"37":{}}}],["right",{"_index":1105,"title":{},"content":{"233":{},"290":{},"299":{},"304":{},"351":{},"407":{},"590":{},"621":{},"624":{},"643":{},"644":{},"648":{},"660":{},"691":{},"695":{},"702":{},"733":{},"763":{},"836":{}}}],["rise",{"_index":3339,"title":{},"content":{"721":{}}}],["risk",{"_index":2745,"title":{},"content":{"604":{},"623":{},"641":{},"680":{},"775":{},"777":{},"855":{}}}],["rng",{"_index":3575,"title":{},"content":{"776":{}}}],["roadmap",{"_index":3372,"title":{"726":{},"751":{}},"content":{}}],["robert",{"_index":2251,"title":{},"content":{"439":{}}}],["robot",{"_index":1805,"title":{},"content":{"345":{}}}],["rocksdb",{"_index":1453,"title":{},"content":{"284":{}}}],["role",{"_index":1221,"title":{},"content":{"273":{},"644":{},"661":{},"717":{}}}],["root",{"_index":471,"title":{"635":{},"636":{},"637":{},"638":{}},"content":{"181":{},"184":{},"253":{},"273":{},"274":{},"276":{},"279":{},"280":{},"281":{},"312":{},"482":{},"515":{},"636":{},"637":{},"638":{},"639":{},"647":{},"666":{}}}],["rootkey",{"_index":1302,"title":{},"content":{"257":{},"274":{}}}],["rotat",{"_index":1590,"title":{"624":{},"688":{}},"content":{"265":{},"618":{},"620":{},"622":{},"624":{},"625":{},"677":{},"682":{},"686":{},"688":{},"703":{},"717":{}}}],["round",{"_index":1635,"title":{},"content":{"296":{},"400":{}}}],["row",{"_index":1567,"title":{},"content":{"291":{},"746":{},"747":{},"748":{}}}],["royalti",{"_index":3257,"title":{},"content":{"728":{}}}],["rpc",{"_index":1949,"title":{"787":{}},"content":{"364":{},"570":{},"612":{},"778":{},"785":{}}}],["rsa_root_key",{"_index":1411,"title":{},"content":{"253":{}}}],["rule",{"_index":1815,"title":{"378":{}},"content":{"345":{},"379":{},"489":{},"514":{},"554":{},"564":{},"657":{},"745":{},"746":{},"853":{}}}],["run",{"_index":558,"title":{},"content":{"184":{},"216":{},"295":{},"296":{},"301":{},"320":{},"402":{},"451":{},"510":{},"713":{},"714":{},"727":{},"742":{},"759":{},"775":{},"782":{},"817":{},"818":{}}}],["s",{"_index":469,"title":{"272":{}},"content":{"181":{},"183":{},"226":{},"272":{},"473":{},"509":{}}}],["s1",{"_index":3247,"title":{},"content":{"710":{}}}],["s2",{"_index":3248,"title":{},"content":{"710":{}}}],["s3",{"_index":3249,"title":{},"content":{"710":{}}}],["safe",{"_index":2672,"title":{"627":{}},"content":{"564":{},"626":{},"773":{}}}],["safest",{"_index":2988,"title":{},"content":{"641":{}}}],["safeti",{"_index":1479,"title":{"604":{},"855":{}},"content":{"285":{},"348":{},"604":{},"641":{},"855":{},"858":{}}}],["same",{"_index":1078,"title":{},"content":{"229":{},"273":{},"308":{},"312":{},"340":{},"347":{},"349":{},"353":{},"363":{},"371":{},"378":{},"379":{},"385":{},"398":{},"451":{},"461":{},"463":{},"465":{},"466":{},"471":{},"477":{},"563":{},"564":{},"574":{},"595":{},"616":{},"623":{},"637":{},"683":{},"687":{},"690":{},"722":{},"724":{},"734":{},"739":{},"754":{},"755":{},"759":{},"820":{},"821":{},"838":{},"839":{},"847":{},"858":{}}}],["sampl",{"_index":1113,"title":{"219":{}},"content":{"220":{},"221":{},"673":{},"693":{}}}],["satisfi",{"_index":3453,"title":{},"content":{"746":{}}}],["saturday",{"_index":2506,"title":{},"content":{"401":{}}}],["save",{"_index":1383,"title":{},"content":{"246":{},"251":{},"252":{}}}],["saveindex(ykindex",{"_index":1392,"title":{"248":{}},"content":{}}],["saw",{"_index":2538,"title":{},"content":{"407":{}}}],["sc",{"_index":2104,"title":{},"content":{"386":{},"398":{},"399":{}}}],["scalabl",{"_index":987,"title":{},"content":{"216":{},"330":{},"618":{},"620":{},"622":{},"633":{},"639":{},"641":{},"685":{},"686":{},"689":{},"690":{},"691":{}}}],["scalar",{"_index":12,"title":{"549":{}},"content":{"2":{},"4":{},"12":{},"16":{},"19":{},"22":{},"26":{},"29":{},"35":{},"38":{},"41":{},"47":{},"50":{},"53":{},"59":{},"62":{},"65":{},"68":{},"71":{},"74":{},"77":{},"81":{},"84":{},"90":{},"93":{},"96":{},"99":{},"102":{},"105":{},"106":{},"108":{},"113":{},"116":{},"121":{},"126":{},"129":{},"132":{},"137":{},"140":{},"142":{},"145":{},"147":{},"149":{},"151":{},"153":{},"155":{},"157":{},"159":{},"161":{},"163":{},"165":{},"167":{},"169":{},"171":{},"174":{},"179":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"850":{}}}],["scale",{"_index":1505,"title":{},"content":{"287":{},"669":{},"713":{},"778":{}}}],["scan",{"_index":1678,"title":{},"content":{"327":{}}}],["scan/2",{"_index":2266,"title":{"443":{}},"content":{}}],["scenario",{"_index":1047,"title":{},"content":{"216":{},"398":{},"399":{},"402":{},"859":{}}}],["scene",{"_index":3238,"title":{},"content":{"703":{}}}],["schedul",{"_index":1097,"title":{"232":{},"320":{}},"content":{"232":{},"305":{},"319":{},"320":{},"321":{},"324":{},"346":{}}}],["schema",{"_index":1529,"title":{"544":{},"850":{}},"content":{"289":{},"320":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"731":{},"734":{},"850":{}}}],["schemaless",{"_index":1535,"title":{},"content":{"289":{}}}],["scheme",{"_index":895,"title":{},"content":{"200":{},"201":{},"202":{},"273":{},"685":{},"777":{}}}],["scientif",{"_index":1871,"title":{},"content":{"352":{}}}],["scope",{"_index":1586,"title":{"359":{}},"content":{"294":{},"359":{}}}],["scratch",{"_index":1440,"title":{},"content":{"283":{},"288":{}}}],["screen",{"_index":573,"title":{"762":{}},"content":{"186":{},"588":{},"750":{},"762":{},"767":{},"778":{}}}],["screenshot",{"_index":2563,"title":{},"content":{"526":{}}}],["script",{"_index":1644,"title":{},"content":{"295":{},"725":{}}}],["scripts/main.j",{"_index":3427,"title":{},"content":{"753":{}}}],["scripts/proposal_ci_job.sh",{"_index":1643,"title":{},"content":{"295":{}}}],["scylladb",{"_index":1455,"title":{},"content":{"284":{}}}],["sdk",{"_index":609,"title":{"333":{},"334":{},"342":{},"343":{},"530":{}},"content":{"188":{},"334":{},"342":{},"343":{},"522":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"779":{},"782":{}}}],["se",{"_index":2926,"title":{},"content":{"638":{}}}],["seal",{"_index":3226,"title":{},"content":{"700":{}}}],["seamless",{"_index":1812,"title":{},"content":{"345":{},"593":{},"753":{},"760":{}}}],["search",{"_index":3221,"title":{},"content":{"697":{}}}],["sec",{"_index":2982,"title":{},"content":{"641":{}}}],["second",{"_index":431,"title":{},"content":{"167":{},"189":{},"271":{},"296":{},"400":{},"401":{},"451":{},"468":{},"470":{},"488":{},"525":{},"564":{},"588":{},"637":{},"641":{},"777":{},"778":{}}}],["second_cod",{"_index":2400,"title":{},"content":{"477":{}}}],["secp256k1",{"_index":957,"title":{},"content":{"205":{},"631":{},"633":{}}}],["secret",{"_index":49,"title":{"299":{},"313":{}},"content":{"18":{},"28":{},"46":{},"49":{},"52":{},"124":{},"127":{},"190":{},"191":{},"207":{},"212":{},"236":{},"281":{},"299":{},"310":{},"313":{},"337":{},"392":{},"393":{},"396":{},"471":{},"499":{},"522":{},"564":{},"588":{},"602":{},"606":{},"607":{},"624":{},"654":{},"688":{},"717":{},"747":{},"818":{},"839":{},"853":{},"858":{},"859":{}}}],["secret'",{"_index":3488,"title":{},"content":{"859":{}}}],["secret_key",{"_index":2145,"title":{},"content":{"396":{},"472":{}}}],["section",{"_index":107,"title":{},"content":{"28":{},"212":{},"239":{},"269":{},"282":{},"510":{},"582":{},"717":{},"745":{},"750":{},"761":{}}}],["section\"how",{"_index":2790,"title":{},"content":{"587":{}}}],["secur",{"_index":274,"title":{"723":{},"777":{}},"content":{"67":{},"175":{},"181":{},"183":{},"202":{},"211":{},"331":{},"346":{},"348":{},"389":{},"390":{},"412":{},"564":{},"588":{},"593":{},"602":{},"603":{},"606":{},"607":{},"618":{},"620":{},"621":{},"622":{},"636":{},"637":{},"638":{},"639":{},"641":{},"642":{},"643":{},"648":{},"650":{},"661":{},"666":{},"672":{},"675":{},"682":{},"695":{},"696":{},"705":{},"709":{},"716":{},"720":{},"723":{},"740":{},"773":{},"775":{},"776":{},"777":{},"778":{},"783":{},"815":{},"851":{},"853":{},"854":{}}}],["securitysecur",{"_index":3539,"title":{},"content":{"774":{}}}],["see",{"_index":1095,"title":{"749":{}},"content":{"231":{},"312":{},"315":{},"317":{},"318":{},"365":{},"368":{},"377":{},"379":{},"381":{},"383":{},"405":{},"406":{},"407":{},"412":{},"457":{},"459":{},"489":{},"506":{},"516":{},"525":{},"526":{},"555":{},"629":{},"666":{},"687":{},"699":{},"717":{},"759":{},"777":{},"858":{}}}],["seed",{"_index":630,"title":{"776":{}},"content":{"189":{},"197":{},"201":{},"204":{},"213":{},"235":{},"237":{},"294":{},"412":{},"471":{},"522":{},"579":{},"584":{},"609":{},"647":{},"705":{},"742":{},"758":{},"759":{},"776":{},"778":{},"783":{},"835":{},"836":{},"839":{},"843":{},"844":{},"847":{}}}],["seek",{"_index":1475,"title":{},"content":{"285":{},"289":{},"291":{}}}],["seem",{"_index":1050,"title":{},"content":{"217":{}}}],["select",{"_index":2529,"title":{},"content":{"406":{},"408":{},"587":{},"588":{},"590":{},"746":{},"747":{},"766":{},"778":{},"809":{},"834":{},"836":{},"839":{},"843":{},"847":{}}}],["selector",{"_index":2530,"title":{},"content":{"406":{},"408":{},"514":{}}}],["self",{"_index":1133,"title":{"675":{}},"content":{"221":{},"237":{},"238":{},"289":{},"620":{},"643":{},"670":{},"675":{},"676":{},"682":{},"707":{},"713":{},"714":{}}}],["selfrepair",{"_index":3116,"title":{},"content":{"705":{}}}],["semant",{"_index":1933,"title":{},"content":{"361":{}}}],["send",{"_index":286,"title":{"584":{},"836":{},"842":{}},"content":{"76":{},"89":{},"141":{},"182":{},"275":{},"330":{},"331":{},"347":{},"349":{},"374":{},"388":{},"389":{},"398":{},"493":{},"510":{},"584":{},"598":{},"625":{},"652":{},"668":{},"671":{},"687":{},"691":{},"736":{},"754":{},"755":{},"756":{},"759":{},"763":{},"774":{},"785":{},"786":{},"794":{},"819":{},"833":{},"834":{},"836":{},"843":{}}}],["send/sign",{"_index":3605,"title":{},"content":{"778":{}}}],["send_transact",{"_index":3285,"title":{"794":{}},"content":{"736":{}}}],["sender",{"_index":1072,"title":{},"content":{"224":{},"225":{},"227":{},"228":{},"331":{},"716":{}}}],["senderaddr",{"_index":794,"title":{},"content":{"191":{}}}],["senderaddrlen",{"_index":795,"title":{},"content":{"191":{}}}],["sendtxn",{"_index":569,"title":{},"content":{"185":{}}}],["sens",{"_index":3042,"title":{},"content":{"645":{}}}],["sensit",{"_index":1234,"title":{},"content":{"273":{},"778":{}}}],["sent",{"_index":1706,"title":{"574":{},"616":{}},"content":{"317":{},"318":{},"329":{},"336":{},"369":{},"374":{},"382":{},"674":{},"703":{},"756":{},"796":{},"817":{},"821":{}}}],["sentenc",{"_index":3582,"title":{},"content":{"776":{}}}],["separ",{"_index":2254,"title":{},"content":{"404":{},"439":{}}}],["sepolia",{"_index":2756,"title":{"612":{}},"content":{"612":{}}}],["sequenc",{"_index":425,"title":{},"content":{"165":{},"272":{},"407":{},"707":{}}}],["sequence_no",{"_index":767,"title":{},"content":{"190":{},"191":{}}}],["sequenti",{"_index":1577,"title":{},"content":{"291":{}}}],["seri",{"_index":3580,"title":{},"content":{"776":{}}}],["serial",{"_index":1523,"title":{},"content":{"289":{},"322":{},"329":{},"330":{},"349":{},"493":{}}}],["serv",{"_index":2647,"title":{},"content":{"583":{},"756":{},"855":{}}}],["server",{"_index":2760,"title":{},"content":{"612":{},"725":{},"737":{},"742":{},"754":{},"778":{},"785":{}}}],["servic",{"_index":181,"title":{"321":{},"665":{},"846":{},"847":{}},"content":{"40":{},"197":{},"201":{},"204":{},"305":{},"315":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"329":{},"411":{},"488":{},"582":{},"584":{},"587":{},"646":{},"647":{},"648":{},"650":{},"665":{},"679":{},"682":{},"696":{},"773":{},"777":{},"778":{},"784":{},"785":{},"786":{},"797":{},"798":{},"800":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"813":{},"843":{},"845":{},"846":{},"847":{}}}],["servicenam",{"_index":3646,"title":{},"content":{"804":{},"807":{},"813":{}}}],["session",{"_index":1223,"title":{},"content":{"273":{},"751":{}}}],["set",{"_index":191,"title":{"612":{}},"content":{"46":{},"189":{},"190":{},"191":{},"231":{},"274":{},"276":{},"278":{},"280":{},"370":{},"396":{},"407":{},"427":{},"525":{},"571":{},"610":{},"612":{},"613":{},"620":{},"621":{},"622":{},"661":{},"686":{},"714":{},"731":{},"745":{},"766":{},"778":{},"836":{},"839":{},"840":{},"841":{}}}],["set/3",{"_index":2207,"title":{"427":{}},"content":{}}],["set_cod",{"_index":2143,"title":{},"content":{"396":{}}}],["set_code/1",{"_index":2462,"title":{"494":{}},"content":{}}],["set_cont",{"_index":2142,"title":{},"content":{"396":{}}}],["set_content/1",{"_index":2461,"title":{"493":{}},"content":{}}],["set_typ",{"_index":2110,"title":{},"content":{"388":{},"389":{},"396":{}}}],["set_type/1",{"_index":2460,"title":{"492":{}},"content":{}}],["setkeyindex",{"_index":1332,"title":{},"content":{"280":{}}}],["setkeyindex(int",{"_index":1317,"title":{"278":{}},"content":{}}],["setrootkey",{"_index":1299,"title":{"274":{}},"content":{}}],["setup",{"_index":2584,"title":{"780":{}},"content":{"509":{}}}],["seven",{"_index":1364,"title":{},"content":{"244":{}}}],["sever",{"_index":872,"title":{},"content":{"197":{},"284":{},"292":{},"298":{},"300":{},"308":{},"309":{},"329":{},"629":{},"646":{},"657":{},"670":{},"683":{},"687":{},"696":{},"717":{},"784":{},"785":{},"839":{}}}],["sha",{"_index":2887,"title":{},"content":{"632":{},"753":{}}}],["sha2",{"_index":958,"title":{},"content":{"206":{}}}],["sha2/sha3",{"_index":2933,"title":{},"content":{"639":{}}}],["sha256",{"_index":743,"title":{},"content":{"190":{},"191":{},"201":{},"206":{},"468":{},"469":{},"470":{},"472":{},"650":{}}}],["sha256(auth_se",{"_index":950,"title":{},"content":{"202":{}}}],["sha256(replacederivationpath(derivationpath",{"_index":923,"title":{},"content":{"201":{}}}],["sha256(sha256(wk_{a",{"_index":938,"title":{},"content":{"202":{}}}],["sha3",{"_index":2976,"title":{},"content":{"650":{}}}],["sha3_256",{"_index":780,"title":{},"content":{"191":{},"206":{},"469":{},"472":{}}}],["sha3_512",{"_index":782,"title":{},"content":{"191":{},"206":{},"469":{},"472":{}}}],["sha512",{"_index":734,"title":{},"content":{"190":{},"191":{},"206":{},"469":{},"472":{}}}],["sha512(key=masterse",{"_index":925,"title":{},"content":{"201":{}}}],["sha512(sha512(ecdh\\_secret",{"_index":947,"title":{},"content":{"202":{}}}],["sha512(sha512(ecdh_secret",{"_index":735,"title":{},"content":{"190":{},"191":{}}}],["shard",{"_index":1083,"title":{"685":{}},"content":{"230":{},"231":{},"290":{},"347":{},"620":{},"673":{},"674":{},"675":{},"685":{},"686":{},"688":{},"689":{},"690":{},"697":{},"699":{},"703":{},"708":{},"709":{},"710":{},"754":{}}}],["share",{"_index":196,"title":{"299":{},"313":{}},"content":{"52":{},"124":{},"236":{},"281":{},"299":{},"310":{},"313":{},"326":{},"329":{},"337":{},"579":{},"588":{},"609":{},"624":{},"654":{},"774":{},"779":{},"818":{}}}],["sharedprefer",{"_index":3607,"title":{},"content":{"778":{}}}],["sharedsecret",{"_index":195,"title":{"52":{},"123":{}},"content":{"52":{},"54":{},"123":{},"124":{},"164":{}}}],["sharedsecrets.storagenoncepublickey",{"_index":202,"title":{},"content":{"53":{}}}],["sherlock",{"_index":2195,"title":{},"content":{"421":{}}}],["shield",{"_index":2754,"title":{},"content":{"610":{},"749":{}}}],["ship",{"_index":1437,"title":{},"content":{"283":{},"285":{}}}],["short",{"_index":1039,"title":{},"content":{"216":{},"339":{}}}],["shorter",{"_index":3112,"title":{},"content":{"673":{}}}],["shorthand",{"_index":2198,"title":{},"content":{"423":{},"425":{}}}],["show",{"_index":571,"title":{},"content":{"186":{},"778":{}}}],["showcas",{"_index":3363,"title":{},"content":{"725":{}}}],["shown",{"_index":574,"title":{},"content":{"186":{},"587":{}}}],["shuffl",{"_index":3601,"title":{},"content":{"778":{}}}],["side",{"_index":2528,"title":{},"content":{"406":{},"412":{},"524":{},"564":{},"725":{},"754":{},"764":{},"859":{}}}],["sidebar",{"_index":3658,"title":{},"content":{"850":{}}}],["sign",{"_index":403,"title":{"191":{}},"content":{"147":{},"153":{},"181":{},"191":{},"249":{},"261":{},"262":{},"273":{},"280":{},"282":{},"318":{},"473":{},"625":{},"683":{},"712":{},"745":{},"746":{},"747":{},"748":{},"765":{},"768":{},"784":{},"785":{},"786":{},"794":{},"812":{},"813":{}}}],["sign/encrypt",{"_index":3409,"title":{},"content":{"742":{}}}],["sign_encrypt",{"_index":1242,"title":{},"content":{"273":{}}}],["sign_len",{"_index":814,"title":{},"content":{"191":{}}}],["sign_transact",{"_index":3650,"title":{"812":{}},"content":{}}],["sign_with_recovery/1",{"_index":2384,"title":{"473":{}},"content":{}}],["signatur",{"_index":100,"title":{"196":{}},"content":{"21":{},"95":{},"186":{},"188":{},"189":{},"190":{},"191":{},"196":{},"233":{},"272":{},"277":{},"280":{},"309":{},"325":{},"326":{},"327":{},"346":{},"363":{},"473":{},"504":{},"505":{},"607":{},"621":{},"629":{},"634":{},"639":{},"682":{},"709":{},"712":{},"717":{},"751":{},"786":{},"814":{},"859":{}}}],["signature_payload",{"_index":2385,"title":{},"content":{"473":{}}}],["signcurrentkey(hashtosign",{"_index":1428,"title":{"261":{}},"content":{}}],["signecdsa",{"_index":1334,"title":{},"content":{"261":{},"280":{}}}],["signecdsa(hashtosign",{"_index":1395,"title":{"249":{}},"content":{}}],["signecdsa(int",{"_index":1327,"title":{"280":{}},"content":{}}],["signedtx",{"_index":3651,"title":{},"content":{"814":{}}}],["signhash.c",{"_index":773,"title":{},"content":{"191":{}}}],["signifi",{"_index":819,"title":{},"content":{"191":{},"273":{}}}],["signific",{"_index":2620,"title":{},"content":{"554":{}}}],["significantli",{"_index":2728,"title":{},"content":{"593":{},"637":{}}}],["signpastkey(archethicindex",{"_index":1430,"title":{"262":{}},"content":{}}],["signtoasn",{"_index":1194,"title":{},"content":{"272":{}}}],["signtoasn(byt",{"_index":1190,"title":{"272":{}},"content":{}}],["signup",{"_index":3534,"title":{},"content":{"773":{}}}],["similar",{"_index":816,"title":{},"content":{"191":{},"291":{},"409":{},"410":{},"485":{},"486":{},"487":{},"607":{},"853":{},"859":{}}}],["similarli",{"_index":1197,"title":{},"content":{"272":{},"619":{},"858":{}}}],["simpl",{"_index":654,"title":{},"content":{"189":{},"289":{},"294":{},"327":{},"373":{},"725":{},"727":{},"729":{},"738":{},"755":{},"777":{},"815":{},"851":{}}}],["simpli",{"_index":3447,"title":{},"content":{"745":{},"750":{}}}],["simplifi",{"_index":913,"title":{},"content":{"201":{},"390":{},"775":{},"776":{}}}],["simul",{"_index":1602,"title":{},"content":{"268":{},"320":{},"524":{},"525":{},"700":{}}}],["singl",{"_index":578,"title":{},"content":{"186":{},"218":{},"285":{},"301":{},"619":{},"652":{},"657":{},"708":{},"709":{},"712":{},"724":{},"725":{},"733":{},"753":{},"754":{},"759":{},"775":{}}}],["site",{"_index":3019,"title":{"745":{},"746":{},"748":{}},"content":{"643":{},"725":{},"743":{},"745":{},"746":{},"747":{},"748":{},"779":{}}}],["site'",{"_index":3455,"title":{"749":{}},"content":{"751":{}}}],["situat",{"_index":3349,"title":{},"content":{"724":{}}}],["size",{"_index":375,"title":{"272":{}},"content":{"106":{},"142":{},"157":{},"163":{},"201":{},"204":{},"271":{},"272":{},"273":{},"289":{},"290":{},"291":{},"309":{},"330":{},"389":{},"413":{},"488":{},"651":{},"652":{},"712":{},"753":{}}}],["size/1",{"_index":2159,"title":{"415":{},"424":{},"433":{}},"content":{"413":{}}}],["sizeof(ecdhpointx",{"_index":723,"title":{},"content":{"190":{},"191":{}}}],["sizer",{"_index":1192,"title":{"272":{}},"content":{}}],["skip",{"_index":13,"title":{"3":{}},"content":{"3":{},"4":{},"146":{}}}],["skip.if",{"_index":14,"title":{},"content":{"4":{}}}],["sla",{"_index":1702,"title":{},"content":{"315":{}}}],["slash",{"_index":2157,"title":{},"content":{"413":{}}}],["slippag",{"_index":2775,"title":{},"content":{"613":{}}}],["slot",{"_index":1091,"title":{"693":{},"699":{}},"content":{"220":{},"221":{},"231":{},"232":{},"233":{},"245":{},"246":{},"250":{},"252":{},"253":{},"256":{},"257":{},"260":{},"262":{},"691":{},"693":{},"699":{},"700":{},"702":{},"703":{}}}],["slotposiot",{"_index":1436,"title":{},"content":{"264":{}}}],["slotposit",{"_index":1431,"title":{},"content":{"262":{},"264":{}}}],["slotvalid",{"_index":1108,"title":{},"content":{"233":{}}}],["slow",{"_index":2813,"title":{},"content":{"619":{}}}],["small",{"_index":2516,"title":{},"content":{"404":{},"506":{},"554":{},"623":{},"669":{},"778":{}}}],["smallest",{"_index":2604,"title":{},"content":{"552":{},"753":{}}}],["smart",{"_index":111,"title":{"310":{},"344":{},"345":{},"350":{},"367":{},"372":{},"377":{},"386":{},"387":{},"390":{},"397":{},"404":{},"411":{},"412":{},"413":{},"506":{},"513":{},"524":{},"531":{},"841":{}},"content":{"28":{},"52":{},"124":{},"290":{},"309":{},"310":{},"326":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"353":{},"361":{},"362":{},"363":{},"364":{},"365":{},"370":{},"371":{},"374":{},"379":{},"390":{},"393":{},"394":{},"399":{},"404":{},"405":{},"406":{},"410":{},"411":{},"412":{},"413":{},"451":{},"477":{},"478":{},"488":{},"491":{},"493":{},"501":{},"506":{},"515":{},"516":{},"521":{},"524":{},"525":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"578":{},"598":{},"606":{},"612":{},"652":{},"663":{},"664":{},"679":{},"682":{},"710":{},"717":{},"725":{},"729":{},"736":{},"795":{},"813":{},"839":{},"841":{},"858":{},"859":{}}}],["smartphon",{"_index":2869,"title":{},"content":{"621":{},"648":{}}}],["snapshot",{"_index":1851,"title":{},"content":{"349":{},"673":{}}}],["sobelow",{"_index":1659,"title":{},"content":{"295":{}}}],["soc",{"_index":2905,"title":{},"content":{"636":{}}}],["social",{"_index":3091,"title":{},"content":{"668":{}}}],["sofia",{"_index":2042,"title":{},"content":{"382":{}}}],["soft",{"_index":3239,"title":{},"content":{"703":{}}}],["softwar",{"_index":454,"title":{},"content":{"181":{},"209":{},"216":{},"298":{},"299":{},"305":{},"621":{},"629":{},"631":{},"637":{},"639":{},"717":{}}}],["sold_item",{"_index":2152,"title":{},"content":{"413":{}}}],["sole",{"_index":2946,"title":{},"content":{"695":{}}}],["solicit",{"_index":2624,"title":{},"content":{"554":{},"784":{}}}],["solid",{"_index":3026,"title":{},"content":{"644":{}}}],["solut",{"_index":1446,"title":{"667":{},"709":{}},"content":{"284":{},"290":{},"330":{},"618":{},"643":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"737":{},"785":{},"815":{}}}],["solv",{"_index":2817,"title":{},"content":{"620":{}}}],["someth",{"_index":2116,"title":{},"content":{"391":{},"401":{},"402":{},"488":{},"489":{},"650":{}}}],["sometim",{"_index":1554,"title":{},"content":{"267":{},"290":{},"685":{}}}],["somewher",{"_index":1854,"title":{},"content":{"349":{}}}],["soon",{"_index":526,"title":{},"content":{"182":{},"183":{},"382":{},"642":{},"652":{}}}],["sort",{"_index":2858,"title":{},"content":{"624":{}}}],["sortord",{"_index":31,"title":{"5":{}},"content":{"5":{},"131":{},"132":{}}}],["sortorder.asc",{"_index":38,"title":{},"content":{"6":{}}}],["sortorder.desc",{"_index":40,"title":{},"content":{"6":{}}}],["sound",{"_index":2885,"title":{},"content":{"630":{}}}],["sourc",{"_index":464,"title":{},"content":{"181":{},"188":{},"189":{},"190":{},"191":{},"295":{},"320":{},"348":{},"349":{},"369":{},"552":{},"599":{},"636":{},"645":{},"664":{},"680":{},"713":{},"743":{},"760":{},"766":{},"775":{},"779":{}}}],["sovereign",{"_index":3015,"title":{},"content":{"643":{}}}],["spa",{"_index":3369,"title":{},"content":{"725":{}}}],["space",{"_index":942,"title":{},"content":{"202":{},"778":{}}}],["spawn",{"_index":1627,"title":{},"content":{"296":{},"301":{},"304":{}}}],["speak",{"_index":2957,"title":{},"content":{"647":{}}}],["special",{"_index":2160,"title":{},"content":{"413":{},"639":{}}}],["specif",{"_index":360,"title":{"197":{},"400":{},"401":{},"535":{},"605":{},"857":{}},"content":{"101":{},"120":{},"181":{},"189":{},"200":{},"210":{},"287":{},"289":{},"290":{},"350":{},"354":{},"379":{},"382":{},"386":{},"399":{},"400":{},"401":{},"407":{},"461":{},"465":{},"466":{},"533":{},"534":{},"535":{},"583":{},"593":{},"644":{},"651":{},"660":{},"730":{},"785":{},"815":{},"835":{},"836":{},"843":{},"847":{},"853":{},"854":{},"858":{}}}],["specifi",{"_index":407,"title":{},"content":{"147":{},"157":{},"201":{},"326":{},"351":{},"371":{},"373":{},"374":{},"379":{},"391":{},"392":{},"399":{},"400":{},"401":{},"412":{},"497":{},"526":{},"602":{},"716":{},"735":{},"745":{},"838":{},"843":{},"853":{},"858":{},"859":{}}}],["specificatonfn",{"_index":757,"title":{},"content":{"190":{},"191":{}}}],["spectrometri",{"_index":3187,"title":{},"content":{"683":{}}}],["speed",{"_index":2594,"title":{},"content":{"536":{},"537":{},"538":{},"539":{},"833":{}}}],["spend",{"_index":1067,"title":{},"content":{"223":{},"226":{}}}],["spent",{"_index":288,"title":{},"content":{"76":{},"141":{},"223":{},"224":{},"226":{},"227":{}}}],["split",{"_index":1088,"title":{},"content":{"231":{},"308":{},"685":{},"708":{},"710":{},"723":{}}}],["spot",{"_index":2539,"title":{},"content":{"407":{}}}],["sqrt/1",{"_index":2413,"title":{"482":{}},"content":{}}],["squar",{"_index":2417,"title":{},"content":{"482":{}}}],["squential",{"_index":1188,"title":{},"content":{"271":{}}}],["ssl",{"_index":3399,"title":{"740":{},"747":{}},"content":{"740":{},"742":{},"747":{},"749":{}}}],["stabl",{"_index":3211,"title":{},"content":{"688":{}}}],["stack",{"_index":977,"title":{"215":{}},"content":{}}],["stage",{"_index":2700,"title":{},"content":{"575":{}}}],["stamp",{"_index":97,"title":{},"content":{"21":{},"95":{},"621":{},"625":{},"717":{}}}],["stamp'",{"_index":3310,"title":{},"content":{"717":{}}}],["stamp.nod",{"_index":3309,"title":{},"content":{"717":{}}}],["stand",{"_index":2738,"title":{},"content":{"602":{},"636":{}}}],["standalon",{"_index":1667,"title":{"301":{}},"content":{}}],["standard",{"_index":1742,"title":{"649":{},"730":{}},"content":{"323":{},"412":{},"623":{},"641":{},"649":{},"695":{},"696":{},"730":{}}}],["start",{"_index":547,"title":{},"content":{"183":{},"190":{},"231":{},"237":{},"290":{},"296":{},"309":{},"352":{},"361":{},"438":{},"509":{},"575":{},"588":{},"625":{},"661":{},"685":{},"690":{},"692":{},"705":{},"707":{},"726":{},"840":{},"841":{},"843":{},"851":{}}}],["stat",{"_index":1563,"title":{},"content":{"290":{},"292":{}}}],["state",{"_index":1030,"title":{},"content":{"216":{},"235":{},"304":{},"320":{},"345":{},"347":{},"349":{},"371":{},"376":{},"413":{},"488":{},"493":{},"516":{},"576":{},"617":{},"675":{},"686":{},"690":{},"716":{}}}],["stateless",{"_index":1843,"title":{"349":{}},"content":{"716":{}}}],["statement",{"_index":2030,"title":{"396":{}},"content":{"380":{},"394":{}}}],["static",{"_index":1172,"title":{"745":{},"746":{},"748":{},"749":{}},"content":{"270":{},"274":{},"652":{},"725":{},"726":{},"743":{},"745":{},"748":{},"776":{}}}],["statist",{"_index":1589,"title":{},"content":{"294":{},"693":{}}}],["statu",{"_index":623,"title":{"692":{},"771":{}},"content":{"188":{},"349":{},"488":{},"489":{},"603":{},"692":{},"709":{},"711":{},"756":{},"854":{}}}],["stem",{"_index":2936,"title":{},"content":{"639":{}}}],["step",{"_index":786,"title":{"766":{},"767":{},"768":{}},"content":{"191":{},"295":{},"296":{},"348":{},"410":{},"412":{},"590":{},"607":{},"637":{},"656":{},"722":{},"765":{},"766":{},"858":{},"859":{}}}],["still",{"_index":2051,"title":{},"content":{"385":{},"386":{},"584":{},"587":{},"621":{},"624":{},"639":{},"648":{},"721":{},"725":{},"738":{},"741":{}}}],["stock",{"_index":1846,"title":{},"content":{"349":{}}}],["storag",{"_index":198,"title":{"289":{},"294":{},"687":{}},"content":{"52":{},"123":{},"124":{},"181":{},"229":{},"237":{},"265":{},"266":{},"283":{},"284":{},"287":{},"288":{},"290":{},"291":{},"294":{},"299":{},"307":{},"308":{},"310":{},"337":{},"412":{},"488":{},"522":{},"575":{},"576":{},"620":{},"625":{},"641":{},"652":{},"656":{},"676":{},"677":{},"685":{},"687":{},"688":{},"689":{},"691":{},"692":{},"702":{},"708":{},"709":{},"839":{}}}],["storagenoncepublickey",{"_index":201,"title":{},"content":{"52":{}}}],["store",{"_index":267,"title":{"778":{}},"content":{"67":{},"136":{},"173":{},"175":{},"176":{},"181":{},"189":{},"190":{},"191":{},"197":{},"202":{},"211":{},"212":{},"229":{},"244":{},"252":{},"256":{},"266":{},"274":{},"275":{},"278":{},"281":{},"287":{},"298":{},"299":{},"337":{},"349":{},"516":{},"533":{},"534":{},"535":{},"588":{},"598":{},"620":{},"622":{},"646":{},"647":{},"652":{},"660":{},"677":{},"683":{},"690":{},"695":{},"702":{},"709":{},"710":{},"716":{},"723":{},"747":{},"754":{},"777":{},"778":{}}}],["storesit",{"_index":770,"title":{},"content":{"190":{}}}],["str",{"_index":2163,"title":{},"content":{"415":{},"417":{},"419":{},"420":{},"421":{},"447":{},"448":{},"469":{}}}],["str1",{"_index":2168,"title":{},"content":{"416":{}}}],["str2",{"_index":2170,"title":{},"content":{"416":{}}}],["straighforward",{"_index":1521,"title":{},"content":{"289":{}}}],["straightforward",{"_index":2722,"title":{},"content":{"593":{}}}],["strategi",{"_index":1035,"title":{},"content":{"216":{},"287":{},"289":{}}}],["stream",{"_index":1525,"title":{"329":{}},"content":{"289":{},"328":{},"329":{},"331":{}}}],["strengthen",{"_index":2742,"title":{},"content":{"603":{},"854":{},"855":{}}}],["strict",{"_index":2852,"title":{},"content":{"623":{}}}],["string",{"_index":118,"title":{"165":{},"354":{},"414":{}},"content":{"25":{},"26":{},"28":{},"29":{},"37":{},"38":{},"49":{},"50":{},"64":{},"65":{},"70":{},"71":{},"73":{},"74":{},"76":{},"77":{},"80":{},"81":{},"89":{},"90":{},"98":{},"99":{},"106":{},"142":{},"157":{},"163":{},"165":{},"352":{},"354":{},"361":{},"371":{},"384":{},"393":{},"401":{},"415":{},"417":{},"419":{},"420":{},"421":{},"439":{},"444":{},"445":{},"446":{},"448":{},"449":{},"477":{},"478":{},"488":{},"489":{},"493":{},"776":{},"790":{},"793":{},"795":{},"796":{},"798":{},"799":{},"802":{},"804":{},"805":{},"807":{},"808":{},"811":{},"813":{},"814":{}}}],["string.from_number(13",{"_index":2178,"title":{},"content":{"418":{}}}],["string.from_number(13.2",{"_index":2180,"title":{},"content":{"418":{}}}],["string.from_number(count",{"_index":2552,"title":{},"content":{"506":{}}}],["string.in?(\"bob,alice,julia",{"_index":2165,"title":{},"content":{"416":{}}}],["string.siz",{"_index":2162,"title":{},"content":{"415":{}}}],["string.size(\"hello",{"_index":2161,"title":{},"content":{"415":{}}}],["string.to_hex(\"592ac76afa",{"_index":2183,"title":{},"content":{"419":{}}}],["string.to_hex(\"hello",{"_index":2185,"title":{},"content":{"419":{}}}],["string.to_lowercase(\"#{firstnam",{"_index":1974,"title":{},"content":{"369":{}}}],["string.to_lowercase(\"sherlock",{"_index":2193,"title":{},"content":{"421":{}}}],["string.to_numb",{"_index":1951,"title":{},"content":{"364":{},"417":{}}}],["string.to_number(\"12",{"_index":2173,"title":{},"content":{"417":{}}}],["string.to_number(\"12.1",{"_index":2175,"title":{},"content":{"417":{}}}],["string.to_number(contract.cont",{"_index":1978,"title":{},"content":{"370":{},"506":{}}}],["string.to_uppercase(\"arsèn",{"_index":2189,"title":{},"content":{"420":{}}}],["string_bip_44",{"_index":762,"title":{},"content":{"190":{},"191":{}}}],["strong",{"_index":2743,"title":{},"content":{"603":{},"777":{},"854":{}}}],["struct",{"_index":1781,"title":{},"content":{"331":{}}}],["structu",{"_index":1464,"title":{},"content":{"284":{}}}],["structur",{"_index":329,"title":{"218":{},"285":{},"286":{},"336":{},"717":{}},"content":{"89":{},"189":{},"190":{},"221":{},"271":{},"273":{},"274":{},"281":{},"285":{},"286":{},"287":{},"288":{},"290":{},"291":{},"336":{},"360":{},"361":{},"477":{},"493":{},"642":{},"717":{},"729":{},"749":{},"759":{}}}],["style",{"_index":1037,"title":{},"content":{"216":{},"554":{},"661":{}}}],["stylesheet",{"_index":3359,"title":{},"content":{"725":{}}}],["sub",{"_index":1209,"title":{},"content":{"273":{},"291":{}}}],["subdomain",{"_index":3396,"title":{},"content":{"738":{}}}],["subexpress",{"_index":2279,"title":{},"content":{"443":{}}}],["subject",{"_index":1833,"title":{},"content":{"347":{},"392":{},"554":{},"621":{},"668":{},"686":{},"688":{},"721":{},"723":{}}}],["submit",{"_index":1696,"title":{},"content":{"312":{},"313":{},"314":{},"316":{},"320":{},"408":{},"576":{},"617":{},"664":{},"711":{}}}],["subnet",{"_index":1633,"title":{},"content":{"296":{}}}],["subpart",{"_index":2568,"title":{},"content":{"513":{}}}],["subscrib",{"_index":432,"title":{},"content":{"173":{},"176":{},"178":{},"488":{},"703":{},"711":{}}}],["subscript",{"_index":186,"title":{"550":{}},"content":{"42":{},"69":{},"75":{},"144":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"787":{}}}],["subsequ",{"_index":940,"title":{},"content":{"202":{},"858":{}}}],["subset",{"_index":1087,"title":{"231":{},"701":{}},"content":{"219":{},"220":{},"231":{},"232":{},"290":{},"292":{},"293":{},"465":{},"466":{},"687":{},"690":{},"691":{},"692":{},"693":{},"697":{},"700":{},"701":{},"703":{}}}],["substructur",{"_index":1245,"title":{},"content":{"273":{}}}],["subtract",{"_index":616,"title":{},"content":{"188":{}}}],["succeed",{"_index":3078,"title":{},"content":{"661":{}}}],["success",{"_index":775,"title":{"790":{},"793":{},"796":{},"799":{},"802":{},"805":{},"808":{},"811":{},"814":{}},"content":{"191":{},"237":{},"240":{},"412":{},"644":{},"661":{},"769":{}}}],["successfulli",{"_index":266,"title":{},"content":{"67":{},"175":{},"216":{},"589":{},"590":{},"610":{}}}],["successor",{"_index":1612,"title":{},"content":{"282":{}}}],["such",{"_index":445,"title":{},"content":{"181":{},"273":{},"323":{},"336":{},"488":{},"554":{},"590":{},"593":{},"619":{},"636":{},"649":{},"654":{},"666":{},"673":{},"688":{},"692":{},"695":{},"713":{},"721":{},"724":{},"725":{},"736":{},"737":{},"775":{},"854":{}}}],["suffer",{"_index":1468,"title":{},"content":{"284":{}}}],["suffici",{"_index":3245,"title":{},"content":{"709":{}}}],["sugar",{"_index":2015,"title":{},"content":{"378":{}}}],["suggest",{"_index":1929,"title":{},"content":{"361":{},"437":{},"554":{},"645":{},"738":{}}}],["suit",{"_index":1661,"title":{},"content":{"295":{},"642":{},"725":{}}}],["sum",{"_index":3327,"title":{},"content":{"713":{}}}],["sum(a",{"_index":1942,"title":{},"content":{"363":{}}}],["sum(list",{"_index":1943,"title":{},"content":{"363":{}}}],["summar",{"_index":309,"title":{},"content":{"80":{},"316":{},"702":{}}}],["summari",{"_index":73,"title":{},"content":{"15":{},"80":{},"101":{},"103":{},"221":{},"231":{},"232":{},"233":{},"290":{},"292":{},"293":{},"316":{},"319":{},"320":{},"590":{},"673":{},"676":{},"691":{},"692":{},"693":{},"700":{},"702":{},"708":{},"767":{}}}],["summarytim",{"_index":79,"title":{},"content":{"15":{}}}],["sunday",{"_index":2505,"title":{},"content":{"401":{}}}],["super",{"_index":2985,"title":{},"content":{"641":{}}}],["supervis",{"_index":1084,"title":{},"content":{"230":{},"234":{},"328":{},"336":{},"620":{},"670":{},"682":{},"704":{}}}],["supervisor",{"_index":1027,"title":{"234":{}},"content":{"216":{}}}],["suppli",{"_index":207,"title":{},"content":{"49":{},"127":{},"190":{},"191":{},"589":{},"713":{},"732":{},"733":{},"734":{},"735":{}}}],["supplier",{"_index":3134,"title":{},"content":{"679":{}}}],["support",{"_index":486,"title":{"596":{}},"content":{"181":{},"183":{},"190":{},"191":{},"197":{},"202":{},"205":{},"206":{},"211":{},"231":{},"283":{},"285":{},"287":{},"288":{},"290":{},"299":{},"322":{},"330":{},"331":{},"337":{},"506":{},"555":{},"596":{},"618":{},"622":{},"623":{},"633":{},"639":{},"644":{},"656":{},"663":{},"665":{},"666":{},"685":{},"710":{},"712":{},"729":{},"740":{},"774":{},"775":{},"777":{},"785":{}}}],["sure",{"_index":548,"title":{},"content":{"183":{},"290":{},"307":{},"308":{},"310":{},"402":{}}}],["sustain",{"_index":2906,"title":{},"content":{"637":{},"644":{},"713":{},"714":{}}}],["susten",{"_index":3337,"title":{},"content":{"714":{}}}],["sw_ok",{"_index":625,"title":{},"content":{"188":{},"191":{}}}],["swap",{"_index":1161,"title":{},"content":{"298":{},"299":{},"560":{},"564":{},"578":{},"593":{},"602":{},"603":{},"606":{},"613":{},"853":{},"854":{}}}],["swap'",{"_index":3484,"title":{},"content":{"858":{}}}],["switch",{"_index":2707,"title":{"579":{},"609":{}},"content":{"579":{},"609":{}}}],["symbol",{"_index":206,"title":{},"content":{"49":{},"127":{},"589":{},"590":{},"612":{},"732":{},"733":{},"735":{}}}],["symmetr",{"_index":935,"title":{},"content":{"202":{},"273":{}}}],["sync",{"_index":1151,"title":{},"content":{"237":{},"294":{},"675":{},"676":{},"677":{},"707":{},"746":{}}}],["sync/r",{"_index":3118,"title":{},"content":{"675":{}}}],["synchron",{"_index":1141,"title":{"677":{},"707":{}},"content":{"235":{},"347":{},"583":{},"686":{},"689":{},"693":{},"704":{},"707":{}}}],["synchronizationnod",{"_index":3219,"title":{},"content":{"693":{}}}],["synopsi",{"_index":518,"title":{"182":{}},"content":{}}],["syntax",{"_index":1874,"title":{"385":{}},"content":{"352":{},"353":{},"360":{},"361":{},"364":{},"365":{},"377":{},"382":{},"385":{},"553":{}}}],["system",{"_index":998,"title":{"376":{}},"content":{"216":{},"230":{},"289":{},"337":{},"376":{},"597":{},"620":{},"621":{},"636":{},"642":{},"643":{},"682":{},"684":{},"685":{},"689":{},"723":{},"724":{},"726":{},"737":{},"738":{},"760":{},"777":{}}}],["t.t.,([0",{"_index":2272,"title":{},"content":{"443":{}}}],["tab",{"_index":2791,"title":{},"content":{"587":{},"589":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{}}}],["tabl",{"_index":1063,"title":{"286":{},"319":{},"337":{},"338":{},"339":{},"340":{},"341":{}},"content":{"222":{},"223":{},"225":{},"226":{},"228":{},"229":{},"266":{},"286":{},"290":{},"319":{},"337":{},"338":{},"339":{},"340":{},"341":{},"746":{},"747":{},"748":{}}}],["tag",{"_index":1947,"title":{},"content":{"363":{},"364":{},"413":{}}}],["take",{"_index":716,"title":{},"content":{"190":{},"191":{},"201":{},"216":{},"244":{},"245":{},"246":{},"248":{},"273":{},"279":{},"281":{},"285":{},"307":{},"526":{},"645":{},"683":{},"754":{},"776":{}}}],["taken",{"_index":719,"title":{},"content":{"190":{},"554":{},"686":{},"717":{},"859":{}}}],["talk",{"_index":3371,"title":{},"content":{"725":{}}}],["target",{"_index":1546,"title":{"725":{}},"content":{"282":{},"290":{},"291":{},"295":{},"296":{},"307":{},"652":{},"717":{},"726":{},"766":{},"839":{}}}],["task",{"_index":1053,"title":{},"content":{"217":{},"235":{},"238":{},"301":{},"629":{},"741":{},"775":{}}}],["tbnb",{"_index":2766,"title":{},"content":{"612":{}}}],["tcp",{"_index":1763,"title":{},"content":{"329":{},"336":{}}}],["team",{"_index":3510,"title":{},"content":{"771":{},"779":{}}}],["tech",{"_index":529,"title":{},"content":{"182":{}}}],["tech/pourquoi",{"_index":3568,"title":{},"content":{"775":{}}}],["technic",{"_index":1617,"title":{"785":{}},"content":{"282":{},"318":{},"640":{},"644":{},"645":{},"647":{},"657":{},"661":{},"771":{},"787":{}}}],["techniqu",{"_index":2727,"title":{},"content":{"593":{},"621":{},"854":{}}}],["technolog",{"_index":976,"title":{"215":{}},"content":{"216":{},"345":{},"560":{},"578":{},"593":{},"618":{},"620":{},"638":{},"679":{},"680":{},"682":{},"695":{},"853":{}}}],["telemetri",{"_index":1679,"title":{},"content":{"327":{}}}],["tell",{"_index":2695,"title":{},"content":{"573":{},"615":{}}}],["temp",{"_index":1325,"title":{},"content":{"279":{}}}],["templat",{"_index":1203,"title":{},"content":{"273":{}}}],["temporari",{"_index":2878,"title":{},"content":{"629":{}}}],["term",{"_index":1474,"title":{},"content":{"285":{},"287":{},"289":{},"290":{},"337":{},"522":{},"644":{},"652":{},"661":{},"682":{},"688":{},"689":{}}}],["termin",{"_index":565,"title":{},"content":{"185":{},"536":{},"537":{},"538":{},"539":{},"782":{},"833":{},"834":{}}}],["terminolog",{"_index":906,"title":{},"content":{"200":{}}}],["test",{"_index":467,"title":{"185":{},"406":{},"407":{},"408":{},"409":{},"410":{}},"content":{"181":{},"183":{},"282":{},"295":{},"296":{},"298":{},"359":{},"404":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"506":{},"508":{},"517":{},"518":{},"524":{},"525":{},"644":{},"660":{},"661":{},"683":{},"726":{},"766":{},"775":{}}}],["testcoin_bal",{"_index":2340,"title":{},"content":{"461":{}}}],["testnet",{"_index":470,"title":{"507":{},"532":{},"567":{},"579":{},"609":{},"611":{},"612":{}},"content":{"181":{},"182":{},"296":{},"298":{},"320":{},"510":{},"511":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"551":{},"579":{},"584":{},"609":{},"612":{},"661":{},"700":{},"758":{},"760":{},"761":{},"766":{},"778":{},"851":{}}}],["testnet'",{"_index":3474,"title":{},"content":{"851":{}}}],["testnet/mainnet",{"_index":3224,"title":{},"content":{"699":{}}}],["text",{"_index":401,"title":{},"content":{"149":{},"165":{},"359":{},"405":{},"417":{},"418":{},"419":{},"441":{},"442":{},"443":{},"469":{},"472":{},"515":{},"516":{},"553":{},"587":{},"717":{},"778":{}}}],["textual",{"_index":421,"title":{},"content":{"165":{}}}],["thank",{"_index":1580,"title":{},"content":{"291":{},"623":{},"685":{},"815":{}}}],["that'",{"_index":2540,"title":{},"content":{"410":{},"412":{}}}],["the:transact",{"_index":3083,"title":{},"content":{"665":{}}}],["theft",{"_index":2867,"title":{},"content":{"621":{}}}],["theme",{"_index":3548,"title":{},"content":{"774":{},"778":{}}}],["themselv",{"_index":2955,"title":{},"content":{"657":{},"696":{}}}],["therefor",{"_index":1675,"title":{},"content":{"304":{},"536":{},"537":{},"538":{},"539":{},"552":{},"584":{},"623":{},"628":{},"636":{},"642":{},"673":{},"676":{},"703":{},"785":{},"815":{},"833":{}}}],["thier",{"_index":704,"title":{},"content":{"190":{},"191":{}}}],["thing",{"_index":1021,"title":{},"content":{"216":{},"310":{},"356":{},"371":{},"574":{},"616":{},"740":{},"755":{}}}],["think",{"_index":1006,"title":{},"content":{"216":{},"724":{}}}],["third",{"_index":1025,"title":{},"content":{"216":{},"471":{},"644":{},"662":{},"695":{},"778":{}}}],["those",{"_index":1008,"title":{},"content":{"216":{},"217":{},"221":{},"229":{},"232":{},"234":{},"285":{},"287":{},"288":{},"291":{},"294":{},"307":{},"308":{},"328":{},"506":{},"644":{},"657":{},"676":{},"693":{},"702":{},"717":{}}}],["thread",{"_index":1011,"title":{},"content":{"216":{}}}],["threat",{"_index":3012,"title":{},"content":{"643":{}}}],["three",{"_index":1715,"title":{},"content":{"305":{},"320":{},"497":{},"622":{},"749":{}}}],["threshhold",{"_index":1619,"title":{},"content":{"282":{}}}],["threshold",{"_index":1693,"title":{},"content":{"309":{},"323":{},"824":{}}}],["thrift",{"_index":1774,"title":{},"content":{"330":{}}}],["through",{"_index":875,"title":{},"content":{"197":{},"201":{},"246":{},"249":{},"263":{},"297":{},"298":{},"307":{},"313":{},"316":{},"326":{},"329":{},"330":{},"349":{},"364":{},"555":{},"607":{},"626":{},"644":{},"656":{},"663":{},"664":{},"668":{},"669":{},"671":{},"672":{},"674":{},"679":{},"682":{},"683":{},"702":{},"725":{},"730":{},"760":{},"768":{},"769":{},"772":{},"785":{},"854":{},"858":{},"859":{}}}],["throughput",{"_index":2834,"title":{},"content":{"622":{}}}],["throught",{"_index":3376,"title":{},"content":{"726":{}}}],["throw",{"_index":3107,"title":{},"content":{"672":{}}}],["thu",{"_index":528,"title":{},"content":{"182":{},"371":{},"637":{},"647":{},"776":{}}}],["ti",{"_index":2921,"title":{},"content":{"637":{}}}],["tick",{"_index":1723,"title":{},"content":{"320":{}}}],["time",{"_index":290,"title":{"238":{},"400":{},"450":{},"562":{},"600":{},"602":{},"745":{},"853":{}},"content":{"76":{},"89":{},"101":{},"120":{},"141":{},"186":{},"232":{},"285":{},"286":{},"289":{},"290":{},"327":{},"349":{},"359":{},"370":{},"374":{},"380":{},"391":{},"400":{},"451":{},"461":{},"465":{},"466":{},"488":{},"517":{},"524":{},"525":{},"554":{},"560":{},"564":{},"575":{},"593":{},"602":{},"637":{},"641":{},"643":{},"644":{},"660":{},"669":{},"671":{},"673":{},"682":{},"691":{},"693":{},"699":{},"700":{},"702":{},"703":{},"705":{},"706":{},"709":{},"734":{},"754":{},"775":{},"787":{},"853":{},"855":{},"858":{}}}],["time(timeout",{"_index":1765,"title":{},"content":{"329":{}}}],["time.now",{"_index":2011,"title":{},"content":{"377":{},"380":{},"451":{}}}],["time.now/0",{"_index":2557,"title":{"525":{}},"content":{"524":{},"525":{}}}],["timefram",{"_index":1683,"title":{},"content":{"307":{}}}],["timelock",{"_index":2663,"title":{},"content":{"560":{},"562":{},"600":{}}}],["timeout",{"_index":1126,"title":{},"content":{"220":{},"778":{}}}],["timer",{"_index":1096,"title":{"232":{}},"content":{"232":{},"700":{}}}],["timespan",{"_index":1123,"title":{},"content":{"220":{}}}],["timestamp",{"_index":80,"title":{"167":{},"517":{},"691":{}},"content":{"15":{},"16":{},"37":{},"38":{},"40":{},"41":{},"76":{},"77":{},"80":{},"81":{},"89":{},"90":{},"95":{},"96":{},"101":{},"102":{},"120":{},"121":{},"141":{},"167":{},"282":{},"290":{},"319":{},"346":{},"371":{},"373":{},"380":{},"691":{},"693":{},"717":{},"778":{}}}],["tini",{"_index":2822,"title":{},"content":{"620":{}}}],["tip",{"_index":531,"title":{},"content":{"182":{},"187":{},"189":{},"239":{},"269":{},"272":{},"275":{},"279":{},"361":{},"365":{},"377":{},"398":{},"425":{},"428":{},"437":{},"493":{},"494":{},"587":{},"743":{},"760":{},"766":{}}}],["tmp",{"_index":1632,"title":{},"content":{"295":{},"296":{}}}],["to_hex/1",{"_index":2182,"title":{"419":{}},"content":{}}],["to_lowercase/1",{"_index":2192,"title":{"421":{}},"content":{}}],["to_number/1",{"_index":2172,"title":{"417":{}},"content":{}}],["to_string/1",{"_index":2287,"title":{"447":{}},"content":{}}],["to_uppercase/1",{"_index":2188,"title":{"420":{}},"content":{}}],["toc",{"_index":583,"title":{},"content":{"187":{}}}],["today",{"_index":3368,"title":{},"content":{"725":{}}}],["todo",{"_index":1856,"title":{},"content":{"344":{},"389":{},"522":{},"825":{},"856":{}}}],["token",{"_index":63,"title":{"49":{},"125":{},"226":{},"314":{},"474":{},"520":{},"574":{},"589":{},"616":{},"656":{},"713":{},"714":{},"728":{},"734":{},"829":{},"838":{}},"content":{"11":{},"31":{},"48":{},"49":{},"51":{},"61":{},"70":{},"76":{},"89":{},"117":{},"125":{},"127":{},"141":{},"144":{},"154":{},"166":{},"170":{},"189":{},"226":{},"227":{},"228":{},"236":{},"314":{},"323":{},"371":{},"374":{},"375":{},"389":{},"393":{},"396":{},"461":{},"464":{},"465":{},"466":{},"475":{},"497":{},"520":{},"574":{},"587":{},"589":{},"593":{},"598":{},"604":{},"606":{},"616":{},"644":{},"651":{},"656":{},"662":{},"665":{},"714":{},"717":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"766":{},"767":{},"774":{},"826":{},"829":{},"836":{},"838":{},"851":{},"855":{},"858":{},"859":{}}}],["token'",{"_index":385,"title":{},"content":{"125":{},"169":{},"475":{},"520":{},"731":{}}}],["token.address",{"_index":386,"title":{},"content":{"126":{}}}],["token.collect",{"_index":216,"title":{},"content":{"50":{}}}],["token.decim",{"_index":217,"title":{},"content":{"50":{}}}],["token.fetch_id_from_address(\"000012345",{"_index":2391,"title":{},"content":{"475":{}}}],["token.fetch_id_from_address/1",{"_index":2558,"title":{},"content":{"524":{}}}],["token.genesi",{"_index":218,"title":{},"content":{"50":{}}}],["token.id",{"_index":219,"title":{},"content":{"50":{}}}],["token.nam",{"_index":220,"title":{},"content":{"50":{}}}],["token.ownership",{"_index":221,"title":{},"content":{"50":{}}}],["token.properti",{"_index":222,"title":{},"content":{"50":{}}}],["token.suppli",{"_index":223,"title":{},"content":{"50":{}}}],["token.symbol",{"_index":224,"title":{},"content":{"50":{}}}],["token.typ",{"_index":225,"title":{},"content":{"50":{}}}],["token_address",{"_index":1988,"title":{},"content":{"371":{},"374":{},"389":{},"393":{},"396":{},"461":{},"464":{},"465":{},"466":{},"497":{},"520":{}}}],["token_id",{"_index":1990,"title":{},"content":{"371":{},"393":{},"461":{},"463":{},"464":{},"465":{},"466":{},"497":{},"520":{}}}],["token_mov",{"_index":1987,"title":{},"content":{"371":{}}}],["token_nam",{"_index":3268,"title":{},"content":{"732":{}}}],["token_refer",{"_index":3282,"title":{},"content":{"734":{},"735":{}}}],["token_symbol",{"_index":3267,"title":{},"content":{"732":{}}}],["token_to_credit",{"_index":2067,"title":{},"content":{"374":{},"389":{}}}],["token_to_transf",{"_index":2123,"title":{},"content":{"393":{}}}],["token_transf",{"_index":1992,"title":{},"content":{"371":{},"380":{},"389":{},"392":{},"393":{},"497":{},"828":{}}}],["tokenaddress",{"_index":233,"title":{},"content":{"58":{},"70":{},"76":{},"89":{},"736":{}}}],["tokenbal",{"_index":64,"title":{"61":{}},"content":{"11":{},"12":{},"61":{},"144":{},"154":{}}}],["tokenbalance.address",{"_index":228,"title":{},"content":{"62":{}}}],["tokenbalance.amount",{"_index":229,"title":{},"content":{"62":{}}}],["tokenbalance.tokenid",{"_index":230,"title":{},"content":{"62":{}}}],["tokenid",{"_index":227,"title":{},"content":{"58":{},"61":{},"70":{},"76":{},"89":{},"736":{}}}],["tokenledg",{"_index":139,"title":{"55":{}},"content":{"31":{},"32":{},"55":{},"60":{}}}],["tokenledger.transf",{"_index":232,"title":{},"content":{"56":{}}}],["tokenproperti",{"_index":215,"title":{"169":{}},"content":{"49":{},"50":{},"169":{}}}],["tokens_identifi",{"_index":2371,"title":{},"content":{"466":{}}}],["tokentransf",{"_index":231,"title":{"58":{}},"content":{"55":{},"56":{},"58":{},"144":{},"154":{}}}],["tokentransfer.amount",{"_index":234,"title":{},"content":{"59":{}}}],["tokentransfer.to",{"_index":235,"title":{},"content":{"59":{}}}],["tokentransfer.tokenaddress",{"_index":236,"title":{},"content":{"59":{}}}],["tokentransfer.tokenid",{"_index":237,"title":{},"content":{"59":{}}}],["toler",{"_index":997,"title":{},"content":{"216":{},"622":{},"668":{}}}],["tom",{"_index":1915,"title":{},"content":{"359":{}}}],["tom\\njerry\\n",{"_index":1920,"title":{},"content":{"359":{}}}],["took",{"_index":1514,"title":{},"content":{"288":{}}}],["tool",{"_index":1639,"title":{},"content":{"295":{},"575":{},"725":{},"727":{},"757":{},"782":{},"833":{},"848":{}}}],["top",{"_index":1798,"title":{},"content":{"334":{},"342":{},"343":{},"508":{},"618":{}}}],["torrent",{"_index":3345,"title":{},"content":{"723":{}}}],["total",{"_index":826,"title":{},"content":{"191":{},"223":{},"226":{},"623":{},"759":{}}}],["total_token_transf",{"_index":807,"title":{},"content":{"191":{}}}],["total_uco_transf",{"_index":805,"title":{},"content":{"191":{}}}],["toto,([0",{"_index":2270,"title":{},"content":{"443":{}}}],["touch",{"_index":3542,"title":{},"content":{"774":{},"777":{}}}],["toward",{"_index":3254,"title":{},"content":{"728":{}}}],["tp",{"_index":1017,"title":{},"content":{"216":{},"294":{},"641":{},"666":{},"686":{}}}],["tpm",{"_index":969,"title":{"269":{}},"content":{"209":{},"217":{},"269":{},"271":{},"272":{},"273":{},"276":{},"279":{},"638":{},"639":{}}}],["tpm.c",{"_index":1169,"title":{},"content":{"269":{}}}],["tpm.h",{"_index":1170,"title":{},"content":{"269":{}}}],["tpm/yubikey",{"_index":2935,"title":{},"content":{"639":{}}}],["tpm2_alg_a",{"_index":1279,"title":{},"content":{"273":{}}}],["tpm2_alg_cfb",{"_index":1283,"title":{},"content":{"273":{}}}],["tpm2_alg_nul",{"_index":1284,"title":{},"content":{"273":{}}}],["tpm2_alg_sha256",{"_index":1287,"title":{},"content":{"273":{}}}],["tpm2_ecc_nist_p256",{"_index":1289,"title":{},"content":{"273":{}}}],["tpm2b_hash",{"_index":1331,"title":{},"content":{"280":{}}}],["tpma_object_adminwithpolici",{"_index":1219,"title":{},"content":{"273":{}}}],["tpma_object_decrypt",{"_index":1237,"title":{},"content":{"273":{}}}],["tpma_object_decrypt:th",{"_index":1227,"title":{},"content":{"273":{}}}],["tpma_object_fixedpar",{"_index":1238,"title":{},"content":{"273":{}}}],["tpma_object_fixedparent:ind",{"_index":1231,"title":{},"content":{"273":{}}}],["tpma_object_fixedtpm",{"_index":1228,"title":{},"content":{"273":{}}}],["tpma_object_restrict",{"_index":1243,"title":{},"content":{"273":{}}}],["tpma_object_sensitivedataorigin",{"_index":1233,"title":{},"content":{"273":{}}}],["tpma_object_sign_encrypt",{"_index":1224,"title":{},"content":{"273":{}}}],["tpma_object_userwithauth",{"_index":1216,"title":{},"content":{"273":{}}}],["tracer/mark",{"_index":3213,"title":{},"content":{"690":{}}}],["track",{"_index":1551,"title":{"691":{}},"content":{"290":{},"765":{},"768":{}}}],["tradit",{"_index":899,"title":{},"content":{"200":{},"643":{},"685":{},"723":{}}}],["traffic",{"_index":3096,"title":{},"content":{"668":{},"674":{}}}],["transact",{"_index":16,"title":{"64":{},"128":{},"136":{},"191":{},"207":{},"233":{},"306":{},"309":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"370":{},"371":{},"381":{},"398":{},"399":{},"402":{},"408":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"513":{},"573":{},"615":{},"633":{},"651":{},"671":{},"672":{},"691":{},"702":{},"703":{},"715":{},"717":{},"718":{},"719":{},"753":{},"816":{},"836":{},"842":{},"847":{}},"content":{"8":{},"9":{},"14":{},"23":{},"28":{},"30":{},"34":{},"64":{},"66":{},"67":{},"70":{},"76":{},"79":{},"80":{},"89":{},"95":{},"97":{},"98":{},"104":{},"107":{},"109":{},"112":{},"114":{},"115":{},"128":{},"130":{},"131":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"141":{},"144":{},"149":{},"152":{},"154":{},"162":{},"164":{},"166":{},"171":{},"173":{},"175":{},"178":{},"181":{},"186":{},"191":{},"197":{},"200":{},"207":{},"211":{},"212":{},"213":{},"220":{},"221":{},"229":{},"231":{},"233":{},"236":{},"237":{},"238":{},"266":{},"287":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"298":{},"299":{},"300":{},"301":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"322":{},"326":{},"327":{},"334":{},"342":{},"343":{},"345":{},"346":{},"347":{},"349":{},"350":{},"364":{},"368":{},"369":{},"370":{},"371":{},"373":{},"374":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"385":{},"389":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"398":{},"399":{},"402":{},"403":{},"404":{},"407":{},"408":{},"410":{},"412":{},"413":{},"451":{},"453":{},"454":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"464":{},"465":{},"466":{},"477":{},"478":{},"488":{},"492":{},"493":{},"494":{},"495":{},"497":{},"499":{},"501":{},"506":{},"513":{},"514":{},"517":{},"521":{},"533":{},"534":{},"535":{},"560":{},"575":{},"584":{},"587":{},"589":{},"593":{},"603":{},"606":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"624":{},"625":{},"628":{},"629":{},"633":{},"641":{},"642":{},"644":{},"646":{},"648":{},"650":{},"651":{},"652":{},"654":{},"655":{},"656":{},"660":{},"661":{},"663":{},"664":{},"666":{},"670":{},"671":{},"672":{},"675":{},"676":{},"677":{},"682":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{},"692":{},"693":{},"695":{},"697":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"714":{},"715":{},"716":{},"717":{},"722":{},"724":{},"728":{},"729":{},"731":{},"733":{},"734":{},"735":{},"736":{},"739":{},"740":{},"742":{},"745":{},"746":{},"747":{},"748":{},"749":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"759":{},"764":{},"765":{},"768":{},"772":{},"774":{},"778":{},"784":{},"785":{},"786":{},"794":{},"795":{},"796":{},"799":{},"812":{},"813":{},"814":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"836":{},"837":{},"839":{},"840":{},"841":{},"842":{},"843":{},"847":{},"854":{}}}],["transactio'",{"_index":1698,"title":{},"content":{"313":{}}}],["transaction'",{"_index":365,"title":{"653":{}},"content":{"106":{},"142":{},"201":{},"212":{},"213":{},"233":{},"290":{},"292":{},"312":{},"319":{},"371":{},"378":{},"384":{},"395":{},"460":{},"493":{},"514":{},"516":{},"518":{},"625":{},"633":{},"651":{},"652":{},"654":{},"677":{},"687":{},"690":{},"693":{},"717":{},"729":{},"731":{},"734":{},"735":{},"753":{},"816":{}}}],["transaction(",{"_index":3451,"title":{},"content":{"745":{},"746":{}}}],["transaction(aka",{"_index":3296,"title":{},"content":{"716":{}}}],["transaction(nod",{"_index":1787,"title":{},"content":{"337":{}}}],["transaction.address",{"_index":247,"title":{},"content":{"65":{},"129":{},"353":{},"389":{}}}],["transaction.bal",{"_index":248,"title":{},"content":{"65":{}}}],["transaction.chainlength",{"_index":249,"title":{},"content":{"65":{}}}],["transaction.cod",{"_index":2398,"title":{},"content":{"477":{}}}],["transaction.cont",{"_index":2507,"title":{},"content":{"402":{}}}],["transaction.crossvalidationstamp",{"_index":250,"title":{},"content":{"65":{}}}],["transaction.data",{"_index":251,"title":{},"content":{"65":{}}}],["transaction.input",{"_index":252,"title":{},"content":{"65":{}}}],["transaction.inputs.limit",{"_index":253,"title":{},"content":{"65":{}}}],["transaction.inputs.pagingoffset",{"_index":254,"title":{},"content":{"65":{}}}],["transaction.originsignatur",{"_index":255,"title":{},"content":{"65":{}}}],["transaction.previousaddress",{"_index":256,"title":{},"content":{"65":{}}}],["transaction.previouspublickey",{"_index":257,"title":{},"content":{"65":{}}}],["transaction.previoussignatur",{"_index":258,"title":{},"content":{"65":{}}}],["transaction.typ",{"_index":259,"title":{},"content":{"65":{}}}],["transaction.uco_transfers[contract.address",{"_index":2113,"title":{},"content":{"389":{}}}],["transaction.validationstamp",{"_index":260,"title":{},"content":{"65":{}}}],["transaction.vers",{"_index":261,"title":{},"content":{"65":{}}}],["transaction:previ",{"_index":2861,"title":{},"content":{"625":{}}}],["transaction_address",{"_index":2352,"title":{},"content":{"464":{}}}],["transactionaddress",{"_index":3640,"title":{},"content":{"796":{},"799":{}}}],["transactionattest",{"_index":264,"title":{"67":{}},"content":{"67":{},"144":{},"154":{},"173":{},"175":{}}}],["transactionattestation.address",{"_index":278,"title":{},"content":{"68":{}}}],["transactionattestation.maxconfirm",{"_index":279,"title":{},"content":{"68":{}}}],["transactionattestation.nbconfirm",{"_index":280,"title":{},"content":{"68":{}}}],["transactionchain",{"_index":42,"title":{"131":{}},"content":{"7":{},"66":{},"131":{},"144":{},"345":{},"347":{},"618":{},"626":{},"628":{}}}],["transactionchain.address",{"_index":388,"title":{},"content":{"132":{}}}],["transactionchain.ord",{"_index":389,"title":{},"content":{"132":{}}}],["transactionchain.pagingaddress",{"_index":390,"title":{},"content":{"132":{}}}],["transactionchainsinstead",{"_index":2818,"title":{},"content":{"620":{}}}],["transactionconfirm",{"_index":281,"title":{"173":{}},"content":{"69":{},"144":{},"173":{}}}],["transactionconfirmed.address",{"_index":437,"title":{},"content":{"174":{}}}],["transactiondata",{"_index":106,"title":{},"content":{"28":{}}}],["transactionerror",{"_index":29,"title":{"73":{},"178":{}},"content":{"10":{},"73":{},"75":{},"144":{},"166":{},"178":{},"180":{}}}],["transactionerror.address",{"_index":283,"title":{},"content":{"74":{},"179":{}}}],["transactionerror.context",{"_index":284,"title":{},"content":{"74":{}}}],["transactionerror.reason",{"_index":285,"title":{},"content":{"74":{}}}],["transactionhashfunct",{"_index":792,"title":{},"content":{"191":{}}}],["transactioninput",{"_index":242,"title":{"76":{},"139":{}},"content":{"64":{},"65":{},"76":{},"78":{},"139":{},"141":{},"144":{},"146":{},"154":{},"156":{},"162":{},"166":{},"168":{}}}],["transactioninput.amount",{"_index":294,"title":{},"content":{"77":{}}}],["transactioninput.from",{"_index":295,"title":{},"content":{"77":{}}}],["transactioninput.sp",{"_index":296,"title":{},"content":{"77":{}}}],["transactioninput.timestamp",{"_index":297,"title":{},"content":{"77":{}}}],["transactioninput.tokenaddress",{"_index":298,"title":{},"content":{"77":{}}}],["transactioninput.tokenid",{"_index":299,"title":{},"content":{"77":{}}}],["transactioninput.typ",{"_index":300,"title":{},"content":{"77":{}}}],["transactioninputs.address",{"_index":391,"title":{},"content":{"140":{}}}],["transactioninputs.limit",{"_index":392,"title":{},"content":{"140":{}}}],["transactioninputs.pagingoffset",{"_index":393,"title":{},"content":{"140":{}}}],["transactionmov",{"_index":149,"title":{"70":{}},"content":{"34":{},"35":{},"70":{},"144":{},"154":{},"166":{}}}],["transactionmovement.amount",{"_index":302,"title":{},"content":{"71":{}}}],["transactionmovement.to",{"_index":303,"title":{},"content":{"71":{}}}],["transactionmovement.tokenaddress",{"_index":304,"title":{},"content":{"71":{}}}],["transactionmovement.tokenid",{"_index":305,"title":{},"content":{"71":{}}}],["transactionmovement.typ",{"_index":306,"title":{},"content":{"71":{}}}],["transactions.pag",{"_index":395,"title":{},"content":{"137":{}}}],["transactions.th",{"_index":2830,"title":{},"content":{"620":{}}}],["transactionsaddress",{"_index":3217,"title":{},"content":{"693":{}}}],["transactionsummari",{"_index":81,"title":{"80":{}},"content":{"15":{},"16":{},"80":{},"144":{},"154":{},"158":{},"166":{},"168":{}}}],["transactionsummary.address",{"_index":313,"title":{},"content":{"81":{}}}],["transactionsummary.fe",{"_index":314,"title":{},"content":{"81":{}}}],["transactionsummary.movementsaddress",{"_index":315,"title":{},"content":{"81":{}}}],["transactionsummary.timestamp",{"_index":316,"title":{},"content":{"81":{}}}],["transactionsummary.typ",{"_index":317,"title":{},"content":{"81":{}}}],["transactionsummary.validationstampchecksum",{"_index":318,"title":{},"content":{"81":{}}}],["transactiontyp",{"_index":381,"title":{"171":{}},"content":{"112":{},"113":{},"171":{}}}],["transfer",{"_index":109,"title":{"388":{},"519":{},"520":{},"573":{},"615":{},"736":{},"766":{},"768":{},"771":{},"828":{},"837":{},"838":{}},"content":{"28":{},"34":{},"55":{},"58":{},"70":{},"86":{},"92":{},"186":{},"371":{},"374":{},"375":{},"380":{},"388":{},"389":{},"393":{},"396":{},"412":{},"413":{},"492":{},"510":{},"519":{},"520":{},"560":{},"564":{},"566":{},"575":{},"578":{},"583":{},"593":{},"604":{},"606":{},"607":{},"652":{},"656":{},"680":{},"710":{},"711":{},"717":{},"729":{},"733":{},"736":{},"745":{},"746":{},"747":{},"748":{},"759":{},"765":{},"766":{},"768":{},"769":{},"771":{},"836":{},"837":{},"838":{},"853":{},"855":{},"858":{},"859":{}}}],["transfered_amount",{"_index":2078,"title":{},"content":{"374":{}}}],["transform",{"_index":3253,"title":{},"content":{"722":{},"728":{}}}],["transient",{"_index":1324,"title":{},"content":{"279":{}}}],["transmiss",{"_index":1754,"title":{},"content":{"328":{}}}],["transmit",{"_index":2862,"title":{},"content":{"625":{},"691":{}}}],["transpar",{"_index":1828,"title":{},"content":{"346":{},"348":{},"657":{},"753":{}}}],["transport",{"_index":1139,"title":{},"content":{"235":{},"329":{},"330":{},"338":{}}}],["travers",{"_index":1794,"title":{},"content":{"341":{}}}],["tree",{"_index":1112,"title":{},"content":{"234":{},"284":{},"307":{},"359":{},"625":{}}}],["trend",{"_index":3256,"title":{},"content":{"728":{}}}],["tri",{"_index":2562,"title":{},"content":{"526":{}}}],["trigger",{"_index":1156,"title":{"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"406":{},"407":{},"408":{},"409":{},"410":{}},"content":{"238":{},"268":{},"320":{},"345":{},"346":{},"350":{},"367":{},"368":{},"369":{},"373":{},"377":{},"381":{},"382":{},"383":{},"390":{},"391":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"406":{},"407":{},"408":{},"409":{},"410":{},"412":{},"501":{},"513":{},"521":{},"524":{},"525":{}}}],["trigger'",{"_index":1816,"title":{},"content":{"345":{}}}],["trigger_bi",{"_index":1970,"title":{},"content":{"369":{}}}],["triggered_bi",{"_index":1976,"title":{},"content":{"370":{},"373":{},"374":{},"375":{},"376":{},"377":{},"381":{},"382":{},"383":{},"384":{},"388":{},"389":{},"391":{},"396":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"477":{},"478":{},"506":{},"525":{},"526":{}}}],["triggers/act",{"_index":2115,"title":{"391":{}},"content":{}}],["trivial",{"_index":2626,"title":{},"content":{"554":{}}}],["troubleshoot",{"_index":3499,"title":{},"content":{"763":{}}}],["true",{"_index":6,"title":{},"content":{"1":{},"2":{},"3":{},"4":{},"145":{},"241":{},"252":{},"337":{},"352":{},"354":{},"355":{},"377":{},"378":{},"416":{},"434":{},"435":{},"442":{},"446":{},"449":{},"477":{},"478":{},"732":{},"754":{}}}],["truli",{"_index":2802,"title":{},"content":{"618":{}}}],["trunc/1",{"_index":2411,"title":{"481":{}},"content":{}}],["truncat",{"_index":1903,"title":{},"content":{"356":{},"481":{}}}],["trust",{"_index":472,"title":{"635":{},"636":{},"637":{},"638":{}},"content":{"181":{},"312":{},"621":{},"636":{},"637":{},"638":{},"639":{},"642":{},"666":{},"721":{},"854":{}}}],["truth",{"_index":1019,"title":{},"content":{"216":{},"349":{}}}],["tui",{"_index":3519,"title":{},"content":{"834":{}}}],["tupl",{"_index":1070,"title":{},"content":{"224":{},"227":{},"504":{},"505":{}}}],["tutori",{"_index":2687,"title":{"744":{},"760":{}},"content":{"570":{},"571":{},"743":{}}}],["twenti",{"_index":1366,"title":{},"content":{"244":{}}}],["twist",{"_index":1861,"title":{},"content":{"352":{}}}],["two",{"_index":452,"title":{"593":{}},"content":{"181":{},"232":{},"291":{},"325":{},"328":{},"394":{},"404":{},"406":{},"408":{},"461":{},"477":{},"495":{},"499":{},"551":{},"564":{},"593":{},"633":{},"637":{},"638":{},"667":{},"679":{},"701":{},"738":{},"740":{},"760":{},"785":{},"787":{}}}],["tx",{"_index":2519,"title":{},"content":{"404":{},"813":{}}}],["tx_hash",{"_index":839,"title":{},"content":{"196":{}}}],["tx_type",{"_index":801,"title":{},"content":{"191":{}}}],["txhash",{"_index":798,"title":{},"content":{"191":{}}}],["txhashlen",{"_index":799,"title":{},"content":{"191":{}}}],["txnhash",{"_index":820,"title":{},"content":{"191":{}}}],["txt",{"_index":3394,"title":{},"content":{"738":{},"739":{}}}],["ty",{"_index":2911,"title":{},"content":{"637":{}}}],["type",{"_index":53,"title":{"103":{},"106":{},"109":{},"111":{},"114":{},"117":{},"119":{},"122":{},"124":{},"127":{},"130":{},"133":{},"135":{},"138":{},"141":{},"175":{},"177":{},"180":{},"205":{},"206":{},"311":{},"352":{},"514":{},"565":{},"653":{},"816":{}},"content":{"11":{},"15":{},"18":{},"21":{},"25":{},"28":{},"31":{},"34":{},"37":{},"40":{},"43":{},"46":{},"49":{},"52":{},"55":{},"58":{},"61":{},"64":{},"67":{},"70":{},"73":{},"76":{},"80":{},"83":{},"86":{},"89":{},"92":{},"95":{},"98":{},"106":{},"112":{},"127":{},"141":{},"142":{},"145":{},"147":{},"149":{},"151":{},"153":{},"155":{},"157":{},"161":{},"163":{},"165":{},"167":{},"171":{},"181":{},"189":{},"190":{},"204":{},"209":{},"210":{},"271":{},"290":{},"292":{},"309":{},"312":{},"314":{},"359":{},"362":{},"370":{},"371":{},"377":{},"380":{},"388":{},"389":{},"391":{},"392":{},"393":{},"396":{},"403":{},"410":{},"492":{},"514":{},"516":{},"602":{},"633":{},"654":{},"656":{},"717":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"738":{},"739":{},"766":{},"795":{},"813":{},"816":{},"836":{},"837":{},"840":{},"841":{},"846":{},"850":{}}}],["typo",{"_index":2605,"title":{},"content":{"552":{},"554":{}}}],["uco",{"_index":62,"title":{"223":{},"519":{},"542":{},"558":{},"560":{},"561":{},"563":{},"595":{},"599":{},"613":{},"713":{},"837":{}},"content":{"11":{},"31":{},"43":{},"55":{},"86":{},"117":{},"181":{},"182":{},"186":{},"189":{},"200":{},"223":{},"236":{},"319":{},"323":{},"324":{},"370":{},"371":{},"374":{},"375":{},"380":{},"382":{},"384":{},"389":{},"393":{},"396":{},"461":{},"462":{},"495":{},"497":{},"510":{},"512":{},"519":{},"540":{},"541":{},"542":{},"543":{},"560":{},"564":{},"565":{},"566":{},"589":{},"590":{},"593":{},"599":{},"613":{},"651":{},"652":{},"656":{},"665":{},"713":{},"717":{},"724":{},"729":{},"759":{},"774":{},"778":{},"820":{},"821":{},"826":{},"836":{},"837":{},"845":{},"851":{}}}],["uco'",{"_index":3045,"title":{},"content":{"651":{},"652":{}}}],["uco(becaus",{"_index":3051,"title":{},"content":{"652":{}}}],["uco.aud",{"_index":2286,"title":{},"content":{"446":{}}}],["uco.usd",{"_index":1981,"title":{},"content":{"370":{},"384":{},"446":{}}}],["uco/token",{"_index":301,"title":{},"content":{"70":{},"89":{}}}],["uco/token/cal",{"_index":287,"title":{},"content":{"76":{},"141":{}}}],["uco_amount",{"_index":2073,"title":{},"content":{"374":{}}}],["uco_bal",{"_index":2338,"title":{},"content":{"461":{}}}],["uco_mov",{"_index":1984,"title":{},"content":{"371":{}}}],["uco_transf",{"_index":1991,"title":{},"content":{"371":{},"374":{},"377":{},"378":{},"380":{},"382":{},"388":{},"389":{},"392":{},"393":{},"457":{},"459":{},"495":{},"828":{}}}],["ucodata",{"_index":188,"title":{"83":{}},"content":{"43":{},"44":{},"83":{},"148":{}}}],["ucodata.eur",{"_index":321,"title":{},"content":{"84":{}}}],["ucodata.usd",{"_index":322,"title":{},"content":{"84":{}}}],["ucoledg",{"_index":140,"title":{"86":{}},"content":{"31":{},"32":{},"86":{},"94":{}}}],["ucoledger.transf",{"_index":324,"title":{},"content":{"87":{}}}],["ucotransf",{"_index":323,"title":{"92":{}},"content":{"86":{},"87":{},"92":{},"144":{},"154":{}}}],["ucotransfer.amount",{"_index":325,"title":{},"content":{"93":{}}}],["ucotransfer.to",{"_index":326,"title":{},"content":{"93":{}}}],["ui",{"_index":1558,"title":{},"content":{"282":{},"290":{},"774":{},"775":{}}}],["uint16_t",{"_index":591,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["uint32_t",{"_index":664,"title":{},"content":{"189":{},"190":{},"191":{}}}],["uint8_t",{"_index":588,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["ultrason",{"_index":3194,"title":{},"content":{"683":{}}}],["ultrasound",{"_index":3173,"title":{},"content":{"683":{}}}],["unambigu",{"_index":1850,"title":{},"content":{"349":{}}}],["unauthor",{"_index":2963,"title":{},"content":{"648":{},"682":{},"784":{}}}],["unavail",{"_index":3511,"title":{},"content":{"772":{}}}],["unavoid",{"_index":1018,"title":{},"content":{"216":{}}}],["uncompress",{"_index":687,"title":{},"content":{"189":{},"271":{},"272":{},"281":{}}}],["uncompromis",{"_index":2833,"title":{},"content":{"622":{}}}],["under",{"_index":1214,"title":{},"content":{"273":{},"300":{},"306":{},"309":{},"638":{},"644":{},"727":{},"858":{}}}],["underli",{"_index":1758,"title":{},"content":{"329":{}}}],["understand",{"_index":1840,"title":{},"content":{"348":{},"371":{},"588":{},"698":{},"730":{},"733":{},"743":{},"754":{}}}],["unexpect",{"_index":3477,"title":{},"content":{"855":{}}}],["unfalsifi",{"_index":3127,"title":{},"content":{"679":{}}}],["unfinish",{"_index":2704,"title":{},"content":{"575":{}}}],["unicast",{"_index":3102,"title":{},"content":{"670":{}}}],["unifi",{"_index":3259,"title":{},"content":{"730":{},"785":{}}}],["union",{"_index":3659,"title":{},"content":{"850":{}}}],["uniqu",{"_index":213,"title":{},"content":{"49":{},"127":{},"224":{},"227":{},"273":{},"274":{},"289":{},"593":{},"637":{},"640":{},"644":{},"656":{},"658":{},"682":{}}}],["unique.ecc",{"_index":1293,"title":{},"content":{"273":{}}}],["uniri",{"_index":1168,"title":{},"content":{"239":{},"269":{},"639":{},"774":{}}}],["unit",{"_index":1646,"title":{},"content":{"295":{}}}],["unitari",{"_index":238,"title":{},"content":{"64":{},"109":{},"114":{},"130":{},"133":{},"138":{},"682":{}}}],["univers",{"_index":2810,"title":{},"content":{"619":{},"620":{},"679":{}}}],["unix",{"_index":430,"title":{},"content":{"167":{},"373":{},"400":{}}}],["unless",{"_index":2150,"title":{},"content":{"413":{},"619":{}}}],["unlik",{"_index":1953,"title":{},"content":{"364":{},"775":{}}}],["unlimit",{"_index":1770,"title":{"642":{}},"content":{"330":{},"666":{},"685":{},"728":{}}}],["unlock",{"_index":3490,"title":{},"content":{"859":{}}}],["unmatch",{"_index":3563,"title":{},"content":{"775":{}}}],["unnecessari",{"_index":3095,"title":{},"content":{"668":{}}}],["unpredict",{"_index":2841,"title":{},"content":{"621":{},"623":{},"624":{}}}],["unpubl",{"_index":3442,"title":{"756":{}},"content":{}}],["unpublish",{"_index":3443,"title":{"748":{}},"content":{"748":{},"756":{}}}],["unsign",{"_index":594,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["unspent",{"_index":145,"title":{},"content":{"34":{},"89":{},"223":{},"226":{},"307":{},"308":{},"510":{},"625":{},"656":{},"716":{},"717":{}}}],["unspentoutput",{"_index":150,"title":{"89":{}},"content":{"34":{},"35":{},"89":{},"144":{},"154":{},"166":{},"168":{}}}],["unspentoutput.amount",{"_index":330,"title":{},"content":{"90":{}}}],["unspentoutput.from",{"_index":331,"title":{},"content":{"90":{}}}],["unspentoutput.timestamp",{"_index":332,"title":{},"content":{"90":{}}}],["unspentoutput.tokenaddress",{"_index":333,"title":{},"content":{"90":{}}}],["unspentoutput.tokenid",{"_index":334,"title":{},"content":{"90":{}}}],["unspentoutput.typ",{"_index":335,"title":{},"content":{"90":{}}}],["unspentoutput.vers",{"_index":336,"title":{},"content":{"90":{}}}],["until",{"_index":1449,"title":{},"content":{"284":{},"554":{},"564":{},"602":{},"624":{},"628":{},"702":{},"716":{},"752":{},"754":{},"853":{}}}],["up",{"_index":1634,"title":{"612":{}},"content":{"296":{},"330":{},"337":{},"536":{},"537":{},"538":{},"539":{},"571":{},"641":{},"647":{},"708":{},"833":{},"837":{}}}],["updat",{"_index":1153,"title":{"706":{},"746":{},"747":{},"755":{}},"content":{"238":{},"271":{},"275":{},"285":{},"287":{},"318":{},"345":{},"347":{},"349":{},"359":{},"407":{},"506":{},"621":{},"644":{},"655":{},"660":{},"662":{},"664":{},"716":{},"746":{},"747":{},"748":{},"755":{},"759":{},"760":{},"859":{}}}],["update_contract",{"_index":1948,"title":{},"content":{"363":{}}}],["updatehandlesindex",{"_index":1305,"title":{"275":{}},"content":{}}],["upgrad",{"_index":1608,"title":{},"content":{"282":{},"295":{},"296":{},"317":{},"403":{},"661":{},"695":{},"753":{}}}],["upload",{"_index":2649,"title":{},"content":{"583":{},"751":{},"759":{}}}],["upon",{"_index":674,"title":{},"content":{"189":{},"762":{},"772":{},"858":{}}}],["uppercas",{"_index":2187,"title":{},"content":{"419":{},"420":{}}}],["uptim",{"_index":3316,"title":{},"content":{"819":{}}}],["upto",{"_index":785,"title":{},"content":{"191":{}}}],["url",{"_index":2438,"title":{},"content":{"488":{},"489":{},"612":{},"737":{},"755":{},"785":{},"788":{},"790":{},"836":{},"843":{}}}],["us",{"_index":411,"title":{"517":{},"518":{},"566":{},"578":{},"579":{},"584":{},"609":{}},"content":{"157":{},"165":{},"181":{},"184":{},"185":{},"189":{},"197":{},"198":{},"200":{},"201":{},"202":{},"210":{},"211":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"237":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"252":{},"260":{},"261":{},"262":{},"264":{},"266":{},"268":{},"273":{},"277":{},"280":{},"281":{},"282":{},"284":{},"285":{},"286":{},"287":{},"289":{},"290":{},"298":{},"299":{},"319":{},"323":{},"327":{},"328":{},"330":{},"331":{},"334":{},"336":{},"337":{},"343":{},"346":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"361":{},"363":{},"364":{},"365":{},"369":{},"370":{},"371":{},"377":{},"382":{},"385":{},"393":{},"394":{},"398":{},"399":{},"402":{},"406":{},"407":{},"411":{},"412":{},"428":{},"437":{},"444":{},"461":{},"465":{},"466":{},"469":{},"472":{},"488":{},"493":{},"497":{},"501":{},"506":{},"514":{},"516":{},"517":{},"518":{},"520":{},"522":{},"524":{},"525":{},"536":{},"537":{},"538":{},"539":{},"554":{},"555":{},"560":{},"563":{},"564":{},"575":{},"578":{},"583":{},"584":{},"588":{},"595":{},"597":{},"599":{},"602":{},"606":{},"607":{},"612":{},"613":{},"618":{},"620":{},"621":{},"622":{},"628":{},"631":{},"632":{},"633":{},"634":{},"636":{},"637":{},"638":{},"639":{},"641":{},"643":{},"644":{},"648":{},"650":{},"651":{},"660":{},"661":{},"663":{},"664":{},"665":{},"668":{},"670":{},"672":{},"674":{},"675":{},"677":{},"682":{},"683":{},"685":{},"686":{},"689":{},"690":{},"696":{},"697":{},"703":{},"704":{},"716":{},"717":{},"721":{},"727":{},"728":{},"738":{},"741":{},"742":{},"743":{},"745":{},"746":{},"747":{},"748":{},"752":{},"757":{},"758":{},"759":{},"760":{},"774":{},"775":{},"776":{},"777":{},"778":{},"784":{},"785":{},"788":{},"795":{},"804":{},"807":{},"813":{},"814":{},"815":{},"816":{},"824":{},"826":{},"833":{},"836":{},"837":{},"844":{},"848":{},"850":{},"853":{},"855":{}}}],["us/articles/360043227612",{"_index":2689,"title":{},"content":{"570":{}}}],["us2019044735",{"_index":3146,"title":{},"content":{"682":{}}}],["us2019089539",{"_index":3191,"title":{},"content":{"683":{}}}],["usag",{"_index":1240,"title":{"784":{},"856":{}},"content":{"273":{},"346":{},"443":{},"618":{},"626":{},"639":{},"649":{},"727":{}}}],["usb",{"_index":2874,"title":{},"content":{"621":{},"648":{},"696":{},"777":{}}}],["usd",{"_index":320,"title":{},"content":{"83":{},"384":{}}}],["usd/eur",{"_index":1740,"title":{},"content":{"323":{},"665":{}}}],["useless",{"_index":1732,"title":{},"content":{"320":{}}}],["user",{"_index":481,"title":{},"content":{"181":{},"182":{},"186":{},"189":{},"191":{},"197":{},"273":{},"282":{},"346":{},"353":{},"374":{},"488":{},"506":{},"515":{},"606":{},"621":{},"642":{},"657":{},"679":{},"682":{},"697":{},"714":{},"725":{},"726":{},"728":{},"730":{},"753":{},"755":{},"773":{},"775":{},"778":{},"784":{},"785":{},"786":{},"833":{},"834":{},"858":{},"859":{}}}],["user'",{"_index":1824,"title":{},"content":{"346":{},"751":{},"777":{},"859":{}}}],["user/blockchain",{"_index":504,"title":{},"content":{"181":{}}}],["user’",{"_index":3622,"title":{},"content":{"784":{},"786":{},"815":{}}}],["usual",{"_index":1994,"title":{},"content":{"371":{},"460":{},"493":{},"515":{},"650":{},"725":{},"776":{}}}],["utc",{"_index":1730,"title":{},"content":{"320":{},"401":{}}}],["utf",{"_index":422,"title":{},"content":{"165":{}}}],["util",{"_index":2125,"title":{"395":{}},"content":{"394":{},"578":{},"584":{},"593":{}}}],["utilis",{"_index":3569,"title":{},"content":{"775":{}}}],["utxo",{"_index":327,"title":{},"content":{"89":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"345":{},"346":{},"347":{},"349":{},"371":{},"656":{},"686":{},"716":{},"729":{},"733":{}}}],["v",{"_index":2389,"title":{},"content":{"473":{}}}],["v1",{"_index":3246,"title":{},"content":{"710":{}}}],["v14.0",{"_index":555,"title":{},"content":{"183":{}}}],["valid",{"_index":96,"title":{"301":{},"302":{},"309":{},"517":{},"671":{},"686":{},"719":{}},"content":{"21":{},"67":{},"95":{},"175":{},"231":{},"233":{},"238":{},"265":{},"266":{},"282":{},"290":{},"295":{},"296":{},"299":{},"300":{},"301":{},"304":{},"306":{},"307":{},"308":{},"309":{},"310":{},"317":{},"322":{},"325":{},"345":{},"346":{},"349":{},"371":{},"377":{},"378":{},"386":{},"449":{},"451":{},"478":{},"488":{},"517":{},"521":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"641":{},"651":{},"656":{},"661":{},"664":{},"666":{},"671":{},"672":{},"682":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{},"693":{},"707":{},"709":{},"710":{},"711":{},"712":{},"715":{},"716":{},"717":{},"723":{},"727":{},"733":{},"741":{},"742":{},"754":{},"759":{},"772":{},"837":{}}}],["validat",{"_index":1738,"title":{},"content":{"322":{}}}],["validation/repl",{"_index":3103,"title":{},"content":{"670":{}}}],["validationstamp",{"_index":154,"title":{"95":{}},"content":{"36":{},"64":{},"65":{},"95":{},"152":{},"154":{},"158":{},"164":{},"168":{}}}],["validationstamp.ledgeroper",{"_index":347,"title":{},"content":{"96":{}}}],["validationstamp.proofofintegr",{"_index":348,"title":{},"content":{"96":{}}}],["validationstamp.proofofwork",{"_index":349,"title":{},"content":{"96":{}}}],["validationstamp.protocolvers",{"_index":350,"title":{},"content":{"96":{}}}],["validationstamp.signatur",{"_index":351,"title":{},"content":{"96":{}}}],["validationstamp.timestamp",{"_index":352,"title":{},"content":{"96":{}}}],["validationstampchecksum",{"_index":311,"title":{},"content":{"80":{}}}],["validit",{"_index":2888,"title":{},"content":{"632":{}}}],["valu",{"_index":22,"title":{"6":{},"9":{}},"content":{"5":{},"101":{},"120":{},"147":{},"153":{},"189":{},"266":{},"268":{},"272":{},"273":{},"275":{},"278":{},"286":{},"287":{},"289":{},"291":{},"294":{},"320":{},"352":{},"353":{},"355":{},"359":{},"361":{},"369":{},"370":{},"377":{},"378":{},"379":{},"395":{},"413":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"446":{},"448":{},"451":{},"461":{},"465":{},"466":{},"491":{},"499":{},"517":{},"518":{},"524":{},"526":{},"651":{},"682":{},"733":{},"738":{},"778":{},"835":{},"839":{}}}],["value2",{"_index":2201,"title":{},"content":{"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{}}}],["value3",{"_index":2210,"title":{},"content":{"427":{}}}],["values/1",{"_index":2216,"title":{"429":{}},"content":{}}],["valuex",{"_index":2209,"title":{},"content":{"427":{}}}],["vari",{"_index":3504,"title":{},"content":{"768":{}}}],["variabl",{"_index":917,"title":{"270":{},"359":{},"368":{},"393":{}},"content":{"201":{},"240":{},"270":{},"320":{},"359":{},"368":{},"369":{},"379":{},"380":{},"381":{},"383":{},"393":{},"398":{},"399":{},"402":{},"425":{}}}],["variat",{"_index":3479,"title":{},"content":{"855":{}}}],["variou",{"_index":572,"title":{},"content":{"186":{},"593":{},"596":{},"599":{},"661":{},"764":{},"775":{}}}],["venou",{"_index":3179,"title":{},"content":{"683":{}}}],["veri",{"_index":1769,"title":{},"content":{"330":{},"361":{},"408":{},"516":{},"620":{},"637":{}}}],["verif",{"_index":1115,"title":{"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"603":{},"854":{}},"content":{"219":{},"309":{},"346":{},"348":{},"593":{},"603":{},"606":{},"621":{},"639":{},"683":{},"858":{}}}],["verifi",{"_index":516,"title":{},"content":{"181":{},"242":{},"261":{},"262":{},"263":{},"264":{},"310":{},"322":{},"323":{},"325":{},"327":{},"345":{},"348":{},"349":{},"395":{},"588":{},"603":{},"606":{},"624":{},"625":{},"649":{},"661":{},"705":{},"740":{},"777":{}}}],["verifypinyk",{"_index":1352,"title":{"242":{}},"content":{"261":{}}}],["version",{"_index":86,"title":{"98":{},"134":{},"188":{},"351":{}},"content":{"15":{},"64":{},"89":{},"95":{},"98":{},"100":{},"134":{},"135":{},"166":{},"183":{},"188":{},"204":{},"210":{},"282":{},"289":{},"296":{},"350":{},"351":{},"373":{},"374":{},"375":{},"376":{},"386":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"477":{},"478":{},"506":{},"525":{},"526":{},"567":{},"583":{},"588":{},"630":{},"631":{},"632":{},"644":{},"660":{},"661":{},"726":{},"736":{},"738":{},"745":{},"746":{},"747":{},"748":{},"749":{},"756":{},"760":{},"778":{},"795":{},"813":{},"851":{}}}],["version.cod",{"_index":353,"title":{},"content":{"99":{}}}],["version.protocol",{"_index":354,"title":{},"content":{"99":{}}}],["version.transact",{"_index":355,"title":{},"content":{"99":{}}}],["veto",{"_index":3036,"title":{},"content":{"644":{},"660":{}}}],["via",{"_index":1014,"title":{},"content":{"216":{},"364":{},"412":{},"441":{},"443":{},"488":{},"525":{},"526":{},"587":{},"660":{},"736":{},"745":{},"759":{},"777":{},"778":{},"779":{},"785":{}}}],["vibrant",{"_index":3030,"title":{},"content":{"644":{}}}],["vibrat",{"_index":3603,"title":{},"content":{"778":{}}}],["video",{"_index":3417,"title":{},"content":{"753":{}}}],["view",{"_index":1077,"title":{"337":{},"784":{},"785":{}},"content":{"229":{},"230":{},"285":{},"287":{},"294":{},"307":{},"331":{},"337":{},"349":{},"412":{},"671":{},"749":{},"764":{},"769":{},"774":{}}}],["view:avail",{"_index":3220,"title":{},"content":{"693":{}}}],["virtual",{"_index":2685,"title":{},"content":{"569":{},"596":{},"598":{},"724":{},"775":{}}}],["visibl",{"_index":3175,"title":{},"content":{"683":{}}}],["vision",{"_index":2832,"title":{},"content":{"620":{},"644":{},"673":{}}}],["visit",{"_index":3441,"title":{},"content":{"754":{},"849":{},"851":{}}}],["visual",{"_index":2640,"title":{},"content":{"555":{}}}],["visualis",{"_index":1615,"title":{},"content":{"282":{}}}],["vital",{"_index":3195,"title":{},"content":{"683":{}}}],["vm",{"_index":991,"title":{},"content":{"216":{}}}],["void",{"_index":1177,"title":{"271":{},"272":{},"273":{}},"content":{}}],["volatil",{"_index":593,"title":{},"content":{"188":{},"189":{},"190":{},"191":{}}}],["vote",{"_index":1710,"title":{"376":{}},"content":{"318":{},"376":{},"644":{},"645":{},"660":{},"682":{}}}],["vote(candid",{"_index":2040,"title":{},"content":{"376":{},"382":{}}}],["vote(firstnam",{"_index":1971,"title":{},"content":{"369":{}}}],["vote_for_class_president(firstnam",{"_index":2496,"title":{},"content":{"399":{}}}],["voter",{"_index":2871,"title":{},"content":{"621":{}}}],["votes.i",{"_index":2099,"title":{},"content":{"376":{}}}],["votes.x",{"_index":2098,"title":{},"content":{"376":{}}}],["vp",{"_index":3352,"title":{},"content":{"724":{}}}],["vs",{"_index":1964,"title":{},"content":{"369":{},"725":{}}}],["vscode",{"_index":3620,"title":{},"content":{"782":{}}}],["w+),(\\\\d",{"_index":2275,"title":{},"content":{"443":{}}}],["w3c",{"_index":2951,"title":{},"content":{"649":{},"695":{}}}],["w_{e",{"_index":879,"title":{},"content":{"198":{},"202":{}}}],["w_{key",{"_index":655,"title":{},"content":{"189":{}}}],["wafer",{"_index":2914,"title":{},"content":{"637":{}}}],["wait",{"_index":1638,"title":{},"content":{"296":{},"320":{},"573":{},"588":{},"615":{},"709":{},"759":{}}}],["wallet",{"_index":441,"title":{"197":{},"204":{},"211":{},"533":{},"534":{},"535":{},"539":{},"543":{},"567":{},"579":{},"585":{},"587":{},"588":{},"589":{},"590":{},"598":{},"608":{},"609":{},"610":{},"612":{},"773":{}},"content":{"181":{},"182":{},"183":{},"186":{},"190":{},"191":{},"197":{},"198":{},"202":{},"203":{},"207":{},"209":{},"211":{},"212":{},"213":{},"236":{},"334":{},"412":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"560":{},"567":{},"571":{},"573":{},"575":{},"579":{},"584":{},"587":{},"588":{},"589":{},"598":{},"604":{},"606":{},"609":{},"610":{},"612":{},"613":{},"615":{},"633":{},"642":{},"646":{},"647":{},"648":{},"650":{},"655":{},"696":{},"736":{},"745":{},"746":{},"747":{},"748":{},"750":{},"751":{},"759":{},"760":{},"761":{},"765":{},"766":{},"768":{},"772":{},"773":{},"774":{},"775":{},"776":{},"778":{},"783":{},"784":{},"785":{},"786":{},"815":{},"826":{},"833":{},"855":{},"858":{},"859":{}}}],["wallet'",{"_index":2651,"title":{"584":{}},"content":{"584":{},"612":{}}}],["wallet/](th",{"_index":2794,"title":{},"content":{"588":{}}}],["wallet_iv",{"_index":937,"title":{},"content":{"202":{}}}],["wallet_len",{"_index":766,"title":{},"content":{"190":{},"191":{}}}],["walletlen",{"_index":827,"title":{},"content":{"191":{}}}],["walletprivatekey",{"_index":681,"title":{},"content":{"189":{}}}],["wallet’",{"_index":3629,"title":{},"content":{"785":{}}}],["want",{"_index":857,"title":{"567":{},"575":{}},"content":{"212":{},"216":{},"284":{},"290":{},"291":{},"330":{},"347":{},"371":{},"406":{},"412":{},"575":{},"588":{},"633":{},"650":{},"696":{},"708":{},"710":{},"723":{},"745":{},"750":{},"759":{},"815":{},"839":{},"840":{},"841":{},"843":{}}}],["warn",{"_index":1657,"title":{},"content":{"295":{},"575":{},"740":{}}}],["way",{"_index":442,"title":{"541":{},"542":{},"558":{},"560":{},"561":{},"591":{},"593":{},"670":{}},"content":{"181":{},"197":{},"200":{},"282":{},"289":{},"290":{},"308":{},"319":{},"321":{},"323":{},"325":{},"326":{},"329":{},"346":{},"361":{},"369":{},"540":{},"541":{},"542":{},"543":{},"551":{},"564":{},"579":{},"593":{},"609":{},"620":{},"622":{},"628":{},"633":{},"637":{},"650":{},"651":{},"661":{},"672":{},"682":{},"689":{},"695":{},"696":{},"707":{},"713":{},"725":{},"727":{},"736":{},"760":{},"777":{},"778":{},"784":{},"851":{}}}],["we'd",{"_index":2052,"title":{},"content":{"385":{}}}],["we'll",{"_index":2046,"title":{},"content":{"382":{},"404":{},"408":{},"513":{}}}],["weaken",{"_index":3126,"title":{},"content":{"679":{}}}],["web",{"_index":456,"title":{"536":{},"720":{}},"content":{"181":{},"216":{},"336":{},"343":{},"509":{},"536":{},"537":{},"538":{},"539":{},"721":{},"723":{},"725":{},"726":{},"727":{},"743":{},"752":{},"754":{},"760":{},"775":{},"777":{},"785":{}}}],["web3",{"_index":3340,"title":{},"content":{"721":{},"724":{}}}],["webapp",{"_index":3358,"title":{},"content":{"725":{}}}],["webauthn",{"_index":2953,"title":{},"content":{"649":{},"695":{}}}],["webhost",{"_index":3377,"title":{},"content":{"726":{}}}],["webpag",{"_index":3410,"title":{},"content":{"742":{}}}],["websit",{"_index":2641,"title":{"582":{},"755":{},"756":{}},"content":{"583":{},"584":{},"588":{},"642":{},"649":{},"720":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"737":{},"738":{},"739":{},"740":{},"742":{},"745":{},"749":{},"752":{},"753":{},"754":{},"755":{},"756":{},"757":{},"759":{}}}],["website'",{"_index":3386,"title":{},"content":{"737":{}}}],["websocket",{"_index":3626,"title":{},"content":{"785":{}}}],["week",{"_index":2503,"title":{},"content":{"401":{}}}],["welcom",{"_index":436,"title":{"762":{}},"content":{"173":{},"552":{},"625":{},"709":{},"710":{},"711":{},"754":{},"762":{},"849":{}}}],["well",{"_index":966,"title":{},"content":{"209":{},"240":{},"290":{},"292":{},"294":{},"327":{},"361":{},"365":{},"643":{},"648":{},"656":{},"689":{},"692":{},"737":{},"761":{},"775":{}}}],["what'",{"_index":2570,"title":{},"content":{"514":{}}}],["wheel",{"_index":3163,"title":{},"content":{"682":{}}}],["whenev",{"_index":1887,"title":{},"content":{"353":{}}}],["wherea",{"_index":1993,"title":{},"content":{"371":{}}}],["whether",{"_index":1340,"title":{},"content":{"281":{},"416":{},"434":{},"435":{},"442":{},"449":{},"745":{},"777":{},"778":{}}}],["whole",{"_index":413,"title":{},"content":{"153":{}}}],["whose",{"_index":843,"title":{},"content":{"196":{},"644":{},"657":{},"778":{}}}],["wide",{"_index":1002,"title":{},"content":{"216":{},"287":{},"288":{},"291":{},"725":{}}}],["widget",{"_index":3565,"title":{},"content":{"775":{}}}],["will",{"_index":2859,"title":{},"content":{"625":{}}}],["win",{"_index":3027,"title":{},"content":{"644":{}}}],["window",{"_index":2734,"title":{},"content":{"597":{},"760":{},"775":{},"785":{}}}],["wise",{"_index":3653,"title":{},"content":{"815":{}}}],["wish",{"_index":2008,"title":{},"content":{"377":{},"587":{},"761":{},"849":{}}}],["withdraw",{"_index":3493,"title":{},"content":{"760":{}}}],["within",{"_index":1539,"title":{},"content":{"289":{},"290":{},"331":{},"349":{},"389":{},"451":{},"588":{},"593":{},"636":{},"638":{},"661":{},"687":{},"700":{},"783":{},"785":{},"853":{},"859":{}}}],["without",{"_index":1049,"title":{},"content":{"216":{},"290":{},"295":{},"308":{},"341":{},"345":{},"380":{},"398":{},"408":{},"430":{},"602":{},"620":{},"625":{},"639":{},"641":{},"643":{},"647":{},"649":{},"682":{},"683":{},"684":{},"695":{},"722":{},"740":{},"783":{},"784":{},"815":{},"853":{},"859":{}}}],["wk_{ae",{"_index":880,"title":{},"content":{"198":{},"202":{}}}],["wo2017162930",{"_index":3192,"title":{},"content":{"683":{}}}],["wo2017162931",{"_index":3147,"title":{},"content":{"682":{}}}],["won't",{"_index":3633,"title":{},"content":{"787":{}}}],["wonder",{"_index":2890,"title":{},"content":{"633":{},"643":{}}}],["won’t",{"_index":2680,"title":{},"content":{"566":{}}}],["word",{"_index":2712,"title":{},"content":{"579":{},"588":{},"609":{},"630":{},"648":{},"774":{},"776":{},"778":{}}}],["worflow",{"_index":1669,"title":{"303":{}},"content":{}}],["work",{"_index":338,"title":{"325":{},"603":{},"606":{},"621":{},"664":{},"752":{}},"content":{"95":{},"216":{},"290":{},"325":{},"327":{},"355":{},"360":{},"361":{},"365":{},"385":{},"587":{},"621":{},"629":{},"644":{},"651":{},"652":{},"656":{},"662":{},"717":{},"722":{},"737":{},"743":{},"814":{},"830":{},"834":{}}}],["workflow",{"_index":1666,"title":{"301":{},"625":{}},"content":{"300":{},"304":{},"309":{},"625":{}}}],["world",{"_index":1717,"title":{"373":{}},"content":{"319":{},"363":{},"373":{},"413":{},"643":{},"661":{},"728":{}}}],["worldwid",{"_index":2996,"title":{},"content":{"641":{}}}],["worri",{"_index":2787,"title":{},"content":{"587":{},"740":{}}}],["worth",{"_index":2066,"title":{},"content":{"374":{},"389":{},"785":{}}}],["wrap",{"_index":1528,"title":{},"content":{"268":{},"289":{},"331":{},"858":{},"859":{}}}],["write",{"_index":1038,"title":{"292":{},"405":{}},"content":{"216":{},"283":{},"284":{},"285":{},"286":{},"289":{},"290":{},"291":{},"292":{},"353":{},"405":{},"411":{},"488":{},"521":{},"588":{},"622":{},"759":{},"815":{}}}],["writes/read",{"_index":1516,"title":{},"content":{"288":{}}}],["written",{"_index":489,"title":{},"content":{"181":{},"289":{},"292":{},"412":{},"413":{},"553":{},"664":{},"785":{},"815":{}}}],["wrong",{"_index":1023,"title":{"574":{},"616":{}},"content":{"216":{}}}],["wrote",{"_index":2045,"title":{},"content":{"382":{}}}],["x",{"_index":688,"title":{},"content":{"189":{},"271":{},"273":{},"274":{},"281":{},"354":{},"376":{},"709":{}}}],["x509",{"_index":1372,"title":{},"content":{"244":{}}}],["x509_get0_pubkey_bitstr",{"_index":1373,"title":{},"content":{"244":{}}}],["x68\\x65\\x6c\\x6c\\x6f",{"_index":1891,"title":{},"content":{"354":{}}}],["xxx",{"_index":3411,"title":{},"content":{"742":{}}}],["y",{"_index":690,"title":{},"content":{"189":{},"271":{},"273":{},"274":{},"281":{},"376":{},"403":{}}}],["yarn",{"_index":559,"title":{},"content":{"184":{}}}],["ye",{"_index":1583,"title":{},"content":{"293":{},"759":{}}}],["year",{"_index":3123,"title":{},"content":{"679":{}}}],["yes/no",{"_index":3468,"title":{},"content":{"759":{}}}],["yk",{"_index":1407,"title":{},"content":{"252":{}}}],["ykcertif",{"_index":1420,"title":{},"content":{"257":{}}}],["ykindex",{"_index":1370,"title":{"249":{}},"content":{"244":{},"245":{},"246":{},"248":{},"249":{},"250":{},"252":{},"255":{},"259":{}}}],["ykpiv_algo_eccp256",{"_index":1397,"title":{},"content":{"249":{}}}],["ykpiv_attest",{"_index":1382,"title":{},"content":{"246":{}}}],["ykpiv_authent",{"_index":1360,"title":{},"content":{"243":{}}}],["ykpiv_decipher_data",{"_index":1400,"title":{},"content":{"250":{}}}],["ykpiv_fetch_object",{"_index":1390,"title":{},"content":{"247":{}}}],["ykpiv_obj_histori",{"_index":1394,"title":{},"content":{"248":{}}}],["ykpiv_obj_key_histori",{"_index":1386,"title":{},"content":{"247":{},"251":{}}}],["ykpiv_save_object",{"_index":1384,"title":{},"content":{"246":{}}}],["ykpiv_sign_data",{"_index":1396,"title":{},"content":{"249":{}}}],["ykpiv_util_generate_key",{"_index":1377,"title":{},"content":{"245":{}}}],["ykpiv_verifi",{"_index":1354,"title":{},"content":{"242":{}}}],["you'll",{"_index":2000,"title":{},"content":{"371":{},"406":{},"412":{},"610":{},"612":{}}}],["you'r",{"_index":2344,"title":{},"content":{"461":{},"462":{},"464":{},"465":{},"466":{},"742":{}}}],["your",{"_index":3024,"title":{},"content":{"643":{}}}],["yourself",{"_index":3496,"title":{},"content":{"760":{},"777":{},"834":{}}}],["you’r",{"_index":3529,"title":{},"content":{"839":{},"842":{}}}],["you’v",{"_index":549,"title":{},"content":{"183":{}}}],["yubicloud",{"_index":3540,"title":{},"content":{"774":{},"777":{},"778":{}}}],["yubico",{"_index":1351,"title":{},"content":{"241":{},"638":{},"777":{}}}],["yubico’",{"_index":3593,"title":{},"content":{"777":{}}}],["yubikey",{"_index":970,"title":{"239":{}},"content":{"209":{},"239":{},"240":{},"241":{},"244":{},"247":{},"252":{},"261":{},"262":{},"263":{},"264":{},"298":{},"588":{},"638":{},"639":{},"773":{},"777":{},"778":{}}}],["yubikey.c",{"_index":1345,"title":{},"content":{"239":{}}}],["yubikey.h",{"_index":1346,"title":{},"content":{"239":{}}}],["zero",{"_index":2223,"title":{},"content":{"432":{}}}],["zip",{"_index":3448,"title":{},"content":{"745":{}}}],["zone",{"_index":116,"title":{},"content":{"28":{},"795":{},"813":{}}}],["zpoint",{"_index":1344,"title":{},"content":{"281":{}}}]],"pipeline":["stemmer"]}} \ No newline at end of file