[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/)
diff --git a/basics/assets/README.md b/basics/assets/README.md
deleted file mode 100644
index bd082c282..000000000
--- a/basics/assets/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- The section covers the assets you can find on the Filecoin network, along with
- how to securely manage and use them.
----
-
-# Assets
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/assets)
diff --git a/basics/how-retrieval-works/README.md b/basics/how-retrieval-works/README.md
deleted file mode 100644
index b0a26ceb7..000000000
--- a/basics/how-retrieval-works/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- This section covers the very basics of how retrieving data works on the
- Filecoin network.
----
-
-# How retrieval works
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-retrieval-works)
diff --git a/basics/how-retrieval-works/saturn.md b/basics/how-retrieval-works/saturn.md
deleted file mode 100644
index 175bda7d8..000000000
--- a/basics/how-retrieval-works/saturn.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- Filecoin Saturn is an open-source, community-run Content Delivery Network
- (CDN) built on Filecoin.
----
-
-# Saturn
-
-
-
-Saturn is a Web3 CDN in Filecoin’s retrieval market. On one side of the network, websites buy fast, low-cost content delivery. On the other side, Saturn node operators earn Filecoin by fulfilling requests.
-
-Saturn is trustless, permissionless, and inclusive. Anyone can run Saturn software, contribute to the network, and earn Filecoin.
-
-Content on Saturn is IPFS content-addressed. Every piece of content is immutable, and every response is verifiable.
-
-Incentives unite, align, and grow the network. Node operators earn Filecoin for accelerating web content, and websites get faster content delivery for less.
-
-Find out more over at [saturn.tech](https://saturn.tech).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-retrieval-works/saturn)
diff --git a/basics/how-storage-works/README.md b/basics/how-storage-works/README.md
deleted file mode 100644
index 2438b0fcd..000000000
--- a/basics/how-storage-works/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-description: >-
- This section covers the very basics of storing data works on the Filecoin
- network.
----
-
-# How storage works
-
-This section is an introduction to two methods of performing storage deals --through the [Filecoin Plus](https://docs.filecoin.io/basics/how-storage-works/filecoin-plus) program or through [various storage onramps](https://docs.filecoin.io/basics/how-storage-works/storage-onramps). This section also explains the features and advantages of using [Filecoin and IPFS](https://docs.filecoin.io/basics/how-storage-works/filecoin-and-ipfs).
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-storage-works)
diff --git a/basics/how-storage-works/storage-onramps.md b/basics/how-storage-works/storage-onramps.md
deleted file mode 100644
index c17f06664..000000000
--- a/basics/how-storage-works/storage-onramps.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-description: >-
- Storage on-ramps and helpers are APIs and services that abstract Filecoin
- dealmaking into simple, streamlined API calls.
----
-
-# Storage onramps
-
-Developers use web UIs, APIs, or libraries to send data to storage onramps. Behind the scenes, storage onramps receive the data and handle the underlying processes to store it in a reliable way, making deals with Filecoin storage providers.
-
-The available storage onramps are:
-
-* [Lighthouse](https://lighthouse.storage/) "offers permanent, decentralized storage powered by Filecoin. Secure, scalable, and ideal for individuals, developers, and enterprises."
-* [Akave](https://www.akave.ai/) is "revolutionizing data management with a decentralized, modular solution that combines the robust storage of Filecoin with cutting-edge encryption and easy-to-use interfaces."
-* [Storacha](https://storacha.network/) is an open hot storage network scales IPFS and Filecoin. Upload any data and Storacha will ensure it ends up on a decentralized set of IPFS and Filecoin storage providers. There Storacha [docs](https://docs.storacha.network/) detail the JavaScript and Go API libraries, and there is a no-code web uploader available as well.
-* [Singularity](https://singularity.storage/) "facilitates onboarding of large quantaties of data (PB-scale) to the Filecoin network in an efficient, secure, and flexible way."
-* [CID Gravity](https://www.cidgravity.com/) is a "seamless gateway to the decentralized web", allowing you to drag and drop files through an easy-to-use UI that uploads files to Filecoin and IPFS.
-* [Ramo](https://www.ramo.io/) is "a network coordinating people, hardware and capital to build a more open and resilient internet infrastructure for everyone."
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-storage-works/storage-onramps)
diff --git a/basics/project-and-community/README.md b/basics/project-and-community/README.md
deleted file mode 100644
index 1bf549d86..000000000
--- a/basics/project-and-community/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- This section contains information about the Filecoin project as a whole, and
- how you can interact with the community.
----
-
-# Project and community
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community)
diff --git a/basics/the-blockchain/README.md b/basics/the-blockchain/README.md
deleted file mode 100644
index 412bd1633..000000000
--- a/basics/the-blockchain/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-description: This section covers the basic concepts surrounding the Filecoin blockchain.
----
-
-# The blockchain
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain)
diff --git a/book.json b/book.json
index 17cf63e08..5cbd0737f 100644
--- a/book.json
+++ b/book.json
@@ -2,5 +2,5 @@
"structure": {
"readme": "WELCOME.md"
},
- "plugins": ["filecoin", "-highlight"]
+ "plugins": ["filecoin", "-highlight", "-search", "-lunr"]
}
diff --git a/build/advanced/README.md b/build/advanced/README.md
new file mode 100644
index 000000000..84ae01f9b
--- /dev/null
+++ b/build/advanced/README.md
@@ -0,0 +1,24 @@
+---
+description: >-
+ Advanced tools and integrations for smart contract developers building on Filecoin.
+---
+
+# Advanced
+
+This section covers advanced integrations and services available to smart contract developers on Filecoin, including bridges, oracles, databases, and automation tools. For programmable storage, retrieval, and payments, start with [Filecoin Onchain Cloud](../filecoin-onchain-cloud/README.md).
+
+## Table of contents
+
+* [Wrapped FIL](wrapped-fil.md) — ERC-20 token that bridges native FIL to other blockchains
+* [Oracles](oracles.md) — connect smart contracts to external data sources
+* [Multicall](multicall.md) — batch multiple contract calls into a single transaction
+* [Multisig](multisig.md) — wallets that require multiple signatures for transactions
+* [FEVM indexers](fevm-indexers.md) — query Filecoin chain data without running an archival node
+* [Cross-chain bridges](cross-chain-bridges.md) — transfer assets between Filecoin and other networks
+* [Contract automation](contract-automation.md) — trigger smart contract actions based on off-chain events
+* [Relay](relay.md) — meta-transactions that let users interact without paying gas
+* [Decentralized databases](decentralized-databases.md) — store application data using Tableland on Filecoin
+* [Privacy and access control](privacy-and-access-control.md) — tools for managing data access and privacy
+* [Interplanetary consensus](../../getting-started/interplanetary-consensus.md) — scalable consensus for cross-chain communication
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced)
diff --git a/smart-contracts/advanced/contract-automation.md b/build/advanced/contract-automation.md
similarity index 67%
rename from smart-contracts/advanced/contract-automation.md
rename to build/advanced/contract-automation.md
index 27740f42a..a4e70be0a 100644
--- a/smart-contracts/advanced/contract-automation.md
+++ b/build/advanced/contract-automation.md
@@ -50,38 +50,54 @@ For security reasons, during task creation, you will see an address that acts as
## Quick Start
-### Writing & Deploying Typescript Functions
+### Writing and deploying TypeScript functions
-1. Clone the hardhat-template repo
+1. Clone Gelato's maintained Web3 Functions template:
-```shell
-git clone web3-functions-hardhat-template
+```bash
+git clone https://github.com/gelatodigital/web3-functions-template.git
```
-2. CD into the folder and install
+2. Change into the template directory and install dependencies:
-```shell
-cd web3-functions-hardhat-template && yarn install
+```bash
+cd web3-functions-template && yarn install
```
-3. Update the `index.ts` in one of the examples
+3. Update `index.ts` in one of the examples.
+
+The following TypeScript block is a skeleton only. It shows the shape of a Gelato Web3 Function that checks whether an oracle should be updated, then returns encoded call data. Replace the oracle ABI, input arguments, and off-chain data lookup with your application's logic. For maintained end-to-end examples, use the [Gelato Web3 Functions template](https://github.com/gelatodigital/web3-functions-template) and the [Gelato TypeScript Functions guide](https://docs.gelato.cloud/web3-functions/how-to-guides/write-typescript-functions/getting-started).
```typescript
+import { Web3Function, Web3FunctionContext } from "@gelatonetwork/web3-functions-sdk";
+import { Contract } from "@ethersproject/contracts";
+
+const ORACLE_ABI = [
+ "function lastUpdated() external view returns (uint256)",
+ "function updatePrice(uint256)",
+];
+
Web3Function.onRun(async (context: Web3FunctionContext) => {
const { userArgs, multiChainProvider } = context;
-
const provider = multiChainProvider.default();
- // Retrieve Last oracle update time
+
const oracleAddress =
(userArgs.oracle as string) ?? "0x71B9B0F6C999CBbB0FeF9c92B80D54e4973214da";
+ const oracle = new Contract(oracleAddress, ORACLE_ABI, provider);
+
+ const lastUpdated = Number(await oracle.lastUpdated());
+ const latestBlock = await provider.getBlock("latest");
+ const nextUpdateTime = lastUpdated + 300;
- // YOUR CUSTOM LOGIC
- .....
+ if (!latestBlock || latestBlock.timestamp < nextUpdateTime) {
+ return { canExec: false, message: "Time not elapsed" };
+ }
- // Return if nothing has to be pushed on-chain
- return { canExec: false, message: `Coingecko call failed` };
+ const price = Number(userArgs.price ?? 0);
+ if (!Number.isFinite(price) || price <= 0) {
+ return { canExec: false, message: "No valid price supplied" };
+ }
- // Return if tx has to be pushed on-chain
return {
canExec: true,
callData: [
@@ -94,31 +110,26 @@ Web3Function.onRun(async (context: Web3FunctionContext) => {
});
```
-4. Deploy the Web3 Function to IPFS and create the Task
+4. Test and deploy the Web3 Function to IPFS:
-```shell
+```bash
+npx w3f test web3-functions/YOUR-FUNCTION/index.ts --logs
npx w3f deploy web3-functions/YOUR-FUNCTION/index.ts
```
-Result:
-
-```shell
-$ npx w3f deploy web3-functions/YOUR-FUNCTION/index.ts
- ✓ Web3Function deployed to ipfs.
- ✓ CID: QmYMysfAhYYYrdhVytSTiE9phuoT49kMByktXSbVp1aRPx
+Example output:
-To create a task that runs your Web3 Function every minute, visit:
-> https://beta.app.gelato.network/new-task?cid=QmYMysfAhYYYrdhVytSTiE9phuoT49kMByktXSbVp1aRPx
-✨ Done in 3.56s.
+```text
+✓ Web3Function deployed to IPFS.
+✓ CID:
```
-Finally, go to the [Gelato App](https://app.gelato.network), create a new task, decide on the trigger, and input the CID.
+Finally, go to the [Gelato App](https://app.gelato.cloud), create a new task, decide on the trigger, and input the CID.
-For a detailed guide on creating and deploying Web3 Functions, including setting up your development environment, triggers, and security configurations, refer to the full developer guide [here](https://docs.gelato.network/web3-services/web3-functions/quick-start/writing-typescript-functions).
+For a detailed guide on creating and deploying Web3 Functions, including setting up your development environment, triggers, and security configurations, see the [Gelato Web3 Functions docs](https://docs.gelato.cloud/web3-functions/how-to-guides/write-typescript-functions/getting-started).
#### **Further Resources**
-* [Gelato Web3 Functions Docs](https://docs.gelato.network/web3-services/web3-functions)
-* [What is 1Balance?](https://docs.gelato.network/web3-services/1balance)
-* [Github Repository](https://github.com/gelatodigital/how-tos-3-w3f-triggers)
-* [YouTube - How to write Event driven Web3 Functions](https://www.youtube.com/watch?v=7UpqGsANsBQ\&ab_channel=JavierDonoso)
+* [Gelato Web3 Functions Docs](https://docs.gelato.cloud/web3-functions/how-to-guides/write-typescript-functions/getting-started)
+* [Gelato Web3 Functions template](https://github.com/gelatodigital/web3-functions-template)
+* [Gelato Web3 Functions examples](https://github.com/gelatodigital/how-tos-3-w3f-triggers)
diff --git a/smart-contracts/advanced/cross-chain-bridges.md b/build/advanced/cross-chain-bridges.md
similarity index 98%
rename from smart-contracts/advanced/cross-chain-bridges.md
rename to build/advanced/cross-chain-bridges.md
index 64140d00a..781f5459a 100644
--- a/smart-contracts/advanced/cross-chain-bridges.md
+++ b/build/advanced/cross-chain-bridges.md
@@ -64,4 +64,4 @@ Celar’s CBridge supports both Filecoin Mainnet and Calibration testnet.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/cross-chain-bridges)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced/cross-chain-bridges)
diff --git a/build/advanced/decentralized-databases.md b/build/advanced/decentralized-databases.md
new file mode 100644
index 000000000..1ce6d7750
--- /dev/null
+++ b/build/advanced/decentralized-databases.md
@@ -0,0 +1,171 @@
+---
+description: >-
+ Learn how to store the application data with a decentralized database on
+ Filecoin.
+---
+
+# Decentralized Database
+
+### Store data with Tableland
+
+Tableland is a **decentralized database** built on the SQLite engine, which offers developers a web3-native, relational database that seamlessly integrates into their EVM-compatible stacks. Under the hood, Tableland records database tables as ERC721 tokens on-chain and enables the execution of SQL statements in a completely decentralized manner through on-chain smart contracts.
+
+To learn more about what is tableland and how to use it, you can visit [https://tableland.xyz/](https://tableland.xyz/).
+
+#### **Ingredients**
+
+Ensure that you install and import the necessary dependencies in your projects.
+
+- [Tableland](https://tableland.xyz/)
+- [`@tableland/evm`](https://www.npmjs.com/package/@tableland/evm)
+- [`@tableland/sdk`](https://www.npmjs.com/package/@tableland/sdk)
+- [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)
+
+#### **Instructions**
+
+Let's take storage deal aggregation as an example to demonstrate how to integrate it with Tableland.
+
+When uploading data via storage aggregation providers to the Filecoin network, you can choose to store its metadata in Tableland tables instead of storing it in the chain state. This metadata can then be easily accessed from the Tableland database and utilized directly within your application.
+
+If you require sample datasets to use, you can use the [Filecoin Dataset Explorer](https://datasets.filecoin.io/).
+
+As an example, let's design the deal aggregator table as follows. You can add more columns to this table to include additional aggregation metadata.
+
+| column | data Type |
+| -------- | ------------ |
+| ID | int |
+| CID | bytes/string |
+| deal_ID | int |
+| miner_ID | int |
+| status | string |
+
+1. **Create aggregator table**
+
+To track all deal aggregation requests submitted to the smart contract, we need to create a database table. The following Solidity excerpt assumes the contract imports `SQLHelpers`, `TablelandDeployments`, and OpenZeppelin's `Strings` utility. It creates an aggregator table in the contract constructor so the deployed contract owns the table.
+
+```solidity
+import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
+import {SQLHelpers} from "@tableland/evm/contracts/utils/SQLHelpers.sol";
+import {TablelandDeployments} from "@tableland/evm/contracts/utils/TablelandDeployments.sol";
+
+uint256 private _tableId;
+string private constant _TABLE_PREFIX = "aggregator_table";
+
+constructor() {
+ _tableId = TablelandDeployments.get().create(
+ address(this),
+ SQLHelpers.toCreateFromSchema(
+ "id integer primary key, cid text, deal_id integer, miner_id integer, status text",
+ _TABLE_PREFIX
+ )
+ );
+}
+```
+
+2. We will create an `insert` function within the smart contract to add a record whenever an aggregation request is made.
+
+```solidity
+function insertRecord(uint256 id, string memory cid, string memory status) internal {
+ TablelandDeployments.get().mutate(
+ address(this), // Table owner, i.e., this contract
+ _tableId,
+ SQLHelpers.toInsert(
+ _TABLE_PREFIX,
+ _tableId,
+ "id,cid,status",
+ string.concat(
+ Strings.toString(id),
+ ",",
+ SQLHelpers.quote(cid),
+ ",",
+ SQLHelpers.quote(status)
+ )
+ )
+ );
+}
+```
+
+Whenever the `submit` function is called, a record will be inserted into the aggregator table instead of being stored in the blockchain's state.
+
+```solidity
+function submit(string calldata cid) external returns (uint256) {
+ // Increment the transaction ID
+ transactionId++;
+
+ // Save the CID record to aggregator_table
+ insertRecord(transactionId, cid, "PROPOSED");
+
+ // Emit the event
+ emit SubmitAggregatorRequest(transactionId, cid);
+ return transactionId;
+}
+```
+
+3. We create an `updateRecord` function to modify an aggregator record once the `complete` function is called after the storage deal has been made on the Filecoin network.
+
+```solidity
+function updateRecord(
+ uint256 id,
+ uint256 dealId,
+ uint256 minerId,
+ string memory status
+) internal {
+ string memory setters = string.concat(
+ "deal_id=",
+ Strings.toString(dealId),
+ ",miner_id=",
+ Strings.toString(minerId),
+ ",status=",
+ SQLHelpers.quote(status)
+ );
+ string memory filters = string.concat("id=", Strings.toString(id));
+
+ TablelandDeployments.get().mutate(
+ address(this),
+ _tableId,
+ SQLHelpers.toUpdate(_TABLE_PREFIX, _tableId, setters, filters)
+ );
+}
+```
+
+After SP finishes publishing the storage deal on-chain to include an aggregation request, a callback function `complete` will be called to notify the contract that a CID is packed into a storage deal. Then we can call `updateRecord` to update the details for this CID record in the Tableland database. This is an excerpt from the broader aggregator contract; keep your existing proof verification and return-data logic around the table update.
+
+```solidity
+function complete(
+ uint256 id,
+ uint64 dealId,
+ uint64 minerId,
+ InclusionProof memory proof,
+ InclusionVerifierData memory verifierData
+) external returns (InclusionAuxData memory) {
+ // Verify proof and update the storage-deal state.
+ InclusionAuxData memory auxData;
+ updateRecord(id, dealId, minerId, "FINISHED");
+
+ // Return the verifier data required by the full aggregator contract.
+ return auxData;
+}
+```
+
+4. **Query aggregation records**
+
+By using the Tableland SDK, you can query the aggregation status of all data stored with the aggregator using SQL statements. For instance, you can retrieve all records associated with a specific CID by executing a SELECT statement.
+
+```typescript
+import { Database } from "@tableland/sdk";
+
+const db = new Database();
+const tableName = "aggregator_314159_123";
+const cid = "bafy...";
+
+const { results } = await db
+ .prepare(`SELECT * FROM ${tableName} WHERE cid = ?1`)
+ .bind(cid)
+ .all();
+
+console.log(results);
+```
+
+To learn how to write different select statements using Tableland SDK, see the [Tableland prepared statements guide](https://docs.tableland.xyz/sdk/database/prepared-statements). For current Solidity helper signatures, use the [Tableland SQL helpers library](https://docs.tableland.xyz/smart-contracts/sql-helpers).
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/advanced/decentralized-databases)
diff --git a/smart-contracts/advanced/fevm-indexers.md b/build/advanced/fevm-indexers.md
similarity index 89%
rename from smart-contracts/advanced/fevm-indexers.md
rename to build/advanced/fevm-indexers.md
index a613e845a..04062d407 100644
--- a/smart-contracts/advanced/fevm-indexers.md
+++ b/build/advanced/fevm-indexers.md
@@ -7,12 +7,12 @@ description: >-
# FEVM Indexers
-> _Not to be confused with_ [_IPNI Indexer_](https://docs.filecoin.io/storage-providers/architecture/network-indexer)
+> _Not to be confused with_ [_IPNI Indexer_](../../storage-providers/architecture/network-indexer.md)
Blockchain indexers are used for accessing blockchain data efficiently. They process and organize storage-optimized raw blockchain data into retrieve-optimized and well-queryable formats. This benefits developers and users looking to retrieve specific information because they don't need to:
-1. Run their own [archival node](https://docs.filecoin.io/networks/mainnet/rpcs).
-2. Parse entire blockchain histories to crawl for events that might not exist for thousands of [tipsets](https://docs.filecoin.io/basics/the-blockchain/blocks-and-tipsets#tipsets).
+1. Run their own [archival node](../../networks-and-tools/networks/mainnet/rpcs.md).
+2. Parse entire blockchain histories to crawl for events that might not exist for thousands of [tipsets](../../core-concepts/filecoin-virtual-machine/blocks-and-tipsets.md#tipsets).
3. Spend significant time required to retrieve data from the blockchain node.
4. Determine complex interconnections between smart contracts.
5. Spend substantial compute power to calculate advanced queries.
@@ -42,11 +42,11 @@ Make sure you have the following tools and setup ready:
- Node.js
- Create a Goldsky account and generate a Goldsky API key
- Goldsky CLI installed
- ```
+ ```shell
curl https://goldsky.com | sh
```
- Authenticate Goldsky CLI with your API key
- ```
+ ```shell
goldsky login
```
- wFIl Contract information
@@ -57,9 +57,11 @@ Make sure you have the following tools and setup ready:
Goldsky’s Deploy Wizard simplifies the creation of subgraphs using a CLI-guided flow.
Run:
-```
+
+```shell
goldsky subgraph init
```
+
Follow the prompts from the Goldsky subgraph configuration wizard:
- *Subgraph name*: wfil-subgraph
- *Subgraph version*: 1.0.0
@@ -79,7 +81,8 @@ Indexing all the data for your smart contract will take time after the subgraph
You can use the provided GraphQL endpoint to query the subgraph.
For example:
-```
+
+```graphql
{
transfers(
where: {from: "0xf49d33f54ce41354dcd7e698aa54256781a6dd30"}
@@ -95,7 +98,9 @@ For example:
}
}
```
+
Use the Goldsky Playground or integrate it into your app to consume indexed data.
+
## The Graph
[The Graph](https://thegraph.com) is a decentralized protocol for indexing blockchain data. It enables developers to build and publish custom open APIs, known as subgraphs, that applications can query to retrieve blockchain data using GraphQL in a time-efficient manner.
@@ -107,7 +112,7 @@ Use the Goldsky Playground or integrate it into your app to consume indexed data
#### Querying Subgraphs on Filecoin FEVM
-There are many ways to query existing subgraphs, including numerous well-known libraries for [JavaScript](https://thegraph.com/docs/en/querying/querying-from-an-application/) and [Python](https://thegraph.com/docs/en/querying/querying-with-python/). But even without any third-party tooling, querying a subgraph is no more complicated than querying [RPC nodes](https://docs.filecoin.io/reference/json-rpc). The only complexity is that you have to know the schema of the subgraph beforehand, similar to knowing SQL database tables and columns before being able to query them. Luckily, The Graph provides several ways to discover the subgraph schema. The most convenient one is called the ["Playground"](https://graphql.org/blog/2020-04-03-graphiql-graphql-playground/), and it is available upon a GET request to the subgraph query URL. Alternatively, you may use the discovery method that exists on every subgraph, called the [Introspection Query](https://graphql.org/learn/introspection/).
+There are many ways to query existing subgraphs, including numerous well-known libraries for [JavaScript](https://thegraph.com/docs/en/querying/querying-from-an-application/) and [Python](https://thegraph.com/docs/en/querying/querying-with-python/). But even without any third-party tooling, querying a subgraph is no more complicated than querying [RPC nodes](../../reference/json-rpc/README.md). The only complexity is that you have to know the schema of the subgraph beforehand, similar to knowing SQL database tables and columns before being able to query them. Luckily, The Graph provides several ways to discover the subgraph schema. The most convenient one is called the ["Playground"](https://graphql.org/blog/2020-04-03-graphiql-graphql-playground/), and it is available upon a GET request to the subgraph query URL. Alternatively, you may use the discovery method that exists on every subgraph, called the [Introspection Query](https://graphql.org/learn/introspection/).
#### Developing Subgraphs on Filecoin FEVM
@@ -122,7 +127,7 @@ Just as with database data queried through SQL, subgraphs have to be stored some
[Protofire (aka Glif Nodes)](https://api.node.glif.io) offers public access to The Graph services, simplifying the process of deploying and managing subgraphs.
1. **Connect Your Wallet**
- * On the [Protofire (Glif Nodes) platform - SUBGRAPHS](https://api.node.glif.io/graph), connect your [Filecoin-compatible wallet](https://docs.filecoin.io/basics/assets/wallets).
+ * On the [Protofire (Glif Nodes) platform - SUBGRAPHS](https://api.node.glif.io/graph), connect your [Filecoin-compatible wallet](../../networks-and-tools/assets/wallets.md).
2. **Create an API Key**
* Choose the **API keys** tab.
* Click **Create new key**.
diff --git a/build/advanced/filecoin-onchain-cloud.md b/build/advanced/filecoin-onchain-cloud.md
new file mode 100644
index 000000000..fc67bec73
--- /dev/null
+++ b/build/advanced/filecoin-onchain-cloud.md
@@ -0,0 +1,14 @@
+---
+description: >-
+ Filecoin Onchain Cloud has moved to a dedicated Build on Filecoin subsection.
+---
+
+# Filecoin Onchain Cloud
+
+Filecoin Onchain Cloud now has a dedicated Build on Filecoin subsection.
+
+* [Filecoin Onchain Cloud overview](../filecoin-onchain-cloud/README.md)
+* [FOC quickstart and Synapse docs](../filecoin-onchain-cloud/synapse-quickstart.md)
+* [Full FOC documentation](https://docs.filecoin.cloud/)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/advanced/filecoin-onchain-cloud)
diff --git a/smart-contracts/advanced/multicall.md b/build/advanced/multicall.md
similarity index 99%
rename from smart-contracts/advanced/multicall.md
rename to build/advanced/multicall.md
index d3a4b5abf..5b0355b8e 100644
--- a/smart-contracts/advanced/multicall.md
+++ b/build/advanced/multicall.md
@@ -128,4 +128,4 @@ Lotus FEVM RPC supports Ethereum batch transactions. The key difference between
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/multicall)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced/multicall)
diff --git a/smart-contracts/advanced/multisig.md b/build/advanced/multisig.md
similarity index 89%
rename from smart-contracts/advanced/multisig.md
rename to build/advanced/multisig.md
index 51c908c65..1565028b9 100644
--- a/smart-contracts/advanced/multisig.md
+++ b/build/advanced/multisig.md
@@ -22,7 +22,7 @@ There are several multisig wallet implementations on Filecoin. Builders can inte
### Filecoin Native Multisig
-The Filecoin Native [MultisigActor](/basics/the-blockchain/actors#multisigactor) is a built-in actor that does not interact directly with the Filecoin EVM. Like other Filecoin actors, native multisig addresses begin with `f2` and represent a group of transaction signers with a maximum of 256 signers. Signers may be external users or the MultisigActor itself and can include `f1` and `f3` [addresses](https://docs.filecoin.io/basics/the-blockchain/addresses).
+The Filecoin Native [MultisigActor](../../core-concepts/filecoin-virtual-machine/actors.md#multisigactor) is a built-in actor that does not interact directly with the Filecoin EVM. Like other Filecoin actors, native multisig addresses begin with `f2` and represent a group of transaction signers with a maximum of 256 signers. Signers may be external users or the MultisigActor itself and can include `f1` and `f3` [addresses](../../core-concepts/filecoin-virtual-machine/addresses.md).
#### Filecoin Native Multisig UIs
@@ -38,7 +38,7 @@ The Filecoin Native [MultisigActor](/basics/the-blockchain/actors#multisigactor)
A web UI for the Safe multisig on Filecoin is available at:
-- [https://safe.filecoin.io](https://safe.filecoin.io) - the default network is set to [Filecoin Mainnet](https://docs.filecoin.io/networks/mainnet)
+- [https://safe.filecoin.io](https://safe.filecoin.io) - the default network is set to [Filecoin Mainnet](../../networks-and-tools/networks/mainnet/README.md)

@@ -50,7 +50,7 @@ A web UI for the Safe multisig on Filecoin is available at:
- **Executing a transaction** can produce gas estimation issues for accounts that have a very small amount of funds (that would not or would barely cover the transaction).
- **Transaction confirmation times** may lead to prolonged "processing" status in the UI.
- **Safe addresses from other networks** can sometimes be used but require additional technical steps.
- - In some cases the same Safe address and owner structure is not possible, learn more in [this article](https://help.safe.global/en/articles/40812-i-sent-assets-to-a-safe-address-on-the-wrong-network-any-chance-to-recover).
+ - In some cases the same Safe address and owner structure is not possible.
- Confirm complete creation (not just as a Placeholder) of the Safe multisig as an EVM contract on Filecoin prior to sending major funds.
- Instructions for deploying a Safe at the same address on another chain are available in [this video](https://share.zight.com/z8uBKZYr). Note that a compatible version of the Safe Proxy on the original chain must exist on Filecoin. Contact Safe-related support for help.
- If the previous address and chain use the L1 implementation of Safe Proxy, more complex technical migration steps will be required to map to the L2 version on Filecoin. Contact Safe-related support for more info.
@@ -59,8 +59,8 @@ A web UI for the Safe multisig on Filecoin is available at:
#### Safe Transaction Service
The [Safe transaction service](https://docs.safe.global/core-api/api-safe-transaction-service) on Filecoin is available at:
-- [https://transaction.safe.filecoin.io](https://transaction.safe.filecoin.io) on [Filecoin Mainnet](https://docs.filecoin.io/networks/mainnet)
-- [https://transaction-testnet.safe.filecoin.io](https://transaction-testnet.safe.filecoin.io) on [Filecoin Calibration testnet](https://docs.filecoin.io/networks/calibration)
+- [https://transaction.safe.filecoin.io](https://transaction.safe.filecoin.io) on [Filecoin Mainnet](../../networks-and-tools/networks/mainnet/README.md)
+- [https://transaction-testnet.safe.filecoin.io](https://transaction-testnet.safe.filecoin.io) on [Filecoin Calibration testnet](../../networks-and-tools/networks/calibration/README.md)
- Note:
- Faster finality is coming to Filecoin soon. For now, the Filecoin Safe transaction service sets `ETH_REORG_BLOCKS` to 60 blocks (i.e. Filecoin epochs) (30min) based on [FRC-0089](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0089.md) but users may want to wait 900 epochs (~7.5h) for full finality.
@@ -88,4 +88,4 @@ Safe’s multisig smart contracts are live on the Filecoin Mainnet and Calibrati
* [Safe Docs](https://docs.safe.global/home/what-is-safe)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/multisig)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced/multisig)
diff --git a/smart-contracts/advanced/oracles.md b/build/advanced/oracles.md
similarity index 97%
rename from smart-contracts/advanced/oracles.md
rename to build/advanced/oracles.md
index d5492f0f2..49efb5682 100644
--- a/smart-contracts/advanced/oracles.md
+++ b/build/advanced/oracles.md
@@ -100,10 +100,8 @@ eOracle's smart contracts are live on the Filecoin Calibration testnet.
#### **Further eOracle resources**
-* [eOracle docs](https://eoracle.gitbook.io/eoracle)
* [eOracle GitHub](https://github.com/eoracle)
-* [eOracle Price Feed Integration Guide](https://eoracle.gitbook.io/eoracle/price-feeds/integration-guide)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/oracles)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced/oracles)
diff --git a/build/advanced/privacy-and-access-control.md b/build/advanced/privacy-and-access-control.md
new file mode 100644
index 000000000..5c524f260
--- /dev/null
+++ b/build/advanced/privacy-and-access-control.md
@@ -0,0 +1,34 @@
+---
+description: >-
+ Reference-only guide to official privacy and access-control resources for data
+ stored on Filecoin.
+---
+
+# Privacy & Access Control
+
+{% hint style="info" %}
+This page is reference-only.
+
+We do not maintain step-by-step third-party privacy/access-control tutorials in Builder Cookbook.
+Use the official resources below for implementation details.
+{% endhint %}
+
+### Encrypting data for storing on Filecoin
+
+Use these official references for encryption workflows and secure upload patterns:
+
+* [Lighthouse encryption docs](https://docs.lighthouse.storage/how-to/upload-encrypted-data)
+* [Lighthouse access-control conditions](https://docs.lighthouse.storage/how-to/encryption-features/access-control-conditions)
+* [Lighthouse SDK docs](https://docs.lighthouse.storage)
+
+When building production flows, validate key management, signer auth, and recovery procedures in your own threat model.
+
+### Gated access to your dataset
+
+For condition-based access control and policy design:
+
+* [Lighthouse access-control docs](https://docs.lighthouse.storage/how-to/encryption-features/access-control-conditions)
+* [Filecoin smart contracts best practices](../developing-contracts/best-practices.md)
+* [Built-in actors reference](../../reference/built-in-actors/README.md)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/cookbook/data-storage/privacy-and-access-control)
diff --git a/smart-contracts/advanced/relay.md b/build/advanced/relay.md
similarity index 71%
rename from smart-contracts/advanced/relay.md
rename to build/advanced/relay.md
index c8c1fce82..d19950f47 100644
--- a/smart-contracts/advanced/relay.md
+++ b/build/advanced/relay.md
@@ -13,7 +13,7 @@ Meta transactions are a type of transaction that allows users to interact with t
## Available relayers
-There are several relayers available that support meta transactions on the Filecoin network. Builders can integrate these relayers into their applications today.
+Relayer support and contract addresses change over time. Before deploying a Filecoin Mainnet or Calibration integration, verify that your target network is listed in the relayer's current supported-network documentation and use the current trusted forwarder or relay contract address for that network.
### [Gelato](https://gelato.network/)
@@ -47,49 +47,69 @@ We will require three simple steps to implement Gelato Relay. Here, we are going
#### Step 1: Inherit Context Contract
-Depending on the method, you must inherit different contracts as they will provide other methods. In this case, we will have to inherit the `ERC2771Context`. The `ERC2771Context` provide us with the methods `_msgSender()` and `_msgData()` that will allow us to recover the original user sending the transaction.
+Depending on the method, you must inherit different contracts as they will provide other methods. In this case, we will have to inherit the `ERC2771Context`. The `ERC2771Context` provides us with the methods `_msgSender()` and `_msgData()` that will allow us to recover the original user sending the transaction.
```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.17;
+
import {
ERC2771Context
} from "@gelatonetwork/relay-context/contracts/vendor/ERC2771Context.sol";
contract CounterERC2771 is ERC2771Context {
+ mapping(address => uint256) public contextCounter;
+
+ event IncrementContextCounter(address indexed account, uint256 value);
// ERC2771Context: setting the immutable trustedForwarder variable
constructor(address trustedForwarder) ERC2771Context(trustedForwarder) {}
function incrementContext() external {
+ address sender = _msgSender();
+ uint256 nextValue = contextCounter[sender] + 1;
// Incrementing the counter mapped to the _msgSender!
- contextCounter[_msgSender()]++;
+ contextCounter[sender] = nextValue;
// Emitting an event for testing purposes
- emit IncrementContextCounter(_msgSender());
+ emit IncrementContextCounter(sender, nextValue);
}
}
```
#### Step 2: Import the relay SDK
-In your frontend/backend, you would need to import and instantiate the relay class.
+In your frontend or backend, import and instantiate the relay class. For ERC-2771 calls, deploy your contract with the trusted forwarder for the relay method and network you are targeting. Check Gelato's [supported networks](https://docs.gelato.cloud/relay/additional-resources/supported-networks) page before deploying.
-```
-import { GelatoRelay, SponsoredCallERC2771Request } from "@gelatonetwork/relay-sdk";
-const relay = new GelatoRelay(API_KEY);
+```typescript
+import {
+ GelatoRelay,
+ type CallWithERC2771Request,
+} from "@gelatonetwork/relay-sdk";
+
+const relay = new GelatoRelay();
```
#### Step 3: Send the payload to Gelato
-This is an example using Gelato's CounterERC2771.sol, which is deployed on these networks.
+This is a TypeScript skeleton for sending a `sponsoredCallERC2771` request. Replace the counter address, trusted forwarder, and API key with values for your deployed contract and supported target network.
+
+```typescript
+import { ethers } from "ethers";
-```
// Set up on-chain variables, such as target address
const counter = "0x00172f67db60E5fA346e599cdE675f0ca213b47b";
-const abi = ["function incrementContext()"];
+const abi = ["function incrementContext() external"];
+const apiKey = process.env.NEXT_PUBLIC_GELATO_RELAY_API_KEY;
+
+if (!apiKey) {
+ throw new Error("Missing Gelato Relay API key");
+}
+
const provider = new ethers.BrowserProvider(window.ethereum);
-const signer = provider.getSigner();
-const user = signer.getAddress();
+const signer = await provider.getSigner();
+const user = await signer.getAddress();
// Generate the target payload
const contract = new ethers.Contract(counter, abi, signer);
@@ -98,21 +118,19 @@ const { data } = await contract.incrementContext.populateTransaction();
// Populate a relay request
const request: CallWithERC2771Request = {
chainId: (await provider.getNetwork()).chainId,
- target: counter;
- data: data;
- user: user;
+ target: counter,
+ data,
+ user,
};
// Without a specific API key, the relay request will fail!
-// Go to https://relay.gelato.network to get a testnet API key with 1Balance.
+// Go to https://app.gelato.cloud to get an API key with 1Balance funding.
// Send a relay request using Gelato Relay!
const relayResponse = await relay.sponsoredCallERC2771(request, provider, apiKey);
```
#### Further Gelato resources
-* [Gelato Relay Docs](https://docs.gelato.network/web3-services/relay)
-* [What is 1Balance?](https://docs.gelato.network/web3-services/1balance)
-* [YouTube - ERC2771](https://www.youtube.com/watch?v=P6LlzSzta1Q)
-* [YouTube - non-ERC2771](https://youtu.be/shqLPDerunY)
+* [Gelato Relay Docs](https://docs.gelato.cloud/relay/erc2771-recommended/sponsoredcall-erc2771)
+* [Gelato Supported Networks](https://docs.gelato.cloud/relay/additional-resources/supported-networks)
* [GitHub Repository](https://github.com/gelatodigital/how-tos-5-6-7-8-relay-intro-methods)
diff --git a/smart-contracts/advanced/wrapped-fil.md b/build/advanced/wrapped-fil.md
similarity index 99%
rename from smart-contracts/advanced/wrapped-fil.md
rename to build/advanced/wrapped-fil.md
index b615d011a..0351dbf5e 100644
--- a/smart-contracts/advanced/wrapped-fil.md
+++ b/build/advanced/wrapped-fil.md
@@ -84,4 +84,4 @@ This process will burn the amount of wFIL from the caller’s balance and transf
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/wrapped-fil)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/advanced/wrapped-fil)
diff --git a/build/cookbook/README.md b/build/cookbook/README.md
new file mode 100644
index 000000000..3a6f42a86
--- /dev/null
+++ b/build/cookbook/README.md
@@ -0,0 +1,11 @@
+# Cookbook
+
+Task-focused guidance for building on Filecoin. Each page points you to the official, actively maintained tools and resources for a specific task, rather than duplicating third-party tutorials that drift out of date. The Filecoin Pin pages include full step-by-step walkthroughs.
+
+## Table of contents
+
+* [Store data](store-data.md) — recipes for programmable storage of public or private data on Filecoin
+* [Retrieve data](retrieve-data.md) — recipes for fetching stored data from the network
+* [Filecoin Pin](filecoin-pin/README.md) — recipes for using Filecoin Pin to store and retrieve data on Filecoin Onchain Cloud
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/cookbook)
diff --git a/build/cookbook/filecoin-pin/README.md b/build/cookbook/filecoin-pin/README.md
new file mode 100644
index 000000000..426e63fcc
--- /dev/null
+++ b/build/cookbook/filecoin-pin/README.md
@@ -0,0 +1,49 @@
+---
+description: Pin IPFS content to Filecoin using familiar IPFS tools and workflows.
+---
+
+# Filecoin Pin
+
+{% hint style="success" %}
+**Production-ready on Filecoin Mainnet**
+
+Filecoin Pin is live on Filecoin Mainnet and ready for use. Register for product updates and announcements at [filecoin.cloud](https://filecoin.cloud/).
+{% endhint %}
+
+## What is Filecoin Pin?
+
+Filecoin Pin is a fully decentralised persistence layer for IPFS content, backed by the global network of Filecoin storage providers and cryptographic proofs of storage.
+
+When you pin content with Filecoin Pin, your IPFS data gains:
+
+* **Verifiable persistence** - Storage providers must cryptographically prove daily that they continue to store and serve your data.
+* **Economic incentives** - You only pay when storage proofs are successfully delivered and verified onchain.
+* **Decentralised infrastructure** - Your data is stored across a global network of independent storage providers.
+* **Sovereign data** - Choose your providers, audit storage proofs and payments onchain, with no dependency on a single company.
+* **Seamless IPFS integration** - Keep using standard [IPFS Mainnet](https://docs.ipfs.tech/concepts/glossary/#mainnet) tooling like Kubo, Helia, and IPFS HTTP Gateways while gaining Filecoin's persistence guarantees.
+
+## Who is Filecoin Pin for?
+
+Filecoin Pin is for anyone who needs reliable, verifiable IPFS pinning:
+
+* **People moving from another pinning service** - If you're coming from Storacha, Pinata, or any other IPFS pinning service, Filecoin Pin gives you a place to keep your IPFS content pinned and accessible.
+* **Developers building on IPFS** - If you're building dApps, websites, AI agents, or other applications that rely on IPFS, Filecoin Pin provides the missing persistence layer with cryptographic guarantees.
+
+{% hint style="info" %}
+**Migrating existing pins from Storacha?** This guide focuses on pinning new content. For migrating data already pinned on Storacha, see the dedicated migration guide (coming soon).
+{% endhint %}
+
+## How to Get Started
+
+The fastest path to pinning your first file is the **Getting Started** guide below. It walks you through installing the CLI, connecting your wallet, depositing storage credit, and pinning content - end to end.
+
+1. [**Getting Started**](getting-started.md) - Install Filecoin Pin and pin your first file in around 10 minutes. Start here.
+2. [Filecoin Pin GitHub Actions](github-action.md) - Automate pinning of websites or build artifacts as part of your CI/CD pipeline.
+3. [Filecoin Pin dApp Demo](dapp-demo.md) - Run or fork a demo dApp showing browser-based file uploads to Filecoin.
+4. [Filecoin Pin for ERC-8004 Agents](erc-8004-agent-registration.md) - Register a trustless autonomous agent on the ERC-8004 Identity Registry with verifiable persistent storage for agent metadata.
+
+## Learn More
+
+* [**FAQ**](faq.md) - Common questions about Filecoin Pin.
+* [**Filecoin Pin GitHub Repository**](https://github.com/filecoin-project/filecoin-pin) - Source code and technical documentation.
+* [**Community and Support**](https://github.com/filecoin-project/filecoin-pin?tab=readme-ov-file#community-and-support) - Join the community for real-time developer support and updates.
diff --git a/builder-cookbook/filecoin-pin/assets/eip8004-base-explorer-nft.png b/build/cookbook/filecoin-pin/assets/eip8004-base-explorer-nft.png
similarity index 100%
rename from builder-cookbook/filecoin-pin/assets/eip8004-base-explorer-nft.png
rename to build/cookbook/filecoin-pin/assets/eip8004-base-explorer-nft.png
diff --git a/builder-cookbook/filecoin-pin/assets/pinapp-download.gif b/build/cookbook/filecoin-pin/assets/pinapp-download.gif
similarity index 100%
rename from builder-cookbook/filecoin-pin/assets/pinapp-download.gif
rename to build/cookbook/filecoin-pin/assets/pinapp-download.gif
diff --git a/builder-cookbook/filecoin-pin/assets/pinapp-publish.gif b/build/cookbook/filecoin-pin/assets/pinapp-publish.gif
similarity index 100%
rename from builder-cookbook/filecoin-pin/assets/pinapp-publish.gif
rename to build/cookbook/filecoin-pin/assets/pinapp-publish.gif
diff --git a/builder-cookbook/filecoin-pin/assets/pinapp-upload.gif b/build/cookbook/filecoin-pin/assets/pinapp-upload.gif
similarity index 100%
rename from builder-cookbook/filecoin-pin/assets/pinapp-upload.gif
rename to build/cookbook/filecoin-pin/assets/pinapp-upload.gif
diff --git a/builder-cookbook/filecoin-pin/assets/pinapp-viewproof.gif b/build/cookbook/filecoin-pin/assets/pinapp-viewproof.gif
similarity index 100%
rename from builder-cookbook/filecoin-pin/assets/pinapp-viewproof.gif
rename to build/cookbook/filecoin-pin/assets/pinapp-viewproof.gif
diff --git a/builder-cookbook/filecoin-pin/dapp-demo.md b/build/cookbook/filecoin-pin/dapp-demo.md
similarity index 84%
rename from builder-cookbook/filecoin-pin/dapp-demo.md
rename to build/cookbook/filecoin-pin/dapp-demo.md
index 00832a25e..0e114833f 100644
--- a/builder-cookbook/filecoin-pin/dapp-demo.md
+++ b/build/cookbook/filecoin-pin/dapp-demo.md
@@ -15,13 +15,13 @@ In this walkthrough, you’ll build a simple drag-and-drop file uploader that:
- Multi-user support with session-based authentication
- Seamlessly integrates with React, TypeScript, and Vite
-## Walkthrough Recording
+## Walkthrough Recording
{% embed url="https://www.youtube.com/embed/UElx1_qF12o?si=ppmzrl6psMRqwNQh" %}
## Setup
-We will start building by [forking the *filecoin-pin-website demo repo](https://github.com/filecoin-project/filecoin-pin-website/fork).* Make sure you have **Node.js 18+** and **npm 9+** installed. The dapp works with Filecoin Calibration testnet.
+We will start building by [forking the *filecoin-pin-website demo repo](https://github.com/filecoin-project/filecoin-pin-website/fork).* Make sure you have **Node.js 24+** and **npm 9+** installed. The dapp works with Filecoin Calibration testnet.
This will take ~10min. ⏲️
@@ -52,11 +52,11 @@ This demo dapp supports two authentication methods:
If you are using your own wallet, you need to get test FIL and test USDFC to pay for the Filecoin storage service and transactions.
-1. Create or use an existing Filecoin wallet on the ****Calibration testnet**** ([such as MetaMask](https://docs.filecoin.io/basics/assets/metamask-setup#tab-calibration)).
+1. Create or use an existing Filecoin wallet on the **Calibration testnet** ([such as MetaMask](../../../networks-and-tools/assets/metamask-setup.md)).
2. Visit the [Filecoin Calibration Faucet](https://faucet.calibnet.chainsafe-fil.io/funds.html) to get free test FIL (to pay for transaction gas).
-3. Visit the [Filecoin USDFC faucet](https://forest-explorer.chainsafe.dev/faucet/calibnet_usdfc]) to get test USDFC, which is a USD stable coin backed by FIL that can be used to pay for services.
+3. Visit the [Filecoin USDFC faucet](https://forest-explorer.chainsafe.dev/faucet/calibnet_usdfc) to get test USDFC, which is a USD stablecoin backed by FIL that can be used to pay for services.
### **Step 3: Run Your dApp**
@@ -70,23 +70,23 @@ Visit `http://localhost:5173` and you should see your dApp running! That is all
## Store IPFS Files on Filecoin
-The magic happens in one key file [**`src/hooks/use-filecoin-upload.ts`**](https://github.com/filecoin-project/filecoin-pin-website/blob/main/src/hooks/use-filecoin-upload.ts). This is where your IPFS files get uploaded to Filecoin.
+The magic happens in one key file [**`src/hooks/use-filecoin-upload.ts`**](https://github.com/filecoin-project/filecoin-pin-website/blob/main/src/hooks/use-filecoin-upload.ts). This is where your IPFS files get uploaded to Filecoin.
### Step 1: Upload the data
- **Prepare Service** - Validates wallet balance and gets the Filecoin Warm Storage service initialized.
- **Create CAR** - Converts your file to an IPFS CAR (Content Addressed aRchive) file.
- **Upload** - Sends the CAR file to a Filecoin Storage Provider (SP).
-
+

-
+
### Step 2: Announce CIDs and confirm the transaction
The Filecoin SP:
- indexes the IPFS CAR file and publishes all the contained CIDs to the IPFS network via IPNI.
- commits to the Filecoin network via onchain transactions to store the data. Once the transaction is confirmed, your data is paid to be persisted on Filecoin.
-
+

### Step 3: Download the data
@@ -106,6 +106,6 @@ That is it - you now have a dapp with a drag-and-drop interface to store IPFS Fi
## Next Steps
1. Check back on the [filecoin-pin-website repo](https://github.com/filecoin-project/filecoin-pin-website) - it will continue to be updated as new functionality is brought to filecoin-pin.
-2. Feel free to report any issues with the dApp demo to https://github.com/filecoin-project/filecoin-pin-website/issues
-3. Check out the the [other example uses of filecoin-pin](../).
-4. Ask questions or get help with filecoin-pin in the [supported communcation channels](https://github.com/filecoin-project/filecoin-pin?tab=readme-ov-file#support-info).
+2. Feel free to report any issues with the dApp demo to .
+3. Check out the [other Filecoin Pin guides](README.md).
+4. Ask questions or get help with filecoin-pin in the [supported communication channels](https://github.com/filecoin-project/filecoin-pin?tab=readme-ov-file#community-and-support).
diff --git a/builder-cookbook/filecoin-pin/erc-8004-agent-registration.md b/build/cookbook/filecoin-pin/erc-8004-agent-registration.md
similarity index 97%
rename from builder-cookbook/filecoin-pin/erc-8004-agent-registration.md
rename to build/cookbook/filecoin-pin/erc-8004-agent-registration.md
index a5027c40a..3788b1ec2 100644
--- a/builder-cookbook/filecoin-pin/erc-8004-agent-registration.md
+++ b/build/cookbook/filecoin-pin/erc-8004-agent-registration.md
@@ -39,7 +39,7 @@ Agent cards need persistent storage with provable guarantees. Unlike generic IPF
- ✅ **Ongoing verification** ensures storage persistence
- ✅ **Decentralized** storage across a global network
- ✅ **IPFS compatible** - works with existing tools and gateways
-- ✅ **Crypto payments** - onchain payments
+- ✅ **Crypto payments** - onchain payments
- ✅ **Limited time - sponsored storage coming soon** available for ERC-8004 builders
***
@@ -51,8 +51,8 @@ Agent cards need persistent storage with provable guarantees. Unlike generic IPF
Before starting, you'll need:
1. **Filecoin Pin CLI** - Follow the complete setup guide here:
- - [Filecoin Pin CLI Tutorial](https://docs.filecoin.io/builder-cookbook/filecoin-pin/filecoin-pin-cli)
- - This covers wallet creation, testnet tokens (tFIL and USDFC), and payment setup
+ - [Filecoin Pin Getting Started](getting-started.md)
+ - This covers wallet creation, funding your wallet with FIL and USDFC, and payment setup
2. **Foundry** - Ethereum development toolkit for contract interactions
```bash
@@ -189,7 +189,7 @@ export PRIVATE_KEY="0x..." # Your wallet private key
filecoin-pin payments setup --auto
```
-This configures your wallet to pay for storage automatically.
+This configures your wallet to pay for storage automatically.
This may take a few minutes to complete.
You'll see output similar to:
@@ -598,20 +598,20 @@ Get FIL and USDFC via the [USDFC Bridge](https://app.usdfc.net/#/bridge) - bridg
View on explorer: [Base Mainnet Registry](https://basescan.org/address/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432)
### Upload to Filecoin Mainnet
-
-All Filecoin Pin CLI commands use the `--mainnet` flag for mainnet operations.
+
+Filecoin Pin defaults to Mainnet, so no extra flags are needed for mainnet operations.
#### Setup Payment System (Mainnet)
```bash
export PRIVATE_KEY="0x..." # Your wallet private key
-filecoin-pin payments setup --auto --mainnet
+filecoin-pin payments setup --auto
```
#### Upload Your Agent Card (Mainnet)
```bash
-filecoin-pin add --auto-fund --mainnet github-agent-card.json
+filecoin-pin add --auto-fund github-agent-card.json
```
Save the **Root CID** and **Dataset ID** from the output.
@@ -653,7 +653,7 @@ echo "Agent ID: $AGENT_ID"
### Check Mainnet Storage Proofs
```bash
-filecoin-pin data-set show --mainnet
+filecoin-pin data-set show
```
***
@@ -685,7 +685,7 @@ Get more from the [faucet](https://www.alchemy.com/faucets/base-sepolia) if need
```bash
curl -s "https://ipfs.io/ipfs//github-agent-card.json" | jq .
curl -s "https://gateway.pinata.cloud/ipfs//github-agent-card.json" | jq .
-curl -s "https://cloudflare-ipfs.com/ipfs//github-agent-card.json" | jq .
+curl -s "https://dweb.link/ipfs//github-agent-card.json" | jq .
```
### Issue: PDP proofs not showing
@@ -727,7 +727,7 @@ Now that your agent is registered with verifiable persistent storage, you can:
- **Filecoin Builders**: [on telegram](https://t.me/+Xj6_zTPfcUA4MGQ1); [on Slack](https://filecoinproject.slack.com/archives/CRK2LKYHW)
- **ERC-8004 Discussion**: [GitHub Discussions](https://github.com/ethereum/EIPs/issues/8004)
-- **Filecoin Pin**: [Documentation](https://docs.filecoin.io/builder-cookbook/filecoin-pin)
+- **Filecoin Pin**: [Documentation](README.md)
- **Builder Channels**: Join ERC-8004 builder communities
### Sponsored Storage for ERC-8004 Builders
@@ -740,11 +740,10 @@ Coming soon, stay tuned!
- [**ERC-8004 Specification**](https://eips.ethereum.org/EIPS/eip-8004)
- [**Reference Implementation**](https://github.com/ChaosChain/trustless-agents-erc-ri)
-- [**Filecoin Pin CLI Tutorial**](https://docs.filecoin.io/builder-cookbook/filecoin-pin/filecoin-pin-cli)
+- [**Filecoin Pin Getting Started**](getting-started.md)
- [**Base Sepolia Explorer**](https://sepolia.basescan.org)
- [**GitHub MCP Server**](https://github.com/github/github-mcp-server)
***
**Happy building!** 🚀
-
diff --git a/builder-cookbook/filecoin-pin/faq.md b/build/cookbook/filecoin-pin/faq.md
similarity index 65%
rename from builder-cookbook/filecoin-pin/faq.md
rename to build/cookbook/filecoin-pin/faq.md
index 3874a01c4..cb6bde9b6 100644
--- a/builder-cookbook/filecoin-pin/faq.md
+++ b/build/cookbook/filecoin-pin/faq.md
@@ -1,6 +1,6 @@
# FAQ
-### What is Filecoin Pin?
+## What is Filecoin Pin?
Filecoin Pin stores IPFS content on the Filecoin Network of decentralized Storage Providers. It enables developers to programmatically pay for storage and retrieval with Filecoin Pay. When SPs prove storage, they are paid from the developers' Filecoin Pay Account.
@@ -8,27 +8,24 @@ Filecoin Pin stores IPFS content on the Filecoin Network of decentralized Storag
### How can I use Filecoin Pin today?
-Two paths are available:
+Three paths are available:
-* **Website:** Upload files in your browser. Uses a pre-funded test wallet.
-* **CLI:** Upload files from your terminal. Fund storage from your own wallet.
-
-{% hint style="info" %}
-Both run on Calibration testnet. They use tFIL and USDFC. Data has no persistence guarantees while on Calibnet.
-{% endhint %}
+* **CLI:** Upload files from your terminal on Filecoin Mainnet. Fund storage from your own wallet. [Get started here](getting-started.md).
+* **GitHub Action:** Automate pinning of websites or build artifacts in your CI/CD pipeline.
+* **Website (demo):** Upload files in your browser using a pre-funded test wallet on Calibration testnet.
***
### What do I need to get started?
-* You can find different links related to Filecoin Pin here: [https://docs.filecoin.io/builder-cookbook/filecoin-pin](https://docs.filecoin.io/builder-cookbook/filecoin-pin)
+* You can find different links related to Filecoin Pin here: [Filecoin Pin documentation](README.md)
***
### How do payments and approvals work?
-* **Website:** The demo wallet handles payments. It has been prefunded with testnet USDFC and FIL. Users don't need to connect their own wallet.
-* **CLI:** Your test wallet handles payments. You approve and deposit funds through Filecoin Pay.
+* **Website (demo):** The demo wallet handles payments. It has been prefunded with testnet USDFC and FIL. Users don't need to connect their own wallet.
+* **CLI / GitHub Action:** Your wallet handles payments on Mainnet. You approve and deposit USDFC funds through Filecoin Pay once, then the CLI manages payments automatically.
{% hint style="info" %}
Storage providers receive payment after cryptographically proving data possession.
@@ -48,9 +45,9 @@ No manual deposit calculations needed. The system handles it.
### How long is my data stored?
-This runs on Calibration testnet only. Treat it as a demo. No duration guarantees exist for Website or CLI.
+On **Mainnet** (the default), data persists as long as you maintain deposits in Filecoin Pay. Storage providers must prove they hold your data daily or they stop receiving payment. The CLI supports auto-funding to keep your runway healthy.
-Mainnet will offer persistence guarantees. Data persists while you maintain deposits. The CLI supports auto-funding for storage.
+On **Calibration testnet** (the demo website), data has no persistence guarantees. Treat it as a demo environment only.
***
@@ -58,7 +55,7 @@ Mainnet will offer persistence guarantees. Data persists while you maintain depo
A Data Set groups your uploads together. Each upload becomes a "piece" within the Data Set. Multiple files you upload share the same payment rail.
-Check your Data Set with `filecoin-pin data-set `.
+Check your Data Set with `filecoin-pin data-set show `.
***
@@ -67,7 +64,7 @@ Check your Data Set with `filecoin-pin data-set `.
Three methods:
1. **IPFS Gateways:** Use public gateways with your root CID: `https://gateway.example.com/ipfs/`
-2. **Direct from Storage Provider:** Get the direct download URL from `filecoin-pin data-set `
+2. **Direct from Storage Provider:** Get the direct download URL from `filecoin-pin data-set show `
3. **IPFS Tools:** Use Kubo, Helia, IPFS Desktop with your root CID.
***
@@ -88,7 +85,7 @@ Both are linked cryptographically on-chain.
Two ways to verify:
-1. **CLI:** Run `filecoin-pin data-set ` to see on-chain verification. Check proof status and piece details.
+1. **CLI:** Run `filecoin-pin data-set show ` to see on-chain verification. Check proof status and piece details.
2. **PDP Explorer:** Visit `https://pdp.vxb.ai/calibration/dataset/{datasetID}` to view proofs in your browser.
{% hint style="info" %}
@@ -108,7 +105,7 @@ See the repos as reference implementations and to fork for my own project?
## References
-* Filecoin Pin CLI Docs: [https://docs.filecoin.io/builder-cookbook/filecoin-pin](https://docs.filecoin.io/builder-cookbook/filecoin-pin)
+* Filecoin Pin CLI Docs: [Filecoin Pin documentation](README.md)
* Filecoin Pin dApp Repo: [https://github.com/filecoin-project/filecoin-pin-website](https://github.com/filecoin-project/filecoin-pin-website)
* Synapse SDK: [https://github.com/FilOzone/synapse-sdk](https://github.com/FilOzone/synapse-sdk)
* USDFC documentation: [https://docs.secured.finance/usdfc-stablecoin/getting-started](https://docs.secured.finance/usdfc-stablecoin/getting-started)
diff --git a/build/cookbook/filecoin-pin/getting-started.md b/build/cookbook/filecoin-pin/getting-started.md
new file mode 100644
index 000000000..9af727740
--- /dev/null
+++ b/build/cookbook/filecoin-pin/getting-started.md
@@ -0,0 +1,320 @@
+---
+description: >-
+ Install Filecoin Pin, connect your wallet, deposit storage credit, and pin
+ your first file to Filecoin in around 10 minutes.
+---
+
+# Getting Started
+
+This guide walks you through pinning your first file to Filecoin using the Filecoin Pin CLI. By the end, you'll be set up to:
+
+* ✅ Install the Filecoin Pin CLI
+* ✅ Connect your Ethereum-style wallet on Filecoin
+* ✅ Deposit storage credit on Filecoin Pay
+* ✅ Pin a file to Filecoin and retrieve it using standard IPFS tooling
+
+***
+
+## 🚀 Prerequisites
+
+Before starting, make sure you have:
+
+* **An Ethereum-style wallet on Filecoin** - MetaMask is the easiest option. If you don't have one set up, see [Wallets](../../../networks-and-tools/assets/wallets.md) and [Metamask setup](../../../networks-and-tools/assets/metamask-setup.md).
+* **FIL in your wallet** - to pay transaction gas fees on Filecoin.
+* **USDFC in your wallet** - to pay for storage. USDFC is the stablecoin used by Filecoin Onchain Cloud. The easiest way to get some is to [swap FIL for USDFC on Sushi](https://www.sushi.com/filecoin/swap?token0=NATIVE&token1=0x80b98d3aa09ffff255c3ba4a241111ff1262f045).
+* **Node.js 24 or later** - the Filecoin Pin CLI runs on Node.js. Install from [nodejs.org](https://nodejs.org/) or via your package manager.
+
+
+
+***
+
+## 📦 Install the Filecoin Pin CLI
+
+Install the CLI globally with npm:
+
+```sh
+npm install -g filecoin-pin@latest
+```
+
+Verify the installation:
+
+```sh
+filecoin-pin --version
+```
+
+To see all available commands at any time:
+
+```sh
+filecoin-pin --help
+```
+
+***
+
+## 🔐 Connect your wallet
+
+The Filecoin Pin CLI signs transactions using your wallet's private key. You provide it as an environment variable - the CLI reads it directly and never stores it on disk.
+
+### 1️⃣ Export your private key from MetaMask
+
+{% hint style="danger" %}
+**Treat your private key like a password.** Anyone with your private key has full control of your wallet and any funds in it. Never paste it into a website, share it over chat, commit it to a repository, or store it in plain text on a shared system.
+{% endhint %}
+
+In MetaMask:
+
+1. Open the MetaMask extension.
+2. Click the three dots next to your account name.
+3. Select **Account details**.
+4. Click **Show private key**.
+5. Enter your MetaMask password.
+6. Copy the private key shown.
+
+The private key is a 64-character hex string, with or without an `0x` prefix.
+
+### 2️⃣ Save or export the private key
+
+The Filecoin Pin CLI does not store your key, but a `.env` file is still a local file on disk. Use a private working directory, keep `.env` out of git, and delete the file when you no longer need it.
+
+Create a file named `.env` in your working directory containing:
+
+```sh
+export PRIVATE_KEY="0xYOUR_PRIVATE_KEY_HERE"
+```
+
+Then secure it and load it into your shell:
+
+```sh
+printf '.env\n' >> .gitignore
+chmod 600 .env
+source .env
+```
+
+For a one-off shell session, you can avoid writing the key to disk and export it directly instead:
+
+```sh
+export PRIVATE_KEY="0xYOUR_PRIVATE_KEY_HERE"
+```
+
+***
+
+## 💰 Set up payments
+
+Filecoin Pin uses [Filecoin Pay](https://github.com/FilOzone/filecoin-pay) to manage storage payments. Before you can pin anything, you need to:
+
+1. Authorise the Warm Storage Service contract to spend USDFC on your behalf.
+2. Deposit USDFC into Filecoin Pay so storage providers can be paid.
+
+The CLI walks you through both steps interactively.
+
+```sh
+filecoin-pin payments setup
+```
+
+The CLI will guide you through the following stages:
+
+#### 1️⃣ Connect and check balances
+
+The CLI confirms it can connect to Filecoin Mainnet and reports your wallet's FIL and USDFC balances.
+
+{% hint style="info" %}
+If you don't have enough FIL for gas or USDFC for storage, the CLI will tell you and stop. Top up your wallet and try again.
+{% endhint %}
+
+#### 2️⃣ Review pricing
+
+The CLI shows current storage pricing per GiB per month and per TiB per month. Use this to estimate how much USDFC you want to deposit.
+
+#### 3️⃣ Choose a deposit amount
+
+The CLI asks: **"Would you like to deposit USDFC to enable storage?"** Answer **Yes**.
+
+It then shows example monthly costs for common storage amounts (100 GiB, 1 TiB, 10 TiB) so you can pick a sensible deposit.
+
+When prompted **"How much USDFC would you like to deposit?"**, enter the amount you want. A first-time deposit of `10.0` USDFC is a reasonable starting point.
+
+{% hint style="info" %}
+**Coming from Storacha?** Refer to the email we sent you for the specific USDFC amount we'd recommend depositing for your dataset size.
+{% endhint %}
+
+#### 4️⃣ Confirm the deposit
+
+The CLI submits the deposit transaction onchain and shows the transaction hash and your new storage capacity.
+
+{% hint style="success" %}
+You should see something like:
+
+```
+✓ Deposit complete
+ Deposit tx: 0x1234...abcd
+
+New Storage Capacity:
+ Total deposit: 10.00 USDFC
+ Capacity: ~XX GiB for 1 month
+```
+{% endhint %}
+
+***
+
+## 💵 Top up your runway (optional)
+
+If you want to ensure your deposit covers a specific number of days at your current storage usage, run:
+
+```sh
+filecoin-pin payments fund --days 30
+```
+
+This deposits (or withdraws) the right amount of USDFC to give you exactly 30 days of runway based on what you're currently storing. You can use any number of days you like.
+
+To check your current deposit balance, runway, and payment status at any time:
+
+```sh
+filecoin-pin payments status
+```
+
+***
+
+## 📌 Pin your first file
+
+Now you're ready to pin. Create a test file:
+
+```sh
+echo "Hello Filecoin Pin @ $(date)!" > demo.txt
+```
+
+Pin it to Filecoin:
+
+```sh
+filecoin-pin add demo.txt
+```
+
+The CLI will:
+
+1. Pack your file into IPFS-compatible format (a CAR file).
+2. Select storage providers automatically.
+3. Store your file with two providers for redundancy.
+4. Verify the upload was advertised to [IPNI indexers](https://github.com/filecoin-project/filecoin-pin/blob/master/documentation/glossary.md#ipni).
+
+{% hint style="success" %}
+You should see something like:
+
+```
+✓ File validated (20 B)
+✓ Connected to Filecoin Mainnet
+✓ File packed with root CID: bafybeihkoviema7g3gxyt6la7vd5ho32ictqbilu3wnlo3rs7ewhnp7lly
+✓ IPFS content loaded (96 B)
+
+━━━ Add Complete ━━━
+
+Root CID: bafybeihkoviema7g3gxyt6la7vd5ho32ictqbilu3wnlo3rs7ewhnp7lly
+Piece CID: bafkzcibcfab4grpgq6e6rva4kfuxfcvibdzx3kn2jdw6q3zqgwt5cou7j6k4wfq
+Copies: 2/2
+
+Add completed successfully
+```
+{% endhint %}
+
+The **Root CID** is your IPFS Content Identifier - it's how you'll retrieve your data. Save it somewhere.
+
+You can also pin a directory by passing the directory path instead of a file:
+
+```sh
+mkdir my-data
+echo "File 1" > my-data/file1.txt
+echo "File 2" > my-data/file2.txt
+filecoin-pin add my-data/
+```
+
+***
+
+## 🌐 Retrieve your file
+
+Your file is now retrievable via standard IPFS tooling using its Root CID. For example:
+
+```text
+https://.ipfs.inbrowser.link
+```
+
+Or via the dweb.link gateway:
+
+```text
+https://dweb.link/ipfs/
+```
+
+Try opening one of those URLs in your browser - your file should load.
+
+You can also retrieve it programmatically using any IPFS-compatible client (Kubo, Helia, Lassie, etc.) by referencing the Root CID.
+
+***
+
+## 🛡️ Inspect your storage proofs
+
+Filecoin storage providers must cryptographically prove daily that they continue to store your data. You can inspect those proofs and the on-chain payment rails at any time.
+
+List the data sets associated with your wallet:
+
+```sh
+filecoin-pin data-set list
+```
+
+Then get the full on-chain detail for a specific data set:
+
+```sh
+filecoin-pin data-set show
+```
+
+This queries the smart contracts directly, so the values are live blockchain state.
+
+{% hint style="success" %}
+You'll see something like:
+
+```
+Data Set #279 • live
+ Managed by Warm Storage: yes
+ Pieces stored: 2
+ Total size: 672.0 B
+ PDP rail ID: 631
+ Payer: 0xYOUR_WALLET_ADDRESS
+ Payee: 0xPROVIDER_ADDRESS
+
+Provider
+ Provider: (ID )
+
+Provider Service
+ Service URL: https://
+ Min proving period: 30 epochs
+
+Pieces
+ #0
+ CommP: bafkzcib...
+ Root CID: bafybei...
+```
+{% endhint %}
+
+Key things to look for:
+
+* **Status: `live`** - your data set is active and being proved.
+* **PDP rail ID** - your active storage-proof payment rail.
+* **Min proving period** - how often the provider must submit a fresh proof.
+* **Provider Service URL** - direct retrieval endpoint for your pieces.
+* **CommP / Root CID** per piece - the piece CID is what the provider proves; the Root CID is what you use to retrieve.
+
+***
+
+## 🎉 You're Done!
+
+You've successfully pinned your first file to Filecoin. You now have:
+
+* ✅ The Filecoin Pin CLI installed and configured
+* ✅ Your wallet connected with funded payments on Filecoin Pay
+* ✅ Files pinned to two Filecoin storage providers with daily cryptographic proofs
+* ✅ Your content retrievable via standard IPFS gateways
+
+***
+
+## 🔜 Next Steps
+
+* 📖 Run `filecoin-pin --help` to explore advanced usage, including auto-funding and custom provider selection.
+* 🔍 Want to understand what's happening behind the scenes? Read [Behind the Scenes of Adding a File](https://github.com/filecoin-project/filecoin-pin/blob/master/documentation/behind-the-scenes-of-adding-a-file.md) for a deep dive into each step.
+* 🤖 Automate pinning in your CI/CD pipeline with the [Filecoin Pin GitHub Action](github-action.md).
+* 💬 Join the community in Filecoin Slack [#fil-foc](https://filecoinproject.slack.com/archives/C07CGTXHHT4) for help, discussion, and updates.
+* 🐛 Found a bug or have a feature request? [Open an issue](https://github.com/filecoin-project/filecoin-pin/issues) on GitHub.
diff --git a/builder-cookbook/filecoin-pin/github-action.md b/build/cookbook/filecoin-pin/github-action.md
similarity index 94%
rename from builder-cookbook/filecoin-pin/github-action.md
rename to build/cookbook/filecoin-pin/github-action.md
index 2cc789c62..62ed4f29b 100644
--- a/builder-cookbook/filecoin-pin/github-action.md
+++ b/build/cookbook/filecoin-pin/github-action.md
@@ -12,8 +12,6 @@ The example filecoin-pin upload action itself has a [usage example](https://gith
Below is also a video walkthrough of the example GitHub Action in use!
-{% embed url="https://www.youtube.com/embed/_2ZsMYXfgwI?si=VYkZzA1XhJh3wvgw" %}
+{% embed url="" %}
Note: there is more work coming soon to add "filecoin-pin functionality" directly to the robust [ipshipyard/ipfs-deploy-action](https://github.com/ipshipyard/ipfs-deploy-action) ([tracking issue](https://github.com/ipshipyard/ipfs-deploy-action/issues/39)).
-
-
diff --git a/build/cookbook/retrieve-data.md b/build/cookbook/retrieve-data.md
new file mode 100644
index 000000000..821c44999
--- /dev/null
+++ b/build/cookbook/retrieve-data.md
@@ -0,0 +1,59 @@
+---
+description: >-
+ Reference-only guide to official retrieval resources for accessing data stored
+ on Filecoin.
+---
+
+# Retrieve Data
+
+### Retrieve data using retrieval clients
+
+To retrieve data stored on the Filecoin network, the basic process involves making retrieval requests to storage providers or IPFS peers using the root Content ID (CID) for the data.
+
+Filecoin retrieval clients handle provider discovery and transport selection behind the scenes. Provide the root CID, and the client returns the data through a command-line interface or a library integration.
+
+#### **Ingredients**
+
+With a given CID, you can use the following maintained retrieval tooling:
+
+* [Lassie](https://github.com/filecoin-project/lassie): retrieves IPFS and Filecoin content over the best available protocols.
+* [go-car](https://github.com/ipld/go-car): reads, lists, and extracts content-addressed archive (CAR) files.
+
+#### **Instructions**
+
+**Retrieving content with Lassie**
+
+Install the current Lassie and go-car command-line tools. Make sure [Go](https://go.dev/doc/install) is installed and that your Go binary directory is on your `PATH`, or download the latest binaries from the [Lassie releases](https://github.com/filecoin-project/lassie/releases/latest) and [go-car releases](https://github.com/ipld/go-car/releases/latest):
+
+```sh
+go install github.com/filecoin-project/lassie/cmd/lassie@latest
+go install github.com/ipld/go-car/cmd/car@latest
+```
+
+Lassie fetches content in CAR form. Stream the CAR to go-car when you want to extract the UnixFS files immediately:
+
+```sh
+lassie fetch -o - | car extract -
+```
+
+To save the CAR for later inspection or extraction:
+
+```sh
+lassie fetch -p -o .car
+car ls -f .car
+car extract -f .car
+```
+
+For example:
+
+```sh
+lassie fetch -o - bafybeic56z3yccnla3cutmvqsn5zy3g24muupcsjtoyp3pu5pm5amurjx4 | car extract -
+```
+
+For library integrations, use the current [Lassie Go library documentation](https://github.com/filecoin-project/lassie?tab=readme-ov-file#golang-library) instead of copying an example from this reference page.
+
+For quick retrieval of existing datasets with the methods above, check out the [Filecoin Dataset Explorer](https://datasets.filecoin.io/).
+
+* [Filecoin Dataset Explorer](https://datasets.filecoin.io/)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/cookbook/retrieve-data)
diff --git a/build/cookbook/store-data.md b/build/cookbook/store-data.md
new file mode 100644
index 000000000..a7377a051
--- /dev/null
+++ b/build/cookbook/store-data.md
@@ -0,0 +1,63 @@
+---
+description: >-
+ Reference-only guide to official storage onboarding resources for Filecoin
+ data storage workflows.
+---
+
+# Store Data
+
+{% hint style="info" %}
+This page is reference-only.
+
+We do not maintain step-by-step third-party storage tutorials in Builder Cookbook.
+Use the official resources below for implementation details.
+{% endhint %}
+
+### Prepare data for Filecoin storage
+
+Use these resources to prepare CAR artifacts and storage inputs:
+
+* [Lighthouse documentation](https://docs.lighthouse.storage/)
+* [go-car command-line tooling](https://github.com/ipld/go-car)
+* [IPLD CAR specification and JavaScript libraries](https://github.com/ipld/js-car)
+* [IPFS Desktop / Kubo docs](https://docs.ipfs.tech/)
+
+Recommended outputs before proposing storage workflows:
+
+* Piece CID / Payload CID
+* CAR size and piece size
+* A durable retrieval URL or CID
+
+### Store large data with Filecoin Onchain Cloud
+
+Use the FOC stack for programmatic, verifiable storage at scale:
+
+* [Filecoin Onchain Cloud overview](../filecoin-onchain-cloud/README.md)
+* [FOC quickstart and Synapse docs](../filecoin-onchain-cloud/synapse-quickstart.md)
+* [FOC developer guides](https://docs.filecoin.cloud/developer-guides)
+* [PDP documentation](../../storage-providers/pdp/README.md)
+
+### Store small data with storage onramps
+
+For smaller datasets and managed ingestion paths:
+
+* [Storage onramps overview](../../getting-started/how-storage-works/storage-onramps.md)
+* [Filecoin Pin getting started](filecoin-pin/getting-started.md)
+* [Lighthouse documentation](https://docs.lighthouse.storage/)
+
+### Monitor storage deal status from a smart contract
+
+For actor-level deal status lookups and contract integration references:
+
+* [Built-in actors overview](../../reference/built-in-actors/README.md)
+* [Protocol API reference](../../reference/built-in-actors/protocol-api.md)
+* [Filecoin.sol reference](../../reference/built-in-actors/filecoin.sol.md)
+
+### Incentivized data storage
+
+For incentive design and onboarding programs:
+
+* [Filecoin Data Onboarding](https://dataonboarding.filecoin.io/)
+* [Filecoin storage market basics](../../getting-started/what-is-filecoin/storage-market.md)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/cookbook/store-data)
diff --git a/build/developing-contracts/README.md b/build/developing-contracts/README.md
new file mode 100644
index 000000000..d9e85c4f4
--- /dev/null
+++ b/build/developing-contracts/README.md
@@ -0,0 +1,20 @@
+---
+description: >-
+ Write, deploy, and test smart contracts on the Filecoin Virtual Machine.
+---
+
+# Developing contracts
+
+This section covers how to build dApps by writing smart contracts on the Filecoin Virtual Machine.
+
+## Table of contents
+
+* [Get test tokens](get-test-tokens.md) — obtain tFIL from a faucet for testing on Calibration
+* [ERC-20 quickstart](erc-20-quickstart.md) — deploy your first ERC-20 token on Filecoin
+* [Call built-in actors](call-built-in-actors.md) — interact with Filecoin system actors from your contracts
+* [Filecoin.sol](filecoin.sol.md) — Solidity libraries for accessing Filecoin storage primitives
+* [Solidity libraries](solidity-libraries.md) — third-party contract templates and libraries
+* [Best practices](best-practices.md) — guidelines for building reliable FVM dApps
+* [Support](support.md) — where to get help with contract development
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts)
diff --git a/smart-contracts/developing-contracts/best-practices.md b/build/developing-contracts/best-practices.md
similarity index 83%
rename from smart-contracts/developing-contracts/best-practices.md
rename to build/developing-contracts/best-practices.md
index c9d6bf2c8..8510685c7 100644
--- a/smart-contracts/developing-contracts/best-practices.md
+++ b/build/developing-contracts/best-practices.md
@@ -12,7 +12,7 @@ Best practices for transactions are described below.
### Consistently generating transaction receipts
-Since receipts in Filecoin are generated in the next tipset, depending on when a transaction is submitted to the mempool, the receipt may take between 30 and 90 seconds to return. To consistently return transaction receipts when deploying a transaction or awaiting confirmation, change the default transaction receipt timeout (60000 ms or 1 minute for many toolchains) to 90 seconds or more. An example that sets `timeout` to `180000` (3 minutes) for an Open Zeppelin upgradeable proxy is as follows:
+Since receipts in Filecoin are generated in the next tipset, depending on when a transaction is submitted to the mempool, the receipt may take between 30 and 90 seconds to return. To consistently return transaction receipts when deploying a transaction or awaiting confirmation, change the default transaction receipt timeout (60000 ms or 1 minute for many toolchains) to 90 seconds or more. In a Hardhat script that already defines `upgrades`, `contract`, and `preparedArguments`, the relevant option for an OpenZeppelin upgradeable proxy is:
```js
const deployment = await upgrades.deployProxy(contract, preparedArguments, {
@@ -52,7 +52,7 @@ Developers should take the time to thoroughly read through the following summary
* **All contracts** must [accept both `DAG_CBOR (0x71)` and `CBOR (0x51)` in inputs and treat them identically, and use `CBOR (0x51)` in outputs](best-practices.md#accept-both-dag\_cbor-0x71-and-cbor-0x51-in-inputs-and-treat-them-identically).
* If a contract uses the FRC42 hash of `GranularityExported`, it must be updated and redeployed.
* If a contract sends funds to actors that are non-native, Ethereum, or EVM smart contract accounts, it [must use the `call_actor` precompile](best-practices.md#contracts-sending-funds-to-specific-actors).
-* If a contract is interacting with built-in actors, it must upgrade to the latest version of Filecoin Solidity library, currently `v0.8`.
+* If a contract is interacting with built-in actors, it must use the maintained `filecoin-solidity-api` package and the current `contracts/v0.8` imports.
### All contracts
@@ -82,7 +82,7 @@ Any contracts sending funds to actors that are not native accounts (`f1` or `f3`
### Contracts interacting with built-in actors
-All contracts interacting with built-in actors must upgrade to the [latest version of Filecoin Solidity library, currently `v0.8`](https://github.com/filecoin-project/filecoin-solidity/tree/master/contracts/v0.8). The IPLD codec used in the `handle_filecoin_method` solidity entrypoint and the `call_actor` should now be `CBOR (0x51)`, not `DAG_CBOR (0x71)`, as previously used. The underlying encoding (i.e. the payload bytes) are the same, but the codec numbers are now different. `DAG_CBOR` support will be re-enabled in the future but the usage of the codec implies additional runtime guarantees that have not yet been implemented.
+All contracts interacting with built-in actors must use the maintained [`filecoin-solidity-api` package and its `contracts/v0.8` imports](https://github.com/filecoin-project/filecoin-solidity/tree/master/contracts/v0.8). The IPLD codec used in the `handle_filecoin_method` solidity entrypoint and the `call_actor` should now be `CBOR (0x51)`, not `DAG_CBOR (0x71)`, as previously used. The underlying encoding (i.e. the payload bytes) are the same, but the codec numbers are now different. `DAG_CBOR` support will be re-enabled in the future but the usage of the codec implies additional runtime guarantees that have not yet been implemented.
## Contract Verification
@@ -95,8 +95,8 @@ Developers can easily do so through the following block explorers:
* [Filfox contract verifier](https://filfox.info/en/contract/)
* [Beryx contract verifier](https://beryx.zondax.ch/contract\_verifier)
-You can find this tutorial in the [FEVM ERC-20 Quickstart](../fundamentals/erc-20-quickstart.md).
+You can find this tutorial in the [FEVM ERC-20 Quickstart](./erc-20-quickstart.md).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/best-practices)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/best-practices)
diff --git a/smart-contracts/developing-contracts/call-built-in-actors.md b/build/developing-contracts/call-built-in-actors.md
similarity index 80%
rename from smart-contracts/developing-contracts/call-built-in-actors.md
rename to build/developing-contracts/call-built-in-actors.md
index 428893952..7f5940815 100644
--- a/smart-contracts/developing-contracts/call-built-in-actors.md
+++ b/build/developing-contracts/call-built-in-actors.md
@@ -9,7 +9,7 @@ description: >-
For conceptual information on built-in actors, including their purposes, how they work and available types, see the [conceptual guide](../../reference/built-in-actors/)
{% endhint %}
-Built-in actors can be invoked using the Protocol _JSON-RPC_ API or the Zondax _filecoin.sol_ API.
+Built-in actors can be invoked using the Protocol _JSON-RPC_ API or the Filecoin.sol API.
## APIs compared
@@ -22,13 +22,13 @@ The Protocol _JSON-RPC_ API:
* Requires authentication for some API calls.
* Serves as the foundation for language-specific libraries (some of which are maintained by organizations other than PL) such as [filecoin.js](https://filecoin-shipyard.github.io/filecoin.js/).
-The Zondax _filecoin.sol_ API:
+The Filecoin.sol API:
* Supports [_some but not all_ of the built-in actors and their methods](call-built-in-actors.md#available-actors-and-methods).
## Protocol API
-Smart contracts can directly access built-in actors and methods using the Protocol API. Links to the reference guides for each of the available actor methods is listed below:
+Applications and off-chain services can access built-in actors and methods using the Filecoin JSON-RPC API exposed by nodes such as Lotus. Smart contracts should use Filecoin.sol or the actor precompiles instead. Links to the reference guides for each of the available actor methods are listed below:
* [Account actor](call-built-in-actors.md#account)
* [Datacap](call-built-in-actors.md#datacap)
@@ -40,13 +40,13 @@ Smart contracts can directly access built-in actors and methods using the Protoc
## Filecoin.sol
-Smart contracts can access built-in actor methods with the `filecoin.sol` library, a set of Solidity libraries that allow Solidity smart contracts to seamlessly call methods of Filecoin built-in actors. The `filecoin.sol` library supports cross-platform calls to real Filecoin built-in actors. This section contains information on the actors and methods available from `filecoin.sol`, along with installation instructions and working examples of smart contracts that call built-in actor methods.
+Smart contracts can access built-in actor methods with the `filecoin.sol` library, a set of Solidity libraries that allow Solidity smart contracts to call methods of Filecoin built-in actors. The maintained npm package is `filecoin-solidity-api`, and its current import paths use `contracts/v0.8`. This section contains information on the actors and methods available from `filecoin.sol`, along with installation instructions and references for examples of smart contracts that call built-in actor methods.
To invoke built-in actor methods using `filecoin.sol`, follow these steps:
-1. Review the [available actors and methods](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/#available-actors-and-methods).
-2. [Import `filecoin.sol`](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/#import-filecoinsol).
-3. [Call a built-in actor](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/#call-a-built-in-actor).
+1. Review the [available actors and methods](#available-actors-and-methods).
+2. [Import `filecoin.sol`](#import-filecoinsol).
+3. [Call a built-in actor](#call-a-built-in-actor).
### Available actors and methods
@@ -211,47 +211,46 @@ The majority of the Account, DataCap, Storage Market, Miner, Storage Owner and V
### Import filecoin.sol
-The `filecoin.sol` library is embeddable into your smart contract, which means it does not need be present on chain first. Instead, you can just import the library and call the available methods. The `filecoin.sol` library can be [added via `npm`](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/#import-filecoinsol-with-npm) or [manually imported](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/#import-filecoinsol-manually) into your contract. The `npm`-based import is simpler, and is recommended.
+The `filecoin.sol` library is embeddable into your smart contract, which means it does not need be present on chain first. Instead, you can just import the library and call the available methods. The `filecoin.sol` library can be [added via `npm`](#import-filecoinsol-with-npm) or [manually imported](#import-filecoinsol-manually) into your contract. The `npm`-based import is simpler, and is recommended.
#### **Import filecoin.sol with npm**
-1. Install [yarn](https://yarnpkg.com/) if you don’t have it installed.
-2. Install `filecoin.sol`:
+1. Install the Filecoin Solidity API package:
```shell
-yarn add @zondax/filecoin.sol
+npm install filecoin-solidity-api
```
{% hint style="info" %}
-Until mid-2023, Zondax was the legacy maintainer of Filecoin.sol. Protocol Labs took over the project, and are in the process of moving NPM packages over to the `protocollabs` NPM account.
+Use the maintained `filecoin-solidity-api` package and import paths. Older examples may use legacy Zondax package names or repository paths; do not copy those into new projects.
{% endhint %}
#### **Import filecoin.sol manually**
1. Navigate to your smart contract project folder ``:
-```
+```shell
cd my-project
```
2. Create a folder named `libs`:
-```
+```shell
mkdir libs
```
3. Move into the `libs` directory:
-```
+```shell
cd libs
```
-4. Copy the Zondax contracts with the methods you wish to call from [the contracts folder](https://github.com/filecoin-project/filecoin-solidity/tree/master/contracts/v0.8) into `libs`.
+4. Copy the Filecoin Solidity API contracts with the methods you wish to call from [the contracts folder](https://github.com/filecoin-project/filecoin-solidity/tree/master/contracts/v0.8) into `libs`. Preserve the subdirectories such as `types`, `utils`, and `cbor`, because the actor API files import those dependencies.
### Call a built-in actor
-Once you’ve either imported particular contracts manually or simply installed `filecoin.sol` using npm, create a callable method to access the built-in actor methods the way you normally would in a Solidity smart contract. Working examples of smart contracts that call built-in actor methods are available in the [reference guide](call-built-in-actors.md#filecoin.sol).
+Once you’ve either imported particular contracts manually or installed `filecoin-solidity-api` using npm, create a callable method to access the built-in actor methods the way you normally would in a Solidity smart contract. See the [Filecoin.sol guide](filecoin.sol.md) for npm import examples and the [reference guide](../../reference/built-in-actors/filecoin.sol.md) for actor-specific method examples.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/call-built-in-actors)
diff --git a/smart-contracts/fundamentals/erc-20-quickstart.md b/build/developing-contracts/erc-20-quickstart.md
similarity index 93%
rename from smart-contracts/fundamentals/erc-20-quickstart.md
rename to build/developing-contracts/erc-20-quickstart.md
index 14d256387..df534ef85 100644
--- a/smart-contracts/fundamentals/erc-20-quickstart.md
+++ b/build/developing-contracts/erc-20-quickstart.md
@@ -9,7 +9,7 @@ description: >-
We’re going to install a browser-based wallet called MetaMask, create a new wallet address, supply some test currency to that wallet, and then use a browser-based development environment called Remix to deploy a smart contract to the Filecoin network. We’re going to be creating an ERC-20 token in this quickstart. The ERC-20 contract is used a lot in representing a massive array of tokens across multiple blockchains, primarily the Ethereum blockchain.
{% hint style="info" %}
-If you’re an Ethereum developer, check out the [FEVM Hardhat kit](../developing-contracts/hardhat.md).
+If you’re an Ethereum developer, check out the [FEVM Hardhat kit](../development-frameworks/hardhat.md).
{% endhint %}
## Accounts and assets
@@ -39,7 +39,7 @@ Before we can interact with the Filecoin network, we need funds. But before we c
### Switch networks
-You may notice that we are currently connected to the **Ethereum Mainnet**. We need to point MetaMask to the Filecoin network, specifically the [Calibration testnet](../../networks/calibration/). We’ll use a website called [chainlist.org](https://chainlist.org) to give MetaMask the information it needs quickly.
+You may notice that we are currently connected to the **Ethereum Mainnet**. We need to point MetaMask to the Filecoin network, specifically the [Calibration testnet](../../networks-and-tools/networks/calibration/). We’ll use a website called [chainlist.org](https://chainlist.org) to give MetaMask the information it needs quickly.
1. Go to chainlist.org.
2. Enable the **Testnets** toggle and enter `Filecoin` into the search bar.
@@ -57,18 +57,18 @@ You may notice that we are currently connected to the **Ethereum Mainnet**. We n

9. You should see the _Filecoin Calibration_ testnet listed at the top.
-Nice! Now we’ve got the Filecoin Calibration testnet set up within MetaMask. You’ll notice that our MetaMask window shows `0 TFIL`. Test-filecoin (`TFIL`) is `FIL` that has no value in the _real world_, and developers use it for testing. We’ll grab some `TFIL` next.
+Nice! Now we’ve got the Filecoin Calibration testnet set up within MetaMask. You’ll notice that our MetaMask window shows `0 tFIL`. Test-filecoin (`tFIL`) is `FIL` that has no value in the _real world_, and developers use it for testing. We’ll grab some `tFIL` next.
### Get some funds
1. In your browser, open MetaMask and copy your address to your clipboard:

-2. Go to faucet.calibration.chainsafe-fil.io and click **Send Funds.**
+2. Go to faucet.calibnet.chainsafe-fil.io and click **Send Funds.**
3. Paste your address into the address field, and click **Send Funds**.
-4. The faucet will show a transaction ID. You can copy this ID into a Calibration testnet [block explorer](../../networks/calibration/explorers.md) to view your transaction. After a couple of minutes, you should see some `tFIL` transferred to your address.
+4. The faucet will show a transaction ID. You can copy this ID into a Calibration testnet [block explorer](../../networks-and-tools/networks/calibration/explorers.md) to view your transaction. After a couple of minutes, you should see some `tFIL` transferred to your address.
-That’s all there is to it! Getting `tFil` is easy!
+That’s all there is to it! Getting `tFIL` is easy!
## Contract creation
@@ -206,8 +206,8 @@ Currently, MetaMask has no idea what our token is or what it even does. We can f
### Share your tokens
-Having a bunch of tokens in your personal MetaMask is nice, but why not send some tokens to a friend? Your friend needs to create a wallet in MetaMask as we did in the [Create a wallet](erc-20-quickstart.md#create-a-wallet) and [Switch networks](erc-20-quickstart.md#switch-networks) sections. They will also need to import your contract deployment address like you did in the [Add your tokens to MetaMask](../../basics/assets/metamask-setup.md) section. Remember, you need to pay gas for every transaction that you make! If your friend tries to send some of your tokens to someone else but can’t, it might be because they don’t have any `tFil`.
+Having a bunch of tokens in your personal MetaMask is nice, but why not send some tokens to a friend? Your friend needs to create a wallet in MetaMask as we did in the [Create a wallet](erc-20-quickstart.md#create-a-wallet) and [Switch networks](erc-20-quickstart.md#switch-networks) sections. They will also need to import your contract deployment address like you did in the [Add your tokens to MetaMask](../../networks-and-tools/assets/metamask-setup.md) section. Remember, you need to pay gas for every transaction that you make! If your friend tries to send some of your tokens to someone else but can’t, it might be because they don’t have any `tFIL`.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/erc-20-quickstart)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/erc-20-quickstart)
diff --git a/smart-contracts/developing-contracts/filecoin.sol.md b/build/developing-contracts/filecoin.sol.md
similarity index 50%
rename from smart-contracts/developing-contracts/filecoin.sol.md
rename to build/developing-contracts/filecoin.sol.md
index 80e57fefa..f7df592af 100644
--- a/smart-contracts/developing-contracts/filecoin.sol.md
+++ b/build/developing-contracts/filecoin.sol.md
@@ -10,7 +10,7 @@ The Filecoin Solidity library allows developers to:
* Interact with Filecoin built-in actors.
* Simplify the interaction with the Filecoin storage market, miner actors, the verified registry for Filecoin Plus automation, and more.
-* Filecoin-specific data types such as `FilAddress`, `FilActorID`, `CIDs`, storage deals, and more.
+* Use Filecoin-specific data types such as `FilAddress`, `FilActorId`, `Cid`, storage deals, and more.
* OpenZeppelin-like utilities specific to Filecoin.
* CBOR serialization and deserialization for parameters and return data.
@@ -20,28 +20,35 @@ Once the library is installed in your project, you can write Solidity code to ca
## Add to your contract
-Run the following command in your Solidity project, which is created using any smart contract development framework such as Hardhat, Truffle, or Foundry.
+Run the following command in your Solidity project, which is created using any smart contract development framework such as Hardhat or Foundry.
```shell
npm install filecoin-solidity-api
```
+## Works on
+
+Filecoin.sol calls Filecoin built-in actors from contracts deployed to Filecoin EVM networks. Use it on Filecoin mainnet or Calibration testnet with the current FVM actors and the Filecoin Solidity API package shown above. For local development, use a Filecoin EVM-compatible local network that exposes the same built-in actor precompiles.
+
## Usage
Once installed, you can call built-in actors in the library after importing them into your smart contract.
```solidity
-// contracts/MyNFT.sol
+// contracts/MyFilecoinContract.sol
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.13;
+pragma solidity ^0.8.18;
import { MarketAPI } from "filecoin-solidity-api/contracts/v0.8/MarketAPI.sol";
-import { CommonTypes } from "filecoin-solidity-api/contracts/v0.8/types/CommonTypes.sol";
import { MarketTypes } from "filecoin-solidity-api/contracts/v0.8/types/MarketTypes.sol";
-import { BigIntCBOR } from "filecoin-solidity-api/contracts/v0.8/cbor/BigIntCbor.sol";
+import { Errors } from "filecoin-solidity-api/contracts/v0.8/utils/Errors.sol";
contract MyFilecoinContract {
- ...
+ function getDealTerm(uint64 dealID) public view returns (MarketTypes.GetDealTermReturn memory) {
+ (int256 exitCode, MarketTypes.GetDealTermReturn memory result) = MarketAPI.getDealTerm(dealID);
+ Errors.revertOnError(exitCode);
+ return result;
+ }
}
```
@@ -51,21 +58,35 @@ You can find the list of supported built-in actors and methods in the [Filecoin.
* `MinerAPI.sol`: manages storage provider operation.
* `MarketAPI.sol`: manages storage deals on Filecoin.
* `PowerAPI.sol`: manages storage power for each storage provider and the whole network.
-* `DataCap.sol` and `VerifRegAPI.sol`: manages DataCap and verified clients for Filecoin Plus.
+* `DataCapAPI.sol` and `VerifRegAPI.sol`: manages DataCap and verified clients for Filecoin Plus.
Unlike OpenZeppelin contracts, you do not need to inherit contracts to use their features. With Filecoin.sol you just need to call the methods from those solidity contracts:
```solidity
-CommonTypes.FilActorId minerID = CommonTypes.FilActorId.wrap(1130);
-CommonTypes.BigInt memory returnData = MinerAPI.getVestingFunds(minerID);
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.18;
+
+import { MinerAPI } from "filecoin-solidity-api/contracts/v0.8/MinerAPI.sol";
+import { CommonTypes } from "filecoin-solidity-api/contracts/v0.8/types/CommonTypes.sol";
+import { MinerTypes } from "filecoin-solidity-api/contracts/v0.8/types/MinerTypes.sol";
+import { Errors } from "filecoin-solidity-api/contracts/v0.8/utils/Errors.sol";
+
+contract MinerQuery {
+ function getVestingFunds(uint64 minerActorID) public view returns (MinerTypes.VestingFunds[] memory) {
+ CommonTypes.FilActorId minerID = CommonTypes.FilActorId.wrap(minerActorID);
+ (int256 exitCode, MinerTypes.VestingFunds[] memory vestingFunds) = MinerAPI.getVestingFunds(minerID);
+ Errors.revertOnError(exitCode);
+ return vestingFunds;
+ }
+}
```
-Filecoin.sol also offers several utility libraries to help developers to convert data types for different variables, including FILAddress, BigIntegers, ActorID, and CBOR. You can import those libraries from the `utils` folder:
+Filecoin.sol also offers several utility libraries to help developers convert data types for different variables, including FIL addresses, big integers, actor IDs, and CBOR. Import only the utilities your contract uses. For example:
```solidity
-import "filecoin-solidity-api/contracts/v0.8/utils/Actor.sol";
-import "filecoin-solidity-api/contracts/v0.8/utils/BigInts.sol";
-import "filecoin-solidity-api/contracts/v0.8/utils/FilAddresses.sol";
+import { Actor } from "filecoin-solidity-api/contracts/v0.8/utils/Actor.sol";
+import { BigInts } from "filecoin-solidity-api/contracts/v0.8/utils/BigInts.sol";
+import { FilAddresses } from "filecoin-solidity-api/contracts/v0.8/utils/FilAddresses.sol";
```
## Example
@@ -74,29 +95,35 @@ We can write a simple Solidity smart contract to query basic information for a F
```solidity
// SPDX-License-Identifier: UNLICENSED
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "filecoin-solidity-api/contracts/v0.8/MarketAPI.sol";
+import "filecoin-solidity-api/contracts/v0.8/types/CommonTypes.sol";
import "filecoin-solidity-api/contracts/v0.8/types/MarketTypes.sol";
-import "hardhat/console.sol";
+import "filecoin-solidity-api/contracts/v0.8/utils/Errors.sol";
contract StorageDealQuery {
- // Query the start epoch and duration(in epochs) of a deal proposal.
- function get_deal_term(uint64 dealID) public returns (MarketTypes.GetDealTermReturn memory) {
- return MarketAPI.getDealTerm(dealID);
+ // Query the start epoch and duration, in epochs, of a deal proposal.
+ function get_deal_term(uint64 dealID) public view returns (MarketTypes.GetDealTermReturn memory) {
+ (int256 exitCode, MarketTypes.GetDealTermReturn memory result) = MarketAPI.getDealTerm(dealID);
+ Errors.revertOnError(exitCode);
+ return result;
}
- // Query the storage provider who stores the date for this deal.
- function get_deal_provider(uint64 dealID) public returns (uint64) {
- return MarketAPI.getDealProvider(dealID);
+ // Query the storage provider who stores the data for this deal.
+ function get_deal_provider(uint64 dealID) public view returns (uint64) {
+ (int256 exitCode, uint64 result) = MarketAPI.getDealProvider(dealID);
+ Errors.revertOnError(exitCode);
+ return result;
}
// Query the collateral required from the storage provider for this deal proposal.
- function get_deal_provider_collateral(uint64 dealID) public returns (CommonTypes.BigInt memory) {
- return MarketAPI.getDealProviderCollateral(dealID);
+ function get_deal_provider_collateral(uint64 dealID) public view returns (CommonTypes.BigInt memory) {
+ (int256 exitCode, CommonTypes.BigInt memory result) = MarketAPI.getDealProviderCollateral(dealID);
+ Errors.revertOnError(exitCode);
+ return result;
}
-
}
```
@@ -106,8 +133,8 @@ Check out these links to learn more about the Filecoin.sol library.
* [Filecoin-Solidity GitHub](https://github.com/filecoin-project/filecoin-solidity)
* [Built-In Actor APIs](../../reference/built-in-actors/filecoin.sol.md)
-* [FEVM-Hardhat-K](https://github.com/filecoin-project/FEVM-Hardhat-Kit/)
+* [FEVM Hardhat Kit](https://github.com/filecoin-project/fevm-hardhat-kit/)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/filecoin.sol)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/filecoin.sol)
diff --git a/build/developing-contracts/get-test-tokens.md b/build/developing-contracts/get-test-tokens.md
new file mode 100644
index 000000000..f1ddfc10a
--- /dev/null
+++ b/build/developing-contracts/get-test-tokens.md
@@ -0,0 +1,66 @@
+---
+description: >-
+ Test funds are available to developers so that they can test their smart
+ contracts and applications within the confines of a test network. This page
+ covers how to get test funds.
+---
+
+# Get test tokens
+
+## Calibration testnet
+
+MetaMask is one of the easier ways to manage addresses on the Calibration testnet. MetaMask displays Filecoin EVM accounts in Ethereum `0x` format; on Filecoin testnets those accounts map to delegated `t4` [addresses](../../core-concepts/filecoin-evm-runtime/address-types.md). Follow the [MetaMask setup guide](../../networks-and-tools/assets/metamask-setup.md) if you haven’t set up an address in your MetaMask wallet yet.
+
+1. In your browser, open MetaMask and copy your address to your clipboard.
+2. Go to [faucet.calibnet.chainsafe-fil.io](https://faucet.calibnet.chainsafe-fil.io/funds.html) and click **Send Funds**.
+3. Paste your address into the address field and click **Send funds**:
+
+ 
+4. The webpage will give you a transaction ID:
+
+ 
+5. You can copy this ID into a block explorer to track the progress of your transaction:
+
+ 
+
+That’s all there is to it! Getting `tFIL` is easy!
+
+## Local testnet
+
+Before we begin, you must have a local testnet running. Follow the [Run a local network guide](../../networks-and-tools/networks/local-testnet/README.md) if you haven’t got a local testnet set up yet. Run the commands below from the directory that contains your local `lotus` binary, and replace the placeholder addresses with addresses from your local node.
+
+1. Change directory to where you created the `lotus` and `lotus-miner` binaries. If you followed the [Run a local network guide](../../networks-and-tools/networks/local-testnet/README.md) these binaries will be in `~/lotus-devnet`:
+
+```shell
+cd ~/lotus-devnet
+```
+
+2. View the wallets available on this node with `lotus wallet list`:
+
+```shell
+./lotus wallet list
+```
+
+3. Create the send request with `lotus send`, supplying a funded local wallet as the `--from` address, the receiving address, and the amount of FIL you want to send:
+
+```shell
+./lotus send --from
+```
+
+To create a delegated address for local Filecoin EVM testing, run:
+
+```shell
+./lotus wallet new delegated
+```
+
+4. Check the balance of your receiving address with `lotus wallet balance`:
+
+```shell
+./lotus wallet balance
+```
+
+If you want to manage your local testnet tokens in MetaMask, use a delegated address and [connect MetaMask to your local testnet](../../networks-and-tools/assets/metamask-setup.md) to see the new balance within the MetaMask extension.
+
+
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/get-test-tokens)
diff --git a/smart-contracts/developing-contracts/solidity-libraries.md b/build/developing-contracts/solidity-libraries.md
similarity index 65%
rename from smart-contracts/developing-contracts/solidity-libraries.md
rename to build/developing-contracts/solidity-libraries.md
index ea35c8d0e..60ecf3384 100644
--- a/smart-contracts/developing-contracts/solidity-libraries.md
+++ b/build/developing-contracts/solidity-libraries.md
@@ -8,7 +8,7 @@ description: >-
## OpenZeppelin
-[OpenZeppelin](https://www.openzeppelin.com/contracts) provides a library of battle-tested smart contract templates, including widely used implementations of ERC token standards. For a guided example that implements an ERC20 token on the Filecoin network, see [Example using an ERC20 contract](../fundamentals/erc-20-quickstart.md).
+[OpenZeppelin](https://www.openzeppelin.com/contracts) provides a library of battle-tested smart contract templates, including widely used implementations of ERC token standards. For a guided example that implements an ERC20 token on the Filecoin network, see [Example using an ERC20 contract](./erc-20-quickstart.md).
### Benefits
@@ -16,14 +16,14 @@ OpenZeppelin offers the following to smart contract developers:
* Implementations of standards like ERC20, ERC721, and ERC1155.
* Flexible access control schemes like `Ownable`, `AccessControl`, and `onlyRole`.
-* Useful and secure utilities for signature verification, `SafeMath`, etc..
+* Useful and secure utilities for signature verification, math, strings, and cryptography.
-Token standards, such as [ERC20](https://docs.openzeppelin.com/contracts/4.x/erc20), are the most widely used smart contract libraries from OpenZeppelin. These contracts, listed below, implement both _fungible_ and _non-fungible_ tokens:
+Token standards, such as [ERC20](https://docs.openzeppelin.com/contracts/5.x/erc20), are the most widely used smart contract libraries from OpenZeppelin. These contracts, listed below, implement both _fungible_ and _non-fungible_ tokens:
-* [ERC20](https://docs.openzeppelin.com/contracts/4.x/erc20) is the simplest and most widespread token standard for fungible assets.
-* [ERC721](https://docs.openzeppelin.com/contracts/4.x/erc721) is the standard solution for non-fungible tokens and is often used for collectibles and games.
-* [ERC777](https://docs.openzeppelin.com/contracts/4.x/erc777) provides a richer standard for fungible tokens, supporting new use cases and backwards compatibility with ERC20.
-* [ERC1155](https://docs.openzeppelin.com/contracts/4.x/erc1155) is a new standard for _multi-tokens_, where a single contract represents multiple fungible and non-fungible tokens, and operations are batched for increased gas efficiency.
+* [ERC20](https://docs.openzeppelin.com/contracts/5.x/erc20) is the simplest and most widespread token standard for fungible assets.
+* [ERC721](https://docs.openzeppelin.com/contracts/5.x/erc721) is the standard solution for non-fungible tokens and is often used for collectibles and games.
+* [ERC1155](https://docs.openzeppelin.com/contracts/5.x/erc1155) is a multi-token standard where a single contract represents multiple fungible and non-fungible tokens, and operations are batched for increased gas efficiency.
+* [ERC6909](https://docs.openzeppelin.com/contracts/5.x/erc6909) is a compact multi-token standard for managing several token IDs in one contract.
### Using OpenZeppelin with FVM
@@ -31,18 +31,18 @@ The _general_ procedure for using OpenZeppelin with FVM is as follows:
1. Install OpenZeppelin. For example, using `npm`:
-```
+```shell
npm install @openzeppelin/contracts
```
2. Import the specific library you want to use.
3. In your smart contract, inherit the library.
-Thanks to the FVM, your contract can be integrated and deployed on the Filecoin network with OpenZeppelin inheritance. For a guided example that implements an ERC20 token on the Filecoin network, see [Example using an ERC20 contract](../fundamentals/erc-20-quickstart.md).
+Thanks to the FVM, your contract can be integrated and deployed on the Filecoin network with OpenZeppelin inheritance. For a guided example that implements an ERC20 token on the Filecoin network, see [Example using an ERC20 contract](./erc-20-quickstart.md).
### Example using an ERC-20 contract
-In the following tutorial, you’ll write and deploy a smart contract that implements the [ERC-20](https://docs.openzeppelin.com/contracts/4.x/erc20) on the Calibration testnet using Remix and MetaMask:
+In the following tutorial, you’ll write and deploy a smart contract that implements the [ERC-20](https://docs.openzeppelin.com/contracts/5.x/erc20) on the Calibration testnet using Remix and MetaMask:
**Prerequisites**
@@ -50,31 +50,34 @@ Let’s take an ERC20 contract as an example to write and deploy it on the Calib
* Remix.
* MetaMask.
-* [MetaMask connected to the Calibration testnet](../../networks/calibration/).
-* Test tokens (tFIL) [from the faucet](https://faucet.calibnet.chainsafe-fil.io).
+* [MetaMask connected to the Calibration testnet](../../networks-and-tools/networks/calibration/).
+* Test tokens (tFIL) [from the faucet](https://faucet.calibnet.chainsafe-fil.io/funds.html).
**Procedure**
-In this procedure, you will create, deploy, mint and send an [ERC20](https://docs.openzeppelin.com/contracts/4.x/erc20) token on Calibration using Remix and MetaMask.
+In this procedure, you will create, deploy, mint and send an [ERC20](https://docs.openzeppelin.com/contracts/5.x/erc20) token on Calibration using Remix and MetaMask.
1. Navigate to [remix.ethereum.org](https://remix.ethereum.org/).
2. Next to **Workspaces**, click the **+** icon to create a new workspace.
-3. In the **Choose a template** dropdown, select **ERC20** along with the **Mintable** checkbox
+3. In the **Choose a template** dropdown, select **Blank**.
4. Click **OK**.
-5. In the **contract** directory, open **MyToken.sol**.
-6. Set the token `` and ``:
+5. In the **contracts** directory, create a file named **MyToken.sol**.
+6. Paste the following contract:
```solidity
-// contracts/GLDToken.sol
+// contracts/MyToken.sol
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
-import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+contract MyToken is ERC20, Ownable {
+ constructor(address initialOwner) ERC20("Calibration Gold", "CGLD") Ownable(initialOwner) {}
-contract MyToken is ERC20 {
- constructor(uint256 initialSupply) ERC20(, ) {
- _mint(msg.sender, initialSupply);
- }
+ function mint(address to, uint256 amount) public onlyOwner {
+ _mint(to, amount);
+ }
}
```
@@ -83,11 +86,11 @@ contract MyToken is ERC20 {
9. Once the contract compiles, open the **Deploy** tab on the left.
10. Under the **Environment** dropdown, select **Injected Provider - MetaMask**.
11. In the MetaMask popup window, select **Confirmed connection**.
-12. Click **Deploy**, and confirm the transaction on MetaMask. Your token contract will be deployed to the Calibration testnet once the network confirms the transaction.
+12. Set `initialOwner` to your wallet address, click **Deploy**, and confirm the transaction on MetaMask. Your token contract will be deployed to the Calibration testnet once the network confirms the transaction.
13. In Remix, open the **Deployed Contracts** dropdown.
14. In the `mint` method, set:
* `to` to your wallet address.
- * `amount` to `1000000000000000000` (1 `FIL`).
+ * `amount` to `1000000000000000000` (1 token with 18 decimals).
15. Click **Transact**.
16. In MetaMask, confirm the transaction.
@@ -98,7 +101,7 @@ Once the network processes the transaction, the token is minted and sent to your
Learn more about OpenZeppelin with the following resources:
* [OpenZeppelin Contracts website](https://www.openzeppelin.com/contracts)
-* [Documentation](https://docs.openzeppelin.com/contracts/4.x/)
+* [Documentation](https://docs.openzeppelin.com/contracts/5.x/)
* [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
## DappSys
@@ -112,9 +115,9 @@ The DappSys library provides safe, simple, and flexible Ethereum contract buildi
The 0x protocol library provides a set of secure smart contracts that facilitate peer-to-peer exchange of Ethereum-based assets.
-* [Documentation](https://docs.0x.org/introduction/introduction-to-0x)
+* [Documentation](https://0x.org/docs/introduction/0x-cheat-sheet)
* [GitHub](https://github.com/0xProject)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/solidity-libraries)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/solidity-libraries)
diff --git a/smart-contracts/fundamentals/support.md b/build/developing-contracts/support.md
similarity index 80%
rename from smart-contracts/fundamentals/support.md
rename to build/developing-contracts/support.md
index 8319aec4c..00409721e 100644
--- a/smart-contracts/fundamentals/support.md
+++ b/build/developing-contracts/support.md
@@ -8,7 +8,7 @@ description: >-
## Slack
-Like many other distributed teams, the Filecoin developer relations, lead by the [FIL Builders](https://fil.builders/) team, works mostly on Slack and Discord. You can join the Filecoin Project Slack for free by going to [`filecoin.io/slack`](https://filecoin.io/slack) and the Discord by going to [https://discord.com/invite/filecoin](https://discord.com/invite/filecoin).
+Like many other distributed teams, the Filecoin developer relations, led by the [FIL Builders](https://fil.builders/) team, works mostly on Slack and Discord. You can access the Filecoin Project Slack at [Filecoin Project Slack](https://filecoinproject.slack.com/ssb/redirect) and join the Discord at [https://discord.com/invite/filecoin](https://discord.com/invite/filecoin).
The following Slack channels are most relevant for Filecoin builders:
@@ -26,4 +26,4 @@ The [Filecoin Grant Platform](https://github.com/filecoin-project/devgrants) con
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/support)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/developing-contracts/support)
diff --git a/build/development-frameworks/README.md b/build/development-frameworks/README.md
new file mode 100644
index 000000000..61c0dfc18
--- /dev/null
+++ b/build/development-frameworks/README.md
@@ -0,0 +1,14 @@
+---
+description: >-
+ Supported development frameworks for building and deploying smart contracts on Filecoin.
+---
+
+# Development frameworks
+
+Filecoin supports popular Ethereum development frameworks for writing, testing, and deploying smart contracts. Choose the framework that fits your workflow.
+
+## Table of contents
+
+* [Remix](remix.md) — browser-based IDE for writing and deploying contracts without local setup
+* [Hardhat](hardhat.md) — JavaScript framework with the FEVM Hardhat Kit for local development and testing
+* [Foundry](foundry.md) — fast Rust-based toolkit for contract development, testing, and deployment
diff --git a/build/development-frameworks/foundry.md b/build/development-frameworks/foundry.md
new file mode 100644
index 000000000..11b77a778
--- /dev/null
+++ b/build/development-frameworks/foundry.md
@@ -0,0 +1,79 @@
+---
+description: >-
+ Foundry is a fast toolkit for application development written in Rust equipped
+ with a testing framework, as well as utilities for interacting with smart
+ contracts and getting chain data.
+---
+
+# Foundry
+
+The [FEVM Foundry Kit](https://github.com/filecoin-project/fevm-foundry-kit) is a Foundry template for Filecoin EVM projects. It includes Solidity examples, Filecoin API examples, Foundry remappings, and verification tooling for Filecoin explorers.
+
+## Prerequisites
+
+You must have the following installed:
+
+- [Git](https://git-scm.com/)
+- [Node.js](https://nodejs.org/) and npm
+- [Foundry](https://getfoundry.sh/)
+
+You should also have an address on the Filecoin Calibration testnet. See the [MetaMask setup page](../../networks-and-tools/assets/metamask-setup.md) for information on how to get an address. You also need test `tFIL` in your wallet.
+
+## Steps
+
+1. Clone the `filecoin-project/fevm-foundry-kit` repository and move into the `fevm-foundry-kit` directory:
+
+```shell
+git clone https://github.com/filecoin-project/fevm-foundry-kit
+cd fevm-foundry-kit
+```
+
+2. Build the contracts and install the project’s npm dependencies:
+
+```shell
+forge build
+npm install
+```
+
+3. Export your private key from MetaMask. See the [MetaMask documentation](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) to find out how to export your private key.
+
+4. Create your env file by running:
+
+```shell
+cp .env.example .env
+```
+
+5. In your newly created `.env`, replace `PRIVATE_KEY` with the private key exported from MetaMask. Keep the Calibration RPC URL or replace it with your preferred Filecoin Calibration RPC endpoint:
+
+```bash
+PRIVATE_KEY=your_private_key_here
+CALIBRATIONNET_RPC_URL=https://api.calibration.node.glif.io/rpc/v1
+```
+
+6. Load the variables in your current shell before running deployment commands:
+
+```shell
+source .env
+```
+
+{% hint style="info" %}
+Never commit `.env` files or real private keys. Anyone with access to the private key can spend funds from the account.
+{% endhint %}
+
+7. Deploy the kit’s `DealClient` example contract to Calibration:
+
+```shell
+forge create \
+ --rpc-url "$CALIBRATIONNET_RPC_URL" \
+ --private-key "$PRIVATE_KEY" \
+ --broadcast \
+ src/basic-deal-client/DealClient.sol:DealClient
+```
+
+The deployment output is environment-dependent. Record the `Deployed to` address from Foundry’s output; you will need it for contract interactions and verification.
+
+8. You can now interact with your contract using the contract address given by Foundry.
+
+Done! For more information, see the [Foundry book](https://book.getfoundry.sh/).
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/development-frameworks/foundry)
diff --git a/smart-contracts/developing-contracts/hardhat.md b/build/development-frameworks/hardhat.md
similarity index 62%
rename from smart-contracts/developing-contracts/hardhat.md
rename to build/development-frameworks/hardhat.md
index 8635bad05..448122720 100644
--- a/smart-contracts/developing-contracts/hardhat.md
+++ b/build/development-frameworks/hardhat.md
@@ -17,8 +17,10 @@ The [FEVM Hardhat kit](https://github.com/filecoin-project/FEVM-Hardhat-Kit) is
This guide assumes you have the following installed:
-* [Yarn](https://yarnpkg.com/)
-* A Filecoin address stored in [MetaMask](../../basics/assets/metamask-setup.md)
+* [Git](https://git-scm.com/)
+* [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/)
+* A Filecoin address stored in [MetaMask](../../networks-and-tools/assets/metamask-setup.md)
+* Calibration testnet `tFIL` or mainnet `FIL` for the account you will deploy from
### Environment setup
@@ -27,34 +29,24 @@ First, we need to grab the starter kit and install the dependencies.
1. Clone the Hardhat starter kit and move into the new `fevm-hardhat-kit` directory:
```shell
-git clone https://github.com/filecoin-project/fevm-hardhat-kit.git
+git clone --recurse-submodules https://github.com/filecoin-project/fevm-hardhat-kit.git
cd fevm-hardhat-kit
-
-# Cloning into 'fevm-hardhat-kit'...
-# remote: Enumerating objects: 758, done.
-# remote: Counting objects: 100% (725/725), done.
-#
-# ...
```
2. Use Yarn to install the project’s dependencies:
```shell
yarn install
-
-# [1/4] 🔍 Resolving packages...
-# [2/4] 🚚 Fetching packages...
-# [3/4] 🔗 Linking dependencies...
-#
-# ...
-#
-# ✨ Done in 16.34s.
```
-3. Add your private key to the `.env` file:
+3. Create your `.env` file and replace the placeholder private key:
+
+```shell
+cp .env.example .env
+```
```shell
-PRIVATE_KEY=
+PRIVATE_KEY=your_private_key_here
```
{% hint style="info" %}
@@ -65,12 +57,10 @@ Always be careful when dealing with your private key. Double-check that you’re
```shell
yarn hardhat get-address
-
-# Ethereum address (this address should work for most tools): 0x11Fc070e5c0D32024c9B63c136913405e07C8c48
-# f4address (also known as t4 address on testnets): f410fch6aods4buzaete3mpatnejuaxqhzdci3j67vyi
-# ✨ Done in 1.40s.
```
+The command output is environment-dependent. It prints the Ethereum-style `0x` address and the Filecoin `f4` address for the private key in `.env`. Use the Ethereum-style address with the Calibration faucet and most FEVM tools.
+
Now that we’ve got the kit set up, we can start using it to develop and deploy our contracts.
### Manage the contracts
@@ -82,35 +72,31 @@ There are two main types of contracts:
Make sure that your account has funds. You won’t be able to deploy any contracts without `FIL` or `tFIL`.
-1. Run `hardhat deploy` to deploy all the contracts. This can take a few minutes:
+1. Run `hardhat deploy` to deploy the kit contracts. The current kit defaults to the Calibration network:
```shell
yarn hardhat deploy
+```
-# Compiled 18 Solidity files successfully
-# Wallet Ethereum Address: 0x11Fc070e5c0D32024c9B63c136913405e07C8c48
-# Deploying Simplecoin...
-#
-# ...
-#
-# ✨ Done in 211.76s.
+Deployment is network-dependent and may attempt Blockscout and Filfox verification after broadcasting. To deploy without verifier calls, set the kit’s skip flags:
+
+```shell
+IGNORE_FILFOX_VERIFICATION=true IGNORE_BLOCKSCOUT_VERIFICATION=true yarn hardhat deploy
```
2. Interact with the contracts using the available functions within the `tasks` folder. For example, you can get the balance of the `simple-coin` contract by calling the `get-balance` function:
```shell
-yarn hardhat get-balance --contract '0xA855520fcCB6422976F7Ac78534edec2379Be5f6' --account '0x11Fc070e5c0D32024c9B63c136913405e07C8c48'
+export CONTRACT_ADDRESS=0xYourDeployedSimpleCoinAddress
+export ACCOUNT_ADDRESS=0xYourEthereumStyleAccountAddress
-# Reading SimpleCoin owned by 0x11Fc070e5c0D32024c9B63c136913405e07C8c48 on network calibration
-# Amount of Simplecoin owned by 0x11Fc070e5c0D32024c9B63c136913405e07C8c48 is 12000
-# Total amount of minted tokens is 12000
-# ✨ Done in 3.73s.
+yarn hardhat get-balance --contract "$CONTRACT_ADDRESS" --account "$ACCOUNT_ADDRESS"
```
## Hardhat docs
-You can view the official Hardhat documentation over at [`hardhart.org/docs`](https://hardhat.org/docs).
+You can view the official Hardhat documentation over at [`hardhat.org/docs`](https://hardhat.org/docs).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/hardhat)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/development-frameworks/hardhat)
diff --git a/smart-contracts/developing-contracts/remix.md b/build/development-frameworks/remix.md
similarity index 87%
rename from smart-contracts/developing-contracts/remix.md
rename to build/development-frameworks/remix.md
index 34c04503f..a5c9e7ff5 100644
--- a/smart-contracts/developing-contracts/remix.md
+++ b/build/development-frameworks/remix.md
@@ -10,7 +10,7 @@ description: >-
As a simple introduction, we’re going to use Remix to create an ERC-20 token on the Filecoin network. In this guide, we’re using the Calibration testnet, but this process is the same for mainnet.
-This guide assumes you’ve already connected your [MetaMask extension to a Filecoin network](../../basics/assets/metamask-setup.md).
+This guide assumes you’ve already connected your [MetaMask extension to a Filecoin network](../../networks-and-tools/assets/metamask-setup.md).
### Create a workspace
@@ -50,7 +50,7 @@ Now that we’ve successfully compiled our contract, we need to deploy it somewh
6. Back in Remix, under the **Account** field, you’ll see that it says something like `0x11F... (5 ether)`. This value is 5 `tFIL`, but Remix doesn’t support the Filecoin network, so it doesn’t understand what `tFIL` is. This isn’t a problem; it’s just a little quirk of using Remix.
7. Under the **Contract** dropdown, ensure the contract you created is selected.
8. Click **Deploy**.
-9. MetaMask will open a window and as you to confirm the transaction. Scroll down and click **Confirm** to have MetaMask deploy the contract. If you’re deploying to mainnet, we advise you to [adjust your gas fees](remix.md#adjusting-your-gas-fees) for a cheaper deployment.
+9. MetaMask will open a window and ask you to confirm the transaction. Scroll down and click **Confirm** to have MetaMask deploy the contract. If you’re deploying to mainnet, we advise you to [adjust your gas fees](remix.md#adjusting-your-gas-fees) for a cheaper deployment.
10. Back in Remix, a message at the bottom of the screen shows that the creation of your token is pending.
11. Wait around 90 seconds for the deployment to complete.
@@ -66,8 +66,8 @@ Let’s call a method within the deployed contract to mint some tokens.
1. Back in Remix, open the **Deployed Contracts** dropdown, within the **Deploy** sidebar tab.
2. Expand the `mint` method. You must fill in two fields here: `to` and `amount`.
-3. The `to` field specifies where address you want these initial tokens sent. Open MetaMask, copy your address, and paste it into this field.
-4. This field expects an `attoFil` value. 1 `FIL` is equal to 1,000,000,000,000,000,000 `attoFil`. So if you wanted to mint 100 `FIL`, you would enter `100` followed by 18 zeros: `100000000000000000000`.
+3. The `to` field specifies which address you want these initial tokens sent to. Open MetaMask, copy your address, and paste it into this field.
+4. The `amount` field expects the token’s smallest unit, not a `FIL` amount. The OpenZeppelin ERC-20 template uses 18 decimals by default, so minting `100` whole tokens means entering `100` followed by 18 zeros: `100000000000000000000`.
5. Click **Transact**.
6. MetaMask will open a window and ask you to confirm the transaction:
@@ -95,4 +95,4 @@ Remix uses a default of 2.5 nanoFIL per gas as a priority fee, which is usually
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/remix)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/development-frameworks/remix)
diff --git a/build/filecoin-onchain-cloud/README.md b/build/filecoin-onchain-cloud/README.md
new file mode 100644
index 000000000..5f18fa75a
--- /dev/null
+++ b/build/filecoin-onchain-cloud/README.md
@@ -0,0 +1,57 @@
+---
+description: >-
+ Filecoin Onchain Cloud is a programmable storage, retrieval, and payments
+ stack built on Filecoin.
+---
+
+# Filecoin Onchain Cloud
+
+Filecoin Onchain Cloud (FOC) is a programmable storage platform built on the Filecoin Virtual Machine. It combines warm storage, cryptographic storage verification, retrieval, and payments into one developer-facing stack.
+
+Use FOC when you want application-controlled storage on Filecoin without building the storage, payment, provider-selection, and proof flows yourself. The primary integration path is the Synapse SDK; this section points to the maintained [FOC quickstart and Synapse docs](synapse-quickstart.md).
+
+## When to use FOC
+
+FOC is a good fit when your application needs:
+
+* **Programmable storage** that can be controlled from a wallet, backend service, agent, or smart-contract-adjacent workflow.
+* **Verifiable persistence** through Proof of Data Possession (PDP), so providers regularly prove they still hold the data.
+* **Automated payments** through Filecoin Pay, so storage providers are paid through on-chain payment rails.
+* **Retrieval paths** for application data, with Filecoin Beam available for faster data delivery.
+
+If you only need a managed IPFS pinning-style workflow, start with [Filecoin Pin](../cookbook/filecoin-pin/README.md). If you want to run provider infrastructure for the FOC stack, start with the [PDP provider documentation](../../storage-providers/pdp/README.md).
+
+## Core components
+
+FOC is composed of services that can be used together through the Synapse SDK:
+
+| Component | Role |
+| --- | --- |
+| FWSS | Filecoin Warm Storage Service stores data with retrievability-oriented provider selection. |
+| PDP | Proof of Data Possession verifies that providers still hold stored data without requiring a full download. |
+| Filecoin Pay | Payment rails fund storage and settle provider payments based on service delivery. |
+| Filecoin Beam | Retrieval infrastructure for fast data delivery when your application needs it. |
+| Synapse SDK | TypeScript SDK for funding storage, selecting providers, uploading data, downloading data, and managing storage operations. |
+
+## Developer paths
+
+| Path | Use when | Start here |
+| --- | --- | --- |
+| Synapse SDK | You are building a JavaScript or TypeScript application that stores and retrieves data with FOC. | [FOC quickstart and Synapse docs](synapse-quickstart.md) |
+| Filecoin Pin | You want a CLI or API-style path for pinning IPFS-compatible content to Filecoin-backed storage. | [Filecoin Pin](../cookbook/filecoin-pin/README.md) |
+| PDP provider | You want to run provider infrastructure that can participate in FOC storage. | [PDP](../../storage-providers/pdp/README.md) |
+| Full FOC docs | You need the complete FOC guides, API reference, architecture, pricing, or contract references. | [docs.filecoin.cloud](https://docs.filecoin.cloud/) |
+
+## Learn more
+
+The FOC documentation is the source of truth for detailed product docs, pricing, API references, and contract addresses:
+
+* [FOC quick start](https://docs.filecoin.cloud/getting-started)
+* [Architecture](https://docs.filecoin.cloud/core-concepts/architecture)
+* [FWSS overview](https://docs.filecoin.cloud/core-concepts/fwss-overview)
+* [PDP overview](https://docs.filecoin.cloud/core-concepts/pdp-overview)
+* [Filecoin Pay overview](https://docs.filecoin.cloud/core-concepts/filecoin-pay-overview)
+* [Synapse SDK guide](https://docs.filecoin.cloud/developer-guides/synapse)
+* [Contract addresses](https://docs.filecoin.cloud/resources/contracts)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/filecoin-onchain-cloud)
diff --git a/build/filecoin-onchain-cloud/synapse-quickstart.md b/build/filecoin-onchain-cloud/synapse-quickstart.md
new file mode 100644
index 000000000..d1ecf0b94
--- /dev/null
+++ b/build/filecoin-onchain-cloud/synapse-quickstart.md
@@ -0,0 +1,23 @@
+---
+description: >-
+ Start with the maintained Filecoin Onchain Cloud docs for the current Synapse
+ SDK quickstart, funding, upload, and retrieval steps.
+---
+
+# Synapse SDK quickstart
+
+The Synapse SDK is the main developer interface for Filecoin Onchain Cloud (FOC). The current setup steps, SDK APIs, payment behavior, pricing, and contract references live in the dedicated FOC documentation.
+
+To avoid this page drifting from the maintained FOC guides, use it as a routing page instead of a duplicated quickstart.
+
+## Start in the FOC docs
+
+* [FOC getting started](https://docs.filecoin.cloud/getting-started) - install the Synapse SDK, connect a wallet, fund storage, upload data, and retrieve it.
+* [Synapse SDK guide](https://docs.filecoin.cloud/developer-guides/synapse) - integrate the SDK into applications and review the current API surface.
+* [Storage operations](https://docs.filecoin.cloud/developer-guides/storage/storage-operations) - manage uploads, retrievals, data sets, and storage lifecycle operations.
+* [Payment operations](https://docs.filecoin.cloud/developer-guides/payments/payment-operations) - understand deposits, approvals, withdrawals, and payment rails.
+* [Contract addresses](https://docs.filecoin.cloud/resources/contracts) - find current mainnet and testnet contract references.
+
+For a CLI-oriented pinning workflow in these docs, use [Filecoin Pin](../cookbook/filecoin-pin/README.md).
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/build/filecoin-onchain-cloud/synapse-quickstart)
diff --git a/build/getting-started.md b/build/getting-started.md
new file mode 100644
index 000000000..4ab6fa671
--- /dev/null
+++ b/build/getting-started.md
@@ -0,0 +1,47 @@
+---
+description: >-
+ Start building on Filecoin. Choose a path based on what you want to build —
+ from simple storage integrations to full smart-contract applications.
+---
+
+# Getting started
+
+This guide helps you pick the right path based on what you want to build on Filecoin.
+
+## Choose your path
+
+### Store data on Filecoin
+
+Filecoin provides multiple storage paths depending on how much control you need. [Filecoin Onchain Cloud (FOC)](filecoin-onchain-cloud/README.md) is the recommended starting point. It provides a complete on-chain storage stack with warm storage, cryptographic verification, and automated payments through the [Synapse SDK](filecoin-onchain-cloud/synapse-quickstart.md). If you prefer a managed service, [storage onramps](../getting-started/how-storage-works/storage-onramps.md) let you store data through simple APIs or web UIs without managing infrastructure. For operators who want to run their own PDP-enabled storage provider, see the [PDP setup guide](../storage-providers/pdp/README.md).
+
+| Path | Best for | Complexity |
+|------|----------|------------|
+| [Filecoin Onchain Cloud (FOC)](filecoin-onchain-cloud/README.md) | Verifiable on-chain storage with FWSS, PDP, and Filecoin Pay via the Synapse SDK | Low |
+| [Storage onramps](../getting-started/how-storage-works/storage-onramps.md) | Managed services with simple APIs or drag-and-drop UIs | Low |
+| [PDP](../storage-providers/pdp/README.md) | Run your own PDP-enabled storage provider (part of the FOC stack) | Medium |
+
+*For a walkthrough of all storage options, see [Upload to Filecoin](../getting-started/how-storage-works/upload-to-filecoin.md).*
+
+### Deploy smart contracts
+
+Filecoin runs an EVM-compatible runtime, so you can write Solidity contracts and deploy them using familiar Ethereum tooling. Choose a [development framework](development-frameworks/README.md) (Remix, Hardhat, or Foundry), get [test tokens](developing-contracts/get-test-tokens.md) on Calibration, and deploy your first contract with the [ERC-20 quickstart](developing-contracts/erc-20-quickstart.md). Once deployed, [verify your contract](verification/README.md) through a block explorer.
+
+Filecoin contracts can also interact with the storage network directly. Use [Filecoin.sol](developing-contracts/filecoin.sol.md) to access storage primitives from Solidity, or [call built-in actors](developing-contracts/call-built-in-actors.md) to work with miner, market, and power actors on-chain.
+
+### Integrate advanced features
+
+After you have a working contract, Filecoin supports deeper integrations. [Oracles](advanced/oracles.md) bring off-chain data into your contracts. [Cross-chain bridges](advanced/cross-chain-bridges.md) let you move assets between Filecoin and other networks. [FEVM indexers](advanced/fevm-indexers.md) provide efficient on-chain data queries without running an archival node. [Decentralized databases](advanced/decentralized-databases.md) add structured data storage alongside Filecoin.
+
+*Browse more in the [Advanced](advanced/README.md) section or find solution-focused recipes in the [Cookbook](cookbook/README.md).*
+
+## Key resources
+
+| Resource | Description |
+|----------|-------------|
+| [Networks](../networks-and-tools/networks/README.md) | Mainnet, Calibration testnet, and local development |
+| [Metamask setup](../networks-and-tools/assets/metamask-setup.md) | Connect your wallet to Filecoin |
+| [FEVM vs Ethereum](../core-concepts/filecoin-evm-runtime/difference-with-ethereum.md) | Key differences for Ethereum developers |
+| [How gas works](../core-concepts/filecoin-evm-runtime/how-gas-works.md) | Filecoin gas model for transaction planning |
+| [Support](developing-contracts/support.md) | Where to get help |
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/getting-started)
diff --git a/build/verification/README.md b/build/verification/README.md
new file mode 100644
index 000000000..a35e1ef04
--- /dev/null
+++ b/build/verification/README.md
@@ -0,0 +1,15 @@
+---
+description: >-
+ Verify smart contracts on Filecoin using development frameworks or block explorer interfaces.
+---
+
+# Contract verification
+
+Contract verification lets users inspect the source code of deployed contracts and confirm they work as intended. This section covers how to verify contracts through both development tools and web interfaces.
+
+## Table of contents
+
+* [Verify using Hardhat](hardhat.md) — automate verification from your Hardhat development environment
+* [Verify using Foundry](foundry.md) — automate verification from your Foundry development environment
+* [Verify using Blockscout](blockscout.md) — verify contracts through the Blockscout web interface
+* [Verify using Filfox](filfox.md) — verify contracts through the Filfox web interface
diff --git a/smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout.md b/build/verification/blockscout.md
similarity index 54%
rename from smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout.md
rename to build/verification/blockscout.md
index e85076772..d1fd5c57e 100644
--- a/smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout.md
+++ b/build/verification/blockscout.md
@@ -10,18 +10,20 @@ The following guide walks you through the process of contract verification using
## Prerequisites
-- A deployed smart contract on Filecoin
-- Your contract's source code (`.sol` file)
-- [Remix IDE](https://remix.ethereum.org/) for flattening contracts
-- Contract deployment details (address, compiler version, license, optimization settings)
+- A deployed smart contract on Filecoin mainnet or Calibration testnet
+- Your contract source code, either as a flattened `.sol` file or the same source files and metadata used at compile time
+- The deployed contract address
+- The Solidity compiler version used for deployment
+- The license, optimization settings, optimizer runs, EVM version, and `viaIR` setting used for deployment
+- Constructor arguments, if the contract was deployed with any
## Step-by-Step Verification Process
### Step 1: Prepare Your Contract Source Code
-1. **Open Remix IDE:**
+1. **Open Remix IDE** if you are using Blockscout's single-file Solidity verification method:
-
+
2. **Flatten your contract:**
- In the **File Explorer** sidebar, under **contracts**, right-click on your contract
@@ -40,21 +42,25 @@ The following guide walks you through the process of contract verification using
- Contract deployment address
- Contract license type (optional)
- Solidity compiler version used for deployment
- - Optimization settings (enabled/disabled and runs count)
+ - Optimization settings, including enabled/disabled and runs count
+ - EVM version and `viaIR` setting, if your deployment used non-default values
+ - ABI-encoded constructor arguments, if your contract constructor used arguments
### Step 2: Submit for Verification
6. **Access Blockscout verification page:**
- - Navigate to the [Blockscout Contract Verification](https://filecoin.blockscout.com/contract-verification) page
+ - For Filecoin mainnet, navigate to [Filecoin Blockscout Contract Verification](https://filecoin.blockscout.com/contract-verification). Mainnet uses chain ID `314`.
+ - For Calibration testnet, navigate to [Calibration Blockscout Contract Verification](https://filecoin-testnet.blockscout.com/contract-verification). Calibration uses chain ID `314159`.
7. **Fill in contract information:**
- Enter your contract's deployment address
- Select the appropriate license type (optional)
- Choose verification method: `Solidity (Single file)`
- - Enter the compiler version used for deployment
+ - Select the compiler version used for deployment
- Paste the source code from your `_flattened.sol` file
- Configure the `Optimization enabled` checkbox to match your deployment settings
+ - Enter optimizer runs, constructor arguments, and any advanced compiler settings if the form prompts for them
-
+
8. **Submit for verification:**
- Click **Verify & Publish** to submit your contract
@@ -63,6 +69,4 @@ The following guide walks you through the process of contract verification using
Upon successful verification, Blockscout will display a success message and redirect you to your verified contract dashboard where you can view the source code and interact with your contract.
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout)
+
diff --git a/smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox.md b/build/verification/filfox.md
similarity index 60%
rename from smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox.md
rename to build/verification/filfox.md
index 5386f4f04..0f754188b 100644
--- a/smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox.md
+++ b/build/verification/filfox.md
@@ -10,18 +10,20 @@ The following guide walks you through the process of contract verification using
## Prerequisites
-- A deployed smart contract on Filecoin
-- Your contract's source code (`.sol` file)
-- [Remix IDE](https://remix.ethereum.org/) for flattening contracts
-- Contract deployment details (address, compiler version, license)
+- A deployed smart contract on Filecoin mainnet or Calibration testnet
+- Your contract source code, either as a flattened `.sol` file or the source files requested by the Filfox form
+- The deployed contract address
+- The Solidity compiler version used for deployment
+- The license, optimization settings, optimizer runs, EVM version, and `viaIR` setting used for deployment
+- Constructor arguments, if the contract was deployed with any and the form prompts for them
## Step-by-Step Verification Process
### Step 1: Prepare Your Contract Source Code
-1. **Open Remix IDE:**
+1. **Open Remix IDE** if you are preparing a flattened source file for upload:
-
+
2. **Flatten your contract:**
- In the **File Explorer** sidebar, under **contracts**, right-click on your contract
@@ -40,17 +42,21 @@ The following guide walks you through the process of contract verification using
- Contract deployment address
- Contract license type (if any)
- Solidity compiler version used for deployment
+ - Optimization settings, optimizer runs, EVM version, and `viaIR` setting
+ - Constructor arguments, if your contract constructor used arguments
### Step 2: Submit for Verification
6. **Access Filfox verification page:**
- - Navigate to the [Filfox Contract Verification](https://filfox.info/en/contract) page
+ - For Filecoin mainnet, navigate to the [Filfox Contract Verification](https://filfox.info/en/contract) page. Mainnet uses chain ID `314`.
+ - For Calibration testnet, navigate to the [Calibration Filfox Contract Verification](https://calibration.filfox.info/en/contract) page. Calibration uses chain ID `314159`.
7. **Fill in contract information:**
- Enter your contract's deployment address
- Select the appropriate license type
- Choose the compiler version used for deployment
+ - Match any prompted compiler and constructor settings to the original deployment
-
+
8. **Upload source code:**
- Click **Continue** to proceed
@@ -62,7 +68,7 @@ The following guide walks you through the process of contract verification using
Once submitted, Filfox will process your verification request. Upon successful verification, you'll see a success message confirming your contract is now verified.
-
+
## Viewing Your Verified Contract
@@ -70,7 +76,7 @@ Once submitted, Filfox will process your verification request. Upon successful v
- Enter your contract address in the [Filfox search bar](https://filfox.info/)
- This will take you to your contract's page
-
+
2. **View verification status:**
- Scroll down and select the **Contract** tab
@@ -81,6 +87,4 @@ Once submitted, Filfox will process your verification request. Upon successful v
- Browse [other verified contracts on Filfox](https://filfox.info/en/fevm/verified-contracts)
- Learn from verified contract examples in the ecosystem
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox)
+
diff --git a/build/verification/foundry.md b/build/verification/foundry.md
new file mode 100644
index 000000000..35e30a08d
--- /dev/null
+++ b/build/verification/foundry.md
@@ -0,0 +1,134 @@
+---
+description: >-
+ Learn how to verify smart contracts on the Filecoin network using Foundry
+ with various verification services including Blockscout, Sourcify, and Filfox.
+---
+
+# Contract Verification with Foundry
+
+This guide shows you how to verify your smart contracts using Foundry on the Filecoin network.
+
+## Prerequisites
+
+- A Foundry project set up for Filecoin development. If you don't have one, start with the [FEVM Foundry Kit](../development-frameworks/foundry.md).
+- Foundry installed with `forge` and `cast` available in your `PATH`.
+- A deployed contract address on Filecoin mainnet or Calibration testnet.
+- The same source tree, compiler version, optimizer settings, and `foundry.toml` settings that were used for deployment.
+- Contract constructor arguments, if the contract was deployed with any.
+- A Filecoin RPC URL for the target network. Filecoin mainnet uses chain ID `314`; Calibration testnet uses chain ID `314159`.
+
+## Verification Methods
+
+Set RPC URLs in your shell before running the examples:
+
+```bash
+export FILECOIN_RPC_URL=https://api.node.glif.io/rpc/v1
+export CALIBRATION_RPC_URL=https://api.calibration.node.glif.io/rpc/v1
+```
+
+### Blockscout Verification
+
+Blockscout is a popular blockchain explorer that supports contract verification.
+
+**Verify on Calibration testnet:**
+
+```bash
+forge verify-contract \
+ --rpc-url "$CALIBRATION_RPC_URL" \
+ --chain 314159 \
+ --verifier blockscout \
+ --verifier-url "https://filecoin-testnet.blockscout.com/api/" \
+ 0xYourContractAddress \
+ src/MyContract.sol:MyContract
+```
+
+**Verify on Filecoin mainnet:**
+
+```bash
+forge verify-contract \
+ --rpc-url "$FILECOIN_RPC_URL" \
+ --chain 314 \
+ --verifier blockscout \
+ --verifier-url "https://filecoin.blockscout.com/api/" \
+ 0xYourContractAddress \
+ src/MyContract.sol:MyContract
+```
+
+For constructors, pass ABI-encoded constructor arguments. The constructor signature and values must match the deployment:
+
+```bash
+CONSTRUCTOR_ARGS=$(cast abi-encode "constructor(string,string)" "MyToken" "MYT")
+
+forge verify-contract \
+ --rpc-url "$CALIBRATION_RPC_URL" \
+ --chain 314159 \
+ --verifier blockscout \
+ --verifier-url "https://filecoin-testnet.blockscout.com/api/" \
+ --constructor-args "$CONSTRUCTOR_ARGS" \
+ 0xYourContractAddress \
+ src/MyToken.sol:MyToken
+```
+
+If Blockscout reports that the contract is already verified while you are retrying the same address, add `--force --skip-is-verified-check`.
+
+### Sourcify Verification
+
+Sourcify provides decentralized contract verification.
+
+**Verify on Filecoin mainnet:**
+
+```bash
+forge verify-contract \
+ --rpc-url "$FILECOIN_RPC_URL" \
+ --chain 314 \
+ --verifier sourcify \
+ --verifier-url https://sourcify.dev/server/ \
+ --guess-constructor-args \
+ 0xYourContractAddress \
+ src/MyToken.sol:MyToken
+```
+
+**Verify on Calibration testnet:**
+
+```bash
+forge verify-contract \
+ --rpc-url "$CALIBRATION_RPC_URL" \
+ --chain 314159 \
+ --verifier sourcify \
+ --verifier-url https://sourcify.dev/server/ \
+ --guess-constructor-args \
+ 0xYourContractAddress \
+ src/MyToken.sol:MyToken
+```
+
+For more information, see the [Sourcify documentation](https://docs.sourcify.dev/docs/how-to-verify/).
+
+### Filfox Verification
+
+Filfox is the native Filecoin explorer with dedicated verification support.
+
+**Installation:**
+
+```bash
+npm install --save-dev @fil-b/filfox-verifier
+```
+
+**Usage:**
+
+```bash
+npx filfox-verifier forge --chain
+```
+
+**Examples:**
+
+```bash
+# Verify on Filecoin mainnet
+npx filfox-verifier forge 0xYourContractAddress src/MyContract.sol:MyContract --chain 314
+
+# Verify on Calibration testnet
+npx filfox-verifier forge 0xYourContractAddress src/MyContract.sol:MyContract --chain 314159
+```
+
+The Filfox verifier requires Node.js 20 or later and a Foundry project with `foundry.toml`. It runs `forge build` and extracts the metadata needed for the Filfox verification request.
+
+For detailed information, see the [@fil-b/filfox-verifier documentation](https://www.npmjs.com/package/@fil-b/filfox-verifier).
diff --git a/build/verification/hardhat.md b/build/verification/hardhat.md
new file mode 100644
index 000000000..a6785f25b
--- /dev/null
+++ b/build/verification/hardhat.md
@@ -0,0 +1,168 @@
+---
+description: >-
+ Learn how to verify smart contracts on the Filecoin network using Hardhat
+ with various verification services including Blockscout, Sourcify, and Filfox.
+---
+
+# Contract Verification with Hardhat
+
+This guide shows you how to verify your smart contracts using Hardhat on the Filecoin network.
+
+## Prerequisites
+
+- A Hardhat project set up for Filecoin development. If you don't have one, start with the [FEVM Hardhat Kit](../development-frameworks/hardhat.md).
+- The `@nomicfoundation/hardhat-verify` plugin installed and imported in your Hardhat config.
+- A deployed contract address on Filecoin mainnet or Calibration testnet.
+- The same Solidity version, optimizer settings, and source tree that were used for deployment.
+- Contract constructor arguments, if the contract was deployed with any.
+- A Filecoin RPC URL for the target network. Filecoin mainnet uses chain ID `314`; Calibration testnet uses chain ID `314159`.
+
+## Verification Methods
+
+### Blockscout Verification
+
+Blockscout is a popular blockchain explorer that supports contract verification. The FEVM Hardhat Kit already includes the Filecoin networks and verifier configuration. In another Hardhat v2 project, add equivalent configuration to `hardhat.config.ts`:
+
+```typescript
+import "@nomicfoundation/hardhat-verify";
+import { HardhatUserConfig } from "hardhat/config";
+
+const config: HardhatUserConfig = {
+ solidity: {
+ version: "0.8.23",
+ settings: {
+ optimizer: {
+ enabled: true,
+ runs: 1000,
+ },
+ },
+ },
+ networks: {
+ filecoin: {
+ url: process.env.FILECOIN_RPC_URL ?? "https://api.node.glif.io/rpc/v1",
+ chainId: 314,
+ },
+ calibration: {
+ url: process.env.CALIBRATION_RPC_URL ?? "https://api.calibration.node.glif.io/rpc/v1",
+ chainId: 314159,
+ },
+ },
+ etherscan: {
+ apiKey: {
+ filecoin: "empty",
+ calibration: "empty",
+ },
+ customChains: [
+ {
+ network: "filecoin",
+ chainId: 314,
+ urls: {
+ apiURL: "https://filecoin.blockscout.com/api",
+ browserURL: "https://filecoin.blockscout.com",
+ },
+ },
+ {
+ network: "calibration",
+ chainId: 314159,
+ urls: {
+ apiURL: "https://filecoin-testnet.blockscout.com/api",
+ browserURL: "https://filecoin-testnet.blockscout.com",
+ },
+ },
+ ],
+ }
+};
+
+export default config;
+```
+
+Set RPC URLs in your shell or `.env` if you do not want to use the example defaults:
+
+```bash
+export FILECOIN_RPC_URL=https://api.node.glif.io/rpc/v1
+export CALIBRATION_RPC_URL=https://api.calibration.node.glif.io/rpc/v1
+```
+
+Compile with the same settings used for deployment, then verify the deployed address. Put constructor arguments after the address and omit them if the constructor had no arguments.
+
+**Verify on Filecoin mainnet:**
+
+```bash
+npx hardhat compile
+npx hardhat verify --network filecoin 0xYourContractAddress "constructor arg 1"
+```
+
+**Verify on Calibration testnet:**
+
+```bash
+npx hardhat compile
+npx hardhat verify --network calibration 0xYourContractAddress "constructor arg 1"
+```
+
+If Hardhat cannot infer which local contract matches the deployed bytecode, pass the fully qualified contract name:
+
+```bash
+npx hardhat verify \
+ --network calibration \
+ --contract contracts/MyContract.sol:MyContract \
+ 0xYourContractAddress \
+ "constructor arg 1"
+```
+
+### Sourcify Verification
+
+Sourcify provides decentralized contract verification. Include the Blockscout configuration above and add the following Sourcify configuration:
+
+```typescript
+const config: HardhatUserConfig = {
+ sourcify: {
+ enabled: true, // verifies both on Sourcify and on Blockscout
+ apiUrl: "https://sourcify.dev/server",
+ browserUrl: "https://repo.sourcify.dev",
+ },
+};
+
+export default config;
+```
+
+This configuration enables dual verification on both Sourcify and Blockscout when running the `npx hardhat verify` task.
+
+If Blockscout verification is also enabled, keep passing constructor arguments when the deployed constructor required them.
+
+For more information, see the [Sourcify documentation](https://docs.sourcify.dev/docs/how-to-verify/).
+
+### Filfox Verification
+
+Filfox is the native Filecoin explorer with dedicated verification support.
+
+**Installation:**
+
+Install the `@fil-b/filfox-verifier` package into your Hardhat project. The FEVM Hardhat Kit already includes this package.
+
+```bash
+npm install --save-dev @fil-b/filfox-verifier
+```
+
+**Configuration:**
+Import the plugin in your Hardhat configuration file. This will add the `verifyfilfox` task into your Hardhat project!
+
+```javascript
+// hardhat.config.js
+require("@fil-b/filfox-verifier/hardhat");
+
+// or in hardhat.config.ts
+import "@fil-b/filfox-verifier/hardhat";
+```
+
+**Usage:**
+```bash
+# Verify on Filecoin mainnet
+npx hardhat verifyfilfox --address 0xYourContractAddress --network filecoin
+
+# Verify on Calibration testnet
+npx hardhat verifyfilfox --address 0xYourContractAddress --network calibration
+```
+
+The Filfox Hardhat task requires Node.js 20 or later and a compiled Hardhat project. The verifier can discover supported Hardhat deployment artifacts, including `hardhat-deploy`, Ignition, and standard Hardhat artifacts.
+
+For detailed information, see the [@fil-b/filfox-verifier documentation](https://www.npmjs.com/package/@fil-b/filfox-verifier).
diff --git a/builder-cookbook/dapps/README.md b/builder-cookbook/dapps/README.md
deleted file mode 100644
index c28d7d6c5..000000000
--- a/builder-cookbook/dapps/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-description: Various features from Filecoin ecosystem to build your dApps.
----
-
-# dApps
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/dapps)
diff --git a/builder-cookbook/dapps/chain-data-query.md b/builder-cookbook/dapps/chain-data-query.md
deleted file mode 100644
index 0c668dfa4..000000000
--- a/builder-cookbook/dapps/chain-data-query.md
+++ /dev/null
@@ -1,162 +0,0 @@
----
-description: >-
- Learn how to connect to Filecoin RPC nodes and query Filecoin chain state and
- data.
----
-
-# Chain-Data Query
-
-### Connecting to Filecoin networks via public RPC nodes
-
-To query chain state and data on any Filecoin network, it is necessary to connect to public node providers. However, it's important to note that most public node providers offer limited access, typically allowing read-only JSON RPC calls and `MPoolPush` to send signed messages to the Filecoin networks.
-
-To explore further details about the available public RPC providers supporting Filecoin mainnet and Calibration testnet, you can refer to the following page.
-
-* [Filecoin mainnet RPCs](https://docs.filecoin.io/networks/mainnet/rpcs)
-* [Filecoin Calibration testnet RPCs ](https://docs.filecoin.io/networks/calibration/rpcs)
-
-#### **Ingredients**
-
-Let's use Glif nodes as an example to demonstrate how to connect to a public Filecoin RPC node provider. Additionally, we will utilize `ethers.js` to establish the connection with the RPC nodes.
-
-* [Glif nodes](https://hosting.glif.io/)
-* [ethers.js](https://docs.ethers.org/v5/)
-
-#### **Instructions**
-
-We will use `ethers.js` to establish a connection with the public Filecoin node provided by Glif. The following code demonstrates connecting to the Filecoin Calibration testnet as an example.
-
-```javascript
-import { ethers } from "ethers"
-
-//The public Filecoin calibration URL
-const filecoin_url = 'https://api.calibration.node.glif.io/rpc/v1'
-const provider = new ethers.JsonRpcProvider(filecoin_url)
-
-const blockNumber = await provider.getBlockNumber()
-console.log("Block height: ", blockNumber)
-
-```
-
-The expected output:
-
-```
-Block height: 1268350
-```
-
-***
-
-### Listen to smart contract events
-
-Since the Filecoin Virtual Machine (FVM) is EVM-compatible, we can use `ethers.js` to listen to smart contract events for specific contract actions on the Filecoin network. For instance, we can monitor ERC20 token `transfer` events or client contract `DealProposalCreate` events.
-
-#### **Ingredients**
-
-We will also use `ethers.js` to connect to the public Glif node to listen to the smart contract events.
-
-* [Glif Nodes](https://hosting.glif.io/)
-* [ethers.js](https://docs.ethers.org/v5/)
-
-#### **Instructions**
-
-Let's consider the [wFIL contract](https://docs.filecoin.io/smart-contracts/advanced/wrapped-fil), an ERC-20 token on Filecoin, as an example for listening to its transfer event. To demonstrate how to listen to smart contract events using ethers, we will use the deployed wFIL token address on the Filecoin calibration network and a simplified ABI object for the transfer event. Typically, you would have the wFIL smart contract's Application Binary Interface (ABI) defined in an `abi.json` file.
-
-The code to listen to `transfer` events for the wFIL token.
-
-```javascript
-import { ethers } from "ethers"
-
-const wFILAddress = "0xaC26a4Ab9cF2A8c5DBaB6fb4351ec0F4b07356c4" // wFIL Contract
-var abi = ["event Transfer(address indexed from, address indexed to, uint amount)"]
-
-const filecoin_url = 'https://api.calibration.node.glif.io/rpc/v1'
-const provider = new ethers.providers.JsonRpcProvider(filecoin_url)
-
-//listen to the Transfer events in the Token contract
-const wFIL = new ethers.Contract(wFILAddress, abi, provider)
-wFIL.on("Transfer", (from, to, value, event)=>{
- let transferEvent ={
- from: from,
- to: to,
- value: value,
- eventData: event,
- }
- console.log(JSON.stringify(transferEvent, null, 4))
-})
-```
-
-Once a wFIL token transfer is executed on the blockchain, the following code snippet will capture the corresponding events and print out the event details.
-
-***
-
-### Filter smart contract events
-
-We can also use filters to retrieve specific smart contract transactions from the Filecoin network. Filters enable us to define criteria or conditions to search for event logs that match specific requirements. By setting up a filter, we can monitor and retrieve event logs related to our interests or specific smart contracts.
-
-#### **Ingredients**
-
-We will also use `ethers.js` to connect to the public Glif node to filter the smart contract events by providing conditions.
-
-* [Glif nodes](https://hosting.glif.io/)
-* [ethers.js](https://docs.ethers.org/v5/)
-
-#### **Instructions**
-
-Here's an example of how you can connect to a Glif node on the calibration network, create a filter to list all wFIL token transfers from your address, and execute the filter to look back 2000 blocks to find the matched transaction list:
-
-```javascript
-import { ethers } from "ethers"
-
-const wFILAddress = "0xaC26a4Ab9cF2A8c5DBaB6fb4351ec0F4b07356c4" // wFIL Contract
-var abi = ["event Transfer(address indexed from, address indexed to, uint amount)"]
-
-const filecoin_url = 'https://api.calibration.node.glif.io/rpc/v1'
-const provider = new ethers.providers.JsonRpcProvider(filecoin_url)
-
-// Create a filter to list all token transfers from myAddress
-const filter = contract.filters.Transfer("0xd388aB098ed3E84c0D808776440B48F685198498");
-
-//Filter on the events back to 2000 blocks.
-const currentBlockHight = await provider.getBlockNumber();
-const result = await contract.queryFilter(filter,currentBlockHight-2000, currentBlockHight );
-console.log(result);
-```
-
-The expected transaction will be similar as follows. With this information, you can develop custom logic to efficiently track and process specific events or blocks on your FEVM smart contracts.
-
-```json
-{
- blockNumber: 1268728,
- blockHash: '0x7b4f34d3f7ef791da7f9ab1c342cf147eedf7ec4f99fe92b94a9372927779961',
- transactionIndex: 0,
- removed: false,
- address: '0xb44cc5FB8CfEdE63ce1758CE0CDe0958A7702a16',
- data: '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
- topics: [
- '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
- '0x000000000000000000000000d388ab098ed3e84c0d808776440b48f685198498',
- '0x00000000000000000000000044061aa8df5b33a997ce97d80c700d0c655dc3f2'
- ],
- transactionHash: '0x7adb72ac19bf6baa5176f5da799128140ea3a9a9306bf6b1ff52edc58c621c4b',
- logIndex: 0,
- removeListener: [Function (anonymous)],
- getBlock: [Function (anonymous)],
- getTransaction: [Function (anonymous)],
- getTransactionReceipt: [Function (anonymous)],
- event: 'Transfer',
- eventSignature: 'Transfer(address,address,uint256)',
- decode: [Function (anonymous)],
- args: [
- '0xd388aB098ed3E84c0D808776440B48F685198498',
- '0x44061AA8Df5b33a997CE97d80c700d0C655Dc3f2',
- [BigNumber],
- from: '0xd388aB098ed3E84c0D808776440B48F685198498',
- to: '0x44061AA8Df5b33a997CE97d80c700d0C655Dc3f2',
- amount: [BigNumber]
- ]
- },
-```
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/dapps/chain-data-query)
diff --git a/builder-cookbook/dapps/cross-chain-bridges.md b/builder-cookbook/dapps/cross-chain-bridges.md
deleted file mode 100644
index 9a8e03f2d..000000000
--- a/builder-cookbook/dapps/cross-chain-bridges.md
+++ /dev/null
@@ -1,184 +0,0 @@
----
-description: Learn to support multi-chain dApp use cases with cross-chain bridges.
----
-
-# Cross-Chain Bridges
-
-Cross-chain bridges enable developers to build dApps, decentralized exchanges, and payment protocols using assets native to other blockchains.
-
-There are currently two options for cross-chain bridges between Filecoin and other blockchains, [Axelar](https://axelar.network/) and [Celer](https://cbridge.celer.network/1/314). This cookbook will focus on the use of Celer since it is available on both Calibration testnet and Mainnet, while Axelar is currently only available on Mainnet.
-
-### Token Transfers with cBridge
-
-cBridge is a cross-chain asset transfer solution that does not require upfront liquidity.
-
-**Ingredients**
-
-* [Celer Documentation](https://cbridge.celer.network/1/56/USDC)
-* [Celer Tutorial](https://cbridge-docs.celer.network/tutorial/cross-chain-transfer)
-* [Celer cBridge SDK](https://cbridge-docs.celer.network/developer/cbridge-sdk)
-* A full [tutorial](https://cbridge-docs.celer.network/tutorial/smart-contract-as-lp) on how to develop a smart contract as a liquidity pool
-
-**Instructions**
-
-1. Sender sends [transferOut](https://github.com/celer-network/cBridge-contracts/blob/v1.0.0/contracts/CBridge.sol#L57) tx on the source chain.
-
-```solidity
- /**
- * @dev transfer sets up a new outbound transfer with hash time lock.
- */
- function transferOut(
- address _bridge,
- address _token,
- uint256 _amount,
- bytes32 _hashlock,
- uint64 _timelock,
- uint64 _dstChainId,
- address _dstAddress
- ) external {
- bytes32 transferId = _transfer(_bridge, _token, _amount, _hashlock, _timelock);
- emit LogNewTransferOut(
- transferId,
- msg.sender,
- _bridge,
- _token,
- _amount,
- _hashlock,
- _timelock,
- _dstChainId,
- _dstAddress
- );
- }
-
-```
-
-2. Bridge node sends [transferIn](https://github.com/celer-network/cBridge-contracts/blob/v1.0.0/contracts/CBridge.sol#L83) tx on the destination chain, using the same `hashlock` set by the sender.
-
-```solidity
- /**
- * @dev transfer sets up a new inbound transfer with hash time lock.
- */
- function transferIn(
- address _dstAddress,
- address _token,
- uint256 _amount,
- bytes32 _hashlock,
- uint64 _timelock,
- uint64 _srcChainId,
- bytes32 _srcTransferId
- ) external {
- bytes32 transferId = _transfer(_dstAddress, _token, _amount, _hashlock, _timelock);
- emit LogNewTransferIn(
- transferId,
- msg.sender,
- _dstAddress,
- _token,
- _amount,
- _hashlock,
- _timelock,
- _srcChainId,
- _srcTransferId
- );
- }
-```
-
-3. Sender [confirms](https://github.com/celer-network/cBridge-contracts/blob/v1.0.0/contracts/CBridge.sol#L112) the transfer on the source chain.
-4. Bridge node [confirms](https://github.com/celer-network/cBridge-contracts/blob/v1.0.0/contracts/CBridge.sol#L112) the transfer on the destination chain.
-
-```solidity
- /**
- * @dev confirm a transfer.
- *
- * @param _transferId Id of pending transfer.
- * @param _preimage key for the hashlock
- */
- function confirm(bytes32 _transferId, bytes32 _preimage) external {
- Transfer memory t = transfers[_transferId];
-
- require(t.status == TransferStatus.Pending, "not pending transfer");
- require(t.hashlock == keccak256(abi.encodePacked(_preimage)), "incorrect preimage");
-
- transfers[_transferId].status = TransferStatus.Confirmed;
-
- IERC20(t.token).safeTransfer(t.receiver, t.amount);
- emit LogTransferConfirmed(_transferId, _preimage);
- }
-```
-
-The contract addresses for Celer are as follows:
-
-| Name | Mainnet | Calibration |
-| ---- | -------------------------------------------- | -------------------------------------------- |
-| wFIL | `0x60E1773636CF5E4A227d9AC24F20fEca034ee25A` | |
-| USDC | `0x2421db204968A367CC2C866CD057fA754Cb84EdF` | `0xf5C6825015280CdfD0b56903F9F8B5A2233476F5` |
-| USDT | `0x422849b355039bc58f2780cc4854919fc9cfaf94` | `0x7d43AABC515C356145049227CeE54B608342c0ad` |
-| WBTC | `0x592786e04c47844aa3b343b19ef2f50a255a477f` | `0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8` |
-| WETH | `0x522b61755b5ff8176b2931da7bf1a5f9414eb710` | `0x5471ea8f739dd37E9B81Be9c5c77754D8AA953E4` |
-
-For further details on cBridge transfers, see the Celer created Github repo [HERE](https://github.com/celer-network/cBridge-contracts).
-
-### Interchain Messaging
-
-Celer also enables general message passing between chains. Below is sample code showing how one party can send a message to a counterparty on a different blockchain.
-
-**Ingredients**
-
-* [Inter-chain Messaging](https://im-docs.celer.network/developer/development-guide/contract-examples/hello-world)
-
-**Instructions**
-
-1. Someone looking to send a message to a wallet on another chain sends that message using the the function `sendMessage()` .
-
-```solidity
-// called by user on source chain to send cross-chain messages
- function sendMessage(
- address _dstContract,
- uint64 _dstChainId,
- bytes calldata _message
- ) external payable {
- bytes memory message = abi.encode(msg.sender, _message);
- sendMessage(_dstContract, _dstChainId, message, msg.value);
- }
-
-```
-
-2. The function `executeMessage()` is used by the intended recipient in the destination chain to receive and emit the message.
-
-```solidity
-// called by MessageBus on destination chain to receive cross-chain messages
- function executeMessage(
- address _srcContract,
- uint64 _srcChainId,
- bytes calldata _message,
- address // executor
- ) external payable override onlyMessageBus returns (ExecutionStatus) {
- (address sender, bytes memory message) = abi.decode(
- (_message),
- (address, bytes)
- );
- emit MessageReceived(_srcContract, _srcChainId, sender, message);
- return ExecutionStatus.Success;
- }
-
-```
-
-The MessageBus contract addresses are below:
-
-| Name | Mainnet | Calibration |
-| ---------- | -------------------------------------------- | -------------------------------------------- |
-| MessageBus | `0x6ff2130fbdd2837b0c92d7f56f6c017642d84f66` | `0xd5818D039A702DdccfD11A900A40B3dc6DA03CEc` |
-
-For more information on cross-chain messaging, see the Celer documentation [here](https://im-docs.celer.network/developer/development-guide/contract-examples/hello-world).
-
-### A note on Finality with Celer
-
-Note that there is an expected finality period when conducting inter-chain messaging with Celer. See details on Filecoin's finality [here](https://docs.filecoin.io/reference/general/glossary#finality). There are two incoming improvements that developers can follow for the latest developments:
-
-1. [FIP86 for fast finality in Filecoin](https://github.com/filecoin-project/FIPs/pull/896)
-2. [Ready-to-use EC finality calculator](https://github.com/filecoin-project/FIPs/discussions/919)
-
-Learn more about cross-chain bridges and which bridges are available on which networks in the Filecoin Docs [here](https://docs.filecoin.io/smart-contracts/advanced/cross-chain-bridges).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/dapps/cross-chain-bridges)
diff --git a/builder-cookbook/dapps/decentralized-database.md b/builder-cookbook/dapps/decentralized-database.md
deleted file mode 100644
index 101d6e08c..000000000
--- a/builder-cookbook/dapps/decentralized-database.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-description: >-
- Learn how to store the application data with a decentralized database on
- Filecoin.
----
-
-# Decentralized Database
-
-### Store data with Tableland
-
-Tableland is a **decentralized database** built on the SQLite engine, which offers developers a web3-native, relational database that seamlessly integrates into their EVM-compatible stacks. Under the hood, Tableland records database tables as ERC721 tokens on-chain and enables the execution of SQL statements in a completely decentralized manner through on-chain smart contracts.
-
-To learn more about what is tableland and how to use it, you can visit [https://tableland.xyz/](https://tableland.xyz/).
-
-#### **Ingredients**
-
-Ensure that you install and import the necessary dependencies in your projects.
-
-* [Tableland](https://tableland.xyz/)
-* [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit)
-* [Openzeppelin](https://docs.openzeppelin.com/contracts/5.x/)
-
-#### **Instructions**
-
-Let's take storage deal aggregator/RaaS as an example to demonstrate how to integrate it with Tableland.
-
-When uploading data via aggregator/RaaS providers to the Filecoin network, you can choose to store its metadata in Tableland tables instead of storing it in the chain state. This metadata can then be easily accessed from the Tableland database and utilized directly within your application.
-
-If you require sample datasets to use, you can use the [Filecoin Dataset Explorer](https://datasets.filecoin.io/).
-
-As an example, let's design the deal aggregator table as follows. However, you can certainly add more columns to this table to include additional information, such as RaaS registration.
-
-| column | data Type |
-| --------- | ------------ |
-| ID | int |
-| CID | bytes/string |
-| deal\_ID | int |
-| miner\_ID | int |
-| status | string |
-
-1. **Create aggregator table**
-
-To track all the deal aggregation/RaaS requests submitted to the smart contract, we need to create a database table. You can add the following code to create an aggregator table within the `constructor()` function of the aggregator contract. This way, when the aggregator/RaaS contract is deployed, an aggregator table will be created to store the metadata of the aggregation requests.
-
-```solidity
-uint256 private tableId;
-string private constant _TABLE_PREFIX = "aggregator_table"; // Custom table prefix
-
-// Constructor that creates a table, sets the controller, and inserts data
-constructor() {
- // Create a table
- tableId = TablelandDeployments.get().create(
- address(this),
- SQLHelpers.toCreateFromSchema(
- "id int, cid string, deal_id string, miner_id string, status string",
- _TABLE_PREFIX
- )
- );
- }C
-```
-
-2. We will create an `insert` function within the smart contract to add a record whenever an aggregation request is made.
-
-```solidity
-function insertRecord(uint256 id, string memory val, string memory status) external {
-
- TablelandDeployments.get().mutate(
- address(this), // Table owner, i.e., this contract
- _tableId,
- SQLHelpers.toInsert(
- _TABLE_PREFIX,
- _tableId,
- "id,cid,status",
- string.concat(
- Strings.toString(id), // Convert to a string
- ",",
- SQLHelpers.quote(val) // Wrap strings in single quotes with the `quote` method
- )
- ));}
-```
-
-Whenever the `submit` or `submitRaaS` function is called, a record will be inserted into the aggregator table instead of being stored in the blockchain's state.
-
-
function submit(bytes memory _cid) external returns (uint256) {
- // Increment the transaction ID
- transactionId++;
-
- // Save _cid record to aggregator_table
- insertRecord(transactionId, _cid, "PROPOSED");
-
- // Emit the event
- emit SubmitAggregatorRequest(transactionId, _cid);
- return transactionId;
- }
-
-
-3. we create an `updateRecord` function to modify an aggregator record once the `complete` function is called after the storage deal has been made on the Filecoin network.
-
-```solidity
-// Update aggregation record in the table
- function updateRecord(uint256 id, uint256 memory dealId, uint256 memory minerId, string memory status) external {
- // Set the values to update
- string memory setters = string.concat("deal_id=", Strings.toString(dealId),
- "miner_id=", Strings.toString(minerId),
- "status=", SQLHelpers.quote(status));
- // Specify filters for which row to update
- string memory filters = string.concat("id=",Strings.toString(id));
- // Mutate a row at `id` with deal_id, miner_id, status
- TablelandDeployments.get().mutate(
- address(this),
- _tableId,
- SQLHelpers.toUpdate(_TABLE_PREFIX, _tableId, setters, filters)
- );
- }
-```
-
-After SP finishes publishing the storage deal on-chain to include an aggregation request, a callback function `complete` will be called to notify the contract that a CID is packed into a storage deal. Then we can call `updateRecord` to update the details for this CID record in the Tableland database.
-
-```solidity
-function complete(
- uint256 _id,
- uint64 _dealId,
- uint64 _minerId,
- InclusionProof memory _proof,
- InclusionVerifierData memory _verifierData
- ) external returns (InclusionAuxData memory) {
-// other code
- updateTable(_id, _dealId, _minerId, "FINISHED");
-}
-```
-
-4. **Query aggregation records**
-
-By using the Tableland SDK, you can easily query the aggregation or RaaS status of all the data stored with the aggregator using SQL statements. For instance, you can retrieve all records associated with a specific CID by executing a SELECT statement.
-
-```jsx
-const db = new Database();
-
-const { results } = await db.prepare(`SELECT * FROM ${tableName} WHERE cid = ?`)
- .bind(cid);
-console.log(results);
-```
-
-To learn how to write different select statements using Tableland SDK, you can refer to [here](https://docs.tableland.xyz/sdk/database/prepared-statements).
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/builder-cookbook/dapps/decentralized-database)
diff --git a/builder-cookbook/dapps/oracles.md b/builder-cookbook/dapps/oracles.md
deleted file mode 100644
index daee32688..000000000
--- a/builder-cookbook/dapps/oracles.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-description: >-
- Learn how to use oracle smart contracts to access external data sources when
- building an FVM dApp.
----
-
-# Oracles
-
-### Obtain Price Feeds with the Tellor Oracle
-
-Tellor is an Oracle solution that enables price and Filecoin network data feeds for FVM dApps. To see important disclaimers about the use of Tellor, please review the [Tellor Documentation](https://docs.tellor.io/) and [this tutorial](https://youtu.be/AQIDqTLguyI?si=CuSY3uArgKJNVcYL).
-
-**Ingredients**
-
-* [Solidity](https://docs.soliditylang.org/en/v0.8.23/)
-* [UsingTellor](https://github.com/tellor-io/sampleUsingTellor?tab=readme-ov-file#2-how-to-use) package
-
-**Instructions**
-
-1. Inherit the UsingTellor contract in your code. An example, pulled from the [sample project for UsingTellor](https://github.com/tellor-io/sampleUsingTellor?tab=readme-ov-file#2-how-to-use), is shown just below.
-
-```solidity
-contract PriceContract is UsingTellor {
-
- uint256 public btcPrice;
-
- //This Contract now has access to all functions in UsingTellor
-
- constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) {}
-
- function setBtcPrice() public {
-
- bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd"));
- bytes32 _queryId = keccak256(_b);
-
- uint256 _timestamp;
- bytes memory _value;
-
- (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes);
-
- require(_timestamp > 0, "No data exists");
- require(block.timestamp - _timestamp < 24 hours, "Data is too old");
-
- btcPrice = abi.decode(_value,(uint256));
- }
-}
-```
-
-2. Pass the Tellor address as a constructor argument.
-
-Oracle contract address (on both Calibration Testnet and Mainnet): `0xb2CB696fE5244fB9004877e58dcB680cB86Ba444`
-
-To see additional addresses for Tellor Oracles, please see [this doc](https://docs.filecoin.io/smart-contracts/advanced/oracles).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/dapps/oracles)
diff --git a/builder-cookbook/data-storage/README.md b/builder-cookbook/data-storage/README.md
deleted file mode 100644
index a8a097589..000000000
--- a/builder-cookbook/data-storage/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-description: Recipes of using Filecoin data storage features programmatically.
----
-
-# Data Storage
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/data-storage)
diff --git a/builder-cookbook/data-storage/privacy-and-access-control.md b/builder-cookbook/data-storage/privacy-and-access-control.md
deleted file mode 100644
index faac56fb0..000000000
--- a/builder-cookbook/data-storage/privacy-and-access-control.md
+++ /dev/null
@@ -1,301 +0,0 @@
----
-description: >-
- Learn about encrypting data to be stored on Filecoin and gating access to data
- already stored on Filecoin.
----
-
-# Privacy & Access Control
-
-### Encrypting data for storing on Filecoin
-
-Ensuring your dataset is encrypted is critical to good privacy hygiene when storing files on decentralized networks, including Filecoin and IPFS. Uploading an unencrypted file would allow the storage provider to read the files you store with them, and allow them to send copies to unknown third parties.
-
-The Lighthouse team developed the Kavach encryption SDK, which is included in the Lighthouse SDK by default, to enable encryption of files pinned to IPFS or stored on Filecoin. The below examples are pulled directly from their documentation, you can read more [here](https://docs.lighthouse.storage/how-to/upload-encrypted-data).
-
-**Ingredients:**
-
-* [Kavach encryption SDK](https://github.com/lighthouse-web3/encryption-sdk)
-* [Access control to a dataset](https://docs.lighthouse.storage/how-to/encryption-features/access-control-conditions)
-
-**Instructions:**
-
-There are two options for encrypting files being uploaded to Filecoin.
-
-1. The first option is encrypting your uploaded file using the Kavach SDK in the backend of your app.
-
-```javascript
-import {ethers} from "ethers"
-import lighthouse from '@lighthouse-web3/sdk'
-import kavach from "@lighthouse-web3/kavach"
-
-const signAuthMessage = async(privateKey) =>{
- const signer = new ethers.Wallet(privateKey)
- const authMessage = await kavach.getAuthMessage(signer.address)
- const signedMessage = await signer.signMessage(authMessage.message)
- const { JWT, error } = await kavach.getJWT(signer.address, signedMessage)
- return(JWT)
-}
-
-const uploadEncrypted = async() =>{
- /**
- * This function lets you upload a file to Lighthouse with encryption enabled.
- *
- * @param {string} path - Location of your file.
- * @param {string} apiKey - Your unique Lighthouse API key.
- * @param {string} publicKey - User's public key for encryption.
- * @param {string} signedMessage - A signed message or JWT used for authentication at encryption nodes.
- *
- * @return {object} - Returns details of the encrypted uploaded file.
- */
-
- const pathToFile = '/home/cosmos/Desktop/wow.jpg'
- const apiKey = 'YOUR_API_KEY_HERE'
- const publicKey = 'YOUR_PUBLIC_KEY_HERE'
- const signedMessage = await signAuthMessage(privateKey)
-
- const response = await lighthouse.uploadEncrypted(pathToFile, apiKey, publicKey, signedMessage)
- console.log(response)
- /* Sample Response
- {
- data: [
- {
- Name: 'decrypt.js',
- Hash: 'QmeLFQxitPyEeF9XQEEpMot3gfUgsizmXbLha8F5DLH1ta',
- Size: '1198'
- }
- ]
- }
- */
-}
-
-uploadEncrypted()
-```
-
-2. Alternatively, files can be encrypted with MetaMask in your browser application.
-
-```jsx
-import React, { useState } from "react"
-import lighthouse from "@lighthouse-web3/sdk"
-
-function App() {
- const [file, setFile] = useState(null)
-
- // Define your API Key (should be replaced with secure environment variables in production)
- const apiKey = process.env.REACT_APP_API_KEY
-
- // Function to sign the authentication message using Wallet
- const signAuthMessage = async () => {
- if (window.ethereum) {
- try {
- const accounts = await window.ethereum.request({
- method: "eth_requestAccounts",
- })
- if (accounts.length === 0) {
- throw new Error("No accounts returned from Wallet.")
- }
- const signerAddress = accounts[0]
- const { message } = (await lighthouse.getAuthMessage(signerAddress)).data
- const signature = await window.ethereum.request({
- method: "personal_sign",
- params: [message, signerAddress],
- })
- return { signature, signerAddress }
- } catch (error) {
- console.error("Error signing message with Wallet", error)
- return null
- }
- } else {
- console.log("Please install Wallet!")
- return null
- }
- }
-
- // Function to upload the encrypted file
- const uploadEncryptedFile = async () => {
- if (!file) {
- console.error("No file selected.")
- return
- }
-
- try {
- // This signature is used for authentication with encryption nodes
- // If you want to avoid signatures on every upload refer to JWT part of encryption authentication section
- const encryptionAuth = await signAuthMessage()
- if (!encryptionAuth) {
- console.error("Failed to sign the message.")
- return
- }
-
- const { signature, signerAddress } = encryptionAuth
-
- // Upload file with encryption
- const output = await lighthouse.uploadEncrypted(
- file,
- apiKey,
- signerAddress,
- signature,
- progressCallback
- )
- console.log("Encrypted File Status:", output)
- /* Sample Response
- {
- data: [
- Hash: "QmbMkjvpG4LjE5obPCcE6p79tqnfy6bzgYLBoeWx5PAcso",
- Name: "izanami.jpeg",
- Size: "174111"
- ]
- }
- */
- // If successful, log the URL for accessing the file
- console.log(
- `Decrypt at https://decrypt.mesh3.network/evm/${output.data[0].Hash}`
- )
- } catch (error) {
- console.error("Error uploading encrypted file:", error)
- }
- }
-
- // Function to handle file selection
- const handleFileChange = (e) => {
- const selectedFile = e.target.files
- if (selectedFile) {
- setFile(selectedFile)
- }
- }
-
- return (
-
-
-
-
- )
-}
-
-export default App
-```
-
-3. The following code also demonstrates how to encrypt JSON / text files stored on IPFS or Filecoin.
-
-```javascript
-import lighthouse from '@lighthouse-web3/sdk'
-
-/**
-* Use this function to upload an encrypted text string to IPFS.
-*
-* @param {string} text - The text you want to upload.
-* @param {string} apiKey - Your unique Lighthouse API key.
-* @param {string} publicKey - Your wallet's public key.
-* @param {string} signedMessage - A message you've signed using your private key.
-* @param {string} [name] - optional name for text
-*
-* @return {object} - Details of the uploaded file on IPFS.
-*/
-
-const yourText = "PLACE_YOUR_TEXT_HERE"
-const apiKey = "PLACE_YOUR_API_KEY_HERE"
-const publicKey = "PLACE_YOUR_PUBLIC_KEY_HERE"
-const signedMessage = "SIGNATURE/JWT"
-const name = "anime"
-
-const response = await lighthouse.textUploadEncrypted(yourText, apiKey, publicKey, signedMessage)
-console.log(response)
-/* Sample Response
-{
- data: {
- Name: 'anime',
- Hash: 'QmTsC1UxihvZYBcrA36DGpikiyR8ShosCcygKojHVdjpGd',
- Size: '67'
- }
-}
-*/
-```
-
-***
-
-### Gated access to your dataset
-
-Lighthouse also provides a number of methods to gate access a given data set. In the below code, the variables are:
-
-| Variable | Description |
-| -------------------- | ------------------------------------------------------------------------------------ |
-| id | the condition number |
-| chain | the current blockchain network |
-| method | function used to check a condition |
-| standardContractType | the type of contract being checked. Options include ERC20, ERC1155, ERC721 or Custom |
-| returnValueTest | details what is being compared |
-| parameters | allow for the function to take in any data it may need |
-| inputArrayType | the type of the parameter being taken as input |
-| outputType | the type of response returned by the function |
-
-**Sample Code:**
-
-* The first method is “NFT-based access,” where a user is able to access a file if they own at least one NFT of a given ERC721 contract.
-
-```
-{
- id: 1,
- chain: "wallaby",
- method: "balanceOf",
- standardContractType: "ERC721",
- contractAddress: "0x1a6ceedD39E85668c233a061DBB83125847B8e3A",
- returnValueTest: { comparator: ">=", value: "1" },
- parameters: [":userAddress"],
-}
-```
-
-* The second method is “Custom contract,” where a user is able to access a file if the returned value of a given function in the custom contract satisfies a certain condition. In the below example, the condition being checked is whether the “get()” function returns “1”.
-
-```
-{
- id: 1,
- chain: "Mumbai",
- method: "get",
- standardContractType: "Custom",
- contractAddress: "0x019e5A2Eb07C677E0173CA789d1b8ed4384e59A5",
- returnValueTest: {
- comparator: "==",
- value: "1"
- },
- parameters: [],
- inputArrayType: [],
- outputType: "uint256"
-}
-```
-
-* The third method is to check native tokens. In the below example, the condition being checked is whether the wallet address looking to access a file owns at least 1 ETH.
-
-```
-{
- id: 1,
- chain: "Ethereum",
- method: "getBalance",
- standardContractType: "",
- returnValueTest: {
- comparator: ">=",
- value: "1000000000000000000"
- }
-}
-```
-
-* The fourth and final method is to condition the access of a file on the block height, which is effectively time-based gate access. In the example below, a user can access the file above the block height of 133494.
-
-```
-{
- id: 1,
- chain: "Optimism",
- method: "getBlockNumber",
- standardContractType: "",
- returnValueTest: {
- comparator: ">",
- value: "133493"
- },
-}
-```
-
-To review the Lighthouse documentation in its entirety, please visit: [https://docs.lighthouse.storage](https://docs.lighthouse.storage/)
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/data-storage/privacy-and-access-control)
diff --git a/builder-cookbook/data-storage/retrieve-data.md b/builder-cookbook/data-storage/retrieve-data.md
deleted file mode 100644
index 36b165d64..000000000
--- a/builder-cookbook/data-storage/retrieve-data.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-description: >-
- Learn how to retrieve data for the Filecoin network with different approaches
- as well as incentivize data retrievability.
----
-
-# Retrieve Data
-
-### Retrieve data using retrieval clients
-
-To retrieve data stored on the Filecoin network, the basic process involves making retrieval requests to Service Providers (SPs) who initially stored the data, using either the Content ID (CID) or the storage deal ID.
-
-A programmatic option is to utilize Filecoin retrieval clients, which handle the intricate retrieval process behind the scenes. By simply providing a Content ID (CID), retrieval clients can efficiently return your data either via the command-line interface (CLI) or through the programmable method.
-
-#### **Ingredients**
-
-With a given CID, you can use any of the following retrieval clients to retrieve content.
-
-* [Lassie](https://github.com/filecoin-project/lassie): optimizes for most efficient available retrieval protocols.
- * [go-car](https://github.com/ipld/go-car): a content addressable archive utility.
-* [Saturn](https://saturn.tech/): a Web3 CDN in Filecoin’s retrieval market.
-
-#### **Instructions**
-
-1. **retrieving content with Lassie**
-
-Lassie is designed to fetch content in the content-addressed archive (CAR) form. In most cases, you will require additional tooling, such as the go-car library, to work with CAR files effectively.
-
-The Lassie command line interface (CLI) provides the simplest method for retrieving content from the Filecoin/IPFS network. By using the `lassie fetch` command and passing the CID as an argument, you can easily retrieve the desired content.
-
-
lassie fetch -o - <CID> | car extract
-
-
-For example,
-
-```
-lassie fetch -p bafybeic56z3yccnla3cutmvqsn5zy3g24muupcsjtoyp3pu5pm5amurjx4 | car extract
-```
-
-Lassie can also serve as a go library within your Golang application when programmatically retrieving content from the network. To utilize Lassie in your code, you need to install the dependency and import it into your program following the instructions [here](https://github.com/filecoin-project/lassie?tab=readme-ov-file#golang-library).
-
-The following example demonstrates how to use the Lassie library to fetch a CID.
-
-```go
-package main
-
-import (
- "context"
- "fmt"
- "os"
-
- "github.com/filecoin-project/lassie/pkg/lassie"
- "github.com/filecoin-project/lassie/pkg/storage"
- "github.com/filecoin-project/lassie/pkg/types"
- "github.com/ipfs/go-cid"
- trustlessutils "github.com/ipld/go-trustless-utils"
-)
-
-// main creates a default lassie instance and fetches a CID
-func main() {
- ctx := context.Background()
-
- // Create a default lassie instance
- lassie, err := lassie.NewLassie(ctx)
- if err != nil {
- panic(err)
- }
-
- // Prepare the fetch
- rootCid := cid.MustParse("bafybeic56z3yccnla3cutmvqsn5zy3g24muupcsjtoyp3pu5pm5amurjx4") // The CID to fetch
- store := storage.NewDeferredStorageCar(os.TempDir(), rootCid) // The place to put the CAR file
- request, err := types.NewRequestForPath(store, rootCid, "", trustlessutils.DagScopeAll, nil) // The fetch request
- if err != nil {
- panic(err)
- }
-
- // Fetch the CID
- stats, err := lassie.Fetch(ctx, request)
- if err != nil {
- panic(err)
- }
-
- // Print the stats
- fmt.Printf("Fetched %d blocks in %d bytes\n", stats.Blocks, stats.Size)
-}
-
-```
-
-2. **retrieving content with Saturn**
-
-{% hint style="info" %}
-[Saturn Javascript Client](https://github.com/filecoin-saturn/js-client) is still a work in progress and not recommended for use in production yet.
-{% endhint %}
-
-The following code example demonstrates how to use the Saturn in the Javascript program to fetch a CID.
-
-```javascript
-import { Saturn } from '@filecoin-saturn/js-client';
-// initialize a Saturn instance
-const saturn = new Saturn({
- clientKey: "...", // Key used for verification
- // ... other options
-});
-
-// fetch content using the client with given CID
-const cidPath = 'https://samplepath/ipfs/{cid}';
-const options = {
- fallbackLimit: 5,
- raceNodes: true,
-};
-
-(async () => {
- try {
- for await (const chunk of saturn.fetchContentWithFallback(cidPath, options)) {
- // Process each chunk of data
- console.log(chunk);
- }
- } catch (error) {
- console.error('Error fetching content:', error);
- }
-})();
-```
-
-***
-
-For quick retrieval of existing datasets with the methods above, check out the [Filecoin Dataset Explorer](https://datasets.filecoin.io/).
-
-***
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/builder-cookbook/data-storage/retrieve-data)
diff --git a/builder-cookbook/data-storage/store-data.md b/builder-cookbook/data-storage/store-data.md
deleted file mode 100644
index dc1fc5ae0..000000000
--- a/builder-cookbook/data-storage/store-data.md
+++ /dev/null
@@ -1,425 +0,0 @@
----
-description: >-
- Learn how to store data on the Filecoin network using different mechanisms
- that suit your project's requirements.
----
-
-# Store Data
-
-### Prepare data for Filecoin storage
-
-A CAR file is a standardized format for bundling and exchanging content-addressable data. It provides a way to organize and encapsulate data, ensuring it can be easily verified and retrieved.
-
-Before sending data to Filecoin storage providers, it is necessary to package the data into CAR (Content Addressable aRchive) files, regardless of whether you store the data via a smart contract or data onramp toolings.
-
-To provide the data to the SP which we make storage deals with, we need to prepare data and provide the following information when making storage deals via smart contracts or aggregators.
-
-* Piece CID & Payload CID
-* CAR size & piece size
-* URL to your file
-
-#### Ingredients
-
-We can use the following tools to prepare your data into CAR for storage via FVM.
-
-* [FVM Data Depot](https://data.lighthouse.storage/) - powered by [lighthouse.storage](https://www.lighthouse.storage/)
-* CAR libraries\
- `web3.storage/ipfs-car` or `ipld/car`
-* IPFS node\
- Store data on the IPFS network and provide CID to Filecoin SPs to initialize storage deals.
-
-#### Instructions
-
-We will explain each option available for preparing your data into CAR files and obtaining the necessary information to initialize storage deals via FVM, as there are multiple ways to accomplish this.
-
-1. [FVM Data Depot](https://data.lighthouse.storage/) - **recommended**
-
-Upload files, generate CAR, and get CAR links - we can do all these on the FVM Data Depot website. After logging in and uploading files following this [tutorial](https://docs.filecoin.io/smart-contracts/developing-contracts/client-contract-tutorial#preparing-a-file-for-storage), we will get the following information for proposing a storage deal via smart contract.
-
-* Piece CID & Payload CID
-* CAR size & piece size
-* URL to your file
-
-2. **using `web3.storage/ipfs-car` library**
-
-`ipfs-car` is a thin wrapper over [@ipld/car](https://github.com/ipld/js-car) and [unix-fs](https://github.com/ipfs/js-ipfs-unixfs) which provides a library and CLI tool to pack and unpack CAR(Content Addressable aRchives) files.
-
-After installing `ipfs-car` via NPM, we can use it as a CLI or JS library to pack your data into a CAR file. You can refer to[ ipfs-car GitHub](https://github.com/web3-storage/ipfs-car) to learn more about how to use it.
-
-**Pack files using CLI**
-
-Replace the file path and output path of the file you want to pack into CAR.
-
-
# ipfs-car will wrap files in an IPFS directory by default. --no-wrap will avoid it.
-ipfs-car --pack path/to/file --no-wrap --output path/to/write/a.car
-
-
-Expect output same as following:
-
-```
-root CID: bafybeigj6nccb4rc6cujxwojt4yd7ikxxs2yekjo4zhb25ql65jh3k35um
- output: a.car
-```
-
-Then we can upload `a.car` file to the ipfs using [lighthouse.storage](https://www.lighthouse.storage/) or IPFS desktop, and then provide the CID & URL for proposing storage deals via FVM on the Filecoin network.
-
-3. **upload to IPFS Desktop**
-
-Another option is to upload data to the IPFS network using an IPFS node, such as IPFS Desktop or Kubo. By following this [tutorial](https://docs.ipfs.tech/how-to/desktop-app/#add-local-files), you can learn how to add files using IPFS Desktop.
-
-Afterward, you can obtain the CID or URL of the uploaded data to propose storage deals via FVM on the Filecoin network.
-
-***
-
-### Store large data with the smart contract
-
-With the support of FVM, applications can leverage the decentralized nature of the smart contract to store data on Filecoin in a more decentralized way. By initiating storage deals through smart contracts on the FVM, the Client Contract (CC) FRC is utilized to propose deals to the Filecoin network. Service Providers (SPs) running Boost can actively monitor and process these deal proposals by listening for specific smart contract events.
-
-Client Contract serves as a crucial component in making on-chain storage deal proposals on the Filecoin network. To initialize a storage deal proposal via the Client Contract smart contract, we need to first pack your data into CAR files and obtain the following information before calling the CC smart contract.
-
-* pieceCID
-* CarLink
-* car size
-* piece Size
-* starting and ending epoch
-
-#### Ingredients
-
-* Client Contract
- * [FRC-0068](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0068.md)
- * [Reference Implementation](https://github.com/filecoin-project/fevm-hardhat-kit/blob/main/contracts/basic-deal-client/DealClient.sol)
-
-#### Instructions
-
-The Client Contract library implements the basic functions to make storage deal proposals as well as callback functions for successful storage deal creation.
-
-One of the key methods within this library is the `makeDealProposal` method, which is responsible for initiating a fully on-chain storage deal proposal. To invoke the `makeDealProposal` method, you will need to interact with the deployed DealClient contract on Calibration. This method accepts the required parameters for the storage deal, such as the data CID or URL, car size, piece size, the duration of the deal, and any other relevant details specific to your use case.
-
-Additionally, the Client Contract library provides callback functions that can be used to handle successful storage deal creation events. These callbacks allow you to perform actions or trigger subsequent processes upon the successful establishment of a storage deal.
-
-A Javascript function to invoke the `makeDealProposal` method should be like:
-
-
-
-The full tutorial of proposal storage deals through the client contract can be found [here](https://docs.filecoin.io/smart-contracts/developing-contracts/client-contract-tutorial).
-
-***
-
-### Store small data with storage onramps
-
-Filecoin is primarily designed for storing large data over extended periods. Due to economic considerations, it is generally not good for Service Providers (SPs) to accept small-scale datasets and allocate them to their 32 or 64 Gib storage sectors. As a result, it is unlikely that SPs will directly accept storage deals proposed by the client contract for small datasets.
-
-In the case of small datasets, a more viable option is to store them with [storage onramps](../../basics/how-storage-works/storage-onramps.md). Storage onramps combine multiple small datasets into a larger dataset and generate Proof of Deal Sub-piece Inclusion (PoDSI). PoDSI can be utilized to verify and provide evidence that the sub-piece datasets are included in a storage deal on the Filecoin network.
-
-One of the storage onramps we can use is [Lighthouse.storage](https://lighthouse.storage/) which is a perpetual file storage protocol that provides both on-chain and off-chain deal aggregation services. It provides a solution for storing small datasets on Filecoin while also enabling verification of deal inclusion using PoDSI. This combination of services can be valuable for ensuring the integrity and accessibility of small datasets stored on the Filecoin network.
-
-#### Ingredients
-
-* [Lighthouse.storage](https://lighthouse.storage/)
- * [SDK](https://github.com/lighthouse-web3/lighthouse-package): a JavaScript library that allows you to upload files to the Filecoin network.
- * [smart contract](https://github.com/lighthouse-web3/raas-starter-kit/blob/main/contracts/DealStatus.sol): solidity contract to submit and process storage deal aggregation requests.
-
-#### Instructions
-
-Lighthouse.storage provides users with two options for uploading data and making storage: utilizing the Lighthouse SDK to store data or leveraging smart contracts to initiate on-chain storage deals.
-
-1. **store data with lighthouse SDK**
-
-By creating an account with Lighthouse storage and generating an API key, you can easily upload data to the Filecoin network using the Lighthouse SDK within any JavaScript application. Data stored using lighthouse SDK will be automatically registered for deal aggregation as well as RaaS(replication, renewal, and repair).
-
-First, install lighthouse SDK in your project with the command `npm install -g @lighthouse-web3/sdk`. Then use the following code to upload data to the lighthouse for deal aggregation.
-
-```javascript
-import lighthouse from "@lighthouse-web3/sdk";
-// ... other code
-const filePath = '/path/to/your/files'; // change the path of your file
-const APIKey = 'YOUR_API_KEY';// the API key from the lighthouse account
-const uploadResponse = await lighthouse.upload(filePath, APIKey);
-```
-
-The expected output of `uploadResponse`.
-
-
-
-2. **store data via lighthouse smart contract**
-
-Lighthouse has also implemented an aggregator smart contract based on [IAggregatorOracle](https://github.com/lighthouse-web3/raas-starter-kit/blob/main/contracts/interfaces/IAggregatorOracle.sol). This smart contract is deployed on the Filecoin Calibration testnet, allowing users to submit deal aggregation requests on-chain.
-
-We can call the smart contract at `0x01ccBC72B2f0Ac91B79Ff7D2280d79e25f745960` and submit a CID for aggregation via `submit(bytes memory _cid) external returns (uint256)` methods.
-
-A Javascript function to invoke the `submit` method should be like:
-
-
-
-The full tutorial for uploading data using Lighthouse SDK and smart contract can be found [here](https://docs.lighthouse.storage/how-to/using-pdp-with-lighthouse).
-
-***
-
-### Manage storage deals with RaaS
-
-RaaS (Replication, Renewal, and Repair as a Service) refers to the service provided for data stored in storage deals on the Filecoin network. When making storage deals with deal aggregators, such as lighthouse.storage, users have the option to register the RaaS job for the stored data. Subsequently, the aggregators monitor the status of the registered storage deals and initiate the necessary actions for replication, renewal, and repair as required.
-
-When storing data using either the Lighthouse SDK or smart contracts, we can register a RaaS job.
-
-* Lighthouse SDK: register replication, renew, and repair service by setting deal parameters when uploading data.
-* Lighthouse smart contract: calling `submitRaaS` attaching RaaS parameters for the storage deal aggregation.
-
-#### Ingredients
-
-* [Lighthouse.storage](https://www.lighthouse.storage/)
- * [SDK](https://github.com/lighthouse-web3/lighthouse-package): a JavaScript library that allows you to upload files to the Filecoin network.
- * [smart contract](https://github.com/lighthouse-web3/raas-starter-kit/blob/main/contracts/DealStatus.sol): solidity contract to submit and process storage deal aggregation requests.
-
-#### Instructions
-
-1. **register RaaS job when uploading with lighthouse SDK**
-
-When uploading a file using the SDK, you have the flexibility to customize how it is stored in Lighthouse by adjusting the deal parameters.
-
-* **num\_copies**: Decide how many backup copies you want for your file. The Max limit is 3. For instance, if set to 3, your file will be stored by 3 different storage providers.
-* **repair\_threshold**: Determines when a storage sector is considered "broken" if a provider fails to confirm they still have your file. It's measured in "epochs", with 28800 epochs being roughly 10 days.
-* **renew\_threshold**: Specifies when your storage deal should be renewed. It's also measured in epochs.
-* **network**: This should always be set to 'calibration' (for RAAS services to function) unless you want to use the mainnet.
-
-```javascript
-// Sample JSON of deal parameters
-const dealParams = {
- num_copies: 2,
- repair_threshold: 28800,
- renew_threshold: 28800,
- network: 'calibration',
-};
-
-// register RaaS job with the aggregator SDK.
-const response = await lighthouse.upload(path, apiKey, false, dealParams);
-```
-
-2. **register RaaS job when proposal storage deal using lighthouse smart contract**
-
-Another way to register RaaS jobs is by interacting with the Lighthouse smart contract and submitting a CID of your choice to the `submitRaaS` function. This action creates a new deal request that will be picked up by the Lighthouse RaaS Worker, initiating the necessary replication, renewal, and repair processes.
-
-```javascript
-import contract from "../contracts/DealStatus.json";
-// ... other code
-const SubmitRaaS = async () => {
- const contractAddress = '0x01ccBC72B2f0Ac91B79Ff7D2280d79e25f745960'; // Deployed DealClient Contract address
- const contractABI = contract.abi; // the path where the DealStatus.json is
- const cid = 'baga6ea4seaqpi75umesad5vlyzyf66vbzntoave4bebmkcqu4f6nq6rchhx3ckq';
- // This handles proposing storage deals
- try {
- const { ethereum } = window;
- if (ethereum) {
- const provider = new ethers.BrowserProvider(ethereum);
- const signer = await provider.getSigner();
- dealStatus = new ethers.Contract(
- contractAddress,
- contractABI,
- signer
- );
- cid = new CID(commP)
- const transaction = await dealStatus.submitRaaS(cid.bytes, 2, 4, 40);
- const receipt = await transaction.wait();
- console.log(receipt);
- } else {
- console.log("Ethereum object doesn't exist!");
- }
- } catch (error) {
- console.log(error);
- return;
- }
- };
-```
-
-***
-
-### Monitor storage deal status from a smart contract
-
-The [Deal Bounty Contract](https://github.com/FILCAT/deal-bounty-contract/tree/main) also demonstrates a way to monitor the status of a Filecoin Storage Deal.
-
-#### 1. Import the [MarketAPI](https://github.com/Zondax/filecoin-solidity-mock-api/blob/master/contracts/v0.8/MarketAPI.sol).
-
-```solidity
-import { MarketAPI } from "../lib/filecoin-solidity/contracts/v0.8/MarketAPI.sol";
-```
-
-#### 2. Use the MarketAPI functions to check the current status of a deal. An example is shown in claim\_bounty():
-
-```solidity
-function claim_bounty(uint64 deal_id) public {
- MarketTypes.GetDealDataCommitmentReturn memory commitmentRet = MarketAPI.getDealDataCommitment(MarketTypes.GetDealDataCommitmentParams({id: deal_id}));
- MarketTypes.GetDealProviderReturn memory providerRet = MarketAPI.getDealProvider(MarketTypes.GetDealProviderParams({id: deal_id}));
-
- authorizeData(commitmentRet.data, providerRet.provider, commitmentRet.size);
-
- // get dealer (bounty hunter client)
- MarketTypes.GetDealClientReturn memory clientRet = MarketAPI.getDealClient(MarketTypes.GetDealClientParams({id: deal_id}));
-
- // send reward to client
- send(clientRet.client);
- }
-
-```
-
-***
-
-### Incentivized data storage
-
-There are two sides to incentivizing data onboarding –the first is to incentivize the client to upload data, which can be done with an ERC20 token included in a DataDAO that pays to wallets that upload data through the DataDAO. The second is to incentivize the storage providers to take a deal. Both are demonstrated in the [Deal Bounty Contract](https://github.com/FILCAT/deal-bounty-contract/tree/main).
-
-#### **Ingredients**
-
-* [Foundry](https://github.com/foundry-rs/foundry/blob/master/README.md)
-* [Solidity](https://docs.soliditylang.org/en/v0.8.23/)
-* [Filecoin Storage](https://dataonboarding.filecoin.io/)
-* [Filecoin Retrieval](https://docs.filecoin.io/basics/how-retrieval-works/basic-retrieval)
-
-#### **Instructions**
-
-Note that the full solidity file for the Deal Bounty Contract can be found [HERE](https://github.com/FILCAT/deal-bounty-contract/blob/main/src/DealRewarder.sol). This cookbook will pull relevant functions for you as a way to base your own code on.
-
-1. The contract owner will deploy the contract, establishing the rules of the dataDAO.
-2. Data pinners will add the deal CIDs intended to be incentivized to the list. This will allow storage providers to see which deals have additional incentives.
-
-```jsx
-function addCID(bytes calldata cidraw, uint size) public {
- require(msg.sender == owner);
- cidSet[cidraw] = true;
- cidSizes[cidraw] = size;
- }
-```
-
-3. The contract should then be funded by those who want to see the CID be accepted.
-
-```solidity
-function call_actor_id(uint64 method, uint256 value, uint64 flags, uint64 codec, bytes memory params, uint64 id) public returns (bool, int256, uint64, bytes memory) {
- (bool success, bytes memory data) = address(CALL_ACTOR_ID).delegatecall(abi.encode(method, value, flags, codec, params, id));
- (int256 exit, uint64 return_codec, bytes memory return_value) = abi.decode(data, (int256, uint64, bytes));
- return (success, exit, return_codec, return_value);
- }
-
- // send 1 FIL to the filecoin actor at actor_id
- function send(uint64 actorID) internal {
- bytes memory emptyParams = "";
- delete emptyParams;
-
- uint oneFIL = 1000000000000000000;
- HyperActor.call_actor_id(METHOD_SEND, oneFIL, DEFAULT_FLAG, Misc.NONE_CODEC, emptyParams, actorID);
-
- }
-
-```
-
-4. Finally, the bounty is claimed by the storage providers that accepted the deal. This is done by using the MarketAPI to check the status of a deal.
-
-```solidity
-function claim_bounty(uint64 deal_id) public {
- MarketTypes.GetDealDataCommitmentReturn memory commitmentRet = MarketAPI.getDealDataCommitment(MarketTypes.GetDealDataCommitmentParams({id: deal_id}));
- MarketTypes.GetDealProviderReturn memory providerRet = MarketAPI.getDealProvider(MarketTypes.GetDealProviderParams({id: deal_id}));
-
- authorizeData(commitmentRet.data, providerRet.provider, commitmentRet.size);
-
- // get dealer (bounty hunter client)
- MarketTypes.GetDealClientReturn memory clientRet = MarketAPI.getDealClient(MarketTypes.GetDealClientParams({id: deal_id}));
-
- // send reward to client
- send(clientRet.client);
- }
-
-```
-
-***
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/data-storage/store-data)
diff --git a/builder-cookbook/filecoin-pin/README.md b/builder-cookbook/filecoin-pin/README.md
deleted file mode 100644
index 33199bb3d..000000000
--- a/builder-cookbook/filecoin-pin/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-description: Pin IPFS content to Filecoin using familiar IPFS tools and workflows.
----
-
-# Filecoin Pin
-
-## Status
-
-Filecoin Pin is currently **alpha software** running on the Filecoin Calibration testnet. As of 2025-10-15, it is undergoing active development and not yet recommended for production use. Please register for updates and GA announcement at [filecoin.cloud](https://filecoin.cloud/).
-
-## What is Filecoin Pin?
-
-Filecoin Pin is a fully decentralized persistence layer for IPFS content using the global network of Filecoin storage providers with cryptographic guarantees.
-
-When you use Filecoin Pin, your IPFS files gain:
-
-- **Verifiable persistence** - Storage providers must cryptographically prove daily that they continue to store and serve your data
-- **Economic incentives** - You only pay when storage proofs are successfully delivered and verified onchain
-- **Decentralized infrastructure** - Your data can be stored across a global network of independent storage providers
-- **Sovereign data** - Choose your providers, audit storage proofs and payments onchain, with no dependency on a single company
-- **Seamless IPFS integration** - Continue using standard [IPFS Mainnet](https://docs.ipfs.tech/concepts/glossary/#mainnet) tooling like Kubo, Helia, and IPFS HTTP Gateways while gaining Filecoin's persistence guarantees
-
-## Who is Filecoin Pin for?
-
-Filecoin Pin is designed for developers building on IPFS who need trustless, economically-incentivized persistence for their content. Whether you're building dApps, workflows, websites, AI agents, or other applications, Filecoin Pin provides the missing persistence layer for IPFS.
-
-## How to Get Started
-
-Get started using Filecoin Pin today with:
-1. [Filecoin Pin CLI](filecoin-pin-cli.md) - Upload new or existing IPFS files directly to Filecoin via the command line. Perfect for developers who want to integrate Filecoin storage into scripts, workflows, or local development environments.
-2. [Filecoin Pin GitHub Actions](github-action.md) - Use GitHub Actions to automatically publish websites or build artifacts to IPFS and Filecoin as part of your CI/CD pipeline. Ideal for static websites, documentation sites, and automated deployment workflows.
-3. [Filecoin Pin dApp Demo](dapp-demo.md) - Run or fork a simple demo dApp that demonstrates Filecoin Pin in a browser-based application. Great for understanding how to integrate Filecoin Pin into web applications.
-4. [Filecoin Pin for ERC-8004 Agents](erc-8004-agent-registration.md) - Learn how to register a trustless autonomous agent on the ERC-8004 Identity Registry with verifiable persistent storage for agent metadata using Filecoin Pin.
-
-
-## Learn More
-
-- **[FAQ](faq.md)** - Common questions about Filecoin Pin
-- **[Filecoin Pin GitHub Repository](https://github.com/filecoin-project/filecoin-pin)** - Source code and technical documentation
-- **[Community and Support](https://github.com/filecoin-project/filecoin-pin?tab=readme-ov-file#community-and-support)** - Join the community for real-time developer support and updates.
-
-
diff --git a/builder-cookbook/filecoin-pin/filecoin-pin-cli.md b/builder-cookbook/filecoin-pin/filecoin-pin-cli.md
deleted file mode 100644
index be44001e0..000000000
--- a/builder-cookbook/filecoin-pin/filecoin-pin-cli.md
+++ /dev/null
@@ -1,329 +0,0 @@
----
-description: How to use the Filecoin Pin CLI to store and retrieve IPFS data on Filecoin
----
-
-# Filecoin Pin CLI
-
-> ⚠️ **SECURITY WARNING**: This tutorial uses throwaway private keys for demo purposes. **NEVER commit private keys to repositories or expose them publicly**. Use environment variables and GitHub secrets for production.
-
-## Overview
-
-Filecoin Pin CLI is a command-line tool that allows you to store IPFS data on the Filecoin network with cryptographic proofs of storage. This guide walks you through the complete setup and usage process.
-
-### Setup Payments
-
-Configure permissions for automatic payment handling:
-
-
-
-### Upload Data
-
-Upload your file with automatic funding:
-
-
-
-### Retrieve over an IPFS Gateway
-
-Retrieve your data using the IPFS gateway:
-
-
-
-### Prove Storage
-
-Verify your data is stored with cryptographic proofs:
-
-
-
-### Who is this for
-
-1. Existing IPFS developers who want to use Filecoin to persist their data
-2. Agent builders that want to store their agent cards and validation materials on Filecoin for cryptographic proof of storage
-
-## Getting started
-
-> NOTE! For demo purposes, this example uses a THROWAWAY PRIVATE KEY. **NEVER USE YOUR PRIVATE KEY IN A REPOSITORY OR EXPOSE IT**. The repo references using your private key LOCALLY as an ENV VARIABLE. When you create a GITHUB ACTION, use GITHUB SECRETS to store your private key.
-
-### Prerequisites
-
-#### Install Required Tools
-
-```bash
-# Install Node.js 22+ (required for filecoin-pin)
-nvm install 22
-nvm use 22
-
-# Install filecoin-pin globally
-npm install -g filecoin-pin@latest
-
-# Install GitHub CLI
-brew install gh # macOS
-# or
-sudo apt install gh # Ubuntu/Debian
-
-# Install Foundry (for wallet operations)
-curl -L https://foundry.paradigm.xyz | bash
-# Then run this in a new terminal:
-foundryup
-```
-
-#### Verify Installation
-
-```bash
-filecoin-pin --version
-# Expected: filecoin-pin v0.9.1 (or later)
-
-gh --version
-# Expected: gh version 2.40.0 (or later)
-
-node --version
-# Expected: v22.x.x or higher
-
-cast --version
-# Expected: cast 0.2.0 (or later)
-```
-
-***
-
-### 1. Wallet Setup
-
-> **Note**: The `filecoin-pin` CLI expects a `PRIVATE_KEY` for your Filecoin wallet to pay for storage service and transaction fees of using Filecoin warm storage service.
-
-So the first step is to acquire some test FIL and USDFC on the Filecoin calibration testnet into your ETH-compatible wallet.
-
-#### Generate a New Wallet
-
-If you do not have an ETH-compatible Filecoin wallet, you can generate one using Foundry:
-
-```bash
-cast wallet new
-```
-
-Save the private key and wallet address.
-
-#### Get Testnet tokens
-
-* **tFIL**
-
- Request 100 tFIL from [ChainSafe calibration faucet](https://faucet.calibnet.chainsafe-fil.io/funds.html).
-* **Test USDFC**
-
- Request test USDFC from [Filecoin Calibnet USDFC Faucet](https://forest-explorer.chainsafe.dev/faucet/calibnet_usdfc)
-
-***
-
-### 2. Create Environment File
-
-> This PRIVATE\_KEY is for testing purposes only. Please **NEVER USE YOUR PRIVATE KEY IN A REPOSITORY OR EXPOSE IT**.
-
-Save your credentials **locally** for easy reuse:
-
-```bash
-cat > ~/.filecoin-pin-env << 'EOF'
-export PRIVATE_KEY="0x8eef...c414"
-export WALLET_ADDRESS="0x5a0...B7B0B"
-EOF
-
-# Load variables
-source ~/.filecoin-pin-env
-
-# Verify
-echo "Wallet: $WALLET_ADDRESS"
-echo "Private Key: ${PRIVATE_KEY:0:10}..."
-```
-
-***
-
-### 3. Using the Filecoin Pin CLI
-
-#### Setup Payments
-
-All commands in this section use the environment variables set in [Create Environment File](filecoin-pin-cli.md#id-2.-create-environment-file). If you're starting a new terminal session, reload them:
-
-```bash
-source ~/.filecoin-pin-env
-```
-
-> **Note:** These commands work directly without running a server/daemon. The `PRIVATE_KEY` environment variable must be set.
-
-Configure payment approvals (permissions only - deposits handled automatically with `--auto-fund`):
-
-```bash
-filecoin-pin payments setup --auto
-```
-
-> **What `--auto` does**: Configures WarmStorage contract permissions automatically. No deposit required at this step - use `--auto-fund` when uploading to handle deposits automatically.
-
-#### Upload Data
-
-Use the `--auto-fund` flag to automatically handle payment deposits (v0.7.0+).
-
-**Upload a file:**
-
-```bash
-# Create test file
-echo "Hello Filecoin from CLI!" > demo.txt
-
-# Upload to Filecoin
-filecoin-pin add demo.txt --auto-fund
-```
-
-**Key values explained:**
-
-* **Root CID**: `bafybeibh422kjvgfmymx6nr7jandwngrown6ywomk4vplayl4de2x553t4` - IPFS CID for your data, which you can access from IPFS gateways, such as **ipfs.io**.
-* **Piece CID**: `bafkzcibcfab4grpgq6e6rva4kfuxfcvibdzx3kn2jdw6q3zqgwt5cou7j6k4wfq` - Filecoin piece commitment (cryptographic proof)
-* **Piece ID**: `0` - Reference within the data set
-* **Data Set ID**: `325` - On-chain data set containing your upload
-* **Transaction**: `0xc85e49d2ed745cc8c5d7115e7c45a1243ec25da7e73e224a744887783afea42b` - Blockchain confirmation hash
-* **Direct Download URL**: Direct link to retrieve your data from the storage provider
-
-✅ **Your file is now stored on Filecoin with ongoing proof of possession!**
-
-1. Your file will be accessible via IPFS gateways, such as `https://ipfs.io/ipfs/`
-2. It is also available to download from the Filecoin service provider using the **Direct Download URL**.
-
-#### Upload Directory
-
-You can also upload a directory - it will package multiple files into a single CAR:
-
-```bash
-# Create test directory
-mkdir my-data
-echo "File 1" > my-data/file1.txt
-echo "File 2" > my-data/file2.txt
-echo "File 3" > my-data/file3.txt
-
-# Upload entire directory with auto-funding
-filecoin-pin add my-data/ --auto-fund
-```
-
-**Key details:**
-
-* **Root CID**: `bafybeig27btater5fpt3l67gbme3sebqk3ynwdhlbrbuk3q7espiyplan4` - IPFS CID for the directory structure
-* **Size**: 433.0 B - Includes all files plus directory metadata
-* **Piece ID**: `1` - Second piece in the same Data Set ID 325
-* **Data Set ID**: `325` - Same data set as the single file upload (multiple pieces grouped together)
-
-> 💡 **Note**: Multiple uploads to the same payment configuration are grouped into the same Data Set, with each upload assigned a unique Piece ID.
-
-#### Prove Storage
-
-Filecoin-pin CLI also provide commands to check the proof of your storage in data set. First, you can list the dataset associate to your wallet.
-
-```bash
-filecoin-pin data-set --ls
-
-//Expected Output
-━━━ Data Sets ━━━
-│
-│ Address: 0x5a0...B7B0B
-│ Network: calibration
-│
-│ #325 • live • managed
-│ Provider: infrafolio-calib (ID 4)
-│ Pieces stored: 3
-│ ...
-│
-└ Data set inspection complete
-```
-
-Then you can get detailed information about your data set (this queries the blockchain directly) that includes proofs:
-
-```bash
-filecoin-pin data-set 325
-```
-
-**Expected Output:**
-
-```
-Filecoin Onchain Cloud Data Sets
-
-━━━ Data Sets ━━━
-
-Data Set #325 • live
- Managed by Warm Storage: yes
- CDN add-on: disabled
- Pieces stored: 2
- Leaf count: 21
- Total size: 672.0 B
- Client data set ID: 0
- PDP rail ID: 631
- CDN rail ID: none
- Cache-miss rail ID: none
- Payer: 0x5a0c7D45C3834E4eB18c26C60932B757A43B7B0B
- Payee: 0xa3971A7234a3379A1813d9867B531e7EeB20ae07
- Service provider: 0xa3971A7234a3379A1813d9867B531e7EeB20ae07
- Provider: ezpdpz-calib (ID 3)
- Commission: 0.00%
-
-Provider Service
- Service URL: https://calib.ezpdpz.net
- Min piece size: 1.0 KB
- Max piece size: 32.0 GB
- Storage price: < 0.0001 USDFC/TiB/month
- Min proving period: 30 epochs
- Location: unknown
- Payment token: USDFC (native)
-
-Metadata
- source: filecoin-pin
- withIPFSIndexing: (empty)
-
-Pieces
- Total pieces: 2
- Unique CommPs: 2
- Unique root CIDs: 2
-
- #0
- CommP: bafkzcibcfab4grpgq6e6rva4kfuxfcvibdzx3kn2jdw6q3zqgwt5cou7j6k4wfq
- Root CID: bafybeibh422kjvgfmymx6nr7jandwngrown6ywomk4vplayl4de2x553t4
- #1
- CommP: bafkzcibcjmcnyio2ocxhmtq34uh5ct425xzpnor532zku7tjvqf5toodbxtsqhi
- Root CID: bafybeig27btater5fpt3l67gbme3sebqk3ynwdhlbrbuk3q7espiyplan4
-Data set inspection complete
-```
-
-**Key information:**
-
-**Data Set Status:**
-
-* **live** - Data set is active with ongoing PDP proofs
-* **Pieces stored: 2** - Our demo.txt (#0) and my-data/ directory (#1)
-* **Leaf count: 21** - Total Merkle tree leaves across all pieces
-* **Total size: 672.0 B** - Combined size of both pieces
-
-**Payment Rails:**
-
-* **PDP rail ID: 631** - Active payment rail for storage proofs
-* **Payer/Payee** - Payment flows from your wallet to the provider
-* **Commission: 0.00%** - No commission on this testnet provider
-
-**Provider Details:**
-
-* **Service URL**: Direct access to download pieces
-* **Storage price**: < 0.0001 USDFC/TiB/month
-* **Min proving period: 30 epochs** - Proofs submitted every 15 minutes
-
-**Pieces:**
-
-* Each piece shows its CommP (Filecoin piece CID) and Root CID (IPFS content ID)
-* Piece #0 = demo.txt (our single file upload)
-* Piece #1 = my-data/ (our directory upload)
-
-> 💡 **Note**: This command queries the smart contracts on-chain to retrieve all data set information. The data shown is live blockchain state, not cached data.
-
-## Links
-
-#### Documentation
-
-* [Frequently Asked Questions](faq.md)
-* [Filecoin Pin Documentation](https://docs.filecoin.io/builder-cookbook/filecoin-pin)
-
-#### Repositories
-
-* [Filecoin Pin CLI](https://github.com/filecoin-project/filecoin-pin)
-* [Filecoin Pin dApp](https://github.com/filecoin-project/filecoin-pin-website)
-
-#### Related Tools
-
-* [Synapse SDK](https://github.com/FilOzone/synapse-sdk)
-* [USDFC Documentation](https://docs.secured.finance/usdfc-stablecoin/getting-started)
diff --git a/builder-cookbook/overview.md b/builder-cookbook/overview.md
deleted file mode 100644
index 7a2baec72..000000000
--- a/builder-cookbook/overview.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Overview
-
-The Builder Cookbook is designed to help builders quickly discover and learn the specific features required to develop robust solutions on Filecoin.
-
-This comprehensive collection of straightforward recipes serves as a practical guide, showcasing the usage and best practices of core features on Filecoin, enabled by the [Filecoin Virtual Machine(FVM)](../smart-contracts/fundamentals/the-fvm.md).
-
-### **How to use this cookbook?**
-
-These cookbook recipes are solution-focused (e.g. "How can I do..."), as opposed to tutorials for standalone features (e.g. "How can I use..."). They serve as a valuable feature database for builders, enabling them to select and develop various dApps.
-
-Each recipe contains:
-
-* **Introduction**
-
- A clear and brief overview or context of this recipe that focuses on explaining a specific, small feature.
-* **Ingredients**
-
- a set of the necessary tools, libraries, or dependencies required for this recipe might need to be installed in advance.
-* **Instructions**
-
- step-by-step instructions for implementing the recipe with code examples, and expected output if there is one. The code snippet in the example can be slightly modified and copied into your projects for experimentation.
-
-### **Quick Start**
-
-
Data Storage
Recipes for programmable storage and retrieval of your public or private data on Filecoin.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/overview)
diff --git a/builder-cookbook/table-of-contents.md b/builder-cookbook/table-of-contents.md
deleted file mode 100644
index 40e2c48d2..000000000
--- a/builder-cookbook/table-of-contents.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-description: >-
- Contains the full list of recipes. Start here to find the features to build
- your projects.
----
-
-# Table of Contents
-
-#### Data Storage
-
-* **Store Data**
- * [Prepare data for Filecoin storage](data-storage/store-data.md#prepare-data-for-filecoin-storage)
- * [Store large data with smart contract](data-storage/store-data.md#store-large-data-with-the-smart-contract)
- * [Store small data with storage onramps](data-storage/store-data.md#store-small-data-with-storage-onramps)
- * [Manage storage deals with RaaS](data-storage/store-data.md#manage-storage-deals-with-raas)
- * [Monitor storage deal status from a smart contract](data-storage/store-data.md#monitor-storage-deal-status-from-a-smart-contract)
- * [Incentivized data storage](data-storage/store-data.md#incentivized-data-storage)
-* **Retrieve Data**
- * [Retrieve data using retrieval clients](data-storage/retrieve-data.md#retrieve-data-using-retrieval-clients)
-* **Ensure Data Privacy & Access Control**
- * [Encrypting data for storing on Filecoin](data-storage/privacy-and-access-control.md#encrypting-data-for-storing-on-filecoin-ipfs)
- * [Gated access to your dataset](data-storage/privacy-and-access-control.md#gated-access-to-your-dataset)
-
-#### dApps Development
-
-* **Chain-Data Query**
- * [Connecting to Filecoin networks via public RPC nodes](dapps/chain-data-query.md#connecting-to-filecoin-networks-via-public-rpc-nodes)
- * [Listen to smart contract events](dapps/chain-data-query.md#listen-to-smart-contract-events)
- * [Filter smart contract events](dapps/chain-data-query.md#filter-smart-contract-events)
-* **Oracle**
- * [Feed token prices to smart contract](dapps/oracles.md#feed-token-prices-to-smart-contract)
-* **Cross-Chain Bridge**
- * [Bridge wFIL with Axelar](dapps/cross-chain-bridges.md#bridge-wfil-with-axelar)
-* **Decentralized Database**
- * [Store data with Tableland](dapps/decentralized-database.md#store-data-with-tableland)
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/builder-cookbook/table-of-contents)
diff --git a/smart-contracts/fundamentals/filecoin-evm-runtime.md b/core-concepts/filecoin-evm-runtime/README.md
similarity index 97%
rename from smart-contracts/fundamentals/filecoin-evm-runtime.md
rename to core-concepts/filecoin-evm-runtime/README.md
index 1c6b29806..267ec4ed3 100644
--- a/smart-contracts/fundamentals/filecoin-evm-runtime.md
+++ b/core-concepts/filecoin-evm-runtime/README.md
@@ -23,4 +23,4 @@ For a deeper dive into the concepts discussed on this page, see this presentatio
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/filecoin-evm-runtime)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime)
diff --git a/smart-contracts/filecoin-evm-runtime/actor-types.md b/core-concepts/filecoin-evm-runtime/actor-types.md
similarity index 89%
rename from smart-contracts/filecoin-evm-runtime/actor-types.md
rename to core-concepts/filecoin-evm-runtime/actor-types.md
index 0a3e76dfa..8242f30aa 100644
--- a/smart-contracts/filecoin-evm-runtime/actor-types.md
+++ b/core-concepts/filecoin-evm-runtime/actor-types.md
@@ -40,7 +40,7 @@ An EVM smart contract actor hosts a single EVM smart contract. Every EVM smart c
An EVM smart contract can be deployed in one of three ways:
1. An existing EVM smart contract can use the EVM’s `CREATE`/`CREATE2` opcode.
-2. Ethereum-native tooling can be used in conjunction with an Ethereum-style account such as [Remix](../developing-contracts/remix.md) or [Hardhat](../developing-contracts/hardhat.md).
+2. Ethereum-native tooling can be used in conjunction with an Ethereum-style account such as [Remix](../../build/development-frameworks/remix.md) or [Hardhat](../../build/development-frameworks/hardhat.md).
3. A native account can call method `4` on the Ethereum account manager `f010`, passing the EVM init code as a CBOR-encoded byte-string (major type 2) in the message parameters.
### Calling
@@ -48,11 +48,11 @@ An EVM smart contract can be deployed in one of three ways:
An EVM smart contract may be called in one of three ways:
1. An EVM smart contract can use the EVM’s `CALL` opcode.
-2. Ethereum-native tooling, like [MetaMask](../../basics/assets/metamask-setup.md), can be used in conjunction with an Ethereum-style account.
+2. Ethereum-native tooling, like [MetaMask](../../networks-and-tools/assets/metamask-setup.md), can be used in conjunction with an Ethereum-style account.
3. Finally, a native account can call method `3844450837` (`FRC42(InvokeEVM)`):
1. The input data should either be empty or encoded as a CBOR byte string.
2. The return data will either be empty or encoded as a CBOR byte string.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/actor-types)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime/actor-types)
diff --git a/smart-contracts/filecoin-evm-runtime/address-types.md b/core-concepts/filecoin-evm-runtime/address-types.md
similarity index 96%
rename from smart-contracts/filecoin-evm-runtime/address-types.md
rename to core-concepts/filecoin-evm-runtime/address-types.md
index 279dd62b1..1e748d740 100644
--- a/smart-contracts/filecoin-evm-runtime/address-types.md
+++ b/core-concepts/filecoin-evm-runtime/address-types.md
@@ -70,7 +70,7 @@ Public key addresses allow devices, like hardware wallets, to derive a valid Fil
Filecoin supports two types of public key addresses:
-* [secp256k1 addresses](https://en.bitcoin.it/wiki/Secp256k1) that begin with the protocol indicator as `1`.
+* [secp256k1 addresses](https://en.wikipedia.org/wiki/Secp256k1) that begin with the protocol indicator as `1`.
* [BLS addresses](https://en.wikipedia.org/wiki/BLS\_digital\_signature) that begin with the protocol indicator as `3`.
`t1iandfn6d...ddboqxbhoeva` - a testnet wallet address generated using secp256k1. `t3vxj34sbdr3...road7cbygq` - a testnet wallet address generated using BLS.
@@ -123,7 +123,7 @@ The subaddress of an `f410/t410` address is the original Ethereum address. Ether
t410f2oekwcmo2pueydmaq53eic2i62crtbeyuzx2gmy
```
-If you have an Ethereum wallet address starting with `0x`, then the Ethereum Address Manager (EAM) will assign a corresponding `t410` Filecoin address to it. If you send 10 TFIL to `0xd388ab098ed3e84c0d808776440b48f685198498` using a wallet like MetaMask, you will receive 10 TFIL to your `t410f2oekwcmo2pueydmaq53eic2i62crtbeyuzx2gmy` address on Filecoin Calibration testnet.
+If you have an Ethereum wallet address starting with `0x`, then the Ethereum Address Manager (EAM) will assign a corresponding `t410` Filecoin address to it. If you send 10 tFIL to `0xd388ab098ed3e84c0d808776440b48f685198498` using a wallet like MetaMask, you will receive 10 tFIL to your `t410f2oekwcmo2pueydmaq53eic2i62crtbeyuzx2gmy` address on Filecoin Calibration testnet.
```plaintext
# A Filecoin smart contract address.
@@ -173,4 +173,4 @@ Otherwise, it maps to f410f…
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/address-types)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime/address-types)
diff --git a/smart-contracts/filecoin-evm-runtime/difference-with-ethereum.md b/core-concepts/filecoin-evm-runtime/difference-with-ethereum.md
similarity index 95%
rename from smart-contracts/filecoin-evm-runtime/difference-with-ethereum.md
rename to core-concepts/filecoin-evm-runtime/difference-with-ethereum.md
index 05d218cc0..426e65137 100644
--- a/smart-contracts/filecoin-evm-runtime/difference-with-ethereum.md
+++ b/core-concepts/filecoin-evm-runtime/difference-with-ethereum.md
@@ -29,7 +29,7 @@ Filecoin EVM runtime emulates EVM self-destruct behavior but isn’t able to ent
1. There is no gas refund for self-destruct.
2. On self-destruct, the contract is marked as self-destructed, but is not actually deleted from the Filecoin state-tree. Instead, it simply behaves as if it does not exist. It acts like an empty contract.
-3. Unlike in the EVM, in Filecoin EVM runtime, self-destruct can _fail_ causing the executing contract to revert. Specifically, this can happen if the specified beneficiary address is an embedded [ID address](../../basics/the-blockchain/addresses.md) and no actor exists with the specified ID.
+3. Unlike in the EVM, in Filecoin EVM runtime, self-destruct can _fail_ causing the executing contract to revert. Specifically, this can happen if the specified beneficiary address is an embedded [ID address](../../core-concepts/filecoin-virtual-machine/addresses.md) and no actor exists with the specified ID.
4. If funds are sent to a self-destructed contract after it self-destructs but before the end of the transaction, those funds remain with the self-destructed contract. In Ethereum, these funds would vanish after the transaction finishes executing.
## CALLCODE
@@ -72,4 +72,4 @@ When calling an Ethereum method that allows the user to ask for the `latest` blo
-[Was this page helpful?](https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/difference-with-ethereum)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-evm-runtime/difference-with-ethereum)
diff --git a/smart-contracts/filecoin-evm-runtime/filforwarder.md b/core-concepts/filecoin-evm-runtime/filforwarder.md
similarity index 93%
rename from smart-contracts/filecoin-evm-runtime/filforwarder.md
rename to core-concepts/filecoin-evm-runtime/filforwarder.md
index 333145e99..f0a9e698e 100644
--- a/smart-contracts/filecoin-evm-runtime/filforwarder.md
+++ b/core-concepts/filecoin-evm-runtime/filforwarder.md
@@ -8,7 +8,7 @@ description: >-
## The problem
-Filecoin has multiple [address spaces](../../basics/the-blockchain/addresses.md): `f0`, `f1`, `f2`, `f3`, and `f4`. Each address space fits a particular need for the Filecoin network. The `f410` address spaces allow Ethereum addresses to be integrated into the Filecoin network.
+Filecoin has multiple [address spaces](../../core-concepts/filecoin-virtual-machine/addresses.md): `f0`, `f1`, `f2`, `f3`, and `f4`. Each address space fits a particular need for the Filecoin network. The `f410` address spaces allow Ethereum addresses to be integrated into the Filecoin network.
Users interacting with the Filecoin EVM runtime need to use `f4` addresses, masked to the Ethereum-style `0x` address. These addresses can be created from wallets like MetaMask, Coinbase wallet, or any other EVM-based wallet that allows for custom networks. There are use cases where a user with FIL in an `0x`-style address would want to send FIL to an `f1`, `f2`, or `f3` address. For example, taking FIL out of a smart contract and sending it to a multi-sig account or an exchange.
@@ -62,14 +62,14 @@ It generally takes around two minutes for a transaction to complete and for the
### Manually
-The FilForwarder contract can be interacted with using standard Ethereum tooling like Hardhat or Remix. In this guide, we’re going to use Hardhat, but these steps can be easily replicated using the [web-based IDE Remix](../developing-contracts/remix.md).
+The FilForwarder contract can be interacted with using standard Ethereum tooling like Hardhat or Remix. In this guide, we’re going to use Hardhat, but these steps can be easily replicated using the [web-based IDE Remix](../../build/development-frameworks/remix.md).
#### **Prerequisites**
This guide assumes you have the following installed:
* [Yarn](https://yarnpkg.com/)
-* A Filecoin address stored in [MetaMask](../../basics/assets/metamask-setup.md)
+* A Filecoin address stored in [MetaMask](../../networks-and-tools/assets/metamask-setup.md)
#### **Environment setup**
@@ -147,4 +147,4 @@ yarn hardhat forward \
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/filforwarder)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime/filforwarder)
diff --git a/smart-contracts/filecoin-evm-runtime/how-gas-works.md b/core-concepts/filecoin-evm-runtime/how-gas-works.md
similarity index 98%
rename from smart-contracts/filecoin-evm-runtime/how-gas-works.md
rename to core-concepts/filecoin-evm-runtime/how-gas-works.md
index aec55d0c4..cc1dbc5a1 100644
--- a/smart-contracts/filecoin-evm-runtime/how-gas-works.md
+++ b/core-concepts/filecoin-evm-runtime/how-gas-works.md
@@ -115,4 +115,4 @@ echo $((16#31157))
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/how-gas-works)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime/how-gas-works)
diff --git a/smart-contracts/filecoin-evm-runtime/precompiles.md b/core-concepts/filecoin-evm-runtime/precompiles.md
similarity index 99%
rename from smart-contracts/filecoin-evm-runtime/precompiles.md
rename to core-concepts/filecoin-evm-runtime/precompiles.md
index 2c0b98f1a..3004d4c71 100644
--- a/smart-contracts/filecoin-evm-runtime/precompiles.md
+++ b/core-concepts/filecoin-evm-runtime/precompiles.md
@@ -123,4 +123,4 @@ Example:
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime/precompiles)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/build/architecture/filecoin-evm-runtime/precompiles)
diff --git a/smart-contracts/fundamentals/the-fvm.md b/core-concepts/filecoin-virtual-machine/README.md
similarity index 92%
rename from smart-contracts/fundamentals/the-fvm.md
rename to core-concepts/filecoin-virtual-machine/README.md
index 2dd90513b..b341ffd07 100644
--- a/smart-contracts/fundamentals/the-fvm.md
+++ b/core-concepts/filecoin-virtual-machine/README.md
@@ -13,7 +13,7 @@ NOTE: As of January 2025, for developer support, please visit the [FILB](https:/
Filecoin’s storage and retrieval capabilities can be thought of as the base layer of the Filecoin blockchain, and [FVM](https://fvm.filecoin.io) can be thought of as a layer on top of Filecoin that unlocks programmability on the network (e.g. programmable storage primitives).
-Whereas other blockchains do have smart contract capabilities, FVM’s smart contracts can use Filecoin storage and retrieval primitives with computational logic conditions. FVM will also enable Layer 2 capabilities, such as “compute over data” and [content delivery networks](https://saturn.tech/).
+Whereas other blockchains do have smart contract capabilities, FVM’s smart contracts can use Filecoin storage and retrieval primitives with computational logic conditions. FVM will also enable Layer 2 capabilities, such as “compute over data” and [content delivery networks](https://github.com/filecoin-saturn).
Some additional notes about FVM’s technical specifications:
@@ -41,10 +41,10 @@ If you’re ready to start building on the FVM, here are some resources you shou
* FVM Reference Implementation: The [Github repo](https://github.com/filecoin-project/ref-fvm) containing the reference implementation for FVM.
* FVM Quickstart Guide: The Quickstart guide will walk you through deploying your first ERC-20 contract on FVM. In addition to being provided this code, we also walk you through the developer environment set-up.
-* Developing Contracts: If you are ready to build your dApp on FVM, you can skip ahead and review our [best practices](../developing-contracts/best-practices.md) section for developing contracts. Here, you can find a guide for the Filecoin solidity libraries, details on tools such as Foundry, Remix, and Hardhat, and tutorials for calling built-in actors and building client contracts.
+* Developing Contracts: If you are ready to build your dApp on FVM, you can skip ahead and review our [best practices](../../build/developing-contracts/best-practices.md) section for developing contracts. Here, you can find a guide for the Filecoin solidity libraries, details on tools such as Foundry, Remix, and Hardhat, and tutorials for calling built-in actors and building client contracts.
The next page will walk you through the process of deciding whether you need to use FVM’s programmatic storage when building a dApp with storage on Filecoin.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/the-fvm)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine)
diff --git a/basics/the-blockchain/actors.md b/core-concepts/filecoin-virtual-machine/actors.md
similarity index 98%
rename from basics/the-blockchain/actors.md
rename to core-concepts/filecoin-virtual-machine/actors.md
index 760e1f889..4fa4811de 100644
--- a/basics/the-blockchain/actors.md
+++ b/core-concepts/filecoin-virtual-machine/actors.md
@@ -7,7 +7,7 @@ description: >-
# Actors
-For those familiar with the Ethereum virtual machine (EVM), _actors_ work similarly to [smart contracts](../../smart-contracts/fundamentals/). In the Filecoin network, there are two types of actors:
+For those familiar with the Ethereum virtual machine (EVM), _actors_ work similarly to [smart contracts](./README.md). In the Filecoin network, there are two types of actors:
* [_Built-in actors_](actors.md#built-in-actors): Hardcoded programs written ahead of time by network engineers that manage and orchestrate key subprocesses and subsystems in the Filecoin network.
* [_User actors_](actors.md#user-actors-smart-contracts): Code implemented by **any developer** that interacts with the Filecoin Virtual Machine (FVM).
@@ -130,4 +130,4 @@ With the FVM, actors can be written in Solidity. In future updates, any language
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/actors)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/actors)
diff --git a/basics/the-blockchain/addresses.md b/core-concepts/filecoin-virtual-machine/addresses.md
similarity index 89%
rename from basics/the-blockchain/addresses.md
rename to core-concepts/filecoin-virtual-machine/addresses.md
index d21a34151..dea392903 100644
--- a/basics/the-blockchain/addresses.md
+++ b/core-concepts/filecoin-virtual-machine/addresses.md
@@ -9,7 +9,7 @@ description: >-
All Filecoin addresses begin with an `f` to indicate the network (Filecoin), followed by any of the address prefix numbers (`0`, `1`, `2`, `3`, `4`) to indicate the address type. There are five address types:
-
Extensible, user-defined actor addresses. f410 addresses refers to Ethereum-compatible address space, each f410 address is equivalent to an 0x address.
Extensible, user-defined actor addresses. f410 addresses refers to Ethereum-compatible address space, each f410 address is equivalent to an 0x address.
Each of the address types is described below.
@@ -41,7 +41,7 @@ Public key addresses allow devices, like hardware wallets, to derive a valid Fil
Filecoin supports two types of public key addresses:
-* [`secp256k1` addresses](https://en.bitcoin.it/wiki/Secp256k1) that begin with the prefix `f1`.
+* [`secp256k1` addresses](https://en.wikipedia.org/wiki/Secp256k1) that begin with the prefix `f1`.
* [BLS addresses](https://en.wikipedia.org/wiki/BLS\_digital\_signature) that begin with the prefix `f3`.
For BLS addresses, Filecoin uses `curve bls12-381` for BLS signatures, which is a pair of two related curves, `G1` and `G2`.
@@ -72,4 +72,4 @@ As an example, suppose an address manager has an actor ID (an `f0` address) `123
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/addresses)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/addresses)
diff --git a/basics/the-blockchain/blocks-and-tipsets.md b/core-concepts/filecoin-virtual-machine/blocks-and-tipsets.md
similarity index 98%
rename from basics/the-blockchain/blocks-and-tipsets.md
rename to core-concepts/filecoin-virtual-machine/blocks-and-tipsets.md
index 5e114e5e3..6cd586838 100644
--- a/basics/the-blockchain/blocks-and-tipsets.md
+++ b/core-concepts/filecoin-virtual-machine/blocks-and-tipsets.md
@@ -65,4 +65,4 @@ With the Ethereum JSON-RPC, we introduced the concept of the _tipset CID_ for th
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/blocks-and-tipsets)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/blocks-and-tipsets)
diff --git a/basics/the-blockchain/consensus.md b/core-concepts/filecoin-virtual-machine/consensus.md
similarity index 98%
rename from basics/the-blockchain/consensus.md
rename to core-concepts/filecoin-virtual-machine/consensus.md
index d189d08cb..e9e4e5942 100644
--- a/basics/the-blockchain/consensus.md
+++ b/core-concepts/filecoin-virtual-machine/consensus.md
@@ -39,4 +39,4 @@ In summary, EC involves the following steps at each _epoch_:
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/consensus)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/consensus)
diff --git a/basics/the-blockchain/drand.md b/core-concepts/filecoin-virtual-machine/drand.md
similarity index 99%
rename from basics/the-blockchain/drand.md
rename to core-concepts/filecoin-virtual-machine/drand.md
index e775bbbcc..b2186cbb8 100644
--- a/basics/the-blockchain/drand.md
+++ b/core-concepts/filecoin-virtual-machine/drand.md
@@ -66,4 +66,4 @@ In any event, a heavier chain will emerge after the catch-up period and mining c
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/drand)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/drand)
diff --git a/basics/the-blockchain/proofs.md b/core-concepts/filecoin-virtual-machine/proofs.md
similarity index 69%
rename from basics/the-blockchain/proofs.md
rename to core-concepts/filecoin-virtual-machine/proofs.md
index 071d2963c..b0a92501c 100644
--- a/basics/the-blockchain/proofs.md
+++ b/core-concepts/filecoin-virtual-machine/proofs.md
@@ -26,16 +26,16 @@ In particular, the Filecoin proof process must verify the data was properly stor
In Filecoin, this process is known as _Proof-of-Storage_, and consists of two distinct types of proofs:
-* [Proof of Replication (PoRep)](https://docs.filecoin.io/basics/the-blockchain/proofs/#proof-of-replication-porep): a procedure used at the time of initial data storage to validate that an SP has _created and stored_ a unique copy of some piece of data.
-* [Proof of Spacetime (PoST)](https://docs.filecoin.io/basics/the-blockchain/proofs/#proof-of-spacetime-post): a procedure to validate that an SP is _continuing to store_ a unique copy of some piece of data.
+* [Proof of Replication (PoRep)](#proof-of-replication-porep): a procedure used at the time of initial data storage to validate that an SP has _created and stored_ a unique copy of some piece of data.
+* [Proof of Spacetime (PoST)](#proof-of-spacetime-post): a procedure to validate that an SP is _continuing to store_ a unique copy of some piece of data.
## Proof-of-Replication (PoRep)
In the Filecoin storage lifecycle process, _Proof-of-Replication (PoRep)_ is used when an SP agrees to store data on behalf of a client and receives a piece of client data. In this process:
-1. The data is placed into a [sector](https://docs.filecoin.io/basics/the-blockchain/proofs/).
+1. The data is placed into a [sector](../../reference/general/glossary.md#sector).
2. The sector is sealed by the SP.
-3. A unique encoding, which serves as proof that the SP has replicated a copy of the data they agreed to store, is generated (described in [Sealing as proof](https://docs.filecoin.io/basics/the-blockchain/proofs/#sealing-as-proof)).
+3. A unique encoding, which serves as proof that the SP has replicated a copy of the data they agreed to store, is generated (described in [Sealing as proof](#sealing-as-proof)).
4. The proof is compressed.
5. The result of the compression is submitted to the network as certification of storage.
@@ -59,26 +59,26 @@ After a storage provider has proved that they have replicated a copy of the data
Because this method is concerned with proving that data is being stored in a particular _space_ for a particular period or at a particular _time_, it is called _Proof-of-Spacetime (PoSt)_. In Filecoin, the PoSt process is handled using two different sub-methods, each of which serves a different purpose:
-* [WinningPoSt](https://docs.filecoin.io/basics/the-blockchain/proofs/#winningpost) is used to prove that an SP selected using an election process has a replica of the data at the specific time that they were asked and is used in the block consensus process.
-* [WindowPoSt](https://docs.filecoin.io/basics/the-blockchain/proofs/#windowpost) is used to prove that, for any and all SPs in the network, a copy of the data that was agreed to be stored is being continuously maintained over time and is used to audit SPs continuously.
+* [WinningPoSt](#winningpost) is used to prove that an SP selected using an election process has a replica of the data at the specific time that they were asked and is used in the block consensus process.
+* [WindowPoSt](#windowpost) is used to prove that, for any and all SPs in the network, a copy of the data that was agreed to be stored is being continuously maintained over time and is used to audit SPs continuously.
### WinningPoSt
_WinningPoSt_ is used to prove that an SP selected via election has a replica of the data at the specific time that they were asked and is specifically used in Filecoin to determine which SPs may add blocks to the Filecoin blockchain.
-At the beginning of each [epoch](https://docs.filecoin.io/basics/the-blockchain/proofs/), a small number of SPs are elected to mine new blocks using the [Expected Consensus algorithm](https://spec.filecoin.io/algorithms/expected\_consensus/), which guarantees that validators will be chosen based on a probability proportional to their [power](https://docs.filecoin.io/basics/the-blockchain/proofs/). Each of the SPs selected must submit a WinningPoSt, proof that they have a sealed copy of the data that they have included in their proposed block. The deadline to submit this proof is the end of the current epoch and was intentionally designed to be short, making it impossible for the SP to fabricate the proof. Successful submission grants the SP:
+At the beginning of each [epoch](../../reference/general/glossary.md#epoch), a small number of SPs are elected to mine new blocks using the [Expected Consensus algorithm](https://spec.filecoin.io/algorithms/expected\_consensus/), which guarantees that validators will be chosen based on a probability proportional to their [storage power](../../reference/general/glossary.md#storage-power). Each of the SPs selected must submit a WinningPoSt, proof that they have a sealed copy of the data that they have included in their proposed block. The deadline to submit this proof is the end of the current epoch and was intentionally designed to be short, making it impossible for the SP to fabricate the proof. Successful submission grants the SP:
-* The [block reward](https://docs.filecoin.io/basics/the-blockchain/proofs/) .
+* The [block reward](../../storage-providers/filecoin-economics/block-rewards.md).
* The opportunity to charge other nodes fees in order to include their messages in the block.
If an SP misses the submission deadline, no penalty is incurred, but the SP misses the opportunity to mine a block and receive the block reward.
### WindowPoSt
-_WindowPoSt_ is used to prove that, for any and all SPs in the network, a copy of the data that was agreed to be stored is being continuously maintained over time and is used to audit SPs continuously. In WindowPoSt, all SPs must demonstrate the availability of all sectors claimed every [proving period](https://docs.filecoin.io/basics/the-blockchain/proofs/). Sector availability is not proved individually; rather, SPs must prove a whole [partition](https://docs.filecoin.io/basics/the-blockchain/proofs/) at once, and that sector must be proved by the deadline assigned (a 30-minute interval in the proving period).
+_WindowPoSt_ is used to prove that, for any and all SPs in the network, a copy of the data that was agreed to be stored is being continuously maintained over time and is used to audit SPs continuously. In WindowPoSt, all SPs must demonstrate the availability of all sectors claimed every [proving period](../../storage-providers/filecoin-economics/storage-proving.md#proving-deadlines). Sector availability is not proved individually; rather, SPs must prove a whole [partition](../../storage-providers/filecoin-economics/storage-proving.md#proving-deadlines) at once, and that sector must be proved by the deadline assigned (a 30-minute interval in the proving period).
The more sectors an SP has pledged to store, the more the partitions of sectors that the SP will need to prove per deadline. As this requires that the SP has access to sealed copies of each of the requested sectors, it makes it irrational for the SP to seal data every time they need to provide a WindowPoSt proof, thus ensuring that SPs on the network are continuously maintaining the data agreed to. Additionally, failure to submit WindowPoSt for a sector will result in the SPs’ pledge collateral being forfeited and their storage power being reduced.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/the-blockchain/proofs)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/core-concepts/filecoin-virtual-machine/proofs)
diff --git a/getting-started/community/README.md b/getting-started/community/README.md
new file mode 100644
index 000000000..ee21249f2
--- /dev/null
+++ b/getting-started/community/README.md
@@ -0,0 +1,21 @@
+---
+description: >-
+ Learn about the Filecoin project, connect with the community, and find ways to contribute.
+---
+
+# Project and community
+
+The Filecoin community includes developers, storage providers, researchers, and users working together to build a decentralized storage network. This section covers how to get involved, where to find help, and how the project is organized.
+
+## Table of contents
+
+* [Forums and FIPs](forums-and-FIPs.md) — discussion channels, governance proposals, and community calls
+* [Filecoin compared to](filecoin-compared-to.md) — how Filecoin differs from other storage solutions
+* [Filecoin FAQs](filecoin-faqs.md) — common questions about storage costs, hardware, and economics
+* [FAQs](faqs.md) — frequently asked questions about FVM and building on Filecoin
+* [Related projects](related-projects.md) — protocols and tools in the Filecoin ecosystem
+* [Social media](social-media.md) — official Filecoin channels and online presence
+* [The Filecoin project](the-filecoin-project.md) — roadmap, research, and ongoing development
+* [Ways to contribute](ways-to-contribute.md) — how to participate in code, docs, and community efforts
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community)
diff --git a/smart-contracts/fundamentals/faqs.md b/getting-started/community/faqs.md
similarity index 92%
rename from smart-contracts/fundamentals/faqs.md
rename to getting-started/community/faqs.md
index f8e1b0595..3d9f69c69 100644
--- a/smart-contracts/fundamentals/faqs.md
+++ b/getting-started/community/faqs.md
@@ -28,7 +28,7 @@ FVM can create incentives to solve problems that Filecoin participants face toda
The FVM operates on blockchain state data — it does _not_ operate on data stored in the Filecoin network. This is because access to that data depends on network requests, an unsealed copy’s availability, and the SPs’ availability to supply that data.
-Access and manipulation of data stored in the network will happen via L2 solutions, for example, retrieval networks or compute-over-data networks, e.g., Saturn or CoD.
+Access and manipulation of data stored in the network will happen via L2 solutions, for example, retrieval networks or compute-over-data networks.
## **How do other EVMs compare to FEVM**
@@ -68,14 +68,7 @@ Yes.
## **Do I have to install Lotus to work with FVM**
-Not necessarily. You can use any of the public RPC nodes on either [mainnet](../../networks/mainnet/) or the \[Calibration testnet]\(/networks/calibration/details/
-
-* `api.hyperspace.node.glif.io/rpc/v1`
-* `api.zondax.ch/fil/node/hyperspace/rpc/v1`
-
-## **What is the difference between the FVM and Bacalhau**
-
-They are synergistic. Compute over data solutions such as [Bacalhau](https://github.com/filecoin-project/bacalhau) can use the FVM.
+Not necessarily. You can use public RPC nodes on either [mainnet](../../networks-and-tools/networks/mainnet/rpcs.md) or the [Calibration testnet](../../networks-and-tools/networks/calibration/rpcs.md).
## **Why does the FVM use WASM**
@@ -115,4 +108,4 @@ It’s not impossible but storage providers are incentivized not to close the st
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/faqs)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/faqs)
diff --git a/basics/project-and-community/filecoin-compared-to.md b/getting-started/community/filecoin-compared-to.md
similarity index 99%
rename from basics/project-and-community/filecoin-compared-to.md
rename to getting-started/community/filecoin-compared-to.md
index 7f5aac9cf..e8c94b1d2 100644
--- a/basics/project-and-community/filecoin-compared-to.md
+++ b/getting-started/community/filecoin-compared-to.md
@@ -42,4 +42,4 @@ Filecoin combines many elements of other file storage and distribution systems.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/filecoin-compared-to)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/filecoin-compared-to)
diff --git a/basics/project-and-community/filecoin-faqs.md b/getting-started/community/filecoin-faqs.md
similarity index 93%
rename from basics/project-and-community/filecoin-faqs.md
rename to getting-started/community/filecoin-faqs.md
index 5b4fc09cc..d87528482 100644
--- a/basics/project-and-community/filecoin-faqs.md
+++ b/getting-started/community/filecoin-faqs.md
@@ -33,7 +33,7 @@ We think that the internet must return to its _decentralized roots_ to be resili
We are still finalizing our cryptoeconomic parameters, and they will continue to evolve.
-Here is a blog about Filecoin economics from December 2020: [Filecoin network economics](https://filecoin.io/blog/posts/filecoin-network-economics/).
+Here is a blog about Filecoin economics from December 2020: [Filecoin network economics](https://filecoin.io/blog/filecoin-network-economics/).
#### How expensive will Filecoin storage be at launch?
@@ -59,7 +59,7 @@ Lotus is the primary reference implementation for the Filecoin protocol. At this
#### What is your recommendation on the right hardware to use?
-While the Filecoin team does not recommend a specific hardware configuration, we document various setups [here](../../storage-providers/infrastructure/). Additionally, [this guide to storage mining](../../storage-providers/basics/quickstart-guide.md) details hardware considerations and setups for storage providers. However, it is likely that there are more efficient setups, and we strongly encourage storage providers to test and experiment to find the best combinations.
+While the Filecoin team does not recommend a specific hardware configuration, we document various setups [here](../../storage-providers/infrastructure/). Additionally, [this getting-started guide for storage providers](../../storage-providers/getting-started.md) covers hardware considerations and operational planning. However, it is likely that there are more efficient setups, and we strongly encourage storage providers to test and experiment to find the best combinations.
#### We are worried about the ability of our network to handle the additional overhead of running a Filecoin node and still provide fast services for our customers. What are the computational demands of a Lotus node? Are there any metrics for node performance given various requirements?
@@ -95,7 +95,7 @@ AMD may be optimal hardware for SDR. You can [see this description](https://gith
#### How are you working on bootstrapping the demand side of the marketplace? The Discover program is nice, but who is the target market for users, and how do you get them?
-In addition to [Filecoin Discover](https://filecoin.io/blog/posts/introducing-filecoin-discover/), a number of groups are actively building tools and services to support the adoption of the Filecoin network with developers and clients. For example, check out the recordings from our [Virtual Community Meetup](https://filecoin.io/blog/filecoin-virtual-community-meetup-recap/) to see updates about Textile and Starling Storage. You can also read more about some of the teams building on Filecoin through HackFS in our [HackFS Week 1 Recap](https://filecoin.io/blog/hackfs-teams-vol-1/).
+In addition to [Filecoin Discover](https://filecoin.io/blog/introducing-filecoin-discover/), a number of groups are actively building tools and services to support the adoption of the Filecoin network with developers and clients. For example, check out the recordings from our [Virtual Community Meetup](https://filecoin.io/blog/filecoin-virtual-community-meetup-recap/) to see updates about Textile and Starling Storage. You can also read more about teams building on Filecoin through the [HackFS event](https://ethglobal.com/events/hackfs).
#### Does Filecoin have an implementation of client and storage provider order matching through order books?
@@ -157,4 +157,4 @@ If you are retrieving your data from IPFS or a remote pinning layer, retrieval s
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/filecoin-faqs)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/filecoin-faqs)
diff --git a/basics/project-and-community/forums-and-FIPs.md b/getting-started/community/forums-and-FIPs.md
similarity index 96%
rename from basics/project-and-community/forums-and-FIPs.md
rename to getting-started/community/forums-and-FIPs.md
index 80210f507..25f31b87d 100644
--- a/basics/project-and-community/forums-and-FIPs.md
+++ b/getting-started/community/forums-and-FIPs.md
@@ -11,7 +11,7 @@ description: >-
For shorter-lived discussions, our community chat open to all on both Slack and Discord:
-* [Slack](https://filecoin.io/slack)
+* [Slack](https://filecoinproject.slack.com/ssb/redirect)
* [Discord](https://discord.com/invite/filecoin)
For long-lived discussions and for support, please use the [discussion tab on GitHub](https://github.com/filecoin-project/community#forums) instead of Slack. It’s easy for complex discussions to get lost in a sea of new messages on those chat platforms, and posting longer discussions and support requests on the forums helps future visitors, too.
@@ -37,4 +37,4 @@ Typically, the FIP lifecycle looks something like this:
It is the authors' responsibility to request status updates for the FIP. A more robust explainer of the FIP process can be found in [FIP001](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0001.md#what-is-a-fip).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/forums-and-fips)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/forums-and-fips)
diff --git a/basics/project-and-community/related-projects.md b/getting-started/community/related-projects.md
similarity index 97%
rename from basics/project-and-community/related-projects.md
rename to getting-started/community/related-projects.md
index 0e2dee0f0..c406d39a5 100644
--- a/basics/project-and-community/related-projects.md
+++ b/getting-started/community/related-projects.md
@@ -29,4 +29,4 @@ Interactive tutorials on decentralized web protocols, designed to introduce you
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/related-projects)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/related-projects)
diff --git a/basics/project-and-community/social-media.md b/getting-started/community/social-media.md
similarity index 77%
rename from basics/project-and-community/social-media.md
rename to getting-started/community/social-media.md
index d9d8686a8..5ea3aa66a 100644
--- a/basics/project-and-community/social-media.md
+++ b/getting-started/community/social-media.md
@@ -14,9 +14,9 @@ The [Filecoin YouTube channel](https://www.youtube.com/channel/UCPyYmtJYQwxM-EUy
Explore the latest news, events and other happenings on the official [Filecoin Blog](https://filecoin.io/blog/).
-### Newsletter
+### Updates
-Subscribe to the [Filecoin newsletter](https://filecoin.io/build/#events) for official project updates sent straight to your inbox.
+Follow the [Filecoin blog](https://filecoin.io/blog/) and [Filecoin events](https://fil.org/events) for official project updates.
### Twitter
@@ -27,7 +27,7 @@ Get your Filecoin news in tweet-sized bites. Follow these accounts for the lates
### WeChat
-Follow FilecoinOfficial on [WeChat](https://www.wechat.com/mobile) for project updates and announcements in Chinese.
+Follow FilecoinOfficial on [WeChat](https://www.wechat.com/) for project updates and announcements in Chinese.

@@ -35,4 +35,4 @@ Follow FilecoinOfficial on [WeChat](https://www.wechat.com/mobile) for project u
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/social-media)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/social-media)
diff --git a/basics/project-and-community/the-filecoin-project.md b/getting-started/community/the-filecoin-project.md
similarity index 96%
rename from basics/project-and-community/the-filecoin-project.md
rename to getting-started/community/the-filecoin-project.md
index d57434d07..0e31f1c53 100644
--- a/basics/project-and-community/the-filecoin-project.md
+++ b/getting-started/community/the-filecoin-project.md
@@ -20,4 +20,4 @@ The Filecoin community believes that our mission is best served in an environmen
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/the-filecoin-project)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/community/the-filecoin-project)
diff --git a/basics/project-and-community/ways-to-contribute.md b/getting-started/community/ways-to-contribute.md
similarity index 68%
rename from basics/project-and-community/ways-to-contribute.md
rename to getting-started/community/ways-to-contribute.md
index 212244786..eed1aff22 100644
--- a/basics/project-and-community/ways-to-contribute.md
+++ b/getting-started/community/ways-to-contribute.md
@@ -23,32 +23,33 @@ If you want to start contributing to the core of Filecoin, those repositories ar
* [IPFS](https://github.com/ipfs)
* [libp2p](https://github.com/libp2p)
-* [IPLD](https://github.com/libp2p)
+* [IPLD](https://github.com/ipld)
* [Multiformats](https://github.com/multiformats)
#### Documentation
Filecoin is a huge project and undertaking, and with lots of code comes the need for lots of good documentation! However, we need a lot more help to write the awesome docs the project needs. If writing technical documentation is your area, any and all help is welcome!
-Before contributing to the Filecoin docs, please read these quick guides; they’ll save you time and help keep the docs accurate and consistent!
+Before contributing to the Filecoin docs, please read these quick guides; they'll save you time and help keep the docs accurate and consistent!
1. [Style and formatting guide](ways-to-contribute.md#style)
2. [Writing guide](ways-to-contribute.md#writing-guide)
+3. [GitBook documentation guide](ways-to-contribute.md#gitbook-documentation)
If you have never contributed to an open-source project before, or just need a refresher, take a look at the [contribution tutorial](ways-to-contribute.md#contribution-tutorial).
#### Community
-If interacting with people is your favorite thing to do in this world, join the [Filecoin chat and discussion forums](forums-and-FIPs.md) to say hello, meet others who share your goals, and connect with other members of the community. You should also consider joining [Filecoin Slack](https://filecoin.io/slack).
+If interacting with people is your favorite thing to do in this world, join the [Filecoin chat and discussion forums](forums-and-FIPs.md) to say hello, meet others who share your goals, and connect with other members of the community. You should also consider joining [Filecoin Slack](https://filecoinproject.slack.com/ssb/redirect).
#### Build Applications
Filecoin is designed for you to integrate into your own applications and services.
-Get started by looking at the list of projects currently built on Filecoin. Build anything you think is missing! If you’re unsure about something, you can join the chat and discussion forums to get help or feedback on your specific problem/idea. You can also join a Filecoin Hackathon, apply for a Filecoin Developer Grant or apply to the Filecoin accelerator program to support the development of your project.
+Get started by looking at the list of projects currently built on Filecoin. Build anything you think is missing! If you're unsure about something, you can join the chat and discussion forums to get help or feedback on your specific problem/idea. You can also join a Filecoin Hackathon, apply for a Filecoin Developer Grant or apply to the Filecoin accelerator program to support the development of your project.
* [Filecoin Hackathons](https://hackathons.filecoin.io/)
-* [Filecoin Developer Grants](https://filecoin.io/grants/)
+* [Filecoin Developer Grants](https://www.fil.org/grants)
* [Filecoin Accelerator Program](https://ecosystem-wg.notion.site/Protocol-Labs-Accelerator-Program-d45d8792a7d544eca9beb7d3e3d3b05d)
#### Protocol Design
@@ -59,11 +60,164 @@ Filecoin is ultimately about building better protocols, and the community always
#### Research
-Finally, we see Protocol Labs as a research lab, where YOUR ideas can become technologies that have a real impact on the world. If you’re interested in contributing to our research, please reach out to [research@protocol.ai](mailto:research@protocol.ai) for more information. Include what your interests are so we can make sure you get to work on something fun and valuable.
+Finally, we see Protocol Labs as a research lab, where YOUR ideas can become technologies that have a real impact on the world. If you're interested in contributing to our research, please reach out to [research@protocol.ai](mailto:research@protocol.ai) for more information. Include what your interests are so we can make sure you get to work on something fun and valuable.
+
+### GitBook documentation
+
+This site is built with [GitBook](https://www.gitbook.com/) and synced from a Git repository. You can contribute by editing markdown files directly in the repo or through the GitBook UI.
+
+#### Content structure
+
+GitBook organizes content through pages (markdown files), grouped into sections defined in `SUMMARY.md`. The key files are:
+
+* **`SUMMARY.md`** defines the table of contents and sidebar navigation.
+* **`WELCOME.md`** is the homepage.
+* **`.gitbook.yaml`** configures the space (root path, redirects).
+
+Every page is a markdown file with optional YAML frontmatter:
+
+```markdown
+---
+description: A short summary for SEO and link previews
+icon: book-open
+layout:
+ width: default
+---
+
+# Page title
+
+Content starts here.
+```
+
+#### Frontmatter fields
+
+
Field
Purpose
description
SEO description and link previews. Supports multiline with >-.
icon
Font Awesome icon name (e.g., bolt, book-open).
hidden: true
Hides page from the table of contents.
layout.width
default or wide for broader content area.
+
+#### Internal links
+
+Always use relative file paths for links between documentation pages:
+
+```markdown
+[Networks overview](../what-is-filecoin/networks.md)
+[Getting started](../../getting-started/README.md)
+```
+
+External links use full URLs:
+
+```markdown
+[Filecoin GitHub](https://github.com/filecoin-project)
+```
+
+#### GitBook custom blocks
+
+This site uses several GitBook-specific markdown extensions. Here are the ones you will encounter most frequently.
+
+**Hints** draw attention to important information:
+
+```markdown
+{% raw %}
+{% hint style="info" %}
+This is an informational callout.
+{% endhint %}
+
+{% hint style="warning" %}
+Be careful when running this command in production.
+{% endhint %}
+
+{% hint style="danger" %}
+This action cannot be undone.
+{% endhint %}
+{% endraw %}
+```
+
+Supported styles: `info`, `warning`, `danger`, `success`.
+
+**Expandable sections** hide optional or lengthy content:
+
+````markdown
+
+Advanced configuration
+
+Detailed information that most users do not need.
+
+```yaml
+advanced:
+ option1: value1
+```
+
+
+````
+
+**Tabs** present alternative options (languages, platforms):
+
+````markdown
+{% raw %}
+{% tabs %}
+{% tab title="macOS" %}
+
+```shell
+brew install lotus
+```
+
+{% endtab %}
+{% tab title="Linux" %}
+
+```shell
+sudo apt install lotus
+```
+
+{% endtab %}
+{% endtabs %}
+{% endraw %}
+````
+
+**Cards** create visual navigation grids:
+
+```markdown
+
+```
+
+**Code blocks with titles** label file names or context:
+
+````markdown
+{% raw %}
+{% code title="hardhat.config.js" %}
+
+```javascript
+module.exports = {
+ solidity: "0.8.17",
+};
+```
+
+{% endcode %}
+{% endraw %}
+````
+
+#### Common pitfalls
+
+{% raw %}
+* Always close custom blocks properly (`{% endtab %}`, `{% endhint %}`, `{% endcode %}`).
+{% endraw %}
+* Do not reference the same markdown file twice in `SUMMARY.md`.
+* Keep `SUMMARY.md` synchronized with actual file paths.
+* Test custom blocks in GitBook after editing locally.
### Writing guide
-This guide explains things to keep in mind when writing for Filecoin’s documentation. While the [grammar, formatting, and style guide](ways-to-contribute.md#style) lets you know the rules you should follow, this guide will help you to properly structure your writing and choose the correct tone for your audience.
+This guide explains things to keep in mind when writing for Filecoin's documentation. While the [grammar, formatting, and style guide](ways-to-contribute.md#style) lets you know the rules you should follow, this guide will help you to properly structure your writing and choose the correct tone for your audience.
#### Walkthroughs
@@ -79,7 +233,7 @@ Use the following goals when writing walkthroughs:
**Function or process**
-The end goal of a walkthrough is for the reader to achieve a very particular function. _Installing the Filecoin Desktop application_ is an example. Following this walkthrough isn’t going to teach the reader much about working with the decentralized web or what Filecoin is. Still, by the end, they’ll have the Filecoin Desktop application installed on their computer.
+The end goal of a walkthrough is for the reader to achieve a very particular function. _Installing the Filecoin Desktop application_ is an example. Following this walkthrough isn't going to teach the reader much about working with the decentralized web or what Filecoin is. Still, by the end, they'll have the Filecoin Desktop application installed on their computer.
**Short length**
@@ -91,13 +245,13 @@ If a walkthrough is converted into a video, that video should be no longer than
Walkthroughs are split into three major sections:
-1. What we’re about to do.
+1. What we're about to do.
2. The steps we need to do.
3. Summary of what we just did, and potential next steps.
#### Conceptual articles
-Articles are written with the intent to inform and explain something. These articles don’t contain any steps or actions that the reader has to perform _right now_.
+Articles are written with the intent to inform and explain something. These articles don't contain any steps or actions that the reader has to perform _right now_.
These articles are vastly different in tone when compared to walkthroughs. Some topics and concepts can be challenging to understand, so creative writing and interesting diagrams are highly sought-after for these articles. Whatever writers can do to make a subject more understandable, the better.
@@ -105,21 +259,21 @@ These articles are vastly different in tone when compared to walkthroughs. Some
Use the following goals when writing conceptual articles:
-
Goal
Keyword
Explanation
Audience
Knowledgeable
Requires a certain amount of focus to understand.
Formality
Neutral
Slang is restricted, but standard casual expressions are allowed.
Domain
Any
Usually technical, but depends on the article.
Tone
Confident and friendly
The reader must feel confident that the writer knows what they’re talking about.
Intent
Describe
Tell the reader why something does the thing that it does, or why it exists.
+
Goal
Keyword
Explanation
Audience
Knowledgeable
Requires a certain amount of focus to understand.
Formality
Neutral
Slang is restricted, but standard casual expressions are allowed.
Domain
Any
Usually technical, but depends on the article.
Tone
Confident and friendly
The reader must feel confident that the writer knows what they're talking about.
Intent
Describe
Tell the reader why something does the thing that it does, or why it exists.
**Article structure**
Articles are separated into five major sections:
-1. Introduction to the thing we’re about to explain.
+1. Introduction to the thing we're about to explain.
2. What the thing is.
-3. Why it’s essential.
+3. Why it's essential.
4. What other topics it relates to.
5. Summary review of what we just read.
#### Tutorials
-When writing a tutorial, you’re teaching a reader how to achieve a complex end-goal. Tutorials are a mix of walkthroughs and conceptual articles. Most tutorials will span several pages, and contain multiple walkthroughs within them.
+When writing a tutorial, you're teaching a reader how to achieve a complex end-goal. Tutorials are a mix of walkthroughs and conceptual articles. Most tutorials will span several pages, and contain multiple walkthroughs within them.
Take the hypothetical tutorial _Get up and running with Filecoin_, for example. This tutorial will likely have the following pages:
@@ -148,14 +302,14 @@ While Filecoin is a global project, the fact is that American English is the mos
In a list of three or more items, follow each item except the last with a comma `,`:
-| Use | Don’t use |
+| Use | Don't use |
| ----------------------------- | ---------------------------- |
| One, two, three, and four. | One, two, three and four. |
| Henry, Elizabeth, and George. | Henry, Elizabeth and George. |
#### References to Filecoin
-As a proper noun, the name “Filecoin” (capitalized) should be used only to refer to the overarching project, to the protocol, or to the project’s canonical network:
+As a proper noun, the name "Filecoin" (capitalized) should be used only to refer to the overarching project, to the protocol, or to the project's canonical network:
> Filecoin \[the project] has attracted contributors from around the globe! Filecoin \[the protocol] rewards contributions of data storage instead of computation! Filecoin \[the network] is currently storing 50 PiB of data!
@@ -163,7 +317,7 @@ The name can also be used as an adjective:
> The Filecoin ecosystem is thriving! I love contributing to Filecoin documentation!
-When referring to the token used as Filecoin’s currency, the name `FIL`, is preferred. It is alternatively denoted by the Unicode symbol for an integral with a double stroke ⨎:
+When referring to the token used as Filecoin's currency, the name `FIL`, is preferred. It is alternatively denoted by the Unicode symbol for an integral with a double stroke ⨎:
* Unit prefix: **100 FIL**.
* Symbol prefix: **⨎ 100**.
@@ -174,7 +328,7 @@ The smallest and most common denomination of FIL is the `attoFIL` (10^-18 FIL).
Examples of discouraged usage:
-> Filecoin rewards storage providers with Filecoin. There are many ways to participate in the filecoin community. My wallet has thirty filecoins.
+> Filecoin rewards storage providers with Filecoin. There are many ways to participate in the Filecoin community. My wallet has thirty filecoins.
Consistency in the usage of these terms helps keep these various concepts distinct.
@@ -198,7 +352,7 @@ Lotus is the main implementation of Filecoin. As such, it is frequently referenc
#### Acronyms
-If you have to use an acronym, spell the full phrase first and include the acronym in parentheses `()` the first time it is used in each document. Exception: This generally isn’t necessary for commonly-encountered acronyms like _IPFS_, unless writing for a stand-alone article that may not be presented alongside project documentation.
+If you have to use an acronym, spell the full phrase first and include the acronym in parentheses `()` the first time it is used in each document. Exception: This generally isn't necessary for commonly-encountered acronyms like _IPFS_, unless writing for a stand-alone article that may not be presented alongside project documentation.
> Virtual Machine (VM), Decentralized Web (DWeb).
@@ -214,7 +368,7 @@ The Filecoin Docs project follows the _GitHub Flavoured Markdown_ syntax for mar
We use the rules set out in the [VSCode Markdownlint](https://github.com/DavidAnson/vscode-markdownlint) extension. You can import these rules into any text editor like Vim or Sublime. All rules are listed [within the Markdownlint repository](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md).
-We highly recommend installing [VSCode](https://code.visualstudio.com/) with the [Markdownlint](https://github.com/DavidAnson/vscode-markdownlint) extension to help with your writing. The extension shows warnings within your markdown whenever your copy doesn’t conform to a rule.
+We highly recommend installing [VSCode](https://code.visualstudio.com/) with the [Markdownlint](https://github.com/DavidAnson/vscode-markdownlint) extension to help with your writing. The extension shows warnings within your markdown whenever your copy doesn't conform to a rule.
### Style
@@ -235,7 +389,7 @@ The following rules apply to editing and styling text.
### The capital city of France is Paris
-2. Every article starts with a _front-matter_ title and description:
+1. Every article starts with a _front-matter_ title and description:
```markdown
---
@@ -250,7 +404,7 @@ Example body text.
In the above example `title:` serves as a `
` or `#` tag. There is only ever one title of this level in each article.
-3. Titles do not contain punctuation. If you have a question within your title, rephrase it as a statement:
+1. Titles do not contain punctuation. If you have a question within your title, rephrase it as a statement:
```markdown
@@ -298,10 +452,10 @@ Tag code blocks with the syntax of the core they are presenting:
```
````
-Output from command-line actions can be displayed by adding another codeblock directly after the input codeblock. Here’s an example telling the use to run `go version` and then the output of that command in a separate codeblock immediately after the first:
+Output from command-line actions can be displayed by adding another codeblock directly after the input codeblock. Here's an example telling the use to run `go version` and then the output of that command in a separate codeblock immediately after the first:
````markdown
- ```shell
+ ```shell
go version
```
@@ -354,13 +508,13 @@ List items end with a period `.`, or a colon `:` if the list item has a sub-list
**Unordered lists**
-Use the dash character `-` for un-numbered list items:
+Use the asterisk character `*` for un-numbered list items:
```markdown
-- An apple.
-- Three oranges.
-- As many lemons as you can carry.
-- Half a lime.
+* An apple.
+* Three oranges.
+* As many lemons as you can carry.
+* Half a lime.
```
**Special characters**
@@ -393,6 +547,4 @@ All images contain alt text so that screen-reading programs can describe the ima

```
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/project-and-community/ways-to-contribute)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/community/ways-to-contribute)
diff --git a/getting-started/how-retrieval-works/README.md b/getting-started/how-retrieval-works/README.md
new file mode 100644
index 000000000..6184dcc39
--- /dev/null
+++ b/getting-started/how-retrieval-works/README.md
@@ -0,0 +1,15 @@
+---
+description: >-
+ How to retrieve data from the Filecoin network, from finding providers to fetching content.
+---
+
+# How retrieval works
+
+This section covers how Filecoin retrieval works, from finding providers to fetching content.
+
+## Table of contents
+
+* [Basic retrieval](basic-retrieval.md) — retrieve data with a client like Lassie
+* [Serving retrievals](serving-retrievals.md) — how retrieval deals work and how the indexer fits in
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-retrieval-works)
diff --git a/basics/how-retrieval-works/basic-retrieval.md b/getting-started/how-retrieval-works/basic-retrieval.md
similarity index 79%
rename from basics/how-retrieval-works/basic-retrieval.md
rename to getting-started/how-retrieval-works/basic-retrieval.md
index a2a8411d4..64a4336f5 100644
--- a/basics/how-retrieval-works/basic-retrieval.md
+++ b/getting-started/how-retrieval-works/basic-retrieval.md
@@ -16,28 +16,29 @@ lassie fetch
Lassie also provides an HTTP interface for retrieving IPLD data from IPFS and Filecoin peers. Developers can use this interface directly in their applications to retrieve the data.
-Lassie fetches content in content-addressed archive (CAR) form, so in most cases, you will need additional tooling to deal with CAR files. Lassie can also be used as a library to fetch data from Filecoin from within your application. Due to the diversity of data transport protocols in the IPFS ecosystem, Lassie is able to use the Graphsync or Bitswap protocols, depending on how the requested data is available to be fetched. One prominent use case of Lassie as a library is the **Saturn Network**. Saturn nodes fetch content from Filecoin and IPFS through Lassie in order to serve retrievals.
+Lassie fetches content in content-addressed archive (CAR) form, so in most cases, you will need additional tooling to deal with CAR files. Lassie can also be used as a library to fetch data from Filecoin from within your application. Due to the diversity of data transport protocols in the IPFS ecosystem, Lassie is able to use the Graphsync or Bitswap protocols, depending on how the requested data is available to be fetched.

#### Retrieve using Lassie
Make sure that you have [Go](https://go.dev/) installed and that your `GOPATH` is set up. By default, your `GOPATH` will be set to `~/go`.\
-**Install Lassie** [**#**](https://docs.filecoin.io/basics/how-retrieval-works/basic-retrieval/#install-lassie)
+
+##### Install Lassie
1. Download the [Lassie Binary from the latest release](https://github.com/filecoin-project/lassie/releases/latest) based on your system architecture.
Or download and install Lassie using the Go package manager:
-```
-go install github.com/filecoin-project/lassie/cmd/lassie@latest
-```
+ ```sh
+ go install github.com/filecoin-project/lassie/cmd/lassie@latest
+ ```
2. Download the [go-car binary from the latest release](https://github.com/ipld/go-car/releases/latest) based on your system architecture or install the [go-car](https://github.com/ipld/go-car) package using the Go package manager. The go-car package makes it easier to work with content-addressed archive (CAR) files:
-```
-go install github.com/ipld/go-car/cmd/car@latest
-```
+ ```sh
+ go install github.com/ipld/go-car/cmd/car@latest
+ ```
You now have everything you need to retrieve a file with Lassie and extract the contents with `go-car`.
@@ -50,7 +51,7 @@ The video below demonstrates how Lassie can be used to render content directly f
Lassie and `go-car` can work together to retrieve and extract data from Filecoin. All you need is the CID of the content to download.
```shell
-lassie fetch -o - | car extract
+lassie fetch -o - | car extract -
```
This command uses a `|` to chain two commands together. This will work on Linux or macOS. Windows users may need to use PowerShell to use this form. Alternatively, you can use the commands separately, as explained later on this page.
@@ -91,27 +92,27 @@ lassie fetch -p -o /path/to/content
* `-p` is an optional flag that tells Lassie that you would like to see detailed progress information as it fetches your data.
For example:
-* ```plaintext
- Fetching bafykbzaceatihez66rzmzuvfx5nqqik73hlphem3dvagmixmay3arvqd66ng6
- Querying indexer for bafykbzaceatihez66rzmzuvfx5nqqik73hlphem3dvagmixmay3arvqd66ng6...
- Found 4 storage providers candidates from the indexer, querying all of them:
- 12D3KooWPNbkEgjdBNeaCGpsgCrPRETe4uBZf1ShFXStobdN18ys
- 12D3KooWNHwmwNRkMEP6VqDCpjSZkqripoJgN7eWruvXXqC2kG9f
- 12D3KooWKGCcFVSAUXxe7YP62wiwsBvpCmMomnNauJCA67XbmHYj
- 12D3KooWLDf6KCzeMv16qPRaJsTLKJ5fR523h65iaYSRNfrQy7eU
- Querying [12D3KooWLDf6KCzeMv16qPRaJsTLKJ5fR523h65iaYSRNfrQy7eU] (started)...
- Querying [12D3KooWKGCcFVSAUXxe7YP62wiwsBvpCmMomnNauJCA67XbmHYj] (started)...
-
- ...
- ```
+
+ ```plaintext
+ Fetching bafykbzaceatihez66rzmzuvfx5nqqik73hlphem3dvagmixmay3arvqd66ng6
+ Querying indexer for bafykbzaceatihez66rzmzuvfx5nqqik73hlphem3dvagmixmay3arvqd66ng6...
+ Found 4 storage providers candidates from the indexer, querying all of them:
+ 12D3KooWPNbkEgjdBNeaCGpsgCrPRETe4uBZf1ShFXStobdN18ys
+ 12D3KooWNHwmwNRkMEP6VqDCpjSZkqripoJgN7eWruvXXqC2kG9f
+ 12D3KooWKGCcFVSAUXxe7YP62wiwsBvpCmMomnNauJCA67XbmHYj
+ 12D3KooWLDf6KCzeMv16qPRaJsTLKJ5fR523h65iaYSRNfrQy7eU
+ Querying [12D3KooWLDf6KCzeMv16qPRaJsTLKJ5fR523h65iaYSRNfrQy7eU] (started)...
+ Querying [12D3KooWKGCcFVSAUXxe7YP62wiwsBvpCmMomnNauJCA67XbmHYj] (started)...
+
+ ...
+ ```
* `-o` is an optional flag that tells Lassie where to write the output to. If you don’t specify a file, it will append `.car` to your CID and use that as the output file name.
-If you specify `-p`, the output will be written to `stdout` so it can be piped to another command, such as `go-car`, or redirected to a file.
+ Use `-o -` to write the CAR stream to `stdout` so it can be piped to another command, such as `go-car`, or redirected to a file.
* `/path/to/content` is the CID of the content you want to retrieve and an optional path to a specific file within that content. Example:
-* ```shell
- lassie fetch -o - bafybeiaysi4s6lnjev27ln5icwm6tueaw2vdykrtjkwiphwekaywqhcjze/wiki/Cryptographic_hash_function | car extract - | less
- ```
+
+ lassie fetch -o - bafybeiaysi4s6lnjev27ln5icwm6tueaw2vdykrtjkwiphwekaywqhcjze/wiki/Cryptographic_hash_function | car extract - | less
A CID is always necessary, and if you don’t specify a path, Lassie will attempt to download the entire content. If you specify a path, Lassie will only download that specific file or, if it is a directory, the entire directory and its contents.
@@ -127,19 +128,19 @@ car extract -f [/path/to/file/or/directory] []
* `/path/to/file/or/directory` is an optional path to a specific file or directory within the CAR. If omitted, it will attempt to extract the entire CAR.
* `` is an optional argument that tells `go-car` where to write the output to. If omitted, it will be written to the current directory.
-If you supply `-p`, as in the above example, it will attempt to extract the content directly to `stdout`. This will only work if we are extracting a single file.
+If you supply `-p`, `car extract` writes extracted file bytes directly to `stdout`. This only works when extracting a single file.
In the example above, where we fetched a file named `lidar-data.tar`, the `>` operator was used to redirect the output of `car extract` to a named file. This is because the content we fetched was raw file data that did not have a name encoded. In this case, if we didn’t use `-` and `> filename`, `go-car` would write to a file named `unknown`. In this instance, `go-car` was used to reconstitute the file from the raw blocks contained within Lassie’s CAR output.
`go-car` has other useful commands. The first is `car ls`, which can be used to list the contents of a CAR. The second is `car inspect`, which can be used to inspect the contents of the CAR and optionally verify the integrity of a CAR.
-And there we have it! Downloading and managing data from Filecoin is super simple when you use Lassie and Go-car!
+Lassie and go-car are the recommended command-line tools for retrieving and inspecting Filecoin data by CID.
#### Lassie HTTP daemon
The Lassie HTTP daemon is an HTTP interface for retrieving IPLD data from IPFS and Filecoin peers. It fetches content from peers known to have it and provides the resulting data in CAR format.
-```shell
+```http
GET /ipfs/{cid}[/path][?params]
```
@@ -151,4 +152,4 @@ Lassie only returns data in CAR format, specifically, [CARv1](https://ipld.io/sp
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-retrieval-works/basic-retrieval)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-retrieval-works/basic-retrieval)
diff --git a/basics/how-retrieval-works/serving-retrievals.md b/getting-started/how-retrieval-works/serving-retrievals.md
similarity index 86%
rename from basics/how-retrieval-works/serving-retrievals.md
rename to getting-started/how-retrieval-works/serving-retrievals.md
index 4a66aa946..6ee2dfc91 100644
--- a/basics/how-retrieval-works/serving-retrievals.md
+++ b/getting-started/how-retrieval-works/serving-retrievals.md
@@ -29,12 +29,10 @@ Assuming the IPNI returns more than one storage provider, the client can select
The client then attempts to retrieve the data from the SP over Bitswap, Graphsync, or HTTP. Note that currently, clients can only get full-piece retrievals using HTTP.
-When attempting this retrieval deal using Graphsync, payment channels are used to pay FIL to the storage provider. These payment channels watch the data flow and pay the storage provider after each chunk of data is retrieved successfully.
-
#### Finalize the retrieval
Once the client has received the last chunk of data, the connection is closed.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-retrieval-works/serving-retrievals)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-retrieval-works/serving-retrievals)
diff --git a/getting-started/how-storage-works/README.md b/getting-started/how-storage-works/README.md
new file mode 100644
index 000000000..2b723f856
--- /dev/null
+++ b/getting-started/how-storage-works/README.md
@@ -0,0 +1,17 @@
+---
+description: >-
+ How data is stored on the Filecoin network, from uploading files to using storage onramps.
+---
+
+# How storage works
+
+This section covers the primary methods for storing data on Filecoin and how Filecoin relates to IPFS.
+
+## Table of contents
+
+* [Filecoin and IPFS](filecoin-and-ipfs.md) — how Filecoin and IPFS work together for storage and retrieval
+* [Upload to Filecoin](upload-to-filecoin.md) — the fastest path to storing data on the network
+* [Storage onramps](storage-onramps.md) — managed services for ingesting data into Filecoin
+* [Filecoin Plus](filecoin-plus.md) — a program that subsidizes storage for verified clients
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-storage-works)
diff --git a/basics/how-storage-works/filecoin-and-ipfs.md b/getting-started/how-storage-works/filecoin-and-ipfs.md
similarity index 97%
rename from basics/how-storage-works/filecoin-and-ipfs.md
rename to getting-started/how-storage-works/filecoin-and-ipfs.md
index a727128f4..36f3e19ae 100644
--- a/basics/how-storage-works/filecoin-and-ipfs.md
+++ b/getting-started/how-storage-works/filecoin-and-ipfs.md
@@ -71,8 +71,8 @@ The code that runs both clients and storage providers is open-source. Storage pr
#### Active community
-Filecoin has an active community of contributors to answer questions and help newcomers get started. There is an open dialog between users, developers, and storage providers. If you need help, you can reach the person who designed or built the system in question. Reach out on [Filecoin’s chat and forums](https://docs.filecoin.io/basics/project-and-community/forums-and-fips).
+Filecoin has an active community of contributors to answer questions and help newcomers get started. There is an open dialog between users, developers, and storage providers. If you need help, you can reach the person who designed or built the system in question. Reach out on [Filecoin’s chat and forums](../community/forums-and-FIPs.md).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-storage-works/filecoin-and-ipfs)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-storage-works/filecoin-and-ipfs)
diff --git a/basics/how-storage-works/filecoin-plus.md b/getting-started/how-storage-works/filecoin-plus.md
similarity index 90%
rename from basics/how-storage-works/filecoin-plus.md
rename to getting-started/how-storage-works/filecoin-plus.md
index 4336167e8..5248f604e 100644
--- a/basics/how-storage-works/filecoin-plus.md
+++ b/getting-started/how-storage-works/filecoin-plus.md
@@ -39,7 +39,7 @@ Incentives for storage providers to accept verified deals is strongest initially

-As seen in the diagrams above, Filecoin Plus increases the collateral requirements needed by a storage provider. As a higher percentage of storage providers include verified deals in their sectors, the collateral needed by each storage provider will increase. To learn more about storage provider collateral, see [this link](https://docs.filecoin.io/storage-providers/filecoin-economics/fil-collateral).
+As seen in the diagrams above, Filecoin Plus increases the collateral requirements needed by a storage provider. As a higher percentage of storage providers include verified deals in their sectors, the collateral needed by each storage provider will increase. To learn more about storage provider collateral, see [this link](../../storage-providers/filecoin-economics/fil-collateral.md).
## Filecoin+ Processes & Participants
@@ -65,16 +65,16 @@ One such allocator is [Filecoin Incentive Design Labs (FIDL)](https://www.fidl.t
### Steps to Acquire Mainnet DataCap as a Client
The steps a client should follow to acquire DataCap are as follows:
-1. Create a [Filecoin wallet](https://docs.filecoin.io/basics/assets/wallets).
+1. Create a [Filecoin wallet](../../networks-and-tools/assets/wallets.md).
2. Choose an allocator from the [full list of active allocators](https://github.com/filecoin-project/Allocator-registry) or the [active list of allocators](https://allocator.tech/) who have verified public datasets.
-3. Check that you satisfy the requirements of the allocator. In the case of uploading open source datasets with FIDL as the allocator, the client will need to demonstrate to FIDL that they can (1) satisfy a third party Know Your Customer(KYC) identity check, (2) provide the details of storage provider (entity, storage location) where the data is intended to be stored, and (3) demonstrate proof that the dataset can be actively retrieved. You can learn more about [FIDL’s requirements and application process](https://www.fidl.tech/apply-for-datacap).
-4. Submit an application for DataCap from an allocator. You can submit a request to FIDL via their [Github application form](https://github.com/fidlabs/Open-Data-Pathway/issues/new/choose) or [Google Form](https://www.fidl.tech/apply-for-datacap).
+3. Check that you satisfy the requirements of the allocator. In the case of uploading open source datasets with FIDL as the allocator, the client will need to demonstrate to FIDL that they can (1) satisfy a third-party Know Your Customer (KYC) identity check, (2) provide the details of storage provider (entity, storage location) where the data is intended to be stored, and (3) demonstrate proof that the dataset can be actively retrieved. You can learn more about FIDL’s requirements and application process in their [GitHub application form](https://github.com/fidlabs/Open-Data-Pathway/issues/new/choose).
+4. Submit an application for DataCap from an allocator. You can submit a request to FIDL via their [GitHub application form](https://github.com/fidlabs/Open-Data-Pathway/issues/new/choose).
5. Use the DataCap in a storage deal.
### Steps to Acquire Testnet DataCap as a Builder
-For builders on the [Calibration testnet](../../networks/calibration/) who need testnet DataCap to test their applications, a faucet is available. The steps a builder should follow to acquire testnet DataCap are as follows:
+For builders on the [Calibration testnet](../../networks-and-tools/networks/calibration/) who need testnet DataCap to test their applications, a faucet is available. The steps a builder should follow to acquire testnet DataCap are as follows:
-1. Create a wallet on Filecoin Calibration testnet. For more information, see the [Calibration docs](../../networks/calibration/) or [Github](https://github.com/filecoin-project/testnet-calibration).
+1. Create a wallet on Filecoin Calibration testnet. For more information, see the [Calibration docs](../../networks-and-tools/networks/calibration/) or [Github](https://github.com/filecoin-project/testnet-calibration).
2. Grant the wallet address DataCap by using this [faucet](https://faucet.calibnet.chainsafe-fil.io/datacap.html).
## **DataCap for Smart contracts**
@@ -87,7 +87,7 @@ It’s important to note that DataCap allocations are a one-time credit for a Fi
## How to Use DataCap
Once you have an address with DataCap, you can make deals using DataCap as a part of the payment. Because storage providers receive a deal quality multiplier for taking Filecoin+ deals, many storage providers offer special pricing and services to attract clients who use DataCap to make deals.
-[Learn more about Storage Deals.](https://docs.filecoin.io/storage-providers/filecoin-deals/storage-deals)
+[Learn more about Storage Deals.](../../storage-providers/filecoin-deals/storage-deals.md)
By default, when you make a deal with an address with DataCap allocated, you will spend that DataCap when making the deal.
@@ -101,4 +101,4 @@ There are three resources you can use to check the current status of the Filecoi
To learn more about Filecoin Plus, review [FIP003: Filecoin Plus Principles](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0003.md).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/how-storage-works/filecoin-plus)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-storage-works/filecoin-plus)
diff --git a/getting-started/how-storage-works/storage-onramps.md b/getting-started/how-storage-works/storage-onramps.md
new file mode 100644
index 000000000..b683f7c75
--- /dev/null
+++ b/getting-started/how-storage-works/storage-onramps.md
@@ -0,0 +1,23 @@
+---
+description: >-
+ Storage on-ramps and helpers are APIs and services that abstract Filecoin
+ dealmaking into simple, streamlined API calls.
+---
+
+# Storage onramps
+
+Developers use web UIs, APIs, or libraries to send data to storage onramps. Behind the scenes, storage onramps receive the data and handle the underlying processes to store it in a reliable way, making deals with Filecoin storage providers.
+
+Examples of maintained storage onramps include:
+
+* [Filecoin Onchain Cloud](../../build/filecoin-onchain-cloud/README.md) is a programmable, on-chain storage platform with verifiable storage proofs (PDP) and automatic payments (Filecoin Pay), accessed through the Synapse SDK.
+* [Filecoin Pin](../../build/cookbook/filecoin-pin/getting-started.md) is a CLI and API path for pinning IPFS-compatible content to Filecoin-backed storage with Filecoin Pay.
+* [Fil One](https://fil.one/) is S3-compatible object storage backed by Filecoin, with flat per-terabyte pricing and no egress fees. Point any S3 SDK or tool at its endpoint to store data with cryptographic integrity proofs. See the [Fil One docs](https://docs.fil.one/).
+* [Lighthouse](https://lighthouse.storage/) offers permanent, decentralized storage powered by Filecoin.
+* [Akave](https://www.akave.ai/) provides a decentralized data-lake and object-storage layer backed by Filecoin.
+* [Pinata](https://pinata.cloud/) is an IPFS pinning service for storing and serving files, media, and app data over IPFS. See the [Pinata docs](https://docs.pinata.cloud/).
+* [Singularity](https://data-programs.gitbook.io/singularity) facilitates onboarding large quantities of data to the Filecoin network.
+* [CID Gravity](https://www.cidgravity.com/) provides a web UI for uploading files to Filecoin and IPFS.
+* [Ramo](https://use.ramo.computer/) provides Filecoin-based, S3-compatible storage for data on Filecoin.
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-storage-works/storage-onramps)
diff --git a/getting-started/how-storage-works/upload-to-filecoin.md b/getting-started/how-storage-works/upload-to-filecoin.md
new file mode 100644
index 000000000..f8609d17d
--- /dev/null
+++ b/getting-started/how-storage-works/upload-to-filecoin.md
@@ -0,0 +1,53 @@
+---
+description: >-
+ Choose a storage path on Filecoin based on your needs, from managed on-chain
+ storage to direct deal-making with providers.
+---
+
+# Upload to Filecoin
+
+Filecoin offers several ways to store data. Each path trades off simplicity against control. This page describes what each option does and links to the relevant documentation.
+
+## Filecoin Onchain Cloud
+
+[Filecoin Onchain Cloud (FOC)](../../build/filecoin-onchain-cloud/README.md) is a programmable storage platform built on the Filecoin Virtual Machine. It handles the full lifecycle of storing data: the Filecoin Warm Storage Service (FWSS) stores your data with fast retrieval, Proof of Data Possession (PDP) cryptographically verifies providers still hold it, and Filecoin Pay settles payments automatically based on verified storage delivery. All operations are on-chain and auditable.
+
+Developers interact with FOC through the [Synapse SDK](https://docs.filecoin.cloud/developer-guides/synapse), which provides a high-level API for uploads, payments, and provider discovery. See the [FOC documentation](https://docs.filecoin.cloud/) for setup guides and API reference.
+
+{% hint style="success" %}
+**Best for**: developers who want verifiable, programmable storage with minimal infrastructure.
+{% endhint %}
+
+## Fil One
+
+[Fil One](https://fil.one/) is S3-compatible object storage backed by Filecoin. Point any S3 SDK or tool at its endpoint and store data with flat per-terabyte pricing, no egress fees, and cryptographic integrity proofs from the Filecoin network. It suits teams that want a drop-in S3 replacement without managing deals or running infrastructure. See the [Fil One documentation](https://docs.fil.one/) for the endpoint, SDKs, and API reference.
+
+{% hint style="success" %}
+**Best for**: teams that want a familiar S3 workflow with Filecoin-backed durability.
+{% endhint %}
+
+## Storage onramps
+
+[Storage onramps](storage-onramps.md) are third-party services that handle Filecoin deal-making behind the scenes. You send data through a web UI, API, or SDK, and the onramp manages provider selection, deal negotiation, and data transfer. Services like [Pinata](https://pinata.cloud/) (IPFS pinning), [Lighthouse](https://lighthouse.storage/), and [Akave](https://www.akave.ai/) each offer different features. See the [storage onramps page](storage-onramps.md) for the full list with links to their documentation.
+
+{% hint style="success" %}
+**Best for**: teams who prefer a managed service and do not need direct on-chain control.
+{% endhint %}
+
+## Filecoin Plus
+
+[Filecoin Plus](filecoin-plus.md) is a program that subsidizes storage costs for verified clients storing useful data. Allocators vet clients and grant them DataCap tokens. When a client spends DataCap in a storage deal, the provider earns higher block rewards, which incentivizes storing verified data at reduced cost. See the [Filecoin Plus page](filecoin-plus.md) for how the allocator process works.
+
+{% hint style="success" %}
+**Best for**: large datasets where cost efficiency is a priority.
+{% endhint %}
+
+## Direct deal-making
+
+For full control over provider selection, pricing, and deal terms, you can negotiate storage deals directly. [Curio](https://curiostorage.org/) is the modern storage-provider stack for running this infrastructure, see the [Curio documentation](https://docs.curiostorage.org/), with [Boost](https://boost.filecoin.io/) as the established deal engine and the [Lotus client](../../storage-providers/nodes/implementations/lotus.md) providing CLI tools for proposing and managing deals. This path requires running infrastructure and understanding the Filecoin deal lifecycle.
+
+{% hint style="success" %}
+**Best for**: storage providers, large-scale data onboarders, and users with custom deal requirements.
+{% endhint %}
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/how-storage-works/upload-to-filecoin)
diff --git a/basics/interplanetary-consensus.md b/getting-started/interplanetary-consensus.md
similarity index 84%
rename from basics/interplanetary-consensus.md
rename to getting-started/interplanetary-consensus.md
index 922311ca5..e27186ca3 100644
--- a/basics/interplanetary-consensus.md
+++ b/getting-started/interplanetary-consensus.md
@@ -34,8 +34,8 @@ Subnets also have their own specific consensus algorithms, whilst leveraging sec
Earlier, we talked about the challenge of scaling solutions to balance performance, security and decentralization. IPC is a standout framework that strikes a considerable balance between these factors, to achieve breakthroughs in scaling.
* **Highly customizable without compromising security.** Most L2 scaling solutions today either inherit the L1's security features but don't have their own consensus algorithms (e.g. rollups), or do the reverse (e.g. sidechains). They are also deployed in isolation and require custom bridges or protocols to transfer assets and state between L2s that share a common L1, which are vulnerable to attacks. In contrast, IPC subnets have their own consensus algorithms, inherit security features from the parent subnet and have native cross-net communication, eliminating the need for bridges.
-* **Multi-chain interoperability.** IPC uses the [Filecoin Virtual Machine (FVM)](https://docs.filecoin.io/smart-contracts/fundamentals/the-fvm) as its transaction execution layer. The FVM is a WASM-based polyglot execution environment for IPLD data and is designed to support smart contracts written in any programming language, compiled to WASM. It currently supports Filecoin and Ethereum. Today, IPC is fully compatible with Filecoin and Ethereum and can use either as a rootnet. IPC will eventually allow any chain to be taken as rootnet.
-* **Tight storage integration with Filecoin.** IPC was designed from the data-centric L1, [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin), which is the largest decentralized storage network. IPC can leverage its storage primitives, like IPLD data integration, to deliver enhanced solutions for data availability and more.
+* **Multi-chain interoperability.** IPC uses the [Filecoin Virtual Machine (FVM)](../core-concepts/filecoin-virtual-machine/README.md) as its transaction execution layer. The FVM is a WASM-based polyglot execution environment for IPLD data and is designed to support smart contracts written in any programming language, compiled to WASM. It currently supports Filecoin and Ethereum. Today, IPC is fully compatible with Filecoin and Ethereum and can use either as a rootnet. IPC will eventually allow any chain to be taken as rootnet.
+* **Tight storage integration with Filecoin.** IPC was designed from the data-centric L1, [Filecoin](./what-is-filecoin/README.md), which is the largest decentralized storage network. IPC can leverage its storage primitives, like IPLD data integration, to deliver enhanced solutions for data availability and more.
## Applications of IPC
@@ -48,7 +48,7 @@ Here are some practical examples of how IPC improves the performance of dApps:
With better performance, lower fees and faster transactions, IPC can rapidly improve horizontal and vertical markets with decentralized technology:
-* **Artificial Intelligence:** IPC is fully compatible with [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin), the world’s largest decentralized data storage. Leveraging Filecoin, IPC can enable distributed computation to power hundreds of innovative AI models.
+* **Artificial Intelligence:** IPC is fully compatible with [Filecoin](./what-is-filecoin/README.md), the world’s largest decentralized data storage. Leveraging Filecoin, IPC can enable distributed computation to power hundreds of innovative AI models.
* **Decentralized Finance (DeFi):** Enabling truly high-frequency trading and traditional backends with verifiability and privacy.
* **Big Data and Data Science:** Multiple teams are creating global-scale distributed compute networks to enable Data Science analysis on Exabytes of decentralized stored data.
* **Metaverse/Gaming:** Enabling real-time tracking of player interactions in virtual worlds.
@@ -63,4 +63,4 @@ With better performance, lower fees and faster transactions, IPC can rapidly imp
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/interplanetary-consensus)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/getting-started/interplanetary-consensus)
diff --git a/basics/what-is-filecoin/README.md b/getting-started/what-is-filecoin/README.md
similarity index 98%
rename from basics/what-is-filecoin/README.md
rename to getting-started/what-is-filecoin/README.md
index f8b5378fc..046b3d495 100644
--- a/basics/what-is-filecoin/README.md
+++ b/getting-started/what-is-filecoin/README.md
@@ -19,4 +19,4 @@ Filecoin is used as a storage solution for a range of products, including from W
Filecoin is compatible with various data types, including audio and video files. This versatility allows Web3 platforms like [Audius](https://audius.co/) and [Huddle01](https://huddle01.com/) to use Filecoin as a decentralized storage backend for music streaming and video conferencing.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin)
diff --git a/basics/what-is-filecoin/blockchain.md b/getting-started/what-is-filecoin/blockchain.md
similarity index 99%
rename from basics/what-is-filecoin/blockchain.md
rename to getting-started/what-is-filecoin/blockchain.md
index ff87aaee3..a5abae03d 100644
--- a/basics/what-is-filecoin/blockchain.md
+++ b/getting-started/what-is-filecoin/blockchain.md
@@ -102,4 +102,4 @@ If storage providers fail to maintain reliable uptime or act maliciously, they f
- **Storage Fault Slashing**: Penalizes providers who fail to maintain healthy and reliable storage sectors.
- **Consensus Fault Slashing**: Penalizes providers attempting to disrupt the security or availability of the consensus process.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/blockchain)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/blockchain)
diff --git a/basics/what-is-filecoin/crypto-economics.md b/getting-started/what-is-filecoin/crypto-economics.md
similarity index 91%
rename from basics/what-is-filecoin/crypto-economics.md
rename to getting-started/what-is-filecoin/crypto-economics.md
index d9affa6d9..4699c7daf 100644
--- a/basics/what-is-filecoin/crypto-economics.md
+++ b/getting-started/what-is-filecoin/crypto-economics.md
@@ -25,7 +25,7 @@ Additionally, 300 million FIL tokens are held in a mining reserve to incentivize
## Vesting
-Mining rewards are subject to a vesting schedule to support long-term network alignment. For instance, 75% of block rewards earned by miners vest linearly over 180 days, while 25% are immediately accessible, improving miner cash flow and profitability. Note that if the miner has incurred "[fee debt](https://docs.filecoin.io/storage-providers/filecoin-economics/slashing)," the immediately accessible block rewards will automatically go towards paying down those fees.
+Mining rewards are subject to a vesting schedule to support long-term network alignment. For instance, 75% of block rewards earned by miners vest linearly over 180 days, while 25% are immediately accessible, improving miner cash flow and profitability. Note that if the miner has incurred "[fee debt](../../storage-providers/filecoin-economics/slashing.md)," the immediately accessible block rewards will automatically go towards paying down those fees.
A certain portion of initially printed FIL tokens are vested to Protocol Labs teams and the Filecoin Foundation over six years, and to SAFT investors over three years, as outlined in the [vesting schedule](https://observablehq.com/@starboard/a-primer-to-filecoin-circulating-supply/2).
@@ -39,4 +39,4 @@ To ensure network security and reliable storage, storage providers must lock FIL
FIL’s maximum circulating supply is capped at 2 billion FIL. However, this maximum will never be reached, as a portion of FIL is permanently removed from circulation through gas fees, penalties, and other mechanisms.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/crypto-economics)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/crypto-economics)
diff --git a/basics/what-is-filecoin/networks.md b/getting-started/what-is-filecoin/networks.md
similarity index 53%
rename from basics/what-is-filecoin/networks.md
rename to getting-started/what-is-filecoin/networks.md
index 820b6b273..6b8032945 100644
--- a/basics/what-is-filecoin/networks.md
+++ b/getting-started/what-is-filecoin/networks.md
@@ -7,7 +7,7 @@ description: >-
## Mainnet
-[Mainnet](../../networks/mainnet/) is the live production network that connects all nodes on the Filecoin network. It operates continuously without resets.
+[Mainnet](../../networks-and-tools/networks/mainnet/) is the live production network that connects all nodes on the Filecoin network. It operates continuously without resets.
## Testnets
@@ -15,13 +15,13 @@ Test networks, or testnets, are versions of the Filecoin network that simulate v
### Calibration
-The [Calibration](../../networks/calibration/) testnet offers the closest simulation of the mainnet. It provides realistic sealing performance and hardware requirements due to the use of finalized proofs and parameters, allowing prospective storage providers to test their setups. Storage clients can also store and retrieve real data on this network, participating in deal-making workflows and testing storage/retrieval functionalities. Calibration testnet uses the same sector size as the mainnet.
+The [Calibration](../../networks-and-tools/networks/calibration/) testnet offers the closest simulation of the mainnet. It provides realistic sealing performance and hardware requirements due to the use of finalized proofs and parameters, allowing prospective storage providers to test their setups. Storage clients can also store and retrieve real data on this network, participating in deal-making workflows and testing storage/retrieval functionalities. Calibration testnet uses the same sector size as the mainnet.
-- [Public endpoint](https://api.calibration.node.glif.io/rpc/v0)
+- [Public RPC endpoints](../../networks-and-tools/networks/calibration/rpcs.md)
- [Blockchain explorer](https://calibration.filscan.io/)
- [Calibration Faucet - Chainsafe](https://faucet.calibnet.chainsafe-fil.io)
- [Calibration Faucet - Zondax](https://beryx.zondax.ch/faucet/)
- [Calibration Faucet - Forest Explorer](https://forest-explorer.chainsafe.dev/faucet/calibnet)
- [Calibration USDFC Faucet - Chainsafe](https://forest-explorer.chainsafe.dev/faucet/calibnet_usdfc)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/networks)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/networks)
diff --git a/basics/what-is-filecoin/programming-on-filecoin.md b/getting-started/what-is-filecoin/programming-on-filecoin.md
similarity index 87%
rename from basics/what-is-filecoin/programming-on-filecoin.md
rename to getting-started/what-is-filecoin/programming-on-filecoin.md
index 88218190f..737c1049d 100644
--- a/basics/what-is-filecoin/programming-on-filecoin.md
+++ b/getting-started/what-is-filecoin/programming-on-filecoin.md
@@ -7,9 +7,9 @@ description: >-
## Compute-over-data
-Beyond storage and retrieval, data often needs transformation. Compute-over-data protocols enable computations over IPLD, the data layer used by content-addressed systems like Filecoin. Working groups are developing compute solutions for Filecoin data, including large-scale parallel compute (e.g., [Bacalhau](https://www.bacalhau.org/)) and cryptographically verifiable compute (e.g., [Lurk](https://filecoin.io/blog/posts/introducing-lurk-a-programming-language-for-recursive-zk-snarks/)).
+Beyond storage and retrieval, data often needs transformation. Compute-over-data protocols enable computations over IPLD, the data layer used by content-addressed systems like Filecoin. Working groups are developing compute solutions for Filecoin data, including large-scale parallel compute and cryptographically verifiable compute (e.g., [Lurk](https://filecoin.io/blog/posts/introducing-lurk-a-programming-language-for-recursive-zk-snarks/)).
-For example, Bacalhau provides a platform for public, transparent, and verifiable distributed computation, allowing users to run Docker containers and WebAssembly (Wasm) images as tasks on data stored in InterPlanetary File System (IPFS).
+Some compute-over-data platforms provide public, transparent, and verifiable distributed computation, allowing users to run Docker containers and WebAssembly (Wasm) images as tasks on data stored in InterPlanetary File System (IPFS).
Filecoin is uniquely positioned to support large-scale off-chain computation because storage providers have compute resources, such as GPUs and CPUs, colocated with their data. This setup enables a new paradigm where computations occur directly on the data where it resides, reducing the need to move data to external compute nodes.
@@ -19,7 +19,7 @@ The Filecoin Virtual Machine (FVM) is a runtime environment for executing smart
The FVM is designed to support both native Filecoin actors written in languages that compile to Wasm and smart contracts from other runtimes, such as Solidity for the Ethereum Virtual Machine (EVM), Secure EcmaScript (SES), and eBPF. The [reference FVM](https://github.com/filecoin-project/ref-fvm) and SDK are written in Rust, ensuring high performance and security.
-Initially, the FVM supports smart contracts written in Solidity, with plans to expand to other languages that compile to Wasm, as outlined in the FVM roadmap.
+Initially, the FVM supports smart contracts written in Solidity, with plans to expand to other languages that compile to Wasm.
By enabling compute-over-states on the Filecoin network, the FVM unlocks a wide range of potential use cases. Examples include:
@@ -59,7 +59,7 @@ To facilitate on-chain token exchange, the FVM may support decentralized exchang
Although not an immediate focus, token bridges will eventually connect Filecoin to EVM, Move, and Cosmos chains, enabling cross-chain wrapped tokens. While Filecoin currently offers unique value without needing to bootstrap liquidity from other chains, long-term integration with other blockchains is anticipated.
-In addition to these, the FVM could support various other use cases, such as data access control ([Medusa](https://cryptonet.org/projects/project-medusa-scalable-threshold-network-on-chain)), trustless reputation systems, replication workers, storage bounties, and L2 networks. For more details on potential use cases, see our [Request for Startups](https://protocollabs.notion.site/Request-for-Startups-FVM-edition-8cd3e76982d14e29b33335ca458fb087) post.
+In addition to these, the FVM could support various other use cases, such as data access control, trustless reputation systems, replication workers, storage bounties, and L2 networks. For more details on potential use cases, see our [Request for Startups](https://protocollabs.notion.site/Request-for-Startups-FVM-edition-8cd3e76982d14e29b33335ca458fb087) post.
If you are interested in building these use cases, the following solution blueprints may be helpful:
@@ -81,4 +81,4 @@ The primary difference between FEVM and EVM contracts is that FEVM contracts can
For example FEVM contracts, see the available [example contracts here](https://github.com/lotus-web3/client-contract).
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/programming-on-filecoin)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/programming-on-filecoin)
diff --git a/basics/what-is-filecoin/retrieval-market.md b/getting-started/what-is-filecoin/retrieval-market.md
similarity index 96%
rename from basics/what-is-filecoin/retrieval-market.md
rename to getting-started/what-is-filecoin/retrieval-market.md
index 927190094..43d46ec20 100644
--- a/basics/what-is-filecoin/retrieval-market.md
+++ b/getting-started/what-is-filecoin/retrieval-market.md
@@ -19,4 +19,4 @@ To request data retrieval, clients need to provide the following information to
Since most Filecoin nodes are also IPFS nodes, standard practice has been for Filecoin storage providers to also make available a hot copy of any given stored file through IPFS. Since the algorithm that generates a content address (CID) is the same for both Filecoin and IPFS, the client can request the CID of a file they stored on Filecoin and retrieve it from IPFS, if there is an IPFS node that is able and willing to serve the file.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/retrieval-market)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/retrieval-market)
diff --git a/basics/what-is-filecoin/storage-market.md b/getting-started/what-is-filecoin/storage-market.md
similarity index 78%
rename from basics/what-is-filecoin/storage-market.md
rename to getting-started/what-is-filecoin/storage-market.md
index 88b223520..b0d7fcc41 100644
--- a/basics/what-is-filecoin/storage-market.md
+++ b/getting-started/what-is-filecoin/storage-market.md
@@ -32,11 +32,13 @@ These storage helpers provide libraries that abstract the Filecoin deal-making p
Available storage helpers include:
+- [Filecoin Onchain Cloud](../../build/filecoin-onchain-cloud/README.md): A programmable, on-chain storage platform with verifiable storage proofs (PDP) and automatic payments (Filecoin Pay), accessed through the Synapse SDK.
+- [Filecoin Pin](../../build/cookbook/filecoin-pin/getting-started.md): A CLI and API path for pinning IPFS-compatible content to Filecoin-backed storage with Filecoin Pay.
+- [fil.one](https://fil.one/): S3-compatible object storage backed by Filecoin, with flat per-terabyte pricing and no egress fees.
- [lighthouse.storage](https://www.lighthouse.storage/): An SDK for builders, providing tools for storing data from dApps.
-- [web3.storage](https://web3.storage/): A user-friendly client for accessing decentralized protocols like IPFS and UCAN.
- [Akave](https://www.akave.ai/): A modular L2 solution for decentralized data management, combining Filecoin storage with encryption and easy-to-use interfaces.
-- [Storacha](https://storacha.network/): A decentralized hot storage network for scalable, user-owned data with decentralized permissions, leveraging Filecoin.
+- [Pinata](https://pinata.cloud/): An IPFS pinning service for storing and serving files, media, and app data over IPFS.
- [Curio](https://curiostorage.org/): A next-gen platform within the Filecoin ecosystem, streamlining storage provider operations.
- [boost.filecoin.io](https://boost.filecoin.io/): A tool for storage providers to manage data onboarding and retrieval on the Filecoin network.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/storage-market)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/storage-market)
diff --git a/basics/what-is-filecoin/storage-model.md b/getting-started/what-is-filecoin/storage-model.md
similarity index 97%
rename from basics/what-is-filecoin/storage-model.md
rename to getting-started/what-is-filecoin/storage-model.md
index a25a78de9..198d8517d 100644
--- a/basics/what-is-filecoin/storage-model.md
+++ b/getting-started/what-is-filecoin/storage-model.md
@@ -36,4 +36,4 @@ The deal-making process initially occurs _off-chain_. Once both parties agree to
Sectors are the fundamental units of provable storage where storage providers securely store client data and generate PoSt (Proof of Spacetime) for the Filecoin network. Sectors come in standard sizes, typically `32 GiB` or `64 GiB`, and have a set lifespan that providers can extend before it expires.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/what-is-filecoin/storage-model)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/getting-started/what-is-filecoin/storage-model)
diff --git a/networks-and-tools/assets/README.md b/networks-and-tools/assets/README.md
new file mode 100644
index 000000000..8c91da060
--- /dev/null
+++ b/networks-and-tools/assets/README.md
@@ -0,0 +1,18 @@
+---
+description: >-
+ Manage FIL tokens, set up wallets, and transfer assets on the Filecoin network.
+---
+
+# Assets
+
+This section covers how to acquire, store, and transfer FIL tokens on the Filecoin network.
+
+## Table of contents
+
+* [The FIL token](the-fil-token.md) — the native cryptocurrency that powers the Filecoin network
+* [Wallets](wallets.md) — wallet options for securely holding and managing FIL
+* [Metamask setup](metamask-setup.md) — configure MetaMask to work with Filecoin
+* [Get FIL](get-fil.md) — how to purchase FIL through exchanges
+* [Transfer FIL](transfer-fil.md) — send FIL between different address types
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/assets)
diff --git a/basics/assets/get-fil.md b/networks-and-tools/assets/get-fil.md
similarity index 90%
rename from basics/assets/get-fil.md
rename to networks-and-tools/assets/get-fil.md
index 5f0546e65..19cd308b6 100644
--- a/basics/assets/get-fil.md
+++ b/networks-and-tools/assets/get-fil.md
@@ -30,7 +30,7 @@ Purchasing cryptocurrency varies from exchange to exchange, but the process is u
### Address compatibility
-Some exchanges allow users to fund and withdraw FIL using any of the [Filecoin address type](../../smart-contracts/filecoin-evm-runtime/address-types.md). However, some exchanges only support one or a handful of the available address types. Most exchanges do not currently support [f410 addresses](../the-blockchain/addresses.md).
+Some exchanges allow users to fund and withdraw FIL using any of the [Filecoin address type](../../core-concepts/filecoin-evm-runtime/address-types.md). However, some exchanges only support one or a handful of the available address types. Most exchanges do not currently support [f410 addresses](../../core-concepts/filecoin-virtual-machine/addresses.md).
If your exchange does not yet support Filecoin Eth-style 0x addresses, you must create a wallet to _relay_ the funds through. Take a look at the [Transfer FIL page](transfer-fil.md) for details on how to transfer your funds safely.
@@ -60,8 +60,8 @@ Using a Bitcoin ATM often comes with higher fees than online exchanges. Fees can
## Test FIL
-If you’re looking to get FIL to test your applications on a testnet like [Calibration](../../networks/calibration/), then check how to get test tokens! Test FIL is often referred to as `tFIL`.
+If you’re looking to get FIL to test your applications on a testnet like [Calibration](../networks/calibration/), then check how to get test tokens! Test FIL is often referred to as `tFIL`.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/assets/get-fil)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/assets/get-fil)
diff --git a/basics/assets/metamask-setup.md b/networks-and-tools/assets/metamask-setup.md
similarity index 93%
rename from basics/assets/metamask-setup.md
rename to networks-and-tools/assets/metamask-setup.md
index 99cbc5453..4fad75606 100644
--- a/basics/assets/metamask-setup.md
+++ b/networks-and-tools/assets/metamask-setup.md
@@ -77,7 +77,7 @@ The process for configuring MetaMask to use Filecoin is fairly simple but has so
{% endtab %}
{% tab title="Calibration" %}
-
{% endtab %}
{% tab title="Local testnet" %}
@@ -85,7 +85,7 @@ The process for configuring MetaMask to use Filecoin is fairly simple but has so
{% endtab %}
{% endtabs %}
-7. Pick one block explorer from the [Networks section](../../networks/mainnet/), and enter the URL into the **Block explorer (optional)** field.
+7. Pick one block explorer from the [Networks section](../networks/mainnet/), and enter the URL into the **Block explorer (optional)** field.
8. Review the values in the fields and click **Save**.
9. The Filecoin network should now be shown in your MetaMask window.
10. Done!
@@ -100,7 +100,7 @@ MetaMask is compatible with the Ledger hardware wallet. There are 2 options for
#### Note on Filecoin EVM vs Filecoin Native addresses
-Note that MetaMask supports Filecoin EVM addresses that follow the Ethereum `0x` format (see [this section](https://docs.filecoin.io/basics/assets/transfer-fil) for more info on address types). To use native Filecoin address types that begin with `f`, you can use:
+Note that MetaMask supports Filecoin EVM addresses that follow the Ethereum `0x` format (see [this section](./transfer-fil.md) for more info on address types). To use native Filecoin address types that begin with `f`, you can use:
- [Glif.io](https://glif.io/en/wallet) wallet (also compatible with the Filecoin Ledger App),
- Ledger Live and the Filecoin Ledger App or
- [Filecoin MetaMask Wallet](https://snaps.metamask.io/snap/npm/filsnap/) installable from the right menu in Metamask under *Snaps*
@@ -158,4 +158,4 @@ You may see a _blind signing_ warning on your MetaMask device. This is expected,
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/assets/metamask-setup)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/assets/metamask-setup)
diff --git a/basics/assets/the-fil-token.md b/networks-and-tools/assets/the-fil-token.md
similarity index 98%
rename from basics/assets/the-fil-token.md
rename to networks-and-tools/assets/the-fil-token.md
index 855f7fb90..c25e47571 100644
--- a/basics/assets/the-fil-token.md
+++ b/networks-and-tools/assets/the-fil-token.md
@@ -43,4 +43,4 @@ Much like how a US penny represents a fraction of a US dollar, there are many wa
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/assets/the-fil-token)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/assets/the-fil-token)
diff --git a/basics/assets/transfer-fil.md b/networks-and-tools/assets/transfer-fil.md
similarity index 86%
rename from basics/assets/transfer-fil.md
rename to networks-and-tools/assets/transfer-fil.md
index 4a43ff656..920c5ef0d 100644
--- a/basics/assets/transfer-fil.md
+++ b/networks-and-tools/assets/transfer-fil.md
@@ -13,16 +13,16 @@ There are four paths for transferring FIL tokens across the Filecoin network, de
| | From an `0x` address | From a `f` address |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **To an `0x` address** | [`0x` => `0x` address](https://docs.filecoin.io/basics/assets/transfer-fil/#eth-style-address-to-eth-style-address) | [`f` =>`0x` address](https://docs.filecoin.io/basics/assets/transfer-fil/#filecoin-to-eth-style-address) |
-| **To a `f` address** | [`0x` => `f` address](https://docs.filecoin.io/basics/assets/transfer-fil/#eth-style-address-to-filecoin) | [`f` => `f` address](https://docs.filecoin.io/basics/assets/transfer-fil/#filecoin-to-filecoin) |
+| **To an `0x` address** | [`0x` => `0x` address](#eth-style-address-to-eth-style-address) | [`f` =>`0x` address](#filecoin-to-eth-style-address) |
+| **To a `f` address** | [`0x` => `f` address](#eth-style-address-to-filecoin) | [`f` => `f` address](#filecoin-to-filecoin) |
{% hint style="warning" %}
**ASSETS ON THE FILECOIN NETWORK ARE NOT AVAILABLE ON ANY OTHER NETWORK**\
\
-Remember that Filecoin is fully compatible with Ethereum tools, like wallets. But that doesn’t mean you’re using the Ethereum network. These instructions transfer assets only within the Filecoin network. [Learn how to configure your Ethereum wallet on the Filecoin network](https://docs.filecoin.io/basics/assets/metamask-setup/).
+Remember that Filecoin is fully compatible with Ethereum tools, like wallets. But that doesn’t mean you’re using the Ethereum network. These instructions transfer assets only within the Filecoin network. [Learn how to configure your Ethereum wallet on the Filecoin network](./metamask-setup.md).
{% endhint %}
-## 0x => 0x address
+## 0x => 0x address
If you want to transfer FIL tokens from one `f4` address to another `f4` address using their corresponding `0x` addresses, you need to understand how to convert between `f4` and `0x` addresses.
@@ -31,11 +31,11 @@ If you want to transfer FIL tokens from one `f4` address to another `f4` address
Apart from that, you just need to follow the standard process using your preferred Ethereum-compatible wallet, like MetaMask, MethWallet, etc. For instance, [MetaMask has a simple guide](https://support.metamask.io/manage-crypto/move-crypto/send/how-to-send-tokens-from-your-metamask-wallet/) for how to send Ethereum from one account to another.
-## 0x => f address
+## 0x => f address
-If you want to transfer FIL tokens from an Ethereum style `0x` address to another Filecoin address type, like an `f1` or `f3` address, follow the steps in [FilForwarder](../../smart-contracts/filecoin-evm-runtime/filforwarder.md) tutorial.
+If you want to transfer FIL tokens from an Ethereum style `0x` address to another Filecoin address type, like an `f1` or `f3` address, follow the steps in [FilForwarder](../../core-concepts/filecoin-evm-runtime/filforwarder.md) tutorial.
-## f => 0x address
+## f => 0x address
Most wallets and exchanges currently support Filecoin `f1` or `f3` addresses, and many of them already fully support `f4` and `0x` addresses, including [OKX](https://www.okx.com/price/filecoin-fil), [Kraken](https://www.kraken.com/), [Btcturk](https://www.btcturk.com/), etc. But there are some exchanges that are still implementing the support for `f4` addresses. If your preferred wallets and exchanges don’t let you directly transfer FIL to an `f4` or Ethereum-style `0x` address, We recommend filing a support issue with the exchange to help accelerate the support of `f4` addresses.
@@ -43,7 +43,7 @@ The process for sending FIL from a Filecoin `f` address to an Ethereum-style `0x
### Ledger device
-Ledger Live supports sending to a Filecoin `f4` address, which has an automatic `0x` equivalent that you can look up on any [block explorer](../../networks/mainnet/explorers.md). This allows you to directly transfer your FIL to an Ethereum-style `0x` address using its `f4` equivalent.
+Ledger Live supports sending to a Filecoin `f4` address, which has an automatic `0x` equivalent that you can look up on any [block explorer](../networks/mainnet/explorers.md). This allows you to directly transfer your FIL to an Ethereum-style `0x` address using its `f4` equivalent.
{% hint style="warning" %}
Sending directly to a `0x` address does not work in Ledger Live. You must use the `f4` equivalent.
@@ -85,8 +85,8 @@ If you want to transfer your FIL tokens from the `f1\f3` to the `0x` address, bu
If you are transferring FIL from any exchange to your `0x` address on MetaMask, make sure the exchange supports withdrawing FIL to the `0x` or `f410` address. If not, you will need extra steps to withdraw FIL to your `0x` address. Let’s take Coinbase as an example; you can follow this [Guide: How to transfer FIL from Coinbase to a Metamask Wallet (0x)](https://filecointldr.io/article/guide-how-to-transfer-fil-from-coinbase-to-a-metamask-wallet-0x).
-## f to f address
+## f to f address
There are no special steps or requirements for sending Filecoin from one Filecoin-style address to another on the Filecoin network.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/basics/assets/transfer-fil)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/networks-and-tools/assets/transfer-fil)
diff --git a/basics/assets/wallets.md b/networks-and-tools/assets/wallets.md
similarity index 99%
rename from basics/assets/wallets.md
rename to networks-and-tools/assets/wallets.md
index 14102ca85..547861214 100644
--- a/basics/assets/wallets.md
+++ b/networks-and-tools/assets/wallets.md
@@ -54,4 +54,4 @@ If you know of a wallet that supports Filecoin, you can submit a pull request to
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/basics/assets/wallets)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/assets/wallets)
diff --git a/networks-and-tools/networks/README.md b/networks-and-tools/networks/README.md
new file mode 100644
index 000000000..b80e7b5c4
--- /dev/null
+++ b/networks-and-tools/networks/README.md
@@ -0,0 +1,15 @@
+---
+description: >-
+ Available Filecoin networks for production, testing, and local development.
+---
+
+# Networks
+
+Filecoin operates several networks for different purposes. Use Mainnet for production, Calibration for testing, or spin up a local testnet for development.
+
+## Table of contents
+
+* [Mainnet](mainnet/README.md) — the production Filecoin network with real FIL and storage deals
+* [Calibration](calibration/README.md) — the primary testnet that mirrors Mainnet parameters
+* [Local testnet](local-testnet/README.md) — a private network for local development and experimentation
+* [Legacy networks](legacy-networks/README.md) — deprecated networks that are no longer active
diff --git a/networks/calibration/README.md b/networks-and-tools/networks/calibration/README.md
similarity index 97%
rename from networks/calibration/README.md
rename to networks-and-tools/networks/calibration/README.md
index 90c694c11..b26cf7dbb 100644
--- a/networks/calibration/README.md
+++ b/networks-and-tools/networks/calibration/README.md
@@ -104,7 +104,7 @@ The following storage providers are running on the Calibration testnet.
* [Calibration Faucet - Zondax](https://beryx.zondax.ch/faucet/)
* [Calibration Faucet - Forest Explorer](https://forest-explorer.chainsafe.dev/faucet/calibnet)
* [Calibration USDFC Faucet - Chainsafe](https://forest-explorer.chainsafe.dev/faucet/calibnet_usdfc)
-* [DataCap allocation](https://faucet.calibnet.chainsafe-fil.io)
+* [DataCap allocation](https://faucet.calibnet.chainsafe-fil.io/datacap.html)
* [Slack Channel for Updates: #fil-network-announcements](https://filecoinproject.slack.com/archives/C01AC6999KQ)
* [Slack Channel for Questions: #fil-help](https://filecoinproject.slack.com/archives/CEGN061C5)
* [Latest lightweight snapshot](https://forest-archive.chainsafe.dev/latest/calibnet/) generated with [Forest](http://github.com/ChainSafe/forest) by [ChainSafe](https://chainsafe.io/)
@@ -112,4 +112,4 @@ The following storage providers are running on the Calibration testnet.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/calibration)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/calibration)
diff --git a/networks/calibration/explorers.md b/networks-and-tools/networks/calibration/explorers.md
similarity index 90%
rename from networks/calibration/explorers.md
rename to networks-and-tools/networks/calibration/explorers.md
index 2f2e050a3..89017a055 100644
--- a/networks/calibration/explorers.md
+++ b/networks-and-tools/networks/calibration/explorers.md
@@ -26,4 +26,4 @@ https://filecoin-testnet.blockscout.com
https://fvm.starboard.ventures/
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/calibration/explorers)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/calibration/explorers)
diff --git a/networks/calibration/rpcs.md b/networks-and-tools/networks/calibration/rpcs.md
similarity index 75%
rename from networks/calibration/rpcs.md
rename to networks-and-tools/networks/calibration/rpcs.md
index 066276a3c..752cee934 100644
--- a/networks/calibration/rpcs.md
+++ b/networks-and-tools/networks/calibration/rpcs.md
@@ -8,19 +8,14 @@ description: Public RPC endpoints are available for the Calibration testnet.
[Chainlist](https://chainlist.org/?search=filecoin\&testnets=true) contains a dynamically updated list of available Filecoin RPCs. Select **Include Testnets** to view available test networks. [Find out more at chainlist.org's Filecoin listings](https://chainlist.org/?search=filecoin\&testnets=true).
{% endhint %}
-These endpoints are limited to [read-only Filecoin JSON RPC API calls](../../reference/json-rpc/) and [`MPoolPush`](../../reference/json-rpc/mpool.md) for sending messages that have already been signed.
+These endpoints are limited to [read-only Filecoin JSON RPC API calls](../../../reference/json-rpc/) and [`MPoolPush`](../../../reference/json-rpc/mpool.md) for sending messages that have already been signed.
## [Ankr](https://www.ankr.com/rpc/filecoin)
* HTTPS: `https://rpc.ankr.com/filecoin_testnet`
* [Ankr documentation](https://www.ankr.com/docs/rpc-service/chains/chains-list/#filecoin)
-## [ChainupCloud](https://cloud.chainup.com)
-
-* HTTPS: `https://filecoin-calibration.chainup.net/rpc/v1`
-* [ChainupCloud documentation](https://docs.chainupcloud.com/blockchain-api/filecoin/public-apis)
-
-## [Glif](https://api.calibration.node.glif.io)
+## [Glif](https://hosting.glif.io/)
Please note that publicly available hosted endpoints **only guarantee 2000 of the latest blocks.**
@@ -36,4 +31,4 @@ FULLNODE_API_INFO=wss://wss.calibration.node.glif.io/apigw/lotus lotus daemon --
* [Glif documentation](https://hosting.glif.io/)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/calibration/rpcs)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/calibration/rpcs)
diff --git a/networks/deprecated-networks/README.md b/networks-and-tools/networks/legacy-networks/README.md
similarity index 51%
rename from networks/deprecated-networks/README.md
rename to networks-and-tools/networks/legacy-networks/README.md
index 7e0849215..f57671f2f 100644
--- a/networks/deprecated-networks/README.md
+++ b/networks-and-tools/networks/legacy-networks/README.md
@@ -1,19 +1,23 @@
-# Deprecated networks
+# Legacy networks
-The following networks have been deprecated:
+{% hint style="danger" %}
+**LEGACY — DO NOT USE**
+
+These networks are no longer active and may be unavailable. For testing and development, use the [Calibration testnet](../calibration/README.md) or a [local testnet](../local-testnet/README.md).
+{% endhint %}
+
+The following networks are no longer operational:
## Nerpanet
-The Nerpa test network, often called _Nerpanet_, was designed with tiny sector sizes. This network was for application developers to test the very basic functionality of their applications before moving over to the calibration test network. It was deprecated on 2021-08-16.
+The Nerpa test network, often called _Nerpanet_, was designed with tiny sector sizes. This network was for application developers to test the very basic functionality of their applications before moving over to the calibration test network. It was retired on 2021-08-16.
## Spacenet
-The Spacenet test network was created for the Interplanetary Consensus (IPC) project. This network was deprecated on 2023-09-11.
+The Spacenet test network was created for the Interplanetary Consensus (IPC) project. This network was retired on 2023-09-11.
## Wallaby
-The Wallaby test network, often just called _Wallaby_, was designed for internal Filecoin developers to test new features before rolling them out to the Hyperspace testnet, and then onto Mainnet. Wallaby was designed to be reset every week. It was deprecated on 2023-02-07.
-
-
+The Wallaby test network, often just called _Wallaby_, was designed for internal Filecoin developers to test new features before rolling them out to the Hyperspace testnet, and then onto Mainnet. Wallaby was designed to be reset every week. It was retired on 2023-02-07.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/deprecated-networks)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/legacy-networks)
diff --git a/networks/local-testnet/README.md b/networks-and-tools/networks/local-testnet/README.md
similarity index 97%
rename from networks/local-testnet/README.md
rename to networks-and-tools/networks/local-testnet/README.md
index 7fbdf6617..237749fb8 100644
--- a/networks/local-testnet/README.md
+++ b/networks-and-tools/networks/local-testnet/README.md
@@ -95,7 +95,7 @@ curl https://sh.rustup.rs -sSf | sh -s -- -y
source "$HOME/.cargo/env"
```
-5. Done! You can move on to the [Pre-build](https://docs.filecoin.io/networks/local-testnet/set-up/#pre-build) section.
+5. Done! You can move on to the [Pre-build](#pre-build) section.
{% endtab %}
{% endtabs %}
@@ -116,7 +116,7 @@ Before we can build the Lotus binaries, there’s some setup we need to do. We
```shell
git checkout releases
```
-3. Done! You can move on to the [Build](https://docs.filecoin.io/networks/local-testnet/set-up/#build) section.
+3. Done! You can move on to the [Build](#build) section.
{% endtab %}
{% tab title="MacOS ARM" %}
@@ -138,7 +138,7 @@ Before we can build the Lotus binaries, there’s some setup we need to do. We
export FFI_BUILD_FROM_SOURCE=1
export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"
```
-4. Done! You can move on to the [Build](https://docs.filecoin.io/networks/local-testnet/set-up/#build) section.
+4. Done! You can move on to the [Build](#build) section.
{% endtab %}
{% tab title="Ubuntu" %}
@@ -161,8 +161,8 @@ Before we can build the Lotus binaries, there’s some setup we need to do. We
```
\
- If in doubt, ignore this command and move on to [the next section](https://docs.filecoin.io/networks/local-testnet/set-up/#build).
-4. Done! You can move on to the [Build](https://docs.filecoin.io/networks/local-testnet/set-up/#build) section.
+ If in doubt, ignore this command and move on to [the next section](#build).
+4. Done! You can move on to the [Build](#build) section.
{% endtab %}
{% endtabs %}
@@ -568,4 +568,4 @@ If you receive this error when trying to call your Lotus daemon, either your `lo
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/local-testnet)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/local-testnet)
diff --git a/networks/local-testnet/get-test-tokens.md b/networks-and-tools/networks/local-testnet/get-test-tokens.md
similarity index 91%
rename from networks/local-testnet/get-test-tokens.md
rename to networks-and-tools/networks/local-testnet/get-test-tokens.md
index 47da6f7cd..3062c1203 100644
--- a/networks/local-testnet/get-test-tokens.md
+++ b/networks-and-tools/networks/local-testnet/get-test-tokens.md
@@ -67,8 +67,8 @@ Before we begin, you must have a local testnet running. Follow the [Run a local
2000 FIL
```
-If you want to manage your local testnet tokens in MetaMask you will need to create a `t4` address. You can create a `t4` address using `lotus wallet new deleated`. Once you have a `t4` address you can connect MetaMask to your local testnet to see the new balance within the MetaMask extension.
+If you want to manage your local testnet tokens in MetaMask you will need to create a `t4` address. You can create a `t4` address using `lotus wallet new delegated`. Once you have a `t4` address you can connect MetaMask to your local testnet to see the new balance within the MetaMask extension.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/local-testnet/get-test-tokens)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/local-testnet/get-test-tokens)
diff --git a/networks/mainnet/README.md b/networks-and-tools/networks/mainnet/README.md
similarity index 98%
rename from networks/mainnet/README.md
rename to networks-and-tools/networks/mainnet/README.md
index fb57ae959..19d05e774 100644
--- a/networks/mainnet/README.md
+++ b/networks-and-tools/networks/mainnet/README.md
@@ -50,4 +50,4 @@ The latest Lotus release can be found at https://github.com/filecoin-project/lot
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/mainnet)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/mainnet)
diff --git a/networks/mainnet/explorers.md b/networks-and-tools/networks/mainnet/explorers.md
similarity index 97%
rename from networks/mainnet/explorers.md
rename to networks-and-tools/networks/mainnet/explorers.md
index ded8988ec..98efc3ff9 100644
--- a/networks/mainnet/explorers.md
+++ b/networks-and-tools/networks/mainnet/explorers.md
@@ -74,4 +74,4 @@ curl --location --request POST 'https://api.node.glif.io/rpc/v1' \
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/mainnet/explorers)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/mainnet/explorers)
diff --git a/networks/mainnet/network-performance.md b/networks-and-tools/networks/mainnet/network-performance.md
similarity index 98%
rename from networks/mainnet/network-performance.md
rename to networks-and-tools/networks/mainnet/network-performance.md
index 33cc097d2..4da4f1c94 100644
--- a/networks/mainnet/network-performance.md
+++ b/networks-and-tools/networks/mainnet/network-performance.md
@@ -42,4 +42,4 @@ Because of the various steps involved in the data retrieval process, Filecoin st
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks/mainnet/network-performance)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/mainnet/network-performance)
diff --git a/networks-and-tools/networks/mainnet/rpcs.md b/networks-and-tools/networks/mainnet/rpcs.md
new file mode 100644
index 000000000..0186db935
--- /dev/null
+++ b/networks-and-tools/networks/mainnet/rpcs.md
@@ -0,0 +1,40 @@
+---
+description: Public RPC endpoints are available for the Filecoin mainnet.
+---
+
+# RPCs
+
+[Chainlist](https://chainlist.org/?search=filecoin\&testnets=true) provides a dynamically updated list of [available Filecoin - Mainnet RPCs](https://chainlist.org/?search=filecoin\&testnets=false).
+
+These endpoints are limited to the read-only [Filecoin JSON RPC API](../../../reference/json-rpc/) including read-only [Filecoin Eth RPC](../../../reference/json-rpc/eth.md) methods, except for the write operations [`MPoolPush`](../../../reference/json-rpc/mpool.md#mpoolpush) and [`EthSendRawTransaction`](../../../reference/json-rpc/eth.md#ethsendrawtransaction) for sending already signed messages.
+
+{% hint style="info" %}
+Please note that most publicly hosted endpoints **only guarantee recent state, i.e. 2000 of the latest blocks (last 16.67 hours).** To request an archival node you can contact a provider below.
+{% endhint %}
+
+In order to check the current benchmarked performance of each of the below endpoints, please see the [Filecoin ETH RPC Benchmark app](https://benchmark-rpc.vercel.app/).
+
+| Provider | HTTPS endpoint | WSS endpoint | Docs | API Support |
+| ------------------------------------------- | ------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
+| [Glif Nodes](https://api.node.glif.io/) | `https://api.node.glif.io/rpc/v1` | `wss://wss.node.glif.io/apigw/lotus/rpc/v1` | [Glif Nodes - Docs](https://api.node.glif.io/) | All Filecoin and Eth JSON RPC methods including MPoolPush |
+| [Ankr](https://ankr.com/) | `https://rpc.ankr.com/filecoin` | By request at: https://www.ankr.com/rpc/filecoin | [Ankr Docs - Filecoin](https://www.ankr.com/docs/rpc-service/chains/chains-list/#filecoin) | All Filecoin and Eth JSON RPC methods including MPoolPush |
+| [Chainup Cloud](https://cloud.chainup.com/) | `https://filecoin.chainup.net/rpc/v1` | `wss://filecoin.chainup.net/rpc/v1` | [Chainup Cloud Docs - Filecoin](https://docs.chainupcloud.com/blockchain-api/filecoin/public-apis) | |
+| [Lava](https://www.lavanet.xyz/) | `https://filecoin.lava.build` | | [Lava - Docs](https://docs.lavanet.xyz/iprpc#filecoin) | All Filecoin and Eth JSON RPC methods including MPoolPush |
+| [NOWNodes](https://nownodes.io/) | `https://fil.nownodes.io` | | [NOWNodes - Docs](https://nownodes.gitbook.io/documentation) | Requires an API key |
+
+
+## Additional Notes:
+
+* Glif Nodes offers a [Lotus Lite node](../../../storage-providers/nodes/lite-nodes/spin-up-a-lite-node.md) endpoint with the following command:
+
+ ```shell
+ FULLNODE_API_INFO=wss://wss.node.glif.io/apigw/lotus lotus daemon --lite
+ ```
+
+ When using a Lotus Lite node, omit `/rpc/v1` from Glif’s WebSocket address.
+
+ A Lotus Lite node is a stripped down version of a Lotus full-node capable of running on lower-end hardware. It also allows for local signing for storage deals without a full Lotus node.
+
+
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/networks-and-tools/networks/mainnet/rpcs)
diff --git a/networks/mainnet/rpcs.md b/networks/mainnet/rpcs.md
deleted file mode 100644
index 77ad246ba..000000000
--- a/networks/mainnet/rpcs.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-description: Public RPC endpoints are available for the Filecoin mainnet.
----
-
-# RPCs
-
-[Chainlist](https://chainlist.org/?search=filecoin\&testnets=true) provides a dynamically updated list of [available Filecoin - Mainnet RPCs](https://chainlist.org/?search=filecoin\&testnets=false).
-
-These endpoints are limited to the read-only [Filecoin JSON RPC API](../../reference/json-rpc/) including read-only [Filecoin Eth RPC](../../reference/json-rpc/eth.md) methods, except for the write operations [`MPoolPush`](../../reference/json-rpc/mpool.md#mpoolpush) and [`EthSendRawTransaction`](../../reference/json-rpc/eth.md#ethsendrawtransaction) for sending already signed messages.
-
-{% hint style="info" %}
-Please note that most publicly hosted endpoints **only guarantee recent state, i.e. 2000 of the latest blocks (last 16.67 hours).** To request an archival node you can contact a provider below.
-{% endhint %}
-
-In order to check the current benchmarked performance of each of the below endpoints, please see the [Filecoin ETH RPC Benchmark app](https://benchmark-rpc.vercel.app/).
-
-| Provider | HTTPS endpoint | WSS endpoint | Docs | API Support |
-| ------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
-| [Glif Nodes](https://api.node.glif.io/) | `https://api.node.glif.io/rpc/v1` | `wss://wss.node.glif.io/apigw/lotus/rpc/v1` | [Glif Nodes - Docs](https://api.node.glif.io/) | All Filecoin and Eth JSON RPC methods including MPoolPush |
-| [Ankr](https://ankr.com/) | `https://rpc.ankr.com/filecoin` | By request at: https://www.ankr.com/rpc/filecoin | [Ankr Docs - Filecoin](https://www.ankr.com/docs/rpc-service/chains/chains-list/#filecoin) | All Filecoin and Eth JSON RPC methods including MPoolPush |
-| [Chainup Cloud](https://cloud.chainup.com/) | `https://filecoin.chainup.net/rpc/v1` | `wss://filecoin.chainup.net/rpc/v1` | [Chainup Cloud Docs - Filecoin](https://docs.chainupcloud.com/blockchain-api/filecoin/public-apis) | |
-| [NOWNodes](https://nownodes.io/) | `https://fil.nownodes.io` (Free for 1 month with signup) | | [NOWNodes - Docs](https://nownodes.gitbook.io/documentation) | |
-| [Lava](https://www.lavanet.xyz/) | `https://filecoin.lava.build` | | [Lava - Docs](https://docs.lavanet.xyz/iprpc#filecoin) | All Filecoin and Eth JSON RPC methods including MPoolPush |
-
-
-## Additional Notes:
-
-* Glif Nodes offers a [Lotus Lite node](https://docs.filecoin.io/nodes/lite-nodes/spin-up-a-lite-node) endpoint with the following command:
-
- ```shell
- FULLNODE_API_INFO=wss://wss.node.glif.io/apigw/lotus lotus daemon --lite
- ```
-
- When using a Lotus Lite node, omit `/rpc/v1` from Glif’s WebSocket address.
-
- A Lotus Lite node is a stripped down version of a Lotus full-node capable of running on lower-end hardware. It also allows for local signing for storage deals without a full Lotus node.
-
-
-
-[Was this page helpful?](https://docs.filecoin.io/networks/mainnet/rpcs)
diff --git a/networks/networks.md b/networks/networks.md
deleted file mode 100644
index 9fafe0f22..000000000
--- a/networks/networks.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Networks
-
diff --git a/nodes/nodes.md b/nodes/nodes.md
deleted file mode 100644
index 7ab634452..000000000
--- a/nodes/nodes.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Nodes
-
diff --git a/package.json b/package.json
index 828ab8339..4615e9d7e 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
"build": "honkit build",
"preview": "npx serve _book -p 4000",
"test": "echo \"Error: no test specified\" && exit 1",
+ "check:rpcs": "node scripts/check-rpc-endpoints.mjs",
"update-versions": "node update-versions.js"
},
"repository": {
diff --git a/reference/built-in-actors/README.md b/reference/built-in-actors/README.md
index 4bf587f27..24be80124 100644
--- a/reference/built-in-actors/README.md
+++ b/reference/built-in-actors/README.md
@@ -11,11 +11,11 @@ Built-in actors are how the Filecoin network manages and updates _global state_.
A basic example of how built-in actors are used in Filecoin is the process by which storage providers prove storage and are subsequently rewarded. The process is as follows:
-1. The [`StorageMinerActor`](https://docs.filecoin.io/reference/built-in-actors/overview/#storagemineractor) processes proof of storage from a storage provider.
+1. The [`StorageMinerActor`](#storagemineractor) processes proof of storage from a storage provider.
2. The storage provider is awarded storage power based on whether the proof is valid or not.
-3. The [`StoragePowerActor`](https://docs.filecoin.io/reference/built-in-actors/overview/#storagepoweractor) accounts for the storage power.
+3. The [`StoragePowerActor`](#storagepoweractor) accounts for the storage power.
4. During block validation, the `StoragePowerActor`’s state, which includes information on storage power allocated to each storage provider, is read.
-5. Using the state information, the consensus mechanism randomly awards blocks to the storage providers with the most power, and the [`RewardActor`](https://docs.filecoin.io/reference/built-in-actors/overview/#rewardactor) sends FIL to storage providers.
+5. Using the state information, the consensus mechanism randomly awards blocks to the storage providers with the most power, and the [`RewardActor`](#rewardactor) sends FIL to storage providers.
## Blocks
@@ -50,17 +50,17 @@ The code that defines an actor in the Filecoin network is separated into differe
The 11 different types of built-in actors are as follows:
-* [CronActor](https://docs.filecoin.io/reference/built-in-actors/overview/#cronactor)
-* [InitActor](https://docs.filecoin.io/reference/built-in-actors/overview/#initactor)
-* [AccountActor](https://docs.filecoin.io/reference/built-in-actors/overview/#accountactor)
-* [RewardActor](https://docs.filecoin.io/reference/built-in-actors/overview/#rewardactor)
-* [StorageMarketActor](https://docs.filecoin.io/reference/built-in-actors/overview/#storagemarketactor)
-* [StorageMinerActor](https://docs.filecoin.io/reference/built-in-actors/overview/#storagemineractor)
-* [MultisigActor](https://docs.filecoin.io/reference/built-in-actors/overview/#multisigactor)
-* [PaymentChannelActor](https://docs.filecoin.io/reference/built-in-actors/overview/#paymentchannelactor)
-* [StoragePowerActor](https://docs.filecoin.io/reference/built-in-actors/overview/#storagepoweractor)
-* [VerifiedRegistryActor](https://docs.filecoin.io/reference/built-in-actors/overview/#verifiedregistryactor)
-* [SystemActor](https://docs.filecoin.io/reference/built-in-actors/overview/#systemactor)
+* [CronActor](#cronactor)
+* [InitActor](#initactor)
+* [AccountActor](#accountactor)
+* [RewardActor](#rewardactor)
+* [StorageMarketActor](#storagemarketactor)
+* [StorageMinerActor](#storagemineractor)
+* [MultisigActor](#multisigactor)
+* [PaymentChannelActor](#paymentchannelactor)
+* [StoragePowerActor](#storagepoweractor)
+* [VerifiedRegistryActor](#verifiedregistryactor)
+* [SystemActor](#systemactor)
### CronActor
@@ -118,7 +118,7 @@ For more information on `SystemActor`, see the [source code](https://github.com/
* _Protocol API_, maintained by [Protocol Labs](https://protocol.ai/), …
* _Filecoin.solidity_, maintained by [Protocol Labs](https://protocol.ai/), is a set of libraries that allows Solidity smart contracts to seamlessly call built-in actors methods. **Not all built-in actors and methods are supported** - for a complete list, see the [actors and methods supported](filecoin.sol.md).
-For information on how invoke and access built-in actors in your smart contracts, see the [developers guide](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors/).
+For information on how invoke and access built-in actors in your smart contracts, see the [developers guide](../../build/developing-contracts/call-built-in-actors.md).
diff --git a/reference/built-in-actors/filecoin.sol.md b/reference/built-in-actors/filecoin.sol.md
index 8bc3e3489..52c7bdbe6 100644
--- a/reference/built-in-actors/filecoin.sol.md
+++ b/reference/built-in-actors/filecoin.sol.md
@@ -8,13 +8,17 @@ For conceptual information on built-in actors, including their purposes, how the
## Prerequisites
-Before you can call a built-in actor using the API, you must [import filecoin.solidity using one of the available methods](../../smart-contracts/developing-contracts/#call-built-in-actors/#using-filecoinsolidity).
+Before you can call a built-in actor using the API, you must [import Filecoin.sol using one of the available methods](../../build/developing-contracts/call-built-in-actors.md#import-filecoinsol).
+
+## Works on
+
+Filecoin.sol is for contracts deployed to Filecoin EVM networks that expose Filecoin built-in actor precompiles. Use the current `filecoin-solidity-api` package on Filecoin mainnet or Calibration testnet, and use the same API surface when testing against a local Filecoin EVM-compatible network.
## Call a built-in actor
-For available actors and methods see [Available actors and methods](../../smart-contracts/developing-contracts/#call-built-in-actors/#available-actors-and-methods).
+For available actors and methods see [Available actors and methods](../../build/developing-contracts/call-built-in-actors.md#available-actors-and-methods).
-Once you’ve either imported particular contracts manually or simply installed `filecoin-solidity` using `npm`, create a callable method to access the built-in actor methods the way you normally would in a Solidity smart contract. Working examples of smart contracts that call built-in actor methods are available below.
+Once you’ve either imported particular contracts manually or installed `filecoin-solidity-api` using `npm`, create a callable method to access the built-in actor methods the way you normally would in a Solidity smart contract. Working examples of smart contracts that call built-in actor methods are available below.
* [Account](filecoin.sol.md#call-the-account-actor)
* [DataCap](filecoin.sol.md#call-the-datacap-actor)
@@ -30,20 +34,23 @@ For conceptual information on built-in actors, including their purposes, how the
The following example imports the Account actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-account-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/account.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../types/AccountTypes.sol";
import "../types/CommonTypes.sol";
import "../AccountAPI.sol";
-import "../Utils.sol";
+import "../utils/UtilsHandlers.sol";
+import "../utils/Errors.sol";
contract AccountApiTest {
- function authenticate_message(CommonTypes.FilActorId target, AccountTypes.AuthenticateMessageParams memory params) public {
- AccountAPI.authenticateMessage(target, params);
+ function authenticate_message(CommonTypes.FilActorId target, AccountTypes.AuthenticateMessageParams memory params) public view {
+ int256 exit_code = AccountAPI.authenticateMessage(target, params);
+ Errors.revertOnError(exit_code);
}
function universal_receiver_hook(CommonTypes.FilActorId target, CommonTypes.UniversalReceiverParams memory params) public {
- Utils.universalReceiverHook(target, params);
+ (int256 exit_code, ) = UtilsHandlers.universalReceiverHook(target, params);
+ Errors.revertOnError(exit_code);
}
}
```
@@ -53,211 +60,290 @@ contract AccountApiTest {
The following example imports the DataCap actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-datacap-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/datacap.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../types/DataCapTypes.sol";
import "../types/CommonTypes.sol";
import "../cbor/BigIntCbor.sol";
import "../DataCapAPI.sol";
-import "../Utils.sol";
+import "../utils/UtilsHandlers.sol";
+import "../utils/Errors.sol";
contract DataCapApiTest {
- function name() public returns (string memory) {
- return DataCapAPI.name();
+ function name() public view returns (string memory) {
+ (int256 exit_code, string memory result) = DataCapAPI.name();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function symbol() public returns (string memory) {
- return DataCapAPI.symbol();
+ function symbol() public view returns (string memory) {
+ (int256 exit_code, string memory result) = DataCapAPI.symbol();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function total_supply() public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.totalSupply();
+ function total_supply() public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.totalSupply();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function balance(CommonTypes.FilAddress memory addr) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.balance(addr);
+ function balance(CommonTypes.FilAddress memory addr) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.balance(addr);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function allowance(DataCapTypes.GetAllowanceParams memory params) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.allowance(params);
+ function allowance(DataCapTypes.GetAllowanceParams memory params) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.allowance(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function transfer(DataCapTypes.TransferParams memory params) public returns (DataCapTypes.TransferReturn memory) {
- return DataCapAPI.transfer(params);
+ (int256 exit_code, DataCapTypes.TransferReturn memory result) = DataCapAPI.transfer(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function transfer_from(DataCapTypes.TransferFromParams memory params) public returns (DataCapTypes.TransferFromReturn memory) {
- return DataCapAPI.transferFrom(params);
+ (int256 exit_code, DataCapTypes.TransferFromReturn memory result) = DataCapAPI.transferFrom(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function increase_allowance(DataCapTypes.IncreaseAllowanceParams memory params) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.increaseAllowance(params);
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.increaseAllowance(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function decrease_allowance(DataCapTypes.DecreaseAllowanceParams memory params) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.decreaseAllowance(params);
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.decreaseAllowance(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function revoke_allowance(CommonTypes.FilAddress memory operator) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.revokeAllowance(operator);
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.revokeAllowance(operator);
+ Errors.revertOnError(exit_code);
+ return result;
}
function burn(CommonTypes.BigInt memory amount) public returns (CommonTypes.BigInt memory) {
- return DataCapAPI.burn(amount);
+ (int256 exit_code, CommonTypes.BigInt memory result) = DataCapAPI.burn(amount);
+ Errors.revertOnError(exit_code);
+ return result;
}
function burn_from(DataCapTypes.BurnFromParams memory params) public returns (DataCapTypes.BurnFromReturn memory) {
- return DataCapAPI.burnFrom(params);
+ (int256 exit_code, DataCapTypes.BurnFromReturn memory result) = DataCapAPI.burnFrom(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function handle_filecoin_method(uint64 method, uint64 codec, bytes calldata params) public pure {
- Utils.handleFilecoinMethod(method, codec, params);
+ UtilsHandlers.handleFilecoinMethod(method, codec, params);
}
}
```
### Call the storage market actor
-The following example imports the Storage market actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-storage-market-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/miner.test.sol).
+The following example imports the Storage market actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-storage-market-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/market.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../MarketAPI.sol";
import "../types/MarketTypes.sol";
+import "../utils/Errors.sol";
contract MarketApiTest {
function add_balance(CommonTypes.FilAddress memory providerOrClient, uint256 value) public payable {
- MarketAPI.addBalance(providerOrClient, value);
+ (int256 exit_code, ) = MarketAPI.addBalance(providerOrClient, value);
+ Errors.revertOnError(exit_code);
}
function withdraw_balance(MarketTypes.WithdrawBalanceParams memory params) public returns (CommonTypes.BigInt memory) {
- return MarketAPI.withdrawBalance(params);
+ (int256 exit_code, CommonTypes.BigInt memory result) = MarketAPI.withdrawBalance(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_balance(CommonTypes.FilAddress memory addr) public returns (MarketTypes.GetBalanceReturn memory) {
- return MarketAPI.getBalance(addr);
+ function get_balance(CommonTypes.FilAddress memory addr) public view returns (MarketTypes.GetBalanceReturn memory) {
+ (int256 exit_code, MarketTypes.GetBalanceReturn memory result) = MarketAPI.getBalance(addr);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_data_commitment(uint64 dealID) public returns (MarketTypes.GetDealDataCommitmentReturn memory) {
- return MarketAPI.getDealDataCommitment(dealID);
+ function get_deal_data_commitment(uint64 dealID) public view returns (MarketTypes.GetDealDataCommitmentReturn memory) {
+ (int256 exit_code, MarketTypes.GetDealDataCommitmentReturn memory result) = MarketAPI.getDealDataCommitment(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_client(uint64 dealID) public returns (uint64) {
- return MarketAPI.getDealClient(dealID);
+ function get_deal_client(uint64 dealID) public view returns (uint64) {
+ (int256 exit_code, uint64 result) = MarketAPI.getDealClient(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_provider(uint64 dealID) public returns (uint64) {
- return MarketAPI.getDealProvider(dealID);
+ function get_deal_provider(uint64 dealID) public view returns (uint64) {
+ (int256 exit_code, uint64 result) = MarketAPI.getDealProvider(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_label(uint64 dealID) public returns (string memory) {
- return MarketAPI.getDealLabel(dealID);
+ function get_deal_label(uint64 dealID) public view returns (CommonTypes.DealLabel memory) {
+ (int256 exit_code, CommonTypes.DealLabel memory result) = MarketAPI.getDealLabel(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_term(uint64 dealID) public returns (MarketTypes.GetDealTermReturn memory) {
- return MarketAPI.getDealTerm(dealID);
+ function get_deal_term(uint64 dealID) public view returns (MarketTypes.GetDealTermReturn memory) {
+ (int256 exit_code, MarketTypes.GetDealTermReturn memory result) = MarketAPI.getDealTerm(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_total_price(uint64 dealID) public returns (CommonTypes.BigInt memory) {
- return MarketAPI.getDealTotalPrice(dealID);
+ function get_deal_total_price(uint64 dealID) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = MarketAPI.getDealTotalPrice(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_client_collateral(uint64 dealID) public returns (CommonTypes.BigInt memory) {
- return MarketAPI.getDealClientCollateral(dealID);
+ function get_deal_client_collateral(uint64 dealID) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = MarketAPI.getDealClientCollateral(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_provider_collateral(uint64 dealID) public returns (CommonTypes.BigInt memory) {
- return MarketAPI.getDealProviderCollateral(dealID);
+ function get_deal_provider_collateral(uint64 dealID) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = MarketAPI.getDealProviderCollateral(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_verified(uint64 dealID) public returns (bool) {
- return MarketAPI.getDealVerified(dealID);
+ function get_deal_verified(uint64 dealID) public view returns (bool) {
+ (int256 exit_code, bool result) = MarketAPI.getDealVerified(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_deal_activation(uint64 dealID) public returns (MarketTypes.GetDealActivationReturn memory) {
- return MarketAPI.getDealActivation(dealID);
+ function get_deal_activation(uint64 dealID) public view returns (MarketTypes.GetDealActivationReturn memory) {
+ (int256 exit_code, MarketTypes.GetDealActivationReturn memory result) = MarketAPI.getDealActivation(dealID);
+ Errors.revertOnError(exit_code);
+ return result;
}
function publish_storage_deals(MarketTypes.PublishStorageDealsParams memory params) public returns (MarketTypes.PublishStorageDealsReturn memory) {
- return MarketAPI.publishStorageDeals(params);
+ (int256 exit_code, MarketTypes.PublishStorageDealsReturn memory result) = MarketAPI.publishStorageDeals(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
}
```
### Call the miner actor
-The following example imports the Account actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-miner-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/miner.test.sol).
+The following example imports the Miner actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-miner-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/miner.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../MinerAPI.sol";
import "../types/MinerTypes.sol";
+import "../utils/Errors.sol";
contract MinerApiTest {
- function get_owner(CommonTypes.FilActorId target) public returns (MinerTypes.GetOwnerReturn memory) {
- return MinerAPI.getOwner(target);
+ function get_owner(CommonTypes.FilActorId target) public view returns (MinerTypes.GetOwnerReturn memory) {
+ (int256 exit_code, MinerTypes.GetOwnerReturn memory result) = MinerAPI.getOwner(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
function change_owner_address(CommonTypes.FilActorId target, CommonTypes.FilAddress memory addr) public {
- MinerAPI.changeOwnerAddress(target, addr);
+ int256 exit_code = MinerAPI.changeOwnerAddress(target, addr);
+ Errors.revertOnError(exit_code);
}
- function is_controlling_address(CommonTypes.FilActorId target, CommonTypes.FilAddress memory addr) public returns (bool) {
- return MinerAPI.isControllingAddress(target, addr);
+ function is_controlling_address(CommonTypes.FilActorId target, CommonTypes.FilAddress memory addr) public view returns (bool) {
+ (int256 exit_code, bool result) = MinerAPI.isControllingAddress(target, addr);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_sector_size(CommonTypes.FilActorId target) public returns (uint64) {
- return MinerAPI.getSectorSize(target);
+ function get_sector_size(CommonTypes.FilActorId target) public view returns (uint64) {
+ (int256 exit_code, uint64 result) = MinerAPI.getSectorSize(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_available_balance(CommonTypes.FilActorId target) public returns (CommonTypes.BigInt memory) {
- return MinerAPI.getAvailableBalance(target);
+ function get_available_balance(CommonTypes.FilActorId target) public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = MinerAPI.getAvailableBalance(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_vesting_funds(CommonTypes.FilActorId target) public returns (MinerTypes.GetVestingFundsReturn memory) {
- return MinerAPI.getVestingFunds(target);
+ function get_vesting_funds(CommonTypes.FilActorId target) public view returns (MinerTypes.VestingFunds[] memory) {
+ (int256 exit_code, MinerTypes.VestingFunds[] memory result) = MinerAPI.getVestingFunds(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
function change_beneficiary(CommonTypes.FilActorId target, MinerTypes.ChangeBeneficiaryParams memory params) public {
- return MinerAPI.changeBeneficiary(target, params);
+ int256 exit_code = MinerAPI.changeBeneficiary(target, params);
+ Errors.revertOnError(exit_code);
}
- function get_beneficiary(CommonTypes.FilActorId target) public returns (MinerTypes.GetBeneficiaryReturn memory) {
- return MinerAPI.getBeneficiary(target);
+ function get_beneficiary(CommonTypes.FilActorId target) public view returns (MinerTypes.GetBeneficiaryReturn memory) {
+ (int256 exit_code, MinerTypes.GetBeneficiaryReturn memory result) = MinerAPI.getBeneficiary(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
function change_worker_address(CommonTypes.FilActorId target, MinerTypes.ChangeWorkerAddressParams memory params) public {
- MinerAPI.changeWorkerAddress(target, params);
+ int256 exit_code = MinerAPI.changeWorkerAddress(target, params);
+ Errors.revertOnError(exit_code);
}
function change_peer_id(CommonTypes.FilActorId target, CommonTypes.FilAddress memory newId) public {
- MinerAPI.changePeerId(target, newId);
+ int256 exit_code = MinerAPI.changePeerId(target, newId);
+ Errors.revertOnError(exit_code);
}
- function change_multiaddresses(CommonTypes.FilActorId target, MinerTypes.ChangeMultiaddrsParams memory params) public {
- MinerAPI.changeMultiaddresses(target, params);
+ function change_multiaddresses(CommonTypes.FilActorId target, CommonTypes.FilAddress[] memory new_multi_addrs) public {
+ int256 exit_code = MinerAPI.changeMultiaddresses(target, new_multi_addrs);
+ Errors.revertOnError(exit_code);
}
function repay_debt(CommonTypes.FilActorId target) public {
- MinerAPI.repayDebt(target);
+ int256 exit_code = MinerAPI.repayDebt(target);
+ Errors.revertOnError(exit_code);
}
function confirm_change_worker_address(CommonTypes.FilActorId target) public {
- MinerAPI.confirmChangeWorkerAddress(target);
+ int256 exit_code = MinerAPI.confirmChangeWorkerAddress(target);
+ Errors.revertOnError(exit_code);
}
- function get_peer_id(CommonTypes.FilActorId target) public returns (CommonTypes.FilAddress memory) {
- return MinerAPI.getPeerId(target);
+ function get_peer_id(CommonTypes.FilActorId target) public view returns (CommonTypes.FilAddress memory) {
+ (int256 exit_code, CommonTypes.FilAddress memory result) = MinerAPI.getPeerId(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function get_multiaddresses(CommonTypes.FilActorId target) public returns (MinerTypes.GetMultiaddrsReturn memory) {
- return MinerAPI.getMultiaddresses(target);
+ function get_multiaddresses(CommonTypes.FilActorId target) public view returns (CommonTypes.FilAddress[] memory) {
+ (int256 exit_code, CommonTypes.FilAddress[] memory result) = MinerAPI.getMultiaddresses(target);
+ Errors.revertOnError(exit_code);
+ return result;
}
function withdraw_balance(CommonTypes.FilActorId target, CommonTypes.BigInt memory amount) public returns (CommonTypes.BigInt memory) {
- return MinerAPI.withdrawBalance(target, amount);
+ (int256 exit_code, CommonTypes.BigInt memory result) = MinerAPI.withdrawBalance(target, amount);
+ Errors.revertOnError(exit_code);
+ return result;
}
}
```
@@ -267,31 +353,42 @@ contract MinerApiTest {
The following example imports the Storage power actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-storage-power-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/power.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../types/PowerTypes.sol";
import "../types/CommonTypes.sol";
import "../PowerAPI.sol";
+import "../utils/Errors.sol";
contract PowerApiTest {
function create_miner(PowerTypes.CreateMinerParams memory params, uint256 value) public payable returns (PowerTypes.CreateMinerReturn memory) {
- return PowerAPI.createMiner(params, value);
+ (int256 exit_code, PowerTypes.CreateMinerReturn memory result) = PowerAPI.createMiner(params, value);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function miner_count() public returns (uint64) {
- return PowerAPI.minerCount();
+ function miner_count() public view returns (uint64) {
+ (int256 exit_code, uint64 result) = PowerAPI.minerCount();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function miner_consensus_count() public returns (int64) {
- return PowerAPI.minerConsensusCount();
+ function miner_consensus_count() public view returns (int64) {
+ (int256 exit_code, int64 result) = PowerAPI.minerConsensusCount();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function network_raw_power() public returns (CommonTypes.BigInt memory) {
- return PowerAPI.networkRawPower();
+ function network_raw_power() public view returns (CommonTypes.BigInt memory) {
+ (int256 exit_code, CommonTypes.BigInt memory result) = PowerAPI.networkRawPower();
+ Errors.revertOnError(exit_code);
+ return result;
}
- function miner_raw_power(uint64 minerID) public returns (PowerTypes.MinerRawPowerReturn memory) {
- return PowerAPI.minerRawPower(minerID);
+ function miner_raw_power(uint64 minerID) public view returns (PowerTypes.MinerRawPowerReturn memory) {
+ (int256 exit_code, PowerTypes.MinerRawPowerReturn memory result) = PowerAPI.minerRawPower(minerID);
+ Errors.revertOnError(exit_code);
+ return result;
}
}
```
@@ -301,33 +398,43 @@ contract PowerApiTest {
The following example imports the verified registry actor library and creates a callable method for each of the [available actor methods](filecoin.sol.md#call-the-verified-registry-actor). For the full code, see [the GitHub repository](https://github.com/filecoin-project/filecoin-solidity/blob/master/contracts/v0.8/tests/verifreg.test.sol).
```solidity
-pragma solidity ^0.8.17;
+pragma solidity ^0.8.18;
import "../types/VerifRegTypes.sol";
import "../types/CommonTypes.sol";
import "../VerifRegAPI.sol";
+import "../utils/Errors.sol";
contract VerifRegApiTest {
- function get_claims(VerifRegTypes.GetClaimsParams memory params) public returns (VerifRegTypes.GetClaimsReturn memory) {
- return VerifRegAPI.getClaims(params);
+ function get_claims(VerifRegTypes.GetClaimsParams memory params) public view returns (VerifRegTypes.GetClaimsReturn memory) {
+ (int256 exit_code, VerifRegTypes.GetClaimsReturn memory result) = VerifRegAPI.getClaims(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
function add_verified_client(VerifRegTypes.AddVerifiedClientParams memory params) public {
- VerifRegAPI.addVerifiedClient(params);
+ int256 exit_code = VerifRegAPI.addVerifiedClient(params);
+ Errors.revertOnError(exit_code);
}
function remove_expired_allocations(
VerifRegTypes.RemoveExpiredAllocationsParams memory params
) public returns (VerifRegTypes.RemoveExpiredAllocationsReturn memory) {
- return VerifRegAPI.removeExpiredAllocations(params);
+ (int256 exit_code, VerifRegTypes.RemoveExpiredAllocationsReturn memory result) = VerifRegAPI.removeExpiredAllocations(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
- function extend_claim_terms(VerifRegTypes.ExtendClaimTermsParams memory params) public returns (CommonTypes.BatchReturn memory) {
- return VerifRegAPI.extendClaimTerms(params);
+ function extend_claim_terms(VerifRegTypes.ClaimTerm[] memory claimTerms) public returns (CommonTypes.BatchReturn memory) {
+ (int256 exit_code, CommonTypes.BatchReturn memory result) = VerifRegAPI.extendClaimTerms(claimTerms);
+ Errors.revertOnError(exit_code);
+ return result;
}
function remove_expired_claims(VerifRegTypes.RemoveExpiredClaimsParams memory params) public returns (VerifRegTypes.RemoveExpiredClaimsReturn memory) {
- return VerifRegAPI.removeExpiredClaims(params);
+ (int256 exit_code, VerifRegTypes.RemoveExpiredClaimsReturn memory result) = VerifRegAPI.removeExpiredClaims(params);
+ Errors.revertOnError(exit_code);
+ return result;
}
}
```
diff --git a/reference/built-in-actors/protocol-api.md b/reference/built-in-actors/protocol-api.md
index 82e6cce62..fc27ea358 100644
--- a/reference/built-in-actors/protocol-api.md
+++ b/reference/built-in-actors/protocol-api.md
@@ -6,13 +6,13 @@ description: This page covers the Built-in actors Protocol API.
The protocol level built-in actors API is split into the following sections:
-* [Account actor](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#account-actor)
-* [Datacap](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#datacap)
-* [Miner](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#miner)
-* [Multisig](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#multisig)
-* [Storage market actor](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#storage-market-actor)
-* [Storage power actor](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#storage-power-actor)
-* [Verified registry actor](https://docs.filecoin.io/reference/built-in-actors/protocol-api/#verified-registry-actor)
+* [Account actor](#account-actor)
+* [Datacap](#datacap)
+* [Miner](#miner)
+* [Multisig](#multisig)
+* [Storage market actor](#storage-market-actor)
+* [Storage power actor](#storage-power-actor)
+* [Verified registry actor](#verified-registry-actor)
## Account actor
diff --git a/reference/exchanges/README.md b/reference/exchanges/README.md
index 570cb8103..32371770b 100644
--- a/reference/exchanges/README.md
+++ b/reference/exchanges/README.md
@@ -1,9 +1,14 @@
---
description: >-
- This section contains reference information regarding how to integrate
- Filecoin into an exchange.
+ Guides for integrating FIL into cryptocurrency exchanges.
---
# Exchanges
+This section provides technical guidance for exchanges looking to support FIL deposits, withdrawals, and trading.
+
+## Table of contents
+
+* [Exchange integration](exchange-integration.md) — steps and workflows for listing FIL on an exchange
+
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/reference/exchanges)
diff --git a/reference/exchanges/exchange-integration.md b/reference/exchanges/exchange-integration.md
index be127a1ad..0c69dea33 100644
--- a/reference/exchanges/exchange-integration.md
+++ b/reference/exchanges/exchange-integration.md
@@ -109,7 +109,7 @@ Some JavaScript libraries attempt to estimate the gas fees before sending the tr
### Filecoin's EVM and Send method number
-A summary of the Filecoin's EVM differences with Ethereum is available in the [FEVM - Difference with Ethereum section](../../smart-contracts/filecoin-evm-runtime/difference-with-ethereum.md).
+A summary of the Filecoin's EVM differences with Ethereum is available in the [FEVM - Difference with Ethereum section](../../core-concepts/filecoin-evm-runtime/difference-with-ethereum.md).
{% hint style="danger" %}
Note that when sending funds to a Filecoin EVM recipient address (f410f or 0x), it is recommended to always use the **InvokeEVM** **method 3844450837** to prevent possible loss of funds in case the recipient is a smart contract. The `lotus send 0x` CLI method always defaults to this method number.
@@ -289,7 +289,7 @@ Join the [Filecoin Slack](https://filecoinproject.slack.com/signup) and post any
* [Filecoin Specs](https://spec.filecoin.io)
* [Filecoin Networks](https://status.filecoin.io)
* [Lotus](https://github.com/filecoin-project/lotus) - the reference implementation for the Filecoin network
-* [Block Explorers](https://docs.filecoin.io/networks/mainnet/explorers/)
+* [Block Explorers](../../networks-and-tools/networks/mainnet/explorers.md)
diff --git a/reference/general/README.md b/reference/general/README.md
index 68cce69c1..6425dc844 100644
--- a/reference/general/README.md
+++ b/reference/general/README.md
@@ -9,7 +9,7 @@ description: >-
## About Filecoin
* [**Filecoin Specification**](https://spec.filecoin.io/) - technical specification for Filecoin protocol and its associated subsystems.
-* [**Filecoin Slack**](https://filecoin.io/slack) - announcements and open discussion of Filecoin.
+* [**Filecoin Slack**](https://filecoinproject.slack.com/ssb/redirect) - announcements and open discussion of Filecoin.
* [**Filecoin Orbit Community Program**](https://www.fil.org/orbit) - the Filecoin Orbit Community Program is an effort of dozens of volunteers around the world to organize meetups and hackathons in their local jurisdictions.
* [**Filecoin YouTube channel**](https://www.youtube.com/channel/UCPyYmtJYQwxM-EUyRUTp5DA) - various Filecoin workshops, conference talks, and meetups.
@@ -32,7 +32,7 @@ description: >-
* [Mainnet network status](https://filecoin.statuspage.io/) - reports the status and incident of the Filecoin Mainnet.
* **Calibration**
* Largest testnet which support 32 GiB and 64 GiB sectors.
- * See [`#fil-net-calibration-discuss`](https://filecoinproject.slack.com/archives/C01D42NNLMS) for questions and discussion in [Filecoin Slack](https://filecoin.io/slack).
+ * See [`#fil-net-calibration-discuss`](https://filecoinproject.slack.com/archives/C01D42NNLMS) for questions and discussion in [Filecoin Slack](https://filecoinproject.slack.com/ssb/redirect).
* **Local Devnet**
* [Run a Local Devnet using Lotus](https://lotus.filecoin.io/lotus/developers/local-network/).
@@ -61,14 +61,17 @@ Tools to check status and details of the network and chain.
Web-based applications that store your data on Filecoin. No command-line or coding experience required.
+* [Filecoin Onchain Cloud](../../build/filecoin-onchain-cloud/README.md) - programmable, on-chain storage with verifiable storage proofs (PDP) and automatic payments (Filecoin Pay), accessed through the Synapse SDK.
+* [Filecoin Pin](../../build/cookbook/filecoin-pin/getting-started.md) - a CLI and API path for pinning IPFS-compatible content to Filecoin-backed storage with Filecoin Pay.
+* [Fil One](https://fil.one/) - S3-compatible object storage backed by Filecoin, with flat per-terabyte pricing and no egress fees. Point any S3 SDK or tool at its endpoint; see the [Fil One docs](https://docs.fil.one/).
* [Lighthouse](https://lighthouse.storage/) "offers permanent, decentralized storage powered by Filecoin. Secure, scalable, and ideal for individuals, developers, and enterprises."
-* [Storacha](https://storacha.network/) is an open hot storage network scales IPFS and Filecoin. Upload any data and Storacha will ensure it ends up on a decentralized set of IPFS and Filecoin storage providers. There Storacha [docs](https://docs.storacha.network/) detail the JavaScript and Go API libraries, and there is a no-code web uploader available as well.
-* [Singularity](https://singularity.storage/) "facilitates onboarding of large quantaties of data (PB-scale) to the Filecoin network in an efficient, secure, and flexible way."
+* [Pinata](https://pinata.cloud/) is an IPFS pinning service for storing and serving files, media, and app data over IPFS. See the [Pinata docs](https://docs.pinata.cloud/).
+* [Singularity](https://data-programs.gitbook.io/singularity) "facilitates onboarding of large quantities of data (PB-scale) to the Filecoin network in an efficient, secure, and flexible way."
* [CID Gravity](https://www.cidgravity.com/) is a "seamless gateway to the decentralized web", allowing you to drag and drop files through an easy-to-use UI that uploads files to Filecoin and IPFS.
-* [Ramo](https://www.ramo.io/) is "a network coordinating people, hardware and capital to build a more open and resilient internet infrastructure for everyone."
+* [Ramo](https://use.ramo.computer/) provides Filecoin-based, S3-compatible storage for data on Filecoin.
* [Starling Framework for Data Integrity](https://www.starlinglab.org/)
* to securely capture, store and verify human history
- * learn more at [`starlinglab.org/78days`](https://www.starlinglab.org/78days/) or the [Filecoin blog interview](https://filecoin.io/blog/starling-framework/)
+ * learn more at [`starlinglab.org/78days`](https://www.starlinglab.org/78days/)
## APIs & Developer tools
@@ -97,7 +100,7 @@ Check out the [documentation website](https://filecoin.hugomrdias.dev/) for more
> NOTE: making deep calls into the chain’s history may take some time to return and it may be more efficient to use a chain database (e.g. used by block explorers) that stores the chain’s history and is optimized for queries.
* [Chain.love](https://lotus.filecoin.io/lotus/developers/chain-love/) - A hosted endpoint to Filecoin mainnet and testnet. Note: as of Q1 2023, Infura no longer supports Filecoin.
- * The GLIF endpoint supports read-only calls and `MPoolPush()` for sending signed transactions to the network (which can be signed using the [Message signing tools](https://docs.filecoin.io/reference/general/overview/#message-signing-tools)).
+ * The GLIF endpoint supports read-only calls and `MPoolPush()` for sending signed transactions to the network (which can be signed using [tools like Filsnap](./tools.md)).
* [**Lotus JSON-RPC API**](https://lotus.filecoin.io/lotus/get-started/what-is-lotus/) - Lotus offers the full feature set of its capabilities through API.
* [lotus API Postman sample](https://documenter.getpostman.com/view/4872192/SWLh5mUd?version=latest) - (shows sample wallet calls only)
@@ -119,7 +122,7 @@ For running a node cluster of load balanced Lotus JSON RPC API endpoints.
* [CAR files](https://ipld.io/specs/transport/car/) - automatically used on Lotus import for less than 32 and 64 GiB, Filecoin archive format serialized from DAGs, see also [building with the Lotus API](https://lotus.filecoin.io/tutorials/lotus/build-with-lotus-api/).
* [`go-graphsplit`](https://github.com/filedrive-team/go-graphsplit) - FileDrive chunks a larger single DAG for storage in default Filecoin 32 and 64 GiB sector sizes.
-* [IPFS](https://ipfs.tech) - you can use `ipfs add` with an IPFS node then [add the CID from a Filecoin node](https://docs.filecoin.io/builder-cookbook/data-storage/store-data).
+* [IPFS](https://ipfs.tech) - you can use `ipfs add` with an IPFS node then [add the CID from a Filecoin node](../../build/cookbook/store-data.md).
### Databases using IPFS and Filecoin
diff --git a/reference/general/glossary.md b/reference/general/glossary.md
index f4f9a86d8..0c9c22a4d 100644
--- a/reference/general/glossary.md
+++ b/reference/general/glossary.md
@@ -16,19 +16,19 @@ In the Filecoin network, an _address_ is a unique cryptographic value that serve
## Block
-In a blockchain, a _block_ is the fundamental unit of record. Each block is cryptographically linked to one or more previous blocks. Blocks typically contain [messages](https://docs.filecoin.io/reference/general/glossary/#message) relating changes to some state (for example, financial records) tracked by the blockchain.
+In a blockchain, a _block_ is the fundamental unit of record. Each block is cryptographically linked to one or more previous blocks. Blocks typically contain [messages](#message) relating changes to some state (for example, financial records) tracked by the blockchain.
## Blockchain
-Fundamentally, a _blockchain_ is a system of record in which new records, or [blocks](https://docs.filecoin.io/reference/general/glossary/#block) are cryptographically linked to preceding records. This construction is a foundational component of secure, verifiable, and distributed transaction ledgers.
+Fundamentally, a _blockchain_ is a system of record in which new records, or [blocks](#block) are cryptographically linked to preceding records. This construction is a foundational component of secure, verifiable, and distributed transaction ledgers.
## Block height
-The _height_ of a [block](https://docs.filecoin.io/reference/general/glossary/#block) corresponds to the number of [epochs](https://docs.filecoin.io/reference/general/glossary/#epoch) elapsed before the block was added to the blockchain. The height of the Filecoin [blockchain](https://docs.filecoin.io/reference/general/glossary/#blockchain) is defined to be the maximum height of any block in the blockchain.
+The _height_ of a [block](#block) corresponds to the number of [epochs](#epoch) elapsed before the block was added to the blockchain. The height of the Filecoin [blockchain](#blockchain) is defined to be the maximum height of any block in the blockchain.
## Capacity commitment
-If a storage provider doesn’t find any available deal proposals appealing, they can alternatively make a _capacity commitment_, filling a [sector](https://docs.filecoin.io/reference/general/glossary/#sector) with arbitrary data, rather than with client data. Maintaining this sector allows the storage provider to provably demonstrate that they are reserving space on behalf of the network.
+If a storage provider doesn’t find any available deal proposals appealing, they can alternatively make a _capacity commitment_, filling a [sector](#sector) with arbitrary data, rather than with client data. Maintaining this sector allows the storage provider to provably demonstrate that they are reserving space on behalf of the network.
## CommP
@@ -40,7 +40,7 @@ A self-describing format for referencing data in distributed information systems
## Collateral
-In order to enter into a [storage deal](https://docs.filecoin.io/reference/general/glossary/#deal), a [storage provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) is required to provide [FIL](https://docs.filecoin.io/reference/general/glossary/#fil) as _collateral_, to be paid out as compensation to a client in the event that the provider fails to uphold their storage commitment.
+In order to enter into a [storage deal](#deal), a [storage provider](#storage-provider) is required to provide [FIL](#fil) as _collateral_, to be paid out as compensation to a client in the event that the provider fails to uphold their storage commitment.
## Deal
@@ -48,11 +48,11 @@ Two participants in the Filecoin network can enter into a _deal_ in which one pa
## Election
-Every [epoch](https://docs.filecoin.io/reference/general/glossary/#epoch), a small subset of Filecoin [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) are _elected_ to mine a new [block](https://docs.filecoin.io/reference/general/glossary/#block) for the Filecoin blockchain. A provider’s probability of being elected is roughly proportional to the share of the Filecoin network’s total storage capacity that they contribute.
+Every [epoch](#epoch), a small subset of Filecoin [storage providers](#storage-provider) are _elected_ to mine a new [block](#block) for the Filecoin blockchain. A provider’s probability of being elected is roughly proportional to the share of the Filecoin network’s total storage capacity that they contribute.
## Epoch
-Time in the Filecoin blockchain is discretized into _epochs_ that are currently thirty seconds in length. Every epoch, a subset of storage providers are elected to each add a new block to the Filecoin blockchain via [Winning Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#winning-proof-of-spacetime-winningpost).
+Time in the Filecoin blockchain is discretized into _epochs_ that are currently thirty seconds in length. Every epoch, a subset of storage providers are elected to each add a new block to the Filecoin blockchain via [Winning Proof-of-Spacetime](#winning-proof-of-spacetime-winningpost).
## FIL
@@ -60,11 +60,11 @@ _FIL_ is the name of the Filecoin unit of currency; it is alternatively denoted
## Faucet
-A _faucet_ is a service that provides free [FIL](https://docs.filecoin.io/reference/general/glossary/#fil). Typically, faucets are run for the benefit of new users in a network, providing them with the necessary seed capital to begin making transactions.
+A _faucet_ is a service that provides free [FIL](#fil). Typically, faucets are run for the benefit of new users in a network, providing them with the necessary seed capital to begin making transactions.
## Fault
-When a [storage provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) fails to complete [Window Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#window-proof-of-spacetime-windowpost) for a given sector, the Filecoin network registers a _fault_ for that sector, and the provider is [_slashed_](https://docs.filecoin.io/reference/general/glossary/#slash). If a storage provider does not resolve the fault quickly, the network assumes they have abandoned their commitment.
+When a [storage provider](#storage-provider) fails to complete [Window Proof-of-Spacetime](#window-proof-of-spacetime-windowpost) for a given sector, the Filecoin network registers a _fault_ for that sector, and the provider is [_slashed_](#slash). If a storage provider does not resolve the fault quickly, the network assumes they have abandoned their commitment.
## Filecoin
@@ -72,11 +72,11 @@ The term _Filecoin_ is used generically to refer to the Filecoin project, protoc
## Finality
-Finality refers to the immutability of messages and state recorded to the Filecoin blockchain. As new blocks are added to the blockchain, it becomes more and more difficult for older blocks to be altered, until they become effectively impossible to modify. The _finality period_ is the amount of time that must elapse before a block is considered completely immutable. In the current [mainnet](https://docs.filecoin.io/reference/general/glossary/#mainnet), this is configured as 900 [epochs](https://docs.filecoin.io/reference/general/glossary/#epoch).
+Finality refers to the immutability of messages and state recorded to the Filecoin blockchain. As new blocks are added to the blockchain, it becomes more and more difficult for older blocks to be altered, until they become effectively impossible to modify. The _finality period_ is the amount of time that must elapse before a block is considered completely immutable. In the current [mainnet](#mainnet), this is configured as 900 [epochs](#epoch).
## Gas
-_Gas_ is a property of a [message](https://docs.filecoin.io/reference/general/glossary/#message), corresponding to the resources involved in including that message in a given [block](https://docs.filecoin.io/reference/general/glossary/#block). For each message included in a block, the block’s creator extracts a fee from the message’s sender; this fee is proportional to the message’s gas.
+_Gas_ is a property of a [message](#message), corresponding to the resources involved in including that message in a given [block](#block). For each message included in a block, the block’s creator extracts a fee from the message’s sender; this fee is proportional to the message’s gas.
## Mainnet
@@ -86,7 +86,7 @@ If used as a proper noun, capitalize the term: _“I am providing on Mainnet.”
## Message
-The term _message_ is used to refer to data stored as part of a [block](https://docs.filecoin.io/reference/general/glossary/#block). A block can contain several messages.
+The term _message_ is used to refer to data stored as part of a [block](#block). A block can contain several messages.
## Merkle Directed Acyclic Graph
@@ -100,11 +100,11 @@ Merkle DAGs are a fundamental component for the representation of relationships
## Miner
-The Filecoin project uses the term _provider_ to refer to participants in the network who provide a service of value to a client. Other blockchains, like Ethereum and Bitcoin, use the term _miner_. At present, the Filecoin specification recognizes two provider types: [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) and [retrieval providers](https://docs.filecoin.io/reference/general/glossary/#retrieval-provider).
+The Filecoin project uses the term _provider_ to refer to participants in the network who provide a service of value to a client. Other blockchains, like Ethereum and Bitcoin, use the term _miner_. At present, the Filecoin specification recognizes two provider types: [storage providers](#storage-provider) and [retrieval providers](#retrieval-provider).
## Pledged storage
-Storage capacity that a provider has promised to reserve for the Filecoin network via [Proof-of-Replication](https://docs.filecoin.io/reference/general/glossary/#proof-of-replication-porep) is termed _pledged storage_.
+Storage capacity that a provider has promised to reserve for the Filecoin network via [Proof-of-Replication](#proof-of-replication-porep) is termed _pledged storage_.
## Proof-of-Storage
@@ -116,23 +116,23 @@ _Note_: “proof” here is used in an informal sense - typically, these proofs
## Proof-of-Replication (PoRep)
-_Proof-of-Replication_ is a procedure by which a [storage provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) can prove to the Filecoin network that they have created a unique copy of some piece of data on the network’s behalf.
+_Proof-of-Replication_ is a procedure by which a [storage provider](#storage-provider) can prove to the Filecoin network that they have created a unique copy of some piece of data on the network’s behalf.
## Proof-of-Spacetime (PoSt)
-_Proof-of-Spacetime_ is a procedure by which a [storage-provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) can prove to the Filecoin network they continue to store a unique copy of some data on behalf of the network. Proof-of-Spacetime manifests in two distinct varieties in the present Filecoin specification: [Window Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#window-proof-of-spacetime-windowpost) and [Winning Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#winning-proof-of-spacetime-winningpost).
+_Proof-of-Spacetime_ is a procedure by which a [storage-provider](#storage-provider) can prove to the Filecoin network they continue to store a unique copy of some data on behalf of the network. Proof-of-Spacetime manifests in two distinct varieties in the present Filecoin specification: [Window Proof-of-Spacetime](#window-proof-of-spacetime-windowpost) and [Winning Proof-of-Spacetime](#winning-proof-of-spacetime-winningpost).
## Quality-adjusted storage power
-The storage power a [storage provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) earns from a storage deal offered by a [verified client](https://docs.filecoin.io/reference/general/glossary/#verified-client) will be augmented by a multiplier. Power totals that take into account this multiplier are termed _quality adjusted_.
+The storage power a [storage provider](#storage-provider) earns from a storage deal offered by a [verified client](#verified-client) will be augmented by a multiplier. Power totals that take into account this multiplier are termed _quality adjusted_.
## Retrieval provider
-A _retrieval provider_ is a Filecoin participant that enters retrieval [deals](https://docs.filecoin.io/reference/general/glossary/#deal) with clients, agreeing to supply a client with a particular file in exchange for [FIL](https://docs.filecoin.io/reference/general/glossary/#fil). Note that unlike [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider), retrieval providers are not additionally rewarded with the ability to add blocks to the Filecoin blockchain; their only reward is the fee they extract from the client.
+A _retrieval provider_ is a Filecoin participant that enters retrieval [deals](#deal) with clients, agreeing to supply a client with a particular file in exchange for [FIL](#fil). Note that unlike [storage providers](#storage-provider), retrieval providers are not additionally rewarded with the ability to add blocks to the Filecoin blockchain; their only reward is the fee they extract from the client.
## Seal
-_Sealing_ is one of the fundamental building blocks of the Filecoin protocol. It is a computation-intensive process performed over a [sector](https://docs.filecoin.io/reference/general/glossary/#sector) that results in a unique representation of the sector. The properties of this new representation are essential to the [Proof-of-Replication](https://docs.filecoin.io/reference/general/glossary/#proof-of-replication-porep) and the [Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#proof-of-spacetime-post) procedures.
+_Sealing_ is one of the fundamental building blocks of the Filecoin protocol. It is a computation-intensive process performed over a [sector](#sector) that results in a unique representation of the sector. The properties of this new representation are essential to the [Proof-of-Replication](#proof-of-replication-porep) and the [Proof-of-Spacetime](#proof-of-spacetime-post) procedures.
## Sector
@@ -140,15 +140,15 @@ Storage providers store data on behalf of the Filecoin network in fixed-size blo
## Slash
-When a [fault](https://docs.filecoin.io/reference/general/glossary/#fault) is registered for a [sector](https://docs.filecoin.io/reference/general/glossary/#sector), the Filecoin network will _slash_ the [storage provider](https://docs.filecoin.io/reference/general/glossary/#storage-provider) that is supposed to be storing the sector; that is, it will assess penalties to the provider (to be paid out of the [collateral](https://docs.filecoin.io/reference/general/glossary/#collateral) fronted by the provider) for their failure to uphold their pledge of storage. When slashing takes place, the power a provider earns for the associated sector is subtracted from the provider’s total power for the purposes of [election](https://docs.filecoin.io/reference/general/glossary/#election).
+When a [fault](#fault) is registered for a [sector](#sector), the Filecoin network will _slash_ the [storage provider](#storage-provider) that is supposed to be storing the sector; that is, it will assess penalties to the provider (to be paid out of the [collateral](#collateral) fronted by the provider) for their failure to uphold their pledge of storage. When slashing takes place, the power a provider earns for the associated sector is subtracted from the provider’s total power for the purposes of [election](#election).
## Storage provider
-A _storage provider_ is a Filecoin participant that stores data on behalf of the network. Storage providers are rewarded for this service through payments by clients that contract their services, as well as by periodic authorization to extend the Filecoin [blockchain](https://docs.filecoin.io/reference/general/glossary/#blockchain) with [blocks](https://docs.filecoin.io/reference/general/glossary/#block) of their own creation. When they create a block, storage providers are rewarded with newly minted [FIL](https://docs.filecoin.io/reference/general/glossary/#fil), as well as the transaction fees they can levy on other participants seeking to include [messages](https://docs.filecoin.io/reference/general/glossary/#message) in the block.
+A _storage provider_ is a Filecoin participant that stores data on behalf of the network. Storage providers are rewarded for this service through payments by clients that contract their services, as well as by periodic authorization to extend the Filecoin [blockchain](#blockchain) with [blocks](#block) of their own creation. When they create a block, storage providers are rewarded with newly minted [FIL](#fil), as well as the transaction fees they can levy on other participants seeking to include [messages](#message) in the block.
## Storage power
-A [storage provider’s](https://docs.filecoin.io/reference/general/glossary/#storage-provider) _storage power_ is a value roughly proportional to the amount of storage capacity they make available on behalf of the network via [capacity commitments](https://docs.filecoin.io/reference/general/glossary/#capacity-commitment) or [storage deals](https://docs.filecoin.io/reference/general/glossary/#deal). Storage power is used to select storage providers for rewards in proportion to their contributions to the total network storage capacity.
+A [storage provider’s](#storage-provider) _storage power_ is a value roughly proportional to the amount of storage capacity they make available on behalf of the network via [capacity commitments](#capacity-commitment) or [storage deals](#deal). Storage power is used to select storage providers for rewards in proportion to their contributions to the total network storage capacity.
## Zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK)
@@ -158,7 +158,7 @@ An _argument of knowledge_ is a construction by which one party, called the _pro
* A _zero-knowledge_ argument of knowledge has the requirement that the verifier should not need access to the knowledge the prover has access to in order to verify the prover’s claim.
* A _succinct_ argument of knowledge is one that can be “quickly” verified, and which is “small”, for appropriate definitions of both of those terms.
-A zero-knowledge, succinct non-interactive argument of knowledge (zk-SNARK) embodies all of these properties. Filecoin utilizes these constructions to enable its distributed network to efficiently verify that [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) are storing files they pledged to store, without requiring the verifiers to maintain copies of these files themselves.
+A zero-knowledge, succinct non-interactive argument of knowledge (zk-SNARK) embodies all of these properties. Filecoin utilizes these constructions to enable its distributed network to efficiently verify that [storage providers](#storage-provider) are storing files they pledged to store, without requiring the verifiers to maintain copies of these files themselves.
## Testnet
@@ -168,25 +168,25 @@ Note: if used as a proper noun, capitalize the term. For example, “I am provid
## Tipset
-A [tipset](https://filecoin.io/blog/tipsets-family-based-approach-to-consensus/) is a set of [blocks](https://docs.filecoin.io/reference/general/glossary/#block) that each have the same [height](https://docs.filecoin.io/reference/general/glossary/#block-height) and parent tipset; the Filecoin [blockchain](https://docs.filecoin.io/reference/general/glossary/#blockchain) is a chain of tipsets, rather than a chain of blocks.
+A [tipset](https://filecoin.io/blog/tipsets-family-based-approach-to-consensus/) is a set of [blocks](#block) that each have the same [height](#block-height) and parent tipset; the Filecoin [blockchain](#blockchain) is a chain of tipsets, rather than a chain of blocks.
Each tipset is assigned a weight corresponding to the amount of storage the network is provided per the commitments encoded in the tipset’s blocks. The consensus protocol of the network directs nodes to build on top of the heaviest chain.
-By basing its blockchain on tipsets, Filecoin can allow multiple [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) to create blocks in the same [epoch](https://docs.filecoin.io/reference/general/glossary/#epoch), increasing network throughput. By construction, this also provides network security: a node that attempts to intentionally prevent the valid blocks of a second node from making it onto the canonical chain runs up against the consensus preference for heavier chains.
+By basing its blockchain on tipsets, Filecoin can allow multiple [storage providers](#storage-provider) to create blocks in the same [epoch](#epoch), increasing network throughput. By construction, this also provides network security: a node that attempts to intentionally prevent the valid blocks of a second node from making it onto the canonical chain runs up against the consensus preference for heavier chains.
## Verified client
-To further incentivize the storage of “useful” data over simple [capacity commitments](https://docs.filecoin.io/reference/general/glossary/#capacity-commitment), [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) have the additional opportunity to compete for special [deals](https://docs.filecoin.io/reference/general/glossary/#deal) offered by [verified clients](https://docs.filecoin.io/reference/general/glossary/#verified-client). Such clients are certified with respect to their intent to offer deals involving the storage of meaningful data, and the power a storage provider earns for these deals is augmented by a multiplier.
+To further incentivize the storage of “useful” data over simple [capacity commitments](#capacity-commitment), [storage providers](#storage-provider) have the additional opportunity to compete for special [deals](#deal) offered by [verified clients](#verified-client). Such clients are certified with respect to their intent to offer deals involving the storage of meaningful data, and the power a storage provider earns for these deals is augmented by a multiplier.
## Window Proof-of-Spacetime (WindowPoSt)
-_Window Proof-of-Spacetime_ (WindowPoSt) is the mechanism by which the commitments made by [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) are audited. It sees each 24 hour period broken down into a series of windows. Correspondingly, each storage provider’s set of pledged [sectors](https://docs.filecoin.io/reference/general/glossary/#sector) is partitioned into subsets, one subset for each window. Within a given window, each storage provider must submit a [Proof-of-Spacetime](https://docs.filecoin.io/reference/general/glossary/#proof-of-spacetime-post) for each sector in their respective subset. This requires ready access to each of the challenged sectors, and will result in a proof compressed via [zk-SNARK](https://docs.filecoin.io/reference/general/glossary/#zero-knowledge-succinct-non-interactive-argument-of-knowledge-zk-snark) being published to the Filecoin [blockchain](https://docs.filecoin.io/reference/general/glossary/#blockchain) as a [message](https://docs.filecoin.io/reference/general/glossary/#message) in a [block](https://docs.filecoin.io/reference/general/glossary/#block). In this way, every sector of [pledged storage](https://docs.filecoin.io/reference/general/glossary/#pledged-storage) is audited at least once in any 24 hour period, and a permanent, verifiable, and public record attesting to each storage provider’s continued commitment is kept.
+_Window Proof-of-Spacetime_ (WindowPoSt) is the mechanism by which the commitments made by [storage providers](#storage-provider) are audited. It sees each 24 hour period broken down into a series of windows. Correspondingly, each storage provider’s set of pledged [sectors](#sector) is partitioned into subsets, one subset for each window. Within a given window, each storage provider must submit a [Proof-of-Spacetime](#proof-of-spacetime-post) for each sector in their respective subset. This requires ready access to each of the challenged sectors, and will result in a proof compressed via [zk-SNARK](#zero-knowledge-succinct-non-interactive-argument-of-knowledge-zk-snark) being published to the Filecoin [blockchain](#blockchain) as a [message](#message) in a [block](#block). In this way, every sector of [pledged storage](#pledged-storage) is audited at least once in any 24 hour period, and a permanent, verifiable, and public record attesting to each storage provider’s continued commitment is kept.
-The Filecoin network expects constant availability of stored data. Failing to submit WindowPoSt for a sector will result in a [fault](https://docs.filecoin.io/reference/general/glossary/#fault), and the storage provider supplying the sector will be [slashed](https://docs.filecoin.io/reference/general/glossary/#slash).
+The Filecoin network expects constant availability of stored data. Failing to submit WindowPoSt for a sector will result in a [fault](#fault), and the storage provider supplying the sector will be [slashed](#slash).
## Winning Proof-of-Spacetime (WinningPoSt)
-_Winning Proof-of-Spacetime_ (WinningPoSt) is the mechanism by which [storage providers](https://docs.filecoin.io/reference/general/glossary/#storage-provider) are rewarded for their contributions to the Filecoin network. At the beginning of each [epoch](https://docs.filecoin.io/reference/general/glossary/#epoch), a small number of storage providers are [elected](https://docs.filecoin.io/reference/general/glossary/#election) to each mine a new [block](https://docs.filecoin.io/reference/general/glossary/#block). As a requirement for doing so, each provider is tasked with submitting a compressed [Proof-of-Storage](https://docs.filecoin.io/reference/general/glossary/#proof-of-storage) for a specified [sector](https://docs.filecoin.io/reference/general/glossary/#sector). Each elected provider who successfully creates a block is granted [FIL](https://docs.filecoin.io/reference/general/glossary/#fil), as well as the opportunity to charge other Filecoin participants fees to include [messages](https://docs.filecoin.io/reference/general/glossary/#message) in the block.
+_Winning Proof-of-Spacetime_ (WinningPoSt) is the mechanism by which [storage providers](#storage-provider) are rewarded for their contributions to the Filecoin network. At the beginning of each [epoch](#epoch), a small number of storage providers are [elected](#election) to each mine a new [block](#block). As a requirement for doing so, each provider is tasked with submitting a compressed [Proof-of-Storage](#proof-of-storage) for a specified [sector](#sector). Each elected provider who successfully creates a block is granted [FIL](#fil), as well as the opportunity to charge other Filecoin participants fees to include [messages](#message) in the block.
Storage providers who fail to do this in the necessary window will forfeit their opportunity to mine a block, but will not otherwise incur penalties for their failure to do so.
diff --git a/reference/general/legacy-content.md b/reference/general/legacy-content.md
new file mode 100644
index 000000000..172f8a7f9
--- /dev/null
+++ b/reference/general/legacy-content.md
@@ -0,0 +1,68 @@
+---
+description: >-
+ Legacy content preserved for historical reference. These tools and workflows
+ have been superseded by modern Filecoin storage and development patterns.
+---
+
+# Legacy content
+
+{% hint style="warning" %}
+The content on this page describes tools, workflows, and projects that are **no longer actively maintained**. It is preserved for historical reference only.
+
+For current guidance, see [Upload to Filecoin](../../getting-started/how-storage-works/upload-to-filecoin.md), [PDP](../../storage-providers/pdp/README.md), or [Build on Filecoin](../../build/getting-started.md).
+{% endhint %}
+
+## Smart contracts
+
+### RaaS (Renew, Repair, Replicate as a Service)
+
+RaaS was a smart-contract-based approach to automating storage deal renewal, repair, and replication on Filecoin. It supported both self-hosted and aggregator-hosted (via Lighthouse) architectures.
+
+**Key resources:**
+
+* [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit)
+* [Lighthouse documentation](https://docs.lighthouse.storage/)
+
+### Aggregated deal-making
+
+A workflow for bundling many small data pieces into larger Filecoin deals using data aggregation and Proof of Data Segment Inclusion (PoDSI).
+
+**Key resources:**
+
+* [FRC-0058 — Proof of Data Segment Inclusion](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0058.md#proof-of-data-segment-inclusion)
+* [Data segment specs discussion](https://github.com/filecoin-project/FIPs/discussions/512)
+* [Filecoin Data Tools](https://github.com/application-research/fevm-data-segment)
+
+### Cross-Chain Data Bridge (CCDB)
+
+CCDB enabled EVM-compatible chains (Avalanche, Base, etc.) to initiate Filecoin storage deals via cross-chain messaging through Axelar.
+
+**Key resources:**
+
+* [onramp-contracts](https://github.com/FIL-Builders/onramp-contracts/)
+* [xChainClient](https://github.com/FIL-Builders/xchainClient)
+* [dataBridgeDemo](https://github.com/FIL-Builders/dataBridgeDemo)
+* [Architecture deep-dive (Medium)](https://medium.com/@filoz/under-the-hood-architecture-and-prototype-of-cross-chain-data-storage-6f8ba2c480d6)
+
+### Client contract tutorial
+
+A tutorial on creating storage deals programmatically via FVM smart contracts using the deal-making starter kit.
+
+**Key resources:**
+
+* [FVM deal-making kit](https://github.com/filecoin-project/fvm-starter-kit-deal-making)
+* [ETHGlobal walkthrough (YouTube)](https://www.youtube.com/watch?v=27EV3gQGY9k)
+
+### Chain data query
+
+A tutorial on querying Filecoin chain data from a dApp using ethers.js against a public Glif JSON-RPC endpoint. For current chain access, use the [Mainnet RPCs](../../networks-and-tools/networks/mainnet/rpcs.md) or [Calibration RPCs](../../networks-and-tools/networks/calibration/rpcs.md) and the [FEVM indexers](../../build/advanced/fevm-indexers.md) guidance.
+
+## Projects
+
+### Saturn
+
+Saturn was a Web3 CDN in the Filecoin retrieval market, enabling fast content delivery from Filecoin storage providers. The project is no longer active.
+
+For current retrieval guidance, see [Basic retrieval](../../getting-started/how-retrieval-works/basic-retrieval.md) and [Serving retrievals](../../getting-started/how-retrieval-works/serving-retrievals.md).
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/reference/general/legacy-content)
diff --git a/reference/json-rpc/README.md b/reference/json-rpc/README.md
index e4b70aa63..2c7bfd0f9 100644
--- a/reference/json-rpc/README.md
+++ b/reference/json-rpc/README.md
@@ -26,7 +26,7 @@ curl --location --request POST '' \
1. In a terminal window, use Curl to request the current chain head from a public [Glif](https://glif.io/en) node.\\
* ```shell
- curl -X POST 'https://api.node.glif.io' \
+ curl -X POST 'https://api.node.glif.io/rpc/v1' \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"Filecoin.ChainHead","params":[]}'
```
@@ -42,7 +42,7 @@ curl --location --request POST '' \
```
1. ```shell
- curl -X POST 'https://api.node.glif.io' \
+ curl -X POST 'https://api.node.glif.io/rpc/v1' \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"Filecoin.ChainHead","params":[]}' \
| jq
diff --git a/reference/reference.md b/reference/reference.md
deleted file mode 100644
index 02577ad8e..000000000
--- a/reference/reference.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Reference
-
diff --git a/scripts/check-rpc-endpoints.mjs b/scripts/check-rpc-endpoints.mjs
new file mode 100644
index 000000000..3ca422f46
--- /dev/null
+++ b/scripts/check-rpc-endpoints.mjs
@@ -0,0 +1,330 @@
+#!/usr/bin/env node
+
+const DEFAULT_TIMEOUT_MS = Number(process.env.RPC_CHECK_TIMEOUT_MS ?? 8000);
+
+const endpoints = [
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "https://api.node.glif.io/rpc/v1",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "wss://wss.node.glif.io/apigw/lotus/rpc/v1",
+ },
+ {
+ network: "Filecoin mainnet lite-node",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "wss://wss.node.glif.io/apigw/lotus",
+ expected: "lotus-lite",
+ note: "Used as FULLNODE_API_INFO for Lotus lite nodes, not as a direct JSON-RPC URL.",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "https://rpc.ankr.com/filecoin",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "https://filecoin.chainup.net/rpc/v1",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "wss://filecoin.chainup.net/rpc/v1",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "https://fil.nownodes.io",
+ expected: "auth",
+ note: "Docs say signup/API access may be required.",
+ },
+ {
+ network: "Filecoin mainnet",
+ source: "networks-and-tools/networks/mainnet/rpcs.md",
+ url: "https://filecoin.lava.build",
+ },
+ {
+ network: "Filecoin Calibration",
+ source: "networks-and-tools/networks/calibration/rpcs.md",
+ url: "https://rpc.ankr.com/filecoin_testnet",
+ },
+ {
+ network: "Filecoin Calibration",
+ source: "networks-and-tools/networks/calibration/rpcs.md",
+ url: "https://api.calibration.node.glif.io/rpc/v1",
+ },
+ {
+ network: "Filecoin Calibration",
+ source: "networks-and-tools/networks/calibration/rpcs.md",
+ url: "wss://wss.calibration.node.glif.io/apigw/lotus/rpc/v1",
+ },
+ {
+ network: "Filecoin Calibration lite-node",
+ source: "networks-and-tools/networks/calibration/rpcs.md",
+ url: "wss://wss.calibration.node.glif.io/apigw/lotus",
+ expected: "lotus-lite",
+ note: "Used as FULLNODE_API_INFO for Lotus lite nodes, not as a direct JSON-RPC URL.",
+ },
+ {
+ network: "Local Lotus",
+ source: "reference/exchanges/exchange-integration.md",
+ url: "http://127.0.0.1:1234/rpc/v0",
+ expected: "local",
+ note: "Expected to fail unless a local node is running.",
+ },
+ {
+ network: "Local Filecoin EVM testnet",
+ source: "networks-and-tools/assets/metamask-setup.md",
+ url: "http://localhost:1234/rpc/v1",
+ expected: "local",
+ note: "Expected to fail unless a local node is running.",
+ },
+ {
+ network: "Base Sepolia",
+ source: "build/cookbook/filecoin-pin/erc-8004-agent-registration.md",
+ url: "https://sepolia.base.org",
+ note: "Non-Filecoin RPC used by Filecoin Pin docs.",
+ },
+];
+
+const rpcMethods = [
+ ["eth_chainId", []],
+ ["eth_blockNumber", []],
+ ["Filecoin.ChainHead", []],
+ ["Filecoin.StateNetworkName", []],
+ ["Filecoin.Version", []],
+];
+
+function usage() {
+ console.log(`Usage: node scripts/check-rpc-endpoints.mjs [--json] [--timeout-ms N]
+
+Checks the RPC endpoints currently referenced by the docs and reports whether
+each endpoint responds to Ethereum JSON-RPC and/or Filecoin JSON-RPC probes.
+`);
+}
+
+function parseArgs() {
+ const args = process.argv.slice(2);
+ const options = { json: false, timeoutMs: DEFAULT_TIMEOUT_MS };
+ for (let i = 0; i < args.length; i += 1) {
+ const arg = args[i];
+ if (arg === "--help" || arg === "-h") {
+ usage();
+ process.exit(0);
+ }
+ if (arg === "--json") {
+ options.json = true;
+ continue;
+ }
+ if (arg === "--timeout-ms") {
+ options.timeoutMs = Number(args[i + 1]);
+ i += 1;
+ continue;
+ }
+ throw new Error(`Unknown argument: ${arg}`);
+ }
+ return options;
+}
+
+function withTimeout(promise, timeoutMs, onTimeout) {
+ let timer;
+ return Promise.race([
+ promise.finally(() => clearTimeout(timer)),
+ new Promise((_, reject) => {
+ timer = setTimeout(() => reject(onTimeout()), timeoutMs);
+ }),
+ ]);
+}
+
+async function probeHttp(url, method, params, timeoutMs) {
+ const controller = new AbortController();
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
+ try {
+ const response = await fetch(url, {
+ method: "POST",
+ headers: { "content-type": "application/json" },
+ body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
+ signal: controller.signal,
+ });
+ const text = await response.text();
+ let body;
+ try {
+ body = JSON.parse(text);
+ } catch {
+ body = { parseError: text.slice(0, 240) };
+ }
+ return normalizeRpcResponse(response.status, body);
+ } catch (error) {
+ return { ok: false, transportError: error.message };
+ } finally {
+ clearTimeout(timer);
+ }
+}
+
+async function probeWebSocket(url, method, params, timeoutMs) {
+ if (typeof WebSocket !== "function") {
+ return { ok: false, transportError: "global WebSocket is unavailable in this Node runtime" };
+ }
+
+ return withTimeout(
+ new Promise((resolve) => {
+ const ws = new WebSocket(url);
+ let settled = false;
+ const finish = (result) => {
+ if (settled) return;
+ settled = true;
+ try {
+ ws.close();
+ } catch {
+ // Ignore close errors after failed handshakes.
+ }
+ resolve(result);
+ };
+
+ ws.addEventListener("open", () => {
+ ws.send(JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }));
+ });
+ ws.addEventListener("message", (event) => {
+ let body;
+ try {
+ body = JSON.parse(String(event.data));
+ } catch {
+ body = { parseError: String(event.data).slice(0, 240) };
+ }
+ finish(normalizeRpcResponse(101, body));
+ });
+ ws.addEventListener("error", () => {
+ finish({ ok: false, transportError: "websocket error" });
+ });
+ ws.addEventListener("close", (event) => {
+ finish({ ok: false, transportError: `websocket closed before response (${event.code})` });
+ });
+ }),
+ timeoutMs,
+ () => new Error("websocket timeout"),
+ ).catch((error) => ({ ok: false, transportError: error.message }));
+}
+
+function normalizeRpcResponse(status, body) {
+ if (body?.error) {
+ return {
+ ok: false,
+ status,
+ rpcError: body.error.message ?? JSON.stringify(body.error),
+ code: body.error.code,
+ };
+ }
+ if (Object.hasOwn(body ?? {}, "result")) {
+ return { ok: true, status, result: body.result };
+ }
+ return { ok: false, status, rpcError: body?.parseError ?? "missing JSON-RPC result" };
+}
+
+function hexToNumber(value) {
+ if (typeof value !== "string" || !value.startsWith("0x")) return undefined;
+ return Number.parseInt(value, 16);
+}
+
+function summarizeMethod(method, response) {
+ if (!response.ok) return response;
+ if (method === "eth_chainId") {
+ return { ...response, chainId: hexToNumber(response.result), raw: response.result };
+ }
+ if (method === "eth_blockNumber") {
+ return { ...response, height: hexToNumber(response.result), raw: response.result };
+ }
+ if (method === "Filecoin.ChainHead") {
+ return {
+ ...response,
+ height: response.result?.Height,
+ cids: response.result?.Cids?.map((cid) => cid["/"]) ?? [],
+ };
+ }
+ return response;
+}
+
+async function probeEndpoint(endpoint, timeoutMs) {
+ const protocol = new URL(endpoint.url).protocol;
+ const transport = protocol === "wss:" || protocol === "ws:" ? "websocket" : "http";
+ const methodResults = await Promise.all(
+ rpcMethods.map(async ([method, params]) => {
+ const response =
+ transport === "websocket"
+ ? await probeWebSocket(endpoint.url, method, params, timeoutMs)
+ : await probeHttp(endpoint.url, method, params, timeoutMs);
+ return [method, summarizeMethod(method, response)];
+ }),
+ );
+ const methods = Object.fromEntries(methodResults);
+
+ const ethOk = methods.eth_chainId?.ok || methods.eth_blockNumber?.ok;
+ const filecoinOk = methods["Filecoin.ChainHead"]?.ok || methods["Filecoin.StateNetworkName"]?.ok;
+ const valid = Boolean(ethOk || filecoinOk);
+ return {
+ ...endpoint,
+ transport,
+ valid,
+ ethOk,
+ filecoinOk,
+ chainId: methods.eth_chainId?.chainId,
+ ethHeight: methods.eth_blockNumber?.height,
+ filecoinHeight: methods["Filecoin.ChainHead"]?.height,
+ networkName: methods["Filecoin.StateNetworkName"]?.result,
+ version: methods["Filecoin.Version"]?.result,
+ methods,
+ };
+}
+
+function statusLabel(result) {
+ if (result.valid) return "OK";
+ if (result.expected === "auth") return "AUTH";
+ if (result.expected === "local") return "LOCAL";
+ if (result.expected === "lotus-lite") return "LITE";
+ return "FAIL";
+}
+
+function compactError(result) {
+ const errors = Object.entries(result.methods)
+ .filter(([, response]) => !response.ok)
+ .map(([method, response]) => `${method}: ${response.transportError ?? response.rpcError}`);
+ return errors.slice(0, 2).join("; ");
+}
+
+function printTable(results) {
+ for (const result of results) {
+ const parts = [
+ `[${statusLabel(result)}] ${result.url}`,
+ ` source: ${result.source}`,
+ ` network: ${result.network}`,
+ ` support: eth=${Boolean(result.ethOk)} filecoin=${Boolean(result.filecoinOk)}`,
+ ];
+ if (result.chainId !== undefined) parts.push(` chainId: ${result.chainId}`);
+ if (result.ethHeight !== undefined) parts.push(` eth_blockNumber: ${result.ethHeight}`);
+ if (result.filecoinHeight !== undefined) parts.push(` Filecoin.ChainHead height: ${result.filecoinHeight}`);
+ if (result.networkName) parts.push(` Filecoin.StateNetworkName: ${result.networkName}`);
+ if (result.version) parts.push(` Filecoin.Version: ${JSON.stringify(result.version)}`);
+ if (result.note) parts.push(` note: ${result.note}`);
+ if (!result.valid) parts.push(` errors: ${compactError(result)}`);
+ console.log(parts.join("\n"));
+ console.log("");
+ }
+}
+
+const options = parseArgs();
+const results = await Promise.all(endpoints.map((endpoint) => probeEndpoint(endpoint, options.timeoutMs)));
+
+if (options.json) {
+ console.log(JSON.stringify(results, null, 2));
+} else {
+ printTable(results);
+ const checkable = results.filter((result) => !result.expected);
+ const ok = checkable.filter((result) => result.valid).length;
+ const expected = results.length - checkable.length;
+ console.log(`Summary: ${ok}/${checkable.length} direct public endpoints responded to at least one RPC probe; ${expected} endpoints are auth-required, local-only, or lite-node connection strings.`);
+}
+
+process.exitCode = results.some((result) => !result.valid && !result.expected) ? 1 : 0;
diff --git a/smart-contracts/advanced/README.md b/smart-contracts/advanced/README.md
deleted file mode 100644
index ab457d663..000000000
--- a/smart-contracts/advanced/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- This section contains information on the advances features of the Filecoin
- network, specifically focused at smart contract developers.
----
-
-# Advanced
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced)
diff --git a/smart-contracts/advanced/aggregated-deal-making.md b/smart-contracts/advanced/aggregated-deal-making.md
deleted file mode 100644
index 91d774469..000000000
--- a/smart-contracts/advanced/aggregated-deal-making.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-description: >-
- Learn about aggregated deal-making on the Filecoin blockchain, where
- developers can combine small storage deals into larger, more attractive deals
- for storage providers.
----
-
-# Aggregated deal-making
-
-Filecoin is designed to store large data for extended periods. Small-scale data (<4 GiB) can be combined with other small deals into larger ones, either on-chain or off-chain. Smart contracts can handle programmatic data storing. This article explains the process, referring to small-scale data as _sub-piece data_.
-
-For context, a [_piece_](https://spec.filecoin.io/systems/filecoin\_files/piece/) of data in Filecoin refers to a unit of negotiation for data to be stored on Filecoin. A sub-piece refers to a sub-unit of that larger piece. These are typically small data like NFT images, short videos and more.
-
-Aggregation is the process of combining multiple packages of _sub-piece data_ into a single package. This large package is stored on the Filecoin network instead of multiple smaller packages. Aggregation can be done off-chain or on-chain.
-
-## Process
-
-The base interface for aggregation requires the following components:
-
-1. A client who has data to upload.
-2. An aggregator platform that clients can interact with to request to make a storage deal and retrieve Proof of Deal Sub-piece Inclusion (PoDSI) from.
-3. An aggregation node to aggregate the sub-piece data into a larger file and to provide PoDSI that can be called via an API endpoint. Aggregation of data always happens off-chain. This is typically hosted by the aggregator platform
-4. An optional aggregation smart contract that clients can submit an on-chain request to, to request an off-chain aggregation node to make a storage deal
-
-
-
-## Proof of Deal Sub-piece Inclusion (PoDSI)
-
-Proof of Deal Sub-piece Inclusion (PoDSI) is motivated by a need for sub-piece data uploads to eventually issue verification and proof that the data was included in an associated deal on Filecoin. PoDSI is heavily used in the aggregated deal-making workflow.
-
-PoDSI is a proof construction and is generated for each sub-piece CID (within the large data segment) and stored in an off-chain database.
-
-The proof consists of two elements:
-
-1. An inclusion proof of a sub-tree, which contains the size and position of the sub-piece data in the larger aggregated data piece, corresponding to the tree of the aggregator's committed larger aggregated data piece.
-2. An inclusion proof of the double leaf data segment descriptor, which describes the sub-piece data within the larger [data segment index](https://github.com/filecoin-project/go-data-segment), which is contained at the end of a deal, describing all the data segments contained within that deal.
-
-### Requesting for aggregation off-chain
-
-To request for aggregation and PoDSI off-chain, developers interact with an aggregator platform:
-
-1. The client submits sub-piece data to an aggregator platform. The aggregator prepares the data and generates the sub-piece CID, known as pCID, and URL to download the CAR file.
-2. The aggregator hosts an off-chain aggregation node, which aggregates the sub-piece CAR files into a larger aggregated CAR file.
-3. Simultaneously, the aggregator aggregates indexed data segments (based on specs [here](https://github.com/filecoin-project/FIPs/discussions/512)). It runs the proofing library and generates PoDSI proofs for each sub-piece pCID, storing them in an off-chain database.
-4. The aggregator uses [programmatic deal-making](../programmatic-storage/direct-deal-making.md) or [manual deal-making](https://lotus.filecoin.io/tutorials/lotus/build-with-lotus-api/) to make storage deals with storage providers for the aggregated larger CAR file.
-5. Storage Providers download the aggregated CAR file and publish storage deals.
-6. Clients can query a proofing endpoint provided by the aggregator, which will look up the sub-piece CID (pCID) in the database and return the PoDSI proof, aggregated CID, and associated deal ID.
-7. Clients can use the sub-piece pCID for on-chain verification with the aggregation smart contract, which will verify the Merkle proof to ensure the sub-piece pCID (CommPc) matches the piece CID (CommPa) of the associated deal ID.
-
-[Lighthouse.storage](https://lighthouse.storage/) is the first aggregator platform available. You can find their [docs on how to utilize their SDK for the above process](https://docs.lighthouse.storage/).
-
-
-
-### Requesting for aggregation on-chain
-
-On-chain aggregation and PoDSI requests go through aggregator oracle smart contracts:
-
-1. The client [prepares the data](../../storage-providers/filecoin-deals/storage-deals.md/#data-preparation) and generates the sub-piece CID, known as pCID (CommPc). Here is an easy [data preparation tool](https://data.lighthouse.storage/) by [lighthouse.storage](https://lighthouse.storage).
-2. The client submits a sub-piece CID (CommPc) with metadata (e.g. URL to download the sub-piece CAR file) directly to the aggregation smart contract.
-3. The aggregator watches the aggregation contract, and when the aggregator decides there are enough sub-pieces, it downloads all sub-piece data, to generate the aggregated piece from the CAR file URL.
-4. The aggregator aggregates indexed data segments into a larger data file for deal-making (based on specs [here](https://github.com/filecoin-project/FIPs/discussions/512)).
-5. The aggregator combines the sub-piece data into the aggregated CommP (CommPa) by computing within aggregator's off-chain node.
-6. The aggregator uses [programmatic deal-making](../programmatic-storage/direct-deal-making.md) or [manual deal-making](https://lotus.filecoin.io/tutorials/lotus/build-with-lotus-api/) to make storage deals with storage providers for the aggregated larger CAR file.
-7. Storage Providers download the aggregated CAR file and publish storage deals. Upon the client's request, they can find the data via sub-piece CID.
-8. Clients can query the aggregation smart contract, which notifies the aggregator platform to look up the sub-piece CID (pCID) in its aggregation node's database and return the PoDSI proof, aggregated CID, and associated deal ID.
-9. Simultaneously, clients can use the sub-piece pCID for on-chain verification with the aggregation smart contract, which will verify the Merkle proof to ensure the sub-piece pCID (CommPc) matches the piece CID (CommPa) of the associated deal ID.
-
-
-
-To build your own on-chain aggregator oracle smart contract, check out one of the implementations with [Filecoin Data Tools](https://github.com/application-research/fevm-data-segment).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/advanced/aggregated-deal-making)
diff --git a/smart-contracts/developing-contracts/README.md b/smart-contracts/developing-contracts/README.md
deleted file mode 100644
index 56a8f07d6..000000000
--- a/smart-contracts/developing-contracts/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- This section contains a wealth of information specifically about building
- smart contracts on the Filecoin network.
----
-
-# Developing contracts
-
-This section covers how to build dApps by writing smart contracts in the Filecoin Virtual Machine. The docs in this section explain:
-- How to [get test tokens](https://docs.filecoin.io/smart-contracts/developing-contracts/get-test-tokens), called tFIL, from a faucet.
-- How to set up [Remix](https://docs.filecoin.io/smart-contracts/developing-contracts/remix), to make use of Ethereum tooling while building Filecoin dApps.
-- How to set up [Hardhat](https://docs.filecoin.io/smart-contracts/developing-contracts/hardhat), to build FVM dApps in an environment familiar to Ethereum developers.
-- How to make use of [Foundry](https://docs.filecoin.io/smart-contracts/developing-contracts/foundry), expanding the utilities available for interacting with FVM contracts.
-- Where to [find contract templates](https://docs.filecoin.io/smart-contracts/developing-contracts/solidity-libraries) from a range of third party Solidity libraries.
-- How to [Call built-in actors](https://docs.filecoin.io/smart-contracts/developing-contracts/call-built-in-actors) using the Protocol API or the Solidity Library.
-- How to make use of the Filecoin [Solidity Libraries](https://docs.filecoin.io/smart-contracts/developing-contracts/filecoin.sol) to build FVM dApps using a language familiar to Ethereum developers.
-- How to perform a storage deal using the [direct dealmaking client contract](https://docs.filecoin.io/smart-contracts/developing-contracts/client-contract-tutorial).
-- How to [replicate, renew, or repair (RaaS)](https://docs.filecoin.io/smart-contracts/developing-contracts/using-raas) storage deals on Filecoin.
-- How to [verify a contract](https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract) using one of Filecoin's many block explorers.
-- The [best practices](https://docs.filecoin.io/smart-contracts/developing-contracts/best-practices) for building FVM dApps.
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts)
diff --git a/smart-contracts/developing-contracts/client-contract-tutorial.md b/smart-contracts/developing-contracts/client-contract-tutorial.md
deleted file mode 100644
index 3642b6da8..000000000
--- a/smart-contracts/developing-contracts/client-contract-tutorial.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-description: >-
- This page covers the client contract, and includes a tutorial on how
- developers can use the client contract to create storage deals
- programmatically.
----
-
-# Direct deal-making with Client contract
-
-In this tutorial we will cover the background of creating storage deals using smart contracts, and how to create storage deals with smart contracts on the [Filecoin virtual machine](../../reference/general/glossary.md#filecoin-virtual-machine).
-
-You can find a video form of this walkthrough on [ETHGlobal’s YouTube Channel](https://www.youtube.com/watch?v=27EV3gQGY9k).
-
-## Prerequisites
-
-Before continuing, make sure you have the following software installed and prerequisites ready:
-
-* Git
-* NodeJS
-* Yarn or NPM (Yarn is used in this tutorial)
-* A code editor such as VS Code
-* A wallet with Calibration testnet FIL
-
-## Steps
-
-Let’s run through how to create storage deals using smart contracts.
-
-### Setup
-
-First, let’s grab the kit and set up the development environment.
-
-1. Clone the Filecoin virtual machine deal-making kit, including all submodules:
-
- ```shell
- git clone --recurse-submodules https://github.com/filecoin-project/fvm-starter-kit-deal-making.git
- ```
-
- This will copy the FVM deal-making kit into your current directory and initiate the `go-generate-car` submodule.
-2. Move into the `fvm-starter-kit-deal-making` directory and grab all the dependencies using `yarn`:
-
- ```shell
- cd fvm-starter-kit-deal-making
- yarn
- ```
-3. Now that all the packages are downloaded, you need to create a `.env` file with your private key. This is so the Hardhat kit knows what wallet to use for transactions. Open up the repo in your code editor of choice and find the file titled `.env.example`. Rename the file to `.env`. You can do this in your terminal by running:
-
- ```shell
- mv .env.example .env
- ```
-4. Within the `.env` file, replace the example private key with your actual private key. If you are using Metamask, follow [this tutorial to get your private key](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/).
-
-{% hint style="info" %}
-Take precautions and never share your private key with anyone! Also make sure to not check your private key into Git. The `.gitignore` of the Hardhat kit is already set to ignore `.env` files.
-{% endhint %}
-
-5. Deploy the contracts with `hardhat`:
-
- ```shell
- yarn hardhat deploy
- ```
-
- This should compile and deploy all the contracts, including the client contract, which is the one we will be interacting with. Take note of the address of the deployed contract; we'll be using this later.
-
-### Preparing a file for storage
-
-Before storing a file with a storage provider it needs to be prepared by turning it into a `.car` file. The metadata also needs to be recorded. The Hardhat kit has a tool [which can do this for you](https://github.com/filecoin-project/fevm-hardhat-kit/tree/main/tools). However, to keep things nice and simple, we’re going to use the [FVM Data Depot website](https://data.lighthouse.storage/). This website will automatically convert files to the `.car` format, output all the necessary metadata, and act as an HTTP retrieval point for the storage providers.
-
-1. Go to the [FVM Data Depot website](https://data.lighthouse.storage/) and create an account.
-2. Click **Upload File** and select a file you wish to upload.
-3. Select the **File ID** of the file to read all the relevant metadata. Make a note of the:
-
- * Piece CID
- * Payload CID
- * Car size
- * Piece size
- * URL
-
- We’ll use this information in the next step when invoking the `MakeDealProposal` method.
-
-### Invoke the `MakeDealProposal` method
-
-Now that we have the `.car` file prepared in the data depot, we can invoke the MakeDealProposal method on the smart contract we deployed earlier. To do this, we will run the `make-deal-proposal` task in Hardhat. There are quite a few parameters to include in this call:
-
-* `contract`: the address of your deployed `ClientContract.sol`.
-* \`piece-cid: gathered from the previous step.
-* `piece-size`: gathered from the previous step.
-* `car-size`: gathered from the previous step.
-* `start-epoch`: The block number you want the deal to begin on. It should be a block in the future. You can find the current block number on [Beryx](https://beryx.io/), making sure to select the correct network.
-* `end-epoch`: The block number you want the deal to end on. It should be a block in the future and after the `Start-Epoch`. You can find the current block number on [FILFOX](https://filfox.info/en).
-* `location-ref`: The location of where the storage provider can find the .car file. This is the `URL` from the previous step.
-
-When calling the `make-deal-proposal` task in Hardhat, your command will look something like this:
-
-```shell
-yarn hardhat make-deal-proposal \
- --contract 0x0219eB1740C315fe5e20612D7E13AE2A883dB3f4 \
- --piece-cid baga6ea4seaqn4eomxfk3ttog7lnvlvedu7nia377w4gotw2pm746k6kq7gwe6ga \
- --piece-size 2097152 \
- --verified-deal false \
- --car-size 1439368 \
- --label baga6ea4seaqn4eomxfk3ttog7lnvlvedu7nia377w4gotw2pm746k6kq7gwe6ga \
- --start-epoch 180000 \
- --end-epoch 700000 \
- --storage-price-per-epoch 0 \
- --provider-collateral 0 \
- --client-collateral 0 \
- --extra-params-version 1 \
- --location-ref "https://bafybeidguwwno5ohjss7g4l6ygvyy3dzxxrkkgtxqkobnnxnu62aw4ipxa.ipfs.w3s.link/ipfs/bafybeidguwwno5ohjss7g4l6ygvyy3dzxxrkkgtxqkobnnxnu62aw4ipxa/baga6ea4seaqn4eomxfk3ttog7lnvlvedu7nia377w4gotw2pm746k6kq7gwe6ga.car \
- --skip-ipni-announce true \
- --remove-unsealed-copy true \
-```
-
-Parameters such as the `collateral` and `price-per-epoch` are set to `0`. On mainnet, these would be determined by storage providers, but since this is on the Calibration testnet, the storage providers should pick up the jobs even with these parameters set to `0`.
-
-### Storage provider picks up the job
-
-Now if you’ve invoked the task with all the correct parameters, the method will execute on-chain and emit an event that Boost storage providers will be listening for. If the deal is well-formed and the parameters are acceptable, they will download the `.car` file, double-check to ensure the `piece-cid` and `piece-size` match the deal, and publish your storage deal! This could take up to a day. Once the deal is published, you'll be able to find it on a Calibration testnet [block explorer](../../networks/calibration/explorers.md). The client in the deal should be the `t4` address of the smart contract we called `MakeStorageDeal` on.
-
-### Monitoring deal proposal acceptance
-
-After emitting an event and waiting for storage providers to accept your deal, you can monitor its status on a provided Boost logs dashboard. This feature is only available on the Calibration testnet. [See this guide on GitHub](https://github.com/filecoin-project/community/discussions/659) for help diagnosing why deals might not be accepted and adjusting your proposal for re-submission.
-
-## Conclusion
-
-During this tutorial, we have shown the significance of making deals using smart contracts and then walked through making a storage deal using the FVM deal-making kit and web3.storage. Developers can make use of this workflow to integrate decentralized storage on Filecoin with their smart contracts and decentralized applications.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/client-contract-tutorial)
diff --git a/smart-contracts/developing-contracts/foundry.md b/smart-contracts/developing-contracts/foundry.md
deleted file mode 100644
index 91c5ad3b8..000000000
--- a/smart-contracts/developing-contracts/foundry.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-description: >-
- Foundry is a fast toolkit for application development written in Rust equipped
- with a testing framework, as well as utilities for interacting with smart
- contracts and getting chain data.
----
-
-# Foundry
-
-The template repository contains submodules and remappings for ds-test assertions for testing, solmate building blocks for contracts, and forge-std to layer on top of EVM cheat codes to improve UX.
-
-## Prerequisites
-
-You must have the following installed:
-
-- [Git](https://git-scm.com/)
-- [Yarn](https://yarnpkg.com/)
-
-You should also have an address on the Filecoin Calibration testnet. See the [MetaMask setup page](../../basics/assets/metamask-setup.md) for information on how to get an address. You also need test `tFIL` in your wallet.
-
-## Steps
-
-1. Clone the `filecoin-project/fevm-foundry-kit` repository and move into the `fevm-foundry-kit` directory:
-
-```
-git clone https://github.com/filecoin-project/fevm-foundry-kit/tree/main.git
-cd fevm-foundry-kit
-```
-
-2. Install the project dependencies with Yarn:
-
-```
-yarn install
-```
-
-3. Export your private key from MetaMask. See the [MetaMask documentation](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) to find out how to export your private key.
-
-4. Create your env file by running
-
-```
-cp .env.example .env
-```
-
-5. In your newly created`.env` replace `PRIVATE_KEY` with the one gathered from MetaMask. Also, do the same for the `CALIBRATIONNET_RPC_URL`.:
-
-```bash
-PRIVATE_KEY=eed8e9d727a647f7302bab440d405ea87d36726e7d9f233ab3ff88036cfbce9c
-CALIBRATIONNET_RPC_URL=https://api.calibration.node.glif.io/rpc/v1
-```
-
-6. Inside the `src` folder in a contract called `SimpleCoin.sol`. Deploy this contract using Foundry:
-
-```shell
-forge build
-forge create --rpc-url https://api.calibration.node.glif.io/rpc/v1 --private-key $PRIVATE_KEY src/SimpleCoin.sol:SimpleCoin --broadcast
-```
-
-7. You can now interact with your contract using the contract address given by Foundry.
-
-Done! For more information, see the [Foundry book](https://book.getfoundry.sh/).
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/foundry)
diff --git a/smart-contracts/developing-contracts/get-test-tokens.md b/smart-contracts/developing-contracts/get-test-tokens.md
deleted file mode 100644
index 5b5b61a36..000000000
--- a/smart-contracts/developing-contracts/get-test-tokens.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-description: >-
- Test funds are available to developer so that they can test their smart
- contracts and applications within the confines of a test network. This page
- covers how to get test funds.
----
-
-# Get test tokens
-
-## Calibration testnet
-
-MetaMask is one of the easier ways to manage addresses on the Calibration testnet. MetaMask uses the `t4` [address type](../filecoin-evm-runtime/address-types.md), which allows developers to create and manage Solidity contracts easily. Follow the [MetaMask setup guide](../../basics/assets/metamask-setup.md) if you haven’t set up an address in your MetaMask wallet yet.
-
-1. In your browser, open MetaMask and copy your address to your clipboard.
-2. Go to [faucet.calibnet.chainsafe-fil.io](https://faucet.calibnet.chainsafe-fil.io) and click **Send Funds**.
-3. Paste your address into the address field and click **Send funds**:
-
- 
-4. The webpage will give you a transaction ID:
-
- 
-5. You can copy this ID into a block explorer to track the progress of your transaction:
-
- 
-
-That’s all there is to it! Getting `tFil` is easy!
-
-## Local testnet
-
-Before we begin, you must have a local testnet running. Follow the [Run a local network guide](https://docs.filecoin.io/networks/local-testnet/set-up/) if you haven’t got a local testnet set up yet.
-
-1. Change directory to where you created the `lotus` and `lotus-miner` binaries. If you followed the [Run a local network guide](https://docs.filecoin.io/networks/local-testnet/set-up/) these binaries will be in `~/lotus-devnet`:
-
-```shell
-cd ~/lotus-devnet
-```
-
-2. View the wallets available on this node with `lotus wallet list`:
-
-```shell
-./lotus wallet list
-```
-
-3. Create the send request with `lotus send`, supplying the pre-mined `t3q4o...` address as the `--from` address, the new `t1snl...` address as the receiving address, and the amount of FIL we want to send:
-
-```shell
-./lotus wallet list
-./lotus send --from
-```
-
-For example:
-
-```shell
-./lotus send --from t3q4o7gkwe7p7xokhgws4rwntj7yqfhpj5pm6cqc7dycl7cwk4uvgh2odwdvge5re7ne5gcc6xluifss5uu5cq t1snly7vh4mjtjznwze56ihrdhzfwvbajywwmrenq 2000
-```
-
-4. Check the balance of your new `t1snl...` address with `lotus wallet balance`:
-
-```shell
-./lotus wallet balance
-```
-
-For example:
-
-```shell
-./lotus wallet balance t1snly7vh4mjtjznwze56ihrdhzfwvbajywwmrenq
-```
-
-If you want to manage your local testnet tokens in MetaMask you will need to create a `t4` address. You can create a `t4` address using `lotus wallet new deleated`. Once you have a `t4` address you can [connect MetaMask to your local testnet](https://docs.filecoin.io/basics/assets/metamask-setup/) to see the new balance within the MetaMask extension.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/get-test-tokens)
diff --git a/smart-contracts/developing-contracts/using-raas.md b/smart-contracts/developing-contracts/using-raas.md
deleted file mode 100644
index 3ec53000c..000000000
--- a/smart-contracts/developing-contracts/using-raas.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-description: >-
- This page is a tutorial on how to replicate, renew and repair storage deals on
- Filecoin.
----
-
-# Using RaaS
-
-RaaS refers to replication, renewal and repair as a service, for data stored in storage deals on Filecoin. You can read more [here](../programmatic-storage/raas-interfaces.md).
-
-In this article, we will cover how to create storage deals, with replication, renew and repair requirements, via a smart contract. This utilizes the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit).
-
-### Interacting with the Smart Contract
-
-First, you need to:
-
-* EITHER start an instance of the BaseInterface by deploying a contract that inherits from `IAggregatorOracle` (you can do so via. `yarn deploy` in the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit))
-* OR use an existing instance of the FullInterface located at
- * Calibration Testnet: `0x6ec8722e6543fB5976a547434c8644b51e24785b`
-
-Interact with the smart contract by submitting a CID of your choice to the `submit` function. This will create a new deal request that will be picked up by the RaaS services.
-
-```javascript
-// contractInstance is the address of the contract you deployed or the FullInterface address above.
-const dealStatus = await ethers.getContractAt("DealStatus", contractInstance);
-// Submit the CID of the file you want to upload to the Filecoin network in the following way.
-await dealStatus.submit(ethers.utils.toUtf8Bytes(newJob.cid));
-```
-
-The [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit) provides you with a frontend that allows you to upload your file to Lighthouse, get a CID for the uploaded file, then seamlessly submit the CID to the smart contract (accessible via `yarn start`).
-
-Before that, you need to know how to register the various RaaS workers. Note that RaaS functionality will NOT function automatically if deals are only created using submit function.
-
-### Add Replication, Renewal, Repair Workers
-
-You can add workers to perform replication, renewal, and repair jobs by having them listen to the `SubmitAggregatorRequest`. The methods for doing so differ between the Base and Full interfaces.
-
-If you are running a base interface (specifically, the one in the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit)), there's an event listener inside the RaaS service node that you can use to listen for new deal requests.
-
-This event listener performs processing for each job submitted to the contract to add RaaS service workers and eventually to call `complete` on the contract.
-
-```javascript
-// Initialize the listener for the Deal Creation event
-async function initializeDealCreationListener() {
- const dealStatus = await ethers.getContractAt(contractName, contractInstance);
-
- /// Logic for handling SubmitAggregatorRequest events
- function handleEvent(transactionId, cid) {
- console.log(`Received SubmitAggregatorRequest event: (Transaction ID: ${transactionId}, CID: ${cid})`);
- // ... other code to handle the event emission
-
- (async () => {
- // ... other code
-
- // After processing this event, reattach the event listener
- if (dealStatus.listenerCount("SubmitAggregatorRequest") === 0) {
- dealStatus.once("SubmitAggregatorRequest", handleEvent);
- }
- })();
- }
-
- // Start listening to the first event and recursively handle the next events
- if (dealStatus.listenerCount("SubmitAggregatorRequest") === 0) {
- dealStatus.once("SubmitAggregatorRequest", handleEvent);
- }
-}
-```
-
-To use this, call `yarn service` in the terminal and proceed through the frontend, as you normally would when uploading a file. Register the workers using the autocompleted CID that appears in the box.
-
-If you want to register the workers manually for a job that you didn't upload, paste in the known CID of your file into the box and register the jobs.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/using-raas)
diff --git a/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry.md b/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry.md
deleted file mode 100644
index fc514a988..000000000
--- a/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-description: >-
- Learn how to verify smart contracts on the Filecoin network using Foundry
- with various verification services including Blockscout, Sourcify, and Filfox.
----
-
-# Contract Verification with Foundry
-
-This guide shows you how to verify your smart contracts using Foundry on the Filecoin network.
-
-## Prerequisites
-
-- A Foundry project set up for Filecoin development
-- If you don't have a Foundry project, check out the [FEVM Foundry Kit](/smart-contracts/developing-contracts/foundry.md)
-- A deployed contract address
-- Contract constructor arguments (if any)
-
-## Verification Methods
-
-### Blockscout Verification
-
-Blockscout is a popular blockchain explorer that supports contract verification.
-
-**Verify on Calibration Testnet:**
-
-```bash
-forge verify-contract \
- --verifier blockscout \
- --verifier-url 'https://filecoin-testnet.blockscout.com/api/' \
- --force \
- --skip-is-verified-check \
- 0xYourContractAddress \
- src/MyContract.sol:MyContract
-```
-
-**Verify on Filecoin Mainnet:**
-
-```bash
-forge verify-contract \
- --verifier blockscout \
- --verifier-url 'https://filecoin.blockscout.com/api/' \
- --force \
- --skip-is-verified-check \
- 0xYourContractAddress \
- src/MyContract.sol:MyContract
-```
-
-### Sourcify Verification
-
-Sourceify provides decentralized contract verification.
-
-**Verify on Filecoin Mainnet:**
-
-```bash
-forge verify-contract 0xYourContractAddress \
- src/MyToken.sol:MyToken \
- --chain-id 314 \
- --verifier sourcify \
- --verifier-url https://sourcify.dev/server/ \
- --guess-constructor-args
-```
-
-**Verify on Calibration Testnet:**
-
-```bash
-forge verify-contract 0xYourContractAddress \
- src/MyToken.sol:MyToken \
- --chain-id 314159 \
- --verifier sourcify \
- --verifier-url https://sourcify.dev/server/ \
- --guess-constructor-args
-```
-
-For more information, see the [Sourcify documentation](https://docs.sourcify.dev/docs/how-to-verify/).
-
-### Filfox Verification
-
-Filfox is the native Filecoin explorer with dedicated verification support.
-
-**Installation:**
-
-```bash
-npm install -g @fil-b/filfox-verifier
-```
-
-**Usage:**
-
-```bash
-filfox-verifier forge --chain
-```
-
-**Examples:**
-
-```bash
-# Verify on Filecoin Mainnet
-filfox-verifier forge 0xYourContractAddress src/MyContract.sol:MyContract --chain 314
-
-# Verify on Calibration Testnet
-filfox-verifier forge 0xYourContractAddress src/MyContract.sol:MyContract --chain 314159
-```
-
-For detailed information, see the [@fil-b/filfox-verifier documentation](https://www.npmjs.com/package/@fil-b/filfox-verifier).
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry)
diff --git a/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat.md b/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat.md
deleted file mode 100644
index d615205d6..000000000
--- a/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-description: >-
- Learn how to verify smart contracts on the Filecoin network using Hardhat
- with various verification services including Blockscout, Sourcify, and Filfox.
----
-
-# Contract Verification with Hardhat
-
-This guide shows you how to verify your smart contracts using Hardhat on the Filecoin network.
-
-## Prerequisites
-
-- A Hardhat project set up for Filecoin development
-- If you don't have a Hardhat project, check out the [FEVM Hardhat Kit](/smart-contracts/developing-contracts/hardhat.md)
-- A deployed contract address
-- Contract constructor arguments (if any)
-
-## Verification Methods
-
-### Blockscout Verification
-
-Blockscout is a popular blockchain explorer that supports contract verification. Add the following configuration to your `hardhat.config.ts`:
-
-```typescript
-const config: HardhatUserConfig = {
- solidity: {
- ...
- },
- networks: {
- filecoin: {
- ...
- },
- calibration: {
- ...
- },
- },
- // Configuration for hardhat-verify plugin with Blockscout API
- etherscan: {
- apiKey: {
- filecoin: "empty",
- calibration: "empty",
- },
- customChains: [
- {
- network: "filecoin",
- chainId: 314,
- urls: {
- apiURL: "https://filecoin.blockscout.com/api",
- browserURL: "https://filecoin.blockscout.com",
- },
- },
- {
- network: "calibration",
- chainId: 314159,
- urls: {
- apiURL: "https://filecoin-testnet.blockscout.com/api",
- browserURL: "https://filecoin-testnet.blockscout.com",
- },
- },
- ],
- }
-};
-
-export default config;
-```
-
-**Verify on Filecoin Mainnet:**
-```bash
-npx hardhat verify $CONTRACT_ADDRESS_TO_VERIFY $CONTRACT_CONSTRUCTOR_ARGS --network filecoin
-```
-
-**Verify on Calibration Testnet:**
-```bash
-npx hardhat verify $CONTRACT_ADDRESS_TO_VERIFY $CONTRACT_CONSTRUCTOR_ARGS --network calibration
-```
-
-**Troubleshooting:**
-If your contract appears already verified but shows a mismatch, use the `--force` flag:
-```bash
-npx hardhat verify $CONTRACT_ADDRESS_TO_VERIFY $CONTRACT_CONSTRUCTOR_ARGS --network filecoin --force
-```
-
-### Sourcify Verification
-
-Sourcify provides decentralized contract verification. Include the Blockscout configuration above and add the following Sourcify configuration:
-
-```typescript
-const config: HardhatUserConfig = {
- ...
- // Configuration for hardhat-verify plugin to also verify on Sourcify
- sourcify: {
- enabled: true, // verifies both on Sourcify and on Blockscout
- // Optional: specify a different Sourcify server
- apiUrl: "https://sourcify.dev/server",
- // Optional: specify a different Sourcify repository
- browserUrl: "https://repo.sourcify.dev",
- },
-};
-
-export default config;
-```
-
-This configuration enables dual verification on both Sourcify and Blockscout when running the `npx hardhat verify` task.
-
-For more information, see the [Sourcify documentation](https://docs.sourcify.dev/docs/how-to-verify/).
-
-### Filfox Verification
-
-Filfox is the native Filecoin explorer with dedicated verification support.
-
-**Installation:**
-
-Install the `@fil-b/filfox-verifier` package into your Hardhat project.
-```bash
-npm install -g @fil-b/filfox-verifier
-```
-
-**Configuration:**
-Import the plugin in your Hardhat configuration file. This will add the `verifyfilfox` task into your Hardhat project!
-
-```javascript
-// hardhat.config.js
-require("@fil-b/filfox-verifier/hardhat");
-
-// or in hardhat.config.ts
-import "@fil-b/filfox-verifier/hardhat";
-```
-
-**Usage:**
-```bash
-# Verify on Filecoin Mainnet
-npx hardhat verifyfilfox --address 0xYourContractAddress --network filecoin
-
-# Verify on Calibration Testnet
-npx hardhat verifyfilfox --address 0xYourContractAddress --network calibration
-```
-
-For detailed information, see the [@fil-b/filfox-verifier documentation](https://www.npmjs.com/package/@fil-b/filfox-verifier).
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat)
diff --git a/smart-contracts/developing-contracts/verify-a-contract/programmatic/programmatic.md b/smart-contracts/developing-contracts/verify-a-contract/programmatic/programmatic.md
deleted file mode 100644
index ebe4670d0..000000000
--- a/smart-contracts/developing-contracts/verify-a-contract/programmatic/programmatic.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to programmatically verify smart contracts on the Filecoin network
- using popular development frameworks like Hardhat and Foundry.
----
-
-# Programmatic Contract Verification
-
-Programmatic verification allows you to automate the contract verification process directly from your development environment. This approach is ideal for CI/CD pipelines and streamlined deployment workflows.
-
-## Available Frameworks
-
-Choose your preferred development framework:
-
-- **[Hardhat](/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat.md)** - Popular Ethereum development environment with extensive plugin ecosystem
-- **[Foundry](/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry.md)** - Fast, portable, and modular toolkit for Ethereum application development
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/programmatic)
diff --git a/smart-contracts/developing-contracts/verify-a-contract/verify-a-contract.md b/smart-contracts/developing-contracts/verify-a-contract/verify-a-contract.md
deleted file mode 100644
index 0f8a9f6a0..000000000
--- a/smart-contracts/developing-contracts/verify-a-contract/verify-a-contract.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-description: >-
- This section provides comprehensive guides for verifying smart contracts
- on the Filecoin network using various tools and methods.
----
-
-# Contract Verification
-
-Contract verification is essential for transparency and trust in the Filecoin ecosystem. It allows users to inspect the source code of deployed contracts and ensures they function as intended.
-
-## Available Verification Tools
-
-The following FEVM-compatible chain explorers offer contract verification capabilities:
-
-- [Blockscout](https://filecoin.blockscout.com/contract-verification) - Multi-chain explorer with advanced verification options
-- [Filfox](https://filfox.info/en/contract) - Native Filecoin explorer with comprehensive verification features
-- [Starboard](https://fvm.starboard.ventures/explorer/verifier) - FVM-focused verification platform
-- [Beryx](https://beryx.zondax.ch/contract_verifier) - Developer-friendly verification interface
-- [Sourcify](https://docs.sourcify.dev/docs/how-to-verify/) - Multi-chain contract repository with verification tools
-
-## Verification Methods
-
-There are two primary approaches to verify your smart contracts:
-
-### Programmatic Verification
-
-Automate contract verification directly from your development environment:
-
-- [Hardhat verification guide](/smart-contracts/developing-contracts/verify-a-contract/programmatic/hardhat.md)
-- [Foundry verification guide](/smart-contracts/developing-contracts/verify-a-contract/programmatic/foundry.md)
-
-### Web Interface Verification
-
-Verify contracts through explorer user interfaces:
-
-- [Blockscout web interface guide](/smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout.md)
-- [Filfox web interface guide](/smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox.md)
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract)
diff --git a/smart-contracts/developing-contracts/verify-a-contract/web-interface/web-interface.md b/smart-contracts/developing-contracts/verify-a-contract/web-interface/web-interface.md
deleted file mode 100644
index 19e009c4b..000000000
--- a/smart-contracts/developing-contracts/verify-a-contract/web-interface/web-interface.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to verify smart contracts on the Filecoin network using web-based
- explorer interfaces like Filfox and Blockscout for a user-friendly experience.
----
-
-# Web Interface Contract Verification
-
-Web interface verification allows you to verify contracts directly through blockchain explorer websites using a user-friendly graphical interface. This method is ideal for users who prefer a visual approach or need to verify contracts occasionally.
-
-## Available Explorers
-
-Choose your preferred blockchain explorer:
-
-- **[Blockscout](/smart-contracts/developing-contracts/verify-a-contract/web-interface/blockscout.md)** - Multi-chain explorer with advanced verification options
-- **[Filfox](/smart-contracts/developing-contracts/verify-a-contract/web-interface/filfox.md)** - Native Filecoin explorer with comprehensive verification features
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/smart-contracts/developing-contracts/verify-a-contract/web-interface)
diff --git a/smart-contracts/filecoin-evm-runtime/README.md b/smart-contracts/filecoin-evm-runtime/README.md
deleted file mode 100644
index 36af3edcc..000000000
--- a/smart-contracts/filecoin-evm-runtime/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- This section explains what the Filecoin EVM-runtime (FEVM) is, and how
- developers can use it to interact with the Filecoin network.
----
-
-# Filecoin EVM-runtime
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/filecoin-evm-runtime)
diff --git a/smart-contracts/fundamentals/README.md b/smart-contracts/fundamentals/README.md
deleted file mode 100644
index 49302951a..000000000
--- a/smart-contracts/fundamentals/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-description: >-
- Learn about the various tools and options for adding Filecoin storage to
- software applications, smart contracts, and workflows.
----
-
-# Fundamentals
-
-## Develop on Filecoin
-
-Filecoin combines the benefits of content-addressed data leveraged by IPFS with blockchain-powered storage guarantees. The network offers robust and resilient distributed storage at massively lower cost compared to current centralized alternatives.
-
-Developers choose Filecoin because it:
-
-* is the world’s largest distributed storage network, without centralized servers or authority
-* offers on-chain proofs to verify and authenticate data
-* is highly compatible with [IPFS](https://ipfs.tech/) and content addressing
-* is the only decentralized storage network with petabyte-scale capacity
-* stores data at extremely low cost (and keeps it that way for the long term)
-
-## Filecoin and IPFS
-
-How do Filecoin and IPFS work together? They are complementary protocols for storing and sharing data in the distributed web. Both systems are open-source and share many building blocks, including content addressing (CIDs) and network protocols (libp2p).
-
-IPFS does not include built-in mechanisms to incentivize the storage of data for other people. To persist IPFS data, you must either run your own IPFS node or pay a provider.
-
-This is where Filecoin comes in. Filecoin adds an incentive layer to content-addressed data. Storage deals are recorded on-chain, and providers must submit proofs of storage to the network over time. Payments, penalties, and block rewards are all enforced by the decentralized protocol.
-
-Filecoin and IPFS are designed as separate layers to give developers more choice and modularity, but many tools are available for combining their benefits. This diagram illustrates how these tools (often called storage helpers) provide developer-friendly APIs for storing on IPFS, Filecoin, or both.
-
-
-
-## Filecoin and smart contracts
-
-You can improve speed and reduce gas fees by storing smart contract data on Filecoin. With Filecoin, the data itself is stored off-chain, but is used to generate verifiable CIDs and storage proofs that are recorded on the Filecoin chain and can be included in your smart contracts. This design pairs well with multiple smart contract networks such as Ethereum, Polygon, Avalanche, Solana, and more. Your smart contract only needs to include the compact content ids.
-
-## Get started
-
-Let’s get building. Choose one of the following APIs. These are all storage helpers, or tools and services that abstract Filecoin’s robust deal making processes into simple, streamlined API calls.
-
-* [Akave Storage API](https://docs.akave.xyz/) - for projects needing S3 compatibility
-* [NFT.storage](https://nft.storage/) - for NFT data
-* [Web3.storage](https://web3.storage/) - for general application data
-
-Examples:
-
-* [Polygon tutorial](https://github.com/protocol/nft-website/blob/main/docs/tutorial/mint-nftstorage-polygon.md)
-* [Flow tutorial](https://github.com/protocol/nft-website/blob/main/docs/tutorial/flow-nft-marketplace.md)
-* [Avalanche tutorial](https://github.com/protocol/nft-website/blob/main/docs/tutorial/avax-nft.md)
-* [Using IPFS & Filecoin on Harmony](https://docs.harmony.one/home/developers/tutorials/ipfs-filecoin)
-
-## Additional resources
-
-* [Filecoin integrations for Web3 infrastructure](https://www.youtube.com/watch?v=Q0oe6i7d1u4) (video)
-* [What is an IPFS Pinning Service?](https://medium.com/pinata/what-is-an-ipfs-pinning-service-f6ed4cd7e475) (Pinata explainer)
-* [IPFS documentation: Persistence, permanence and pinning](https://docs.ipfs.tech/concepts/persistence/)
-* [Developing on Filecoin](https://www.youtube.com/watch?v=aGCpq0Xf-w8) (video)
-* Textile tools: [video](https://www.youtube.com/watch?v=IZ8M9m9\_uJY) and [documentation](https://docs.textile.io/)
-* [Building decentralized apps using Fleek’s Space daemon](https://www.youtube.com/watch?v=pWJ5fty-7mA) (video)
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals)
diff --git a/smart-contracts/fundamentals/roadmap.md b/smart-contracts/fundamentals/roadmap.md
deleted file mode 100644
index 60b0a6112..000000000
--- a/smart-contracts/fundamentals/roadmap.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-description: >-
- The FVM project has come a long way in an incredibly short amount of time.
- This is the roadmap for FVM features for the Filecoin network.
----
-
-# Roadmap
-
-## Goal
-
-The goal of the FVM project is to add general programmability to the Filecoin blockchain. Doing so will give developers all kinds of creative options, including:
-
-* Orchestrating storage.
-* Creating L2 networks on top of the Filecoin blockchain.
-* Providing new incentive structures for providers and users.
-* Frequently verifying that providers are storing data correctly.
-* Automatically finding which storage providers are storing what data.
-* Many more data-based applications.
-
-Filecoin was the first network deploying programmability, post-genesis, to ensure that layer 0 of the Filecoin blockchain was stable and fully functional. Due to the large amounts of capital already secured within the Filecoin network, the development of the FVM needs to be careful and gradual.
-
-## Roadmap
-
-The FVM roadmap is split into three initiatives:
-
-* Milestone 1: Initialize the project and allow built-in actors to run on the FVM.
-* Milestone 2: Enable the deployment of Ethereum virtual machine (EVM) compatible smart contracts onto the FVM. Also, allow developers to create and deploy their own native actors to the FVM.
-* Milestone 3: Continue to enhance programmability on FVM.
-
-### ✅ Milestone 0
-
-**✅ Lotus mainnet canaries with FVM support**
-
-_Completed in February 2022_
-
-The reference FVM implementation has been integrated into a fork of Lotus (the Filecoin reference client). A fleet of canary nodes have been launched on mainnet, running WASM-compiled built-in actors on the FVM. The canaries are monitored for consensus faults and to gather telemetry. This milestone is a testing milestone that’s critical to collect raw execution data to feed into the overhaul of the gas model, in preparation for user-programmability. It implies no network upgrade.
-
-### ✅ Milestone 0.5
-
-**✅ Ability to run FVM node and sync mainnet**
-
-_Completed in March 2022_
-
-Any node operator can sync the Filecoin Mainnet using the FVM and Rust built-in actors, integrated in Lotus, Venus, Forest, and Fuhon implementations. It implies no network upgrade.
-
-### ✅ Milestone 1
-
-**✅ Introduction of non-programmable WASM-based FVM**
-
-_Completed in May 2022_
-
-Mainnet will atomically switch from the current legacy virtual machines to the WASM-based reference FVM. A new gas model will be activated that accounts for actual WASM execution costs. Only Rust built-in actors will be supported at this time. This milestone requires a network upgrade.
-
-**✅ Network Version 17 (nv17): Initial protocol refactors for programmability**
-
-_Completed in November 2022_
-
-An initial set of protocol refactors targeting built-in actors, including the ability to introduce new storage markets via user-defined smart contracts.
-
-### ✅ Milestone 2.1
-
-**✅ Ability to deploy EVM contracts to mainnet (FEVM)**
-
-_Completed in March 2023_
-
-The Filecoin network will become user-programmable for the first time. Developers will be able to deploy smart contracts written in Solidity or Yul, and compiled to EVM. Smart contracts will be able to access Filecoin functionality by invoking built-in actors. Existing Ethereum tooling will be compatible with Filecoin. This milestone requires a network upgrade.
-
-**✅ Hyperspace testnet goes live**
-
-_Completed on January 16th 2023_
-
-A new stable developer testnet called Hyperspace will be launched as the pre-production testnet. The community is invited to participate in heavy functional, technical, and security testing. Incentives and bounties will be available for developers and security researchers.
-
-**✅ FEVM goes live on mainnet**
-
-_Completed on March 14th 2023_
-
-The Filecoin EVM runtime is deployed on Filecoin mainnet via the [Filecoin nv18 Hygge upgrade](https://github.com/filecoin-project/community/discussions/74?sort=new#discussioncomment-4313888).
-
-### 🔄 Milestone 2.2
-
-**🔄 Ability to deploy Wasm actors to mainnet**
-
-_To complete midway through 2023_
-
-Developers will be able to deploy custom smart contracts written in Rust, AssemblyScript, or Go, and compiled to WASM bytecode. SDKs, tutorials, and other developer materials will be generally available. This milestone requires a network upgrade.
-
-### 🔮 Milestone 3+
-
-**🔮 Further incremental protocol refactors to enhance programmability**
-
-_To complete in 2023_
-
-A series of additional incremental protocol upgrades (besides nv17) to move system functionality from privileged space to user space. The result will be a lighter and less opinionated base Filecoin protocol, where storage markets, deal-making, incentives, etc. are extensible, modular, and highly customizable through user-deployed actors. Enhanced programming features such as user-provided cron, asynchronous call patterns, and more will start to be developed at this stage.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/fundamentals/roadmap)
diff --git a/smart-contracts/programmatic-storage/README.md b/smart-contracts/programmatic-storage/README.md
deleted file mode 100644
index 5bc775a83..000000000
--- a/smart-contracts/programmatic-storage/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-description: >-
- This section covers how to programmatically store data on the Filecoin
- network.
----
-
-# Programmatic storage
-
-Programmatic storage is a concept where storage operations are controlled, automated, or orchestrated through code. Processes like reading, writing, and data management can all happen automatically and without human intervention.
-
-## Manual storage
-
-A client must go through several steps to manually store something with a storage provider on Filecoin without using the FVM. These steps involve interacting with the Filecoin network, negotiating a deal with a storage provider, and performing various other operations to ensure the data is stored correctly and securely. We discuss how storage works in the [Basics section](../../basics/how-storage-works/) but let's quickly summarize the process here:
-
-1. **Identify a storage provider (SP)**: Clients must identify storage providers who will store their data. Clients usually pick their storage providers based on geographic location and bandwidth limitations, although other factors may impact their decision.
-2. **Negotiate a deal**: Clients negotiate deals with storage providers. These deals include terms like data size, price, deal duration, and collateral. The deal-making process happens off-chain, and once both parties agree to the terms of a deal, that deal is published on-chain for the rest of the network to see and validate. To successfully store data on Filecoin, clients need to have enough FIL to cover the deal's cost.
-3. **Data preparation**: Before storing files on Filecoin, clients must import them into their local Filecoin node, which produces a data CID (Content Identifier) - an ID uniquely describing the content. Then, the data is transferred to the storage provider.
-4. **Deal publication**: The deal is published on-chain, making the storage provider publicly accountable for the deal.
-5. **Sealing and proving storage**: The storage provider stores the data in sectors. Sectors are the basic units of provable storage where storage providers store clients’ data and generate Proof-of-Spacetime (PoSt) on behalf of the Filecoin network. Sectors have standard sizes and a lifetime that storage providers can extend before reaching the end of the lifetime.
-
-## Programmatic storage
-
-The [Filecoin virtual machine (FVM)](../filecoin-evm-runtime/) is not designed to directly interact with data on Filecoin. Instead, it operates on blockchain state data, which includes metadata about stored data. The FVM's role is to compute over this state data and create logic around the storage and retrieval process. Storage and retrieval providers on the Filecoin network handle the actual process of storing and retrieving data.
-
-Developers can use FVM actors (also called smart-contracts) to implement various use cases related to data storage and retrieval on the Filecoin network. For instance, they can automate the process of renewing and repairing storage deals, replicating data across multiple storage providers for redundancy, or implement access control for data.
-
-This process for programmatically storing data on Filecoin differs depending on how much data you need to store. Anything less than 4 GiB of data is considered _small_, while anything 4 GiB or above is considered _large_. Lets cover the process for both _small_ and _large_ storage deals:
-
-### Small-scale storage
-
-Storage deals for less than 4 GiB of data are considered _small_ on the Filecoin network. This is because storage providers use sectors of either 32 GiB or 64 GiB. Because of these comparably large sector sizes, SPs are incentivized to accept storage deals closer to this cap size. An SP will receive more FIL rewards for storing a 31 GiB file rather than a 200 KiB file. Clients will have difficulty finding a storage provider to accept deals for small amounts of data.
-
-To get around this problem, these developers can _aggregate_ their data into bundles. The deal-aggregation process bundles a collection of small storage deals with many others to create one large deal.
-
-Checkout out [lighthouse.storage](https://lighthouse.storage/documentation) for an example of a deal aggregator.
-
-### Large-scale storage
-
-Storage deals for more than 4 GiB don't suffer from the limitations of small-scale storage deals. Large-scale deals can be processed and sent to an SP directly without aggregating data.
-
-The client contract performs _direct_ deal making to automatically finds an SP to store your data. There are other considerations an SP must make when deciding to pick up your data deal proposals from the client contract. For example, some SPs may only deal with clients with whom they have an existing relationship with. For more information regarding client contracts and how they work, checkout the [client contract tutorial](../developing-contracts/client-contract-tutorial.md).
-
-1. **Upload data to a data depot**: Data depots hold your data for the duration of this process so that you don't have to maintain your connection to the network. Once an SP verifiably holds your data, the data depot discards your data. After uploading your data to a depot, the depot will give you all the information you need to fill out the client contract.
-2. **Deploy a client contract**: The deal client contract coordinates the handshaking required on FVM to load your data into the Filecoin network.
-3. **Create a deal-proposal payload**: Once your data is ready in the data depot and your client contract has been deployed, you can create your deal-proposal payload. This payload contains everything a storage provider needs to download and store a copy of your data.
-4. **Deal publication and activation**: An SP picks up your contract and downloads the data from the data depot.
-
-Check out the [Deal Making Starter Kit](https://github.com/filecoin-project/fvm-starter-kit-deal-making) for additional information on how this process works.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/programmatic-storage)
diff --git a/smart-contracts/programmatic-storage/aggregated-deal-making.md b/smart-contracts/programmatic-storage/aggregated-deal-making.md
deleted file mode 100644
index 7bf96f448..000000000
--- a/smart-contracts/programmatic-storage/aggregated-deal-making.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-description: Aggregation of smaller data pieces to store on Filecoin
----
-
-# Aggregated deal-making
-
-Filecoin is designed to store large data for extended periods. Small-scale data (<4 GiB) can be combined with other small deals into larger ones, either on-chain or off-chain. Smart contracts can handle programmatic data storing. This article explains the process, referring to small-scale data as _sub-piece data_.
-
-For context, a [_piece_](https://spec.filecoin.io/systems/filecoin\_files/piece/) of data in Filecoin refers to a unit of negotiation for data to be stored on Filecoin. A sub-piece refers to a sub-unit of that larger piece. These are typically small data like NFT images, short videos and more.
-
-Aggregation is the process of combining multiple packages of _sub-piece data_ into a single package. This large package is stored on the Filecoin network instead of multiple smaller packages. Aggregation can be done off-chain or on-chain.
-
-```
-@@ -14,61 +16,61 @@ Aggregation is the process of combining multiple packages of _sub-piece data_ in
-```
-
-The base interface for aggregation requires the following components:
-
-1. A client who has data to upload.
-2. An aggregator platform that clients can interact with to request to make a storage deal and retrieve Proof of Deal Sub-piece Inclusion (PoDSI) from.
-3. An aggregation node to aggregate the sub-piece data into a larger file and to provide PoDSI that can be called via an API endpoint. Aggregation of data always happens off-chain. This is typically hosted by the aggregator platform
-4. An optional aggregation smart contract that clients can submit an on-chain request to, to request an off-chain aggregation node to make a storage deal
-
-
How aggregation happens
-
-### Proof of Deal Sub-piece Inclusion (PoDSI)
-
-Proof of Deal Sub-piece Inclusion (PoDSI) is motivated by a need for sub-piece data uploads to eventually issue verification and proof that the data was included in an associated deal on Filecoin. PoDSI is heavily used in the aggregated deal-making workflow.
-
-PoDSI is a proof construction and is generated for each sub-piece CID (within the large data segment) and stored in an off-chain database.
-
-The proof consists of two elements:
-
-1. An inclusion proof of a sub-tree, which contains the size and position of the sub-piece data in the larger aggregated data piece, corresponding to the tree of the aggregator's committed larger aggregated data piece.
-2. An inclusion proof of the double leaf data segment descriptor, which describes the sub-piece data within the larger data segment index, which is contained at the end of a deal, describing all the data segments contained within that deal.
-
-Lighthouse.storage is the first aggregator platform to enable PoDSI. You can view the tutorial in their docs [here](https://docs.lighthouse.storage).
-
-Read more about the technical details of PoDSI [here](https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0058.md#proof-of-data-segment-inclusion).
-
-#### Requesting for aggregation off-chain
-
-To request for aggregation and PoDSI off-chain, developers interact with an aggregator platform:
-
-1. The client submits sub-piece data to an aggregator platform. The aggregator prepares the data and generates the sub-piece CID, known as pCID, and URL to download the CAR file.
-2. The aggregator hosts an off-chain aggregation node, which aggregates the sub-piece CAR files into a larger aggregated CAR file.
-3. Simultaneously, the aggregator aggregates indexed data segments (based on specs [here](https://github.com/filecoin-project/FIPs/discussions/512)). It runs the proofing library and generates PoDSI proofs for each sub-piece pCID, storing them in an off-chain database.
-4. The aggregator uses programmatic deal-making or [manual deal-making](https://lotus.filecoin.io/tutorials/lotus/build-with-lotus-api/) to make storage deals with storage providers for the aggregated larger CAR file.
-5. Storage Providers download the aggregated CAR file and publish storage deals.
-6. Clients can query a proofing endpoint provided by the aggregator, which will look up the sub-piece CID (pCID) in the database and return the PoDSI proof, aggregated CID, and associated deal ID.
-7. Clients can use the sub-piece pCID for on-chain verification with the aggregation smart contract, which will verify the Merkle proof to ensure the sub-piece pCID (CommPc) matches the piece CID (CommPa) of the associated deal ID.
-
-[Lighthouse.storage](https://www.lighthouse.storage/) is the first aggregator platform available. You can find their docs on how to utilize their SDK for the above process [here](https://docs.lighthouse.storage).
-
-
Requesting for aggregation of data to store, via an off-chain platform
-
-#### Requesting for aggregation on-chain
-
-On-chain aggregation and PoDSI requests go through aggregator oracle smart contracts:
-
-1. The client [prepares the data](https://docs.filecoin.io/storage-providers/filecoin-deals/storage-deals#data-preparation) and generates the sub-piece CID, known as pCID (CommPc). Here is an easy [data preparation tool](https://data.lighthouse.storage/) by lighthouse.storage.
-2. The client submits a sub-piece CID (CommPc) with metadata (e.g. URL to download the sub-piece CAR file) directly to the aggregation smart contract.
-3. The aggregator watches the aggregation contract, and when the aggregator decides there are enough sub-pieces, it downloads all sub-piece data, to generate the aggregated piece from the CAR file URL.
-4. The aggregator aggregates indexed data segments into a larger data file for deal-making (based on specs [here](https://github.com/filecoin-project/FIPs/discussions/512)).
-5. The aggregator combines the sub-piece data into the aggregated CommP (CommPa) by computing within aggregator's off-chain node.
-6. The aggregator uses programmatic deal-making or [manual deal-making](https://lotus.filecoin.io/tutorials/lotus/build-with-lotus-api/) to make storage deals with storage providers for the aggregated larger CAR file.
-7. Storage Providers download the aggregated CAR file and publish storage deals. Upon the client's request, they can find the data via sub-piece CID.
-8. Clients can query the aggregation smart contract, which notifies the aggregator platform to look up the sub-piece CID (pCID) in its aggregation node's database and return the PoDSI proof, aggregated CID, and associated deal ID.
-9. Simultaneously, clients can use the sub-piece pCID for on-chain verification with the aggregation smart contract, which will verify the Merkle proof to ensure the sub-piece pCID (CommPc) matches the piece CID (CommPa) of the associated deal ID.
-
-
Requesting for aggregation of data to store, via an on-chain smart contract
-
-To build your own on-chain aggregator oracle smart contract, check out one of the implementations with [Filecoin Data Tools](https://github.com/application-research/fevm-data-segment).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/programmatic-storage/aggregated-deal-making)
diff --git a/smart-contracts/programmatic-storage/ccdb.md b/smart-contracts/programmatic-storage/ccdb.md
deleted file mode 100644
index 9afd52f6b..000000000
--- a/smart-contracts/programmatic-storage/ccdb.md
+++ /dev/null
@@ -1,270 +0,0 @@
----
-description: >-
- Onboard data from any Ethereum-compatible L1 to Filecoin using cross-chain
- data bridge.
----
-
-# Cross-Chain Data Bridge(CCDB)
-
-## Introduction
-
-As one of the leading decentralized storage networks, Filecoin is designed to store and safeguard large volumes of data in a distributed and censorship-resistant manner. With the addition of the Filecoin Virtual Machine (FVM), programmatic storage is now available on Filecoin and enables fully trustless, on-chain storage deal-making. It will open up opportunities for Filecoin to offer its verifiable storage service to other smart contract platforms like Ethereum, Polygon, Avalanche, and other EVM-compatible blockchains.
-
-In the context of decentralized storage, Cross-chain Data Bridge (AKA onramp contract) allows applications on EVM-compatible blockchains (such as Ethereum, Avalanche, Polygon, Linea, etc.) to seamlessly store data on Filecoin’s decentralized storage network without users interacting directly with Filecoin.
-
-The process includes escrowed payments on the source chain, data preparation and aggregation for Filecoin storage deals, and cross-chain proof validation before payment release.
-
-This tutorial will guide you through:
-
-* Understanding the architecture and workflow of the data bridge.
-* Setting up connections from any EVM-compatible source chain.
-* Uploading data to Filecoin via the bridge.
-* Hands-on code examples.
-
-## Architecture Overview
-
-A combination of on-chain contracts and off-chain services powers the cross-chain data bridge. At a high level, it consists of:
-
-1. [**Smart contracts**](https://github.com/FIL-Builders/onramp-contracts)
- * **OnRamp Contract (Source Chain – Any EVM Chain)**
- * This smart contract receives storage requests from users.
- * Verifies the data aggregation proof.
- * It holds the user’s payment in escrow and emits an event for off-chain agents.
- * **Oracle Contract (Source Chain – Same EVM Chain)**
- * Receives storage confirmations from Filecoin.
- * Validates proofs and triggers the OnRamp to release escrowed funds.
- * **Prover Contract (Destination Chain – Filecoin Network)**
- * Verifies storage deals sealed on Filecoin.
- * Sends attestations (proofs) back to the source chain via a cross-chain messaging layer.
- * **Cross-Chain Messaging Bridge (e.g, Axelar)**
- * The system uses the Axelar network to transport messages between Avalanche and Filecoin.
-2. [**xChain Client (Off-Chain Agent)**](https://github.com/FIL-Builders/xchainClient)
- * Monitors the OnRamp contract for new data offers.
- * Handles file packaging (CAR file creation), CommP calculation, and deal submission to Filecoin.
- * It can also serve as a storage buffer for storage providers to retrieve data to make storage deals on Filecoin.
-
-### High-Level Workflow
-
-
-
-The bridge’s workflow can be summarized in a multi-step process:
-
-1. **Upload Data**: A user submits a storage offer to the OnRamp contract on their EVM-compatible chain.
-2. **Data Aggregation**: The xChain client detects the offer from smart contract events, fetches the data, aggregates smaller data into a big piece, and sends the proof of aggregation back to the onramp contract.
-3. **Filecoin storage deal making**: The xChain client will send the storage deal proposal to the storage providers either through an on-chain smart contract or an off-chain process.
-4. **Bridging Proofs**: Once Filecoin confirms the data is stored, the Prover contract will receive the deal notification automatically and emit a proof via the Axelar cross-chain messaging network.
-5. **Payment Release**: The Oracle contract on the source chain verifies the proof and instructs the OnRamp to release payment.
-
-Each component plays a vital role in ensuring trust-minimized and seamless data storage between chains. This modular design also makes the bridge extensible—one could integrate a different messaging layer or deal aggregator without changing the overall flow.
-
-## Using the Bridge to store data
-
-Now that we understand the architecture, let’s see how to interact with the cross-chain bridge as a developer. We will use the Avalanche Fuji testnet as an example. We will cover how to connect to an existing bridge deployment, upload data from Avalanche to Filecoin step-by-step, and what tools or SDKs are involved.
-
-**Pre-Requisites**
-
-* **RPC endpoints** for your source EVM chain (e.g., Avalanche Fuji).
-* **Wallet** with enough native tokens (FIL & AVAX) and ERC-20 tokens for fees and storage payments.
-* Access to OnRamp and Oracle contracts on Avalanche Fuji & Prover contract on the Filecoin network.
- * In this tutorial, we are going to use the pre-deployed contracts on Avalanche and Filecoin. The details are [here](ccdb.md#deployed-contracts-info).
- * In any case, if you need to deploy your version. Please follow the [deployment instructions](https://github.com/fil-builders/onramp-contracts?tab=readme-ov-file#-getting-started) on GitHub.
-
-### Step 1: Connect to Existing Bridge
-
-To use the cross-chain data bridge, you must interact with the deployed smart contracts on your desired source chain (e.g., Avalanche) and Filecoin. OnRamp (and related) contracts have been deployed on the Avalanche Fuji testnet and the Filecoin Calibration testnet in a development or test environment. You can connect to those networks and call the contracts directly without deploying your own.
-
-To store data to Filecoin from your UI code, you must configure the following parameters so your project can interact with the onramp contract on the source chain (e.g., Avalanche).
-
-* Wallet Connection to Metamask so you can use Fuji testnet configs and wallet with AVAX test tokens.
-* Onramp contract details are deployed on one source chain (e.g., Avalanche).
- * `ONRAMP_CONTRACT_ADDRESS`: `0xeE857540dddB6E6EA10a5c84f57562F11D5Fb47D`
- * `ONRAMP_CONTRACT_ABI`: retrieve from [here](https://github.com/FIL-Builders/dataBridgeDemo/blob/ea9c6bcecaa6ea0b96a92e00dd148b69a141a8df/components/contracts/onrampContract.tsx#L3).
-
-The OnRamp is an EVM-compatible contract, so standard Ethereum libraries (ethers.js, web3.js, etc.) will work.
-
-### Step 2: Prepare Data and Submit Offer
-
-Interacting with the bridge to store data involves a few steps, both on-chain and off-chain. Overall, we need to prepare a data offer structure to send to the onramp contract by calling `offerData(Offer calldata offer)`.
-
-```solidity
-struct Offer {
- bytes commP;
- uint64 size;
- string location;
- uint256 amount;
- IERC20 token;
- OfferStatus status;
- }
-```
-
-1. **Choose or upload the file you want to store**
-2. **Generate a CommP (Piece Commitment)**
-
- Ideally, you will generate a [CommP (Piece Commitment)](https://spec.filecoin.io/systems/filecoin_files/piece/#section-systems.filecoin_files.piece) for your data, which is a hash that uniquely represents the piece of data in Filecoin’s format. You can use [@web3-storage/data-segment](https://www.npmjs.com/package/@web3-storage/data-segment) library to generate CommP for your data.
-
- ```javascript
- //Generate Commp from a given file
- export async function generateCommp(file: File) {
- const bytes = new Uint8Array(await file.arrayBuffer());
- //Using the Piece Info to get the legacy coding for CID
- const piece = Piece.fromPayload(bytes).toInfo();
- return piece;
- }
- ```
-
- Once the _CommP_ is generated, you can get the pieceCid and pieceSize for calling the onramp contract.
-
- ```jsx
- const commP = await generateCommp(file);
-
- //commp & size for making offer struct
- const pieceCid = commP.link.bytes;
- const pieceSize = commP.size;
- ```
-3. **Upload your data to a buffer (e.g. IPFS)**
-
- Your data must be uploaded to a buffer before the data is aggregated and sent to Filecoin storage providers. We use IPFS as a storage buffer and will provide a link to download the data.
-
- One of the options for uploading data to IPFS is the [Pinata](https://pinata.cloud/) IPFS pinning service.
-
- ```jsx
- const apiKey = process.env.NEXT_PUBLIC_PINATA_API_KEY;
- const res = await fetch('https://api.pinata.cloud/pinning/pinFileToIPFS', {
- method: 'POST',
- headers: {
- Authorization: `Bearer ${apiKey}`,
- },
- body: fileData,
- });
-
- //CID of your data
- const fileCid = resData?.IpfsHash;
-
- //the buffer URL for Offer struct
- const ipfsU = 'https://gateway.pinata.cloud/ipfs/'+ fileCid
- ```
-4. **Approve the OnRamp contract to spend the chosen ERC-20 token (for payment).**
-
- If you want to add ERC20 tokens on Avalanche as a payment for storage data on Filecoin as an extra incentive, you can specify the ERC20 token address and amount you want to pay. These tokens will be escrowed in the onramp contract temperately, and they will be released to the payout address once the data is proven stored on Filecoin.
-
- Make sure you approve the OnRamp contract to spend the chosen ERC-20 token before you invoke the OnRamp contract.
-
- ```jsx
- const TOKEN_ADDRESS = "0x..."; // ERC-20 token (payment token) on Avalanche
- const paymentToken = new ethers.Contract(TOKEN_ADDRESS, ERC20_ABI, signer);
- const paymentAmount = ethers.utils.parseUnits("10", 18); // e.g. 10 tokens (assuming 18 decimals)
-
- // 2. Approve the OnRamp contract to pull payment
- await paymentToken.approve(ONRAMP_ADDRESS, paymentAmount);
- console.log("Payment approved");
- ```
-5. **Call the `offerData(...)` function on the OnRamp contract.**
-
- Now, we have prepare the data to make an offer struct to send it to OnRamp contract for Filecoin storage deals.
-
- ```jsx
- //Making offer struct
- const offer = {
- commP: ethers.hexlify(pieceCid) as `0x${string}`,
- size: BigInt(pieceSize),
- cid: fileCid.toString(),
- location: ipfsURL,
- amount: BigInt(0),
- token: PAYMENT_TOKEN_ADDRESS as `0x${string}`,
- };
- ```
-
- Then we can call the Onramp contract on Avalanche to initialize the Filecoin storage process, using the contract feature from [wagmi](https://wagmi.sh/react/api/hooks/useWriteContract).
-
- ```jsx
- writeContract({
- address: ONRAMP_CONTRACT_ADDRESS,
- abi: ONRAMP_CONTRACT_ABI,
- functionName: 'offerData',
- args: [offer],
- });
- ```
-
-We are already done sending the data from the source chain (e.g., Avalanche) to store on Filecoin.
-
-Once the offer is recorded on-chain, the xChain Client and Filecoin storage providers will process the storage deal on Filecoin and send the storage proof back to the source chain (e.g., Avalanche).
-
-{% hint style="info" %}
-Step 3 and 4 explain how the xChain client & Filecoin are handling cross-chain data storage and proofing. Avalanche dApp builders do not need to implement it.
-{% endhint %}
-
-### Step 3: xChain Client Processes the Offer
-
-* The xChain client listens to `DataReady()` events emitted by the OnRamp contract.
-* It aggregates the data, calculates CommP if needed, and submits a storage deal to the Filecoin network for storage providers to process.
-* Deals may be aggregated for efficiency.
-
-### Step 4: Proof Delivery & Payment Release
-
-* Once Filecoin confirms the storage (deal sealed) on-chain, the Filecoin built-in actor will automatically notify the Prover contract and emit proof of attestation.
-* This proof is sent via the cross-chain messaging layer (e.g, Axelar) to the Oracle contract on your source chain (e.g, Avalanche).
-* The Oracle calls the `OnRamp.proveDataStored(...)` to prove that the data is stored and releases payment to the payout address.
-* The offer status in the Onramp contract will be updated once proven.
-
-### Step 5: Storage Confirmation
-
-The storage should be completed after some time (depending on the speed of the Filecoin deal sealing and any batching delays). We can verify this in a couple of ways.
-
-* **Listen for the Onramp event:** If we had the Onramp contract’s address/ABI, we could listen for a `ProveDataStored` event which fires when the proof comes back.
-* **Poll the OnRamp contract:**
-
- * If your application is tracking the offer ID, it can call a view function like `getOfferDetails(uint64 offerId)` or `getOfferStatus(uint64 offerId)` on the OnRamp contract to confirm that the status of a specific offer ID.
- * If not, your application can always retrieve all the data offers sent by a clients by calling `getClientOffers(address client)` on the OnRamp contract.
-
- ```jsx
-
- const ONRAMP_ADDRESS = "0x..."; // OnRamp contract on Avalanche
- const ONRAMP_ABI = [ /* ... offerData ABI ... */ ];
- // Initialize contract objects
- const onRamp = new ethers.Contract(ONRAMP_ADDRESS, ONRAMP_ABI, signer);
-
- const status = await onRamp.getOfferStatus(offerId);
- ```
-
-You can also refer to this [dataBridgeDemo repo](https://github.com/FIL-Builders/dataBridgeDemo) as a reference for the implementation of storing your application data on Avalanche to the Filecoin network.
-
-## Best Practices
-
-When using a cross-chain data bridge in production or advanced projects, keep in mind the following best practices to ensure security and efficiency:
-
-* **Chain-Agnostic Integration:** The contracts work across any EVM-compatible chain. Always check that you are connected to the correct RPC endpoint.
-* **Token Approvals:** Ensure sufficient allowance is given to the OnRamp contract for ERC-20 tokens.
-* **Data Handling and Privacy:** All data sent through this system will be stored on a public decentralized network. If your application deals with sensitive data, **encrypt** the files before offering them to the bridge.
-* **Monitoring:** Implement monitoring of Oracle events and OnRamp status for better UX.
-* **Stay Updated:** The cross-chain storage tooling is evolving rapidly. Keep an eye on updates to the FIL-Builders onramp repositories and related documentation from [here](ccdb.md#references).
-
-By following these steps, you can integrate Filecoin storage into any EVM-compatible blockchain application via this cross-chain bridge.
-
-## Deployed Contracts Info
-
-### Source Chain
-
-**Avalanche Fuji testnet**
-
-* Onramp.sol: [0xeE857540dddB6E6EA10a5c84f57562F11D5Fb47D](https://subnets-test.avax.network/c-chain/address/0xeE857540dddB6E6EA10a5c84f57562F11D5Fb47D)
-* Oracle.sol: [0x476eE57404BD06c957a9BB6BF31216BFFa32dE18](https://subnets-test.avax.network/c-chain/address/0x476eE57404BD06c957a9BB6BF31216BFFa32dE18)
-
-**Base Sepolia testnet**
-
-* Onramp.sol: [0x8d227741feCB90973B338c405011916Ea72df403](https://repo.sourcify.dev/84532/0x8d227741feCB90973B338c405011916Ea72df403)
-* Oracle.sol: [0xfDe90468898d5D2996Cf0850E9ac3646D454154B](https://repo.sourcify.dev/84532/0xfDe90468898d5D2996Cf0850E9ac3646D454154B)
-
-### Destination Chain - Filecoin Calibration testnet
-
-* Prover.sol: [0x75c9C9fAC04C696820260CC0bE4201859ff85397](https://calibration.filfox.info/en/address/0x75c9C9fAC04C696820260CC0bE4201859ff85397)
-
-## References
-
-* [onramp-contracts repo](https://github.com/FIL-Builders/onramp-contracts/)
-* [xChainClient repo](https://github.com/FIL-Builders/xchainClient)
-* [dataBridgeDemo repo](https://github.com/FIL-Builders/dataBridgeDemo)
-* [Under the Hood: Architecture and Prototype of Cross Chain Data Storage](https://medium.com/@filoz/under-the-hood-architecture-and-prototype-of-cross-chain-data-storage-6f8ba2c480d6)
-
-***
-
-_Note:_ For chain-specific deployment instructions (e.g., deploying to Polygon or Linea), refer to the onramp-contracts & xChainClient repository deployment guide.
diff --git a/smart-contracts/programmatic-storage/direct-deal-making.md b/smart-contracts/programmatic-storage/direct-deal-making.md
deleted file mode 100644
index 52e2d1c64..000000000
--- a/smart-contracts/programmatic-storage/direct-deal-making.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-description: >-
- This page explains the direct deal-making process in regards to the Filecoin
- network.
----
-
-# Direct deal-making
-
-There are services like deal aggregators that allow clients to create storage deals programmatically. However, aggregators are better suited to small-scale deals of under 4 GiB of total data. For those wishing to programmatically store larger blocks of data, _direct deal-making_ is a more suitable process.
-
-## Steps
-
-We're going to cover the basic steps of _direct deal-making_.
-
-### Package the data
-
-The client packages the data they want to store into a CAR file. They then upload this to a hosting intermediary service and generate a CID. [Storage on-ramp services](../../basics/how-storage-works/storage-onramps.md) are available to act as this intermediary.
-
-### On-chain process
-
-Using the CID and URL provided by the hosting service, the client can deploy the client contract and propose a storage deal.
-
-Once the client contract is deployed, an event is emitted on-chain, and storage providers running [Boost](https://boost.filecoin.io/experimental-features/fvm-contract-deals) will receive the deal proposal.
-
-### Storage providers
-
-Each storage provider will decide whether to take the proposal and pick up the deal.
-
-There are a variety of factors influencing whether or not a storage provider will accept the deal, including if there is a pre-existing relationship between the client and the storage provider, whether the deal is financially attractive to the storage provider if they can accommodate the size of the data, or whether clients have datacap.
-
-If the storage provider accepts the deal through Boost, that provider will download the CAR file from the web server and publish the storage deal on-chain. A client can check that the deal was successfully published on the blockchain via [block explorers](../../networks/mainnet/explorers.md).
-
-A storage deal published on-chain denotes the _intent_ for a storage provider to make a storage deal. But this _intent_ does not mean that the deal is _complete_. The deal is only complete once a storage provider has sealed the data into sectors and the deal ID is published on-chain.
-
-#### Timelines
-
-The timelines for the published storage deals and the deal ID confirmation are inherently undefined. Storage providers do not necessarily publish storage deals once they come in. Depending on the size of the data, the storage provider may wait until they have enough data from other deals to fill a sector.
-
-Deals made on the Calibration testnet will be picked-up within 24 hours.
-
-## Review
-
-Here is a diagram showing each of these steps in turn:
-
-
-
-## Next steps
-
-For a complete tutorial on how to use the client contract to initiate a deal from FVM, see our [client contract tutorial](../developing-contracts/client-contract-tutorial.md). A full explanation of the client contract in the context of a direct deal-making starter kit can be found [here](https://github.com/filecoin-project/fvm-starter-kit-deal-making/tree/main).
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/programmatic-storage/direct-deal-making)
diff --git a/smart-contracts/programmatic-storage/raas-interfaces.md b/smart-contracts/programmatic-storage/raas-interfaces.md
deleted file mode 100644
index df203bb98..000000000
--- a/smart-contracts/programmatic-storage/raas-interfaces.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-description: Specifications for RaaS interfaces.
----
-
-# RaaS interfaces
-
-RaaS has a base and full interface to enable replication, renew and repair of storage deals.
-
-## Self-hosted RaaS
-
-RaaS refers to replication, renewal and repair as a service, for data stored in storage deals on Filecoin. Developers can leverage the self-hosted RaaS to provide RaaS features, within their storage solution, using the RaaS Starter Kit.
-
-Self-hosted RaaS requires 4 components:
-
-* The Client who has data to upload
-* An Aggregator platform (a type of storage solution) that receives the Client’s data and makes a storage deal on Filecoin
-* The RaaS node, hosted by the developer, that checks if the storage deal requires replication, renewal and/or repair
-* The RaaS DealStatus smart contract that the RaaS node executes checks with
-
-### In the example of replication:
-
-1. The client generates a `CID` for the data and requests the RaaS node to store data.
-2. The RaaS node takes the client’s data and makes the storage deal onto Filecoin.
-3. The client registers a replication job to the RaaS node and defines the number of replicas of their data to store, by calling the `/register_jobs` API on the RaaS node (e.g. “This data needs to have a minimum of 10 copies on the network”).
-4. The RaaS node periodically checks the client data’s `CID` for its deal status on Filecoin.
- * The RaaS node requests deal status with the DealStatus smart contract, via `getActiveDeals(CID)` and checks if the client’s data is stored with the accurate number of replicas.
- * The DealStatus smart contract returns the information of active deals to the RaaS node.
-5. If the number of replicas does not match the client’s requirements, the RaaS node is notified.
-6. The RaaS node fetches the data via its `CID` and resubmit a request to create new storage deals (repeat step 2).
-7. When the client requests for retrieval of data, it queries the RaaS node, which will fetch the data from the storage provider on Filecoin or provide an IPFS pinned copy (depends on how RaaS node is setup to store the data).
-
-### In the example of renewal:
-
-1. The client generates a `CID` for the data and requests the RaaS node to store data.
-2. The RaaS node takes the client’s data and makes the storage deal onto Filecoin.
-3. The client registers a renewal job to the RaaS node and defines the renewal threshold for the data’s storage deal, by calling the `/register_jobs` API on the RaaS node (e.g. renew storage deals that are 1 month away from expiry).
-4. The RaaS node periodically checks the client data’s `CID` for its deal status on Filecoin.
- * The RaaS node requests deal status with the DealStatus smart contract, via `getExpiringDeals(CID)` and checks if any of its active deals is expiring.
- * The DealStatus smart contract returns the information of expiring deals to the RaaS node.
-5. If deals with the client’s data are expiring, the RaaS node is notified.
-6. The RaaS node fetches the data via its `CID` and resubmit a request to create new storage deals (repeat step 2).
-7. When the client requests for retrieval of data, it queries the RaaS node, which will fetch the data from the storage provider on Filecoin or provide an IPFS pinned copy (depends on how RaaS node is setup to store the data).
-
-### In the example of repair
-
-1. The client generates a `CID` for the data and requests the RaaS node to store data.
-2. The RaaS node takes the client’s data and makes the storage deal onto Filecoin.
-3. The client registers a repair job to the RaaS node and defines the repair threshold for the data’s storage deal, by calling the `/register_jobs` API on the RaaS node (e.g. “this deal needs repairing if it is not proven active for X epochs”).
-4. The RaaS node periodically checks with [Lotus](https://lotus.filecoin.io/lotus/get-started/what-is-lotus/), if the deal ID and corresponding miner, is actively being proven by the miner on Filecoin. The node calls `StateMarketStorageDeal`, with provided deal and miner IDs.
-5. If the deal ID and corresponding deal sector are not being actively proven for X epochs, the deal will require repairing.
-6. The RaaS node fetches the data via its `CID` and resubmit a request to create new storage deals (repeat step 2).
-
-Check out the [RaaS starter kit](https://github.com/filecoin-project/raas-starter-kit) to build your own RaaS interface.
-
-## Aggregator-hosted RaaS
-
-The aggregator-hosted RaaS refers to a solution that requires an aggregator to host all the components of RaaS and provides a seamless interface to the client. [Lighthouse.storage](https://www.lighthouse.storage/) is the first FVM project to provide an aggregator-hosted RaaS, via its SDK.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/programmatic-storage/raas-interfaces)
diff --git a/smart-contracts/programmatic-storage/raas.md b/smart-contracts/programmatic-storage/raas.md
deleted file mode 100644
index 967603962..000000000
--- a/smart-contracts/programmatic-storage/raas.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-description: Replicate, Renew, and Repair your storage deals with a service
----
-
-# Data replication, renewal and repair (RaaS)
-
-RaaS refers to replication, renew and repair of storage deals. It is a feature of programmatic storage on Filecoin, enabled by FVM. This page covers the basic features of RaaS and handy tutorial to help you get started.
-
-## Introduction
-
-What does it mean to replicate, renew, or repair data storage deals through a Filecoin smart contract?
-
-* RaaS refers to replication, renewal and repair as a service, for data stored in storage deals on Filecoin:
-* Replication refers to the option to store a user-defined number of replicas of your data.
-* Renewal refers to the option to automatically observe on-chain storage deals until the expiry of their deal term, and automatically renew the deal.
-* Repair refers to the automatic observation of storage deals, to ensure they are not in a faulted sector. If they are, these workers repair them automatically.
-
-The motivation behind RaaS is to enable perpetual data storage on Filecoin.
-
-“As a service" refers to the opportunity to provide these RaaS features as services, to incentivize clients to use them and/or storage platforms to enable them. These are a part of the Filecoin programmable storage market with FVM.
-
-## RaaS modules
-
-There are two ways available to use with RaaS, for different purposes - the self-hosted RaaS where the Client runs all components and aggregator-hosted RaaS, which refers to a fully hosted RaaS service that is provided to the Client by aggregators.
-
-At the RaaS, any contract or storage platform that has the metadata of the stored data, can request the RaaS node to perform its functions. However, the RaaS node has to be self-hosted in order to function. Storage platforms have the opportunity to build an aggregator-hosted RaaS node, to provide hosted replication, renewal, and repair services to clients.
-
-A RaaS node, which monitors deals done through aggregators on Filecoin, will take action if replication, renew, or repair requirements are not observed.
-
-RaaS nodes are only able to monitor deals from aggregators, since the nodes listen to the SubmitAggregatorRequest event in order to pick these deals up.
-
-Here is a brief outline of the RaaS process:
-
-1. An Aggregator sends a CID to the RaaS node, requesting for replication, renewal and/or repair as needed.
-2. The RaaS smart contracts maintains the information of deals created by the RaaS, including deal\_id and miner\_id.
-3. The RaaS node periodically checks the deal status on the Filecoin network, by interacting with the RaaS\` smart contract.
-4. If the deal requires replication, renewal and/or repair, the RaaS node resubmit deals to aggregators and requests the aggregator to make a new deal.
-
-## Tutorial
-
-We're now going to quickly cover how to create storage deals with replication, renew and repair requirements using smart contracts. This utilizes the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit).
-
-### Interacting with the Smart Contract
-
-First, you need to either:
-
-* Start an instance of the BaseInterface by deploying a contract that inherits from `IAggregatorOracle` (you can do so via. `yarn deploy` in the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit))
-
-OR
-
-* Use an existing instance of the `FullInterface` located at `0x6ec8722e6543fB5976a547434c8644b51e24785b`. This instance is on the Calibration testnet only, for the moment.
-
-Interact with the smart contract by submitting a CID of your choice to the `submit` function. This will create a new deal request that will be picked up by the RaaS services.
-
-```javascript
-// contractInstance is the address of the contract you deployed or the FullInterface address above.
-const dealStatus = await ethers.getContractAt("DealStatus", contractInstance);
-
-// Submit the CID of the file you want to upload to the Filecoin network in the following way.
-await dealStatus.submit(ethers.utils.toUtf8Bytes(newJob.cid));
-```
-
-The [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit) provides you with a frontend that allows you to upload your file to Lighthouse, get a CID for the uploaded file, then seamlessly submit the CID to the smart contract (accessible via `yarn start`).
-
-Before that, you need to know how to register the various RaaS workers. Note that RaaS functionality will NOT function automatically if deals are only created using submit function.
-
-### Replicate, renew, and repair
-
-You can add workers to perform replication, renewal, and repair jobs by having them listen to the `SubmitAggregatorRequest`. The methods for doing so differ between the Base and Full interfaces.
-
-If you are running a base interface (specifically, the one in the [RaaS Starter Kit](https://github.com/filecoin-project/raas-starter-kit)), there's an event listener inside the RaaS service node that you can use to listen for new deal requests.
-
-This event listener performs processing for each job submitted to the contract to add RaaS service workers and eventually to call `complete` on the contract.
-
-```javascript
-// Initialize the listener for the Deal Creation event
-async function initializeDealCreationListener() {
- const dealStatus = await ethers.getContractAt(contractName, contractInstance);
-
- /// Logic for handling SubmitAggregatorRequest events
- function handleEvent(transactionId, cid) {
- console.log(`Received SubmitAggregatorRequest event: (Transaction ID: ${transactionId}, CID: ${cid})`);
- // ... other code to handle the event emission
-
- (async () => {
- // ... other code
-
- // After processing this event, reattach the event listener
- if (dealStatus.listenerCount("SubmitAggregatorRequest") === 0) {
- dealStatus.once("SubmitAggregatorRequest", handleEvent);
- }
- })();
- }
-
- // Start listening to the first event and recursively handle the next events
- if (dealStatus.listenerCount("SubmitAggregatorRequest") === 0) {
- dealStatus.once("SubmitAggregatorRequest", handleEvent);
- }
-}
-```
-
-To use this, call `yarn service` in the terminal and proceed through the frontend, as you normally would when uploading a file. Register the workers using the autocompleted CID that appears in the box.
-
-If you want to register the workers manually for a job that you didn't upload, paste in the known CID of your file into the box and register the jobs.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/smart-contracts/programmatic-storage/raas)
diff --git a/smart-contracts/smart-contracts.md b/smart-contracts/smart-contracts.md
deleted file mode 100644
index 225638f91..000000000
--- a/smart-contracts/smart-contracts.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Smart contracts
-
diff --git a/storage-providers/architecture/README.md b/storage-providers/architecture/README.md
index 8f15af2a4..60dca48cb 100644
--- a/storage-providers/architecture/README.md
+++ b/storage-providers/architecture/README.md
@@ -1,9 +1,19 @@
---
description: >-
- This section covers the architectural components and processes that storage
- providers should be aware of when creating their infrastructure.
+ Software components, sealing processes, and system design for storage provider operations.
---
# Architecture
+This section covers the software stack, sealing pipeline, and operational tooling that storage providers use to run their systems.
+
+## Table of contents
+
+* [Software components](lotus-components.md) — the major Lotus components in a storage provider setup
+* [Storage provider automation](lotus-automation.md) — one-click deployment tools for the Lotus and Boost stack
+* [Sealing pipeline](sealing-pipeline.md) — the step-by-step process of preparing sectors for storage
+* [Sealing rate](sealing-rate.md) — factors that determine how fast a provider can seal new sectors
+* [Sealing as a service](sealing-as-a-service.md) — outsourcing sector sealing to third-party providers
+* [Network indexer](network-indexer.md) — how the IPNI maps content identifiers to storage providers
+
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/architecture)
diff --git a/storage-providers/architecture/lotus-components.md b/storage-providers/architecture/lotus-components.md
index 28062e241..da68c8e34 100644
--- a/storage-providers/architecture/lotus-components.md
+++ b/storage-providers/architecture/lotus-components.md
@@ -31,7 +31,7 @@ The machine running the Lotus daemon must be connected to the public internet fo
#### Syncing the chain
-Syncing the chain is a key role of the daemon. It communicates with the other nodes on the network by sending messages, which are, in turn, collected into [blocks](https://docs.filecoin.io/reference/general/glossary/#block). These blocks are then collected into [tipsets](https://docs.filecoin.io/reference/general/glossary/#tipset). Your Lotus daemon receives the messages on-chain, enabling you to maintain consensus about the state of the Filecoin network with all the other participants.
+Syncing the chain is a key role of the daemon. It communicates with the other nodes on the network by sending messages, which are, in turn, collected into [blocks](../../reference/general/glossary.md#block). These blocks are then collected into [tipsets](../../reference/general/glossary.md#tipset). Your Lotus daemon receives the messages on-chain, enabling you to maintain consensus about the state of the Filecoin network with all the other participants.
Due to the growth in the size of the chain since its genesis, it is not advised for storage providers to sync the entire history of the network. Instead, providers should use the available [lightweight snapshots](https://forest-archive.chainsafe.dev/list) to import the most recent messages. One exception in which a provider would need to sync the entire chain would be to run a blockchain explorer.
@@ -92,7 +92,7 @@ Another key responsibility of the Lotus Miner is the scheduling of jobs for the
#### Storage proving
-One of the most important roles of `lotus-miner` is the Storage proving. Both [WindowPoSt](https://docs.filecoin.io/reference/general/glossary/#window-proof-of-spacetime-windowpost) and [WinningPoSt](https://docs.filecoin.io/reference/general/glossary/#winning-proof-of-spacetime-winningpost) processes are usually handled by the `lotus-miner` process. For scalability and reliability purposes it is now also possible to run these proving processes on dedicated servers (proving workers) instead of using the Lotus miner.
+One of the most important roles of `lotus-miner` is the Storage proving. Both [WindowPoSt](../../reference/general/glossary.md#window-proof-of-spacetime-windowpost) and [WinningPoSt](../../reference/general/glossary.md#winning-proof-of-spacetime-winningpost) processes are usually handled by the `lotus-miner` process. For scalability and reliability purposes it is now also possible to run these proving processes on dedicated servers (proving workers) instead of using the Lotus miner.
The proving processes require low-latency access to sealed sectors. The proving challenge requires a GPU to run on. The resulting `zkProof` will be sent to the chain in a message. Messages must arrive within 30 minutes for WindowPoSt, and 30 seconds for WinningPoSt. It is extremely important that providers properly size and configure the proving workers, whether they are using just the Lotus miner or separate workers. Additionally, dedicated wallets, described in Control wallets, should be set up for these processes.
diff --git a/storage-providers/architecture/network-indexer.md b/storage-providers/architecture/network-indexer.md
index ff02f786e..de8815f52 100644
--- a/storage-providers/architecture/network-indexer.md
+++ b/storage-providers/architecture/network-indexer.md
@@ -16,9 +16,9 @@ There are two groups of users within the network indexer process:
## How the indexer works
-This diagram summarizes the different _actors_ in the indexer ecosystem and how they interact with each other. In this context, these actors are not the same as [smart-contract actors](../../smart-contracts/filecoin-evm-runtime/actor-types.md).
+This diagram summarizes the different _actors_ in the indexer ecosystem and how they interact with each other. In this context, these actors are not the same as [smart-contract actors](../../core-concepts/filecoin-evm-runtime/actor-types.md).
-
## IPNI and storage providers
diff --git a/storage-providers/basics/quickstart-guide.md b/storage-providers/basics/quickstart-guide.md
deleted file mode 100644
index 7b07a31ca..000000000
--- a/storage-providers/basics/quickstart-guide.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-description: >-
- This page is a quick start guide for storage providers in the Filecoin
- ecosystem.
----
-
-# Quickstart guide
-
-## Explore the storage provider documentation
-
-Get ready to dive into the valuable resources of the [storage provider documentation](./). This comprehensive guide offers a wealth of information about the role of storage providers in the Filecoin ecosystem, including insights into the economic aspects. You’ll also gain knowledge about the software architecture, hardware infrastructure, and the necessary skills for success.
-
-## Gain insights into ROI and collateral’s role
-
-To run a successful storage provider business, it’s crucial to understand the concept of [Return on Investment (ROI)](https://calc.filecoin.eu) and the significance of collateral. By planning ahead and considering various factors, such as CAPEX, OPEX, network variables, and collateral requirements, you can make informed decisions that impact your business’s profitability and desired capacity.
-
-## Get to know the ecosystem
-
-One of the truly enriching elements of the Filecoin ecosystem lies in its vibrant community. Meet the community on the [Filecoin Slack](https://filecoin.io/slack). Within this dynamic network, you’ll find a treasure trove of individuals who are eager to share their experiences and offer invaluable solutions to the challenges they’ve encountered along the way. Whether it’s navigating the intricacies of storage provider operations or overcoming hurdles on the blockchain, this supportive community stands ready to lend a helping hand. Embrace the spirit of collaboration and tap into this remarkable network.
-
-## Unleash the Power of Filecoin’s Reference Implementation
-
-Get ready to dive into the heart of the Filecoin network with [Lotus](https://lotus.filecoin.io), the leading reference implementation. As the most widely used software stack for interacting with the blockchain and operating a storage provider setup, Lotus holds the key to unlocking a world of possibilities. Seamlessly navigate the intricacies of this powerful tool and leverage its capabilities to propel your journey forward.
-
-## Hands-on learning and exploration
-
-It’s time to roll up your sleeves and embark on a hands-on adventure. With a multitude of options at your disposal, setting up a [local devnet](../../networks/local-testnet/) environment is the easiest and most exciting way to kickstart your Filecoin journey. Immerse yourself in the captivating world of sealing sectors and witness firsthand how this critical process works. Feel the thrill of experimentation as you delve deeper into the inner workings of this remarkable technology.
-
-## Transforming into a storage provider
-
-Congratulations on taking the next leap in becoming a full-fledged storage provider! Now is the time to determine your starting capacity and architect a tailored solution to accommodate it. Equip yourself with the [necessary hardware](../infrastructure/reference-architectures.md) to kickstart your journey on the mainnet. Test your setup on the calibration testnet to fine-tune your skills and ensure seamless operations. Once you’re ready, brace yourself for the excitement of joining the mainnet.
-
-## Supercharge your mainnet experience
-
-As you step into the vibrant realm of the mainnet, it’s time to supercharge your storage provider capabilities with [Boost](https://boost.filecoin.io). Discover the immense potential of this powerful software designed to help you secure storage deals and offer efficient data retrieval services to data owners. Unleash the full force of Boost and witness the transformative impact it has on your Filecoin journey.
-
-## Discover the world of verified deals and tools
-
-Within the Filecoin network there are many [programs and tools](../filecoin-deals/filecoin-programs.md) designed to enhance your storage provider setup. Uncover the power of these tools as you dive into the documentation, gaining valuable insights and expanding your knowledge. Make the best use of data programs on your path to success.
-
-
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/basics/quickstart-guide)
diff --git a/storage-providers/core-competencies/README.md b/storage-providers/core-competencies/README.md
new file mode 100644
index 000000000..1e210b5b0
--- /dev/null
+++ b/storage-providers/core-competencies/README.md
@@ -0,0 +1,19 @@
+---
+description: >-
+ Essential skills and knowledge areas for running a successful storage provider operation.
+---
+
+# Core competencies
+
+Running a storage provider requires expertise across several domains. This section outlines the key skills needed to build and maintain a reliable operation.
+
+## Table of contents
+
+* [Linux](linux.md) — operating system administration for production Filecoin systems
+* [Network](network.md) — network architecture, monitoring, and performance optimization
+* [Security](security.md) — protecting wallets, systems, and data from threats
+* [Storage](storage.md) — designing storage systems for proof-of-storage requirements
+* [Sales](sales.md) — attracting clients, managing finances, and sustaining a competitive business
+* [Industry](industry.md) — compliance standards and certifications for enterprise customers
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies)
diff --git a/storage-providers/skills/industry.md b/storage-providers/core-competencies/industry.md
similarity index 98%
rename from storage-providers/skills/industry.md
rename to storage-providers/core-competencies/industry.md
index cdc258e68..7162ad90d 100644
--- a/storage-providers/skills/industry.md
+++ b/storage-providers/core-competencies/industry.md
@@ -27,4 +27,4 @@ Having one or more of these certifications can demonstrate to customers that you
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/industry)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/industry)
diff --git a/storage-providers/skills/linux.md b/storage-providers/core-competencies/linux.md
similarity index 99%
rename from storage-providers/skills/linux.md
rename to storage-providers/core-competencies/linux.md
index d484e4f8d..01f9efc3f 100644
--- a/storage-providers/skills/linux.md
+++ b/storage-providers/core-competencies/linux.md
@@ -78,4 +78,4 @@ top
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/linux)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/linux)
diff --git a/storage-providers/skills/network.md b/storage-providers/core-competencies/network.md
similarity index 99%
rename from storage-providers/skills/network.md
rename to storage-providers/core-competencies/network.md
index 8c0a87fe5..4cd50e555 100644
--- a/storage-providers/skills/network.md
+++ b/storage-providers/core-competencies/network.md
@@ -55,4 +55,4 @@ As a storage provider, you also need to make trade-offs between performance and
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/network)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/network)
diff --git a/storage-providers/skills/sales.md b/storage-providers/core-competencies/sales.md
similarity index 99%
rename from storage-providers/skills/sales.md
rename to storage-providers/core-competencies/sales.md
index 51fba77f1..effffb71b 100644
--- a/storage-providers/skills/sales.md
+++ b/storage-providers/core-competencies/sales.md
@@ -41,4 +41,4 @@ It takes additional effort to work with customers and their data, but it has the
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/sales)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/sales)
diff --git a/storage-providers/skills/security.md b/storage-providers/core-competencies/security.md
similarity index 98%
rename from storage-providers/skills/security.md
rename to storage-providers/core-competencies/security.md
index 157fd6eea..f35318818 100644
--- a/storage-providers/skills/security.md
+++ b/storage-providers/core-competencies/security.md
@@ -44,4 +44,4 @@ A second layer of defense is system security. There are multiple concepts that c
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/security)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/security)
diff --git a/storage-providers/skills/storage.md b/storage-providers/core-competencies/storage.md
similarity index 99%
rename from storage-providers/skills/storage.md
rename to storage-providers/core-competencies/storage.md
index e0997bbd3..eaaff16f8 100644
--- a/storage-providers/skills/storage.md
+++ b/storage-providers/core-competencies/storage.md
@@ -56,4 +56,4 @@ Read-cache on the other hand is typically not useful in the context of Filecoin.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills/storage)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/core-competencies/storage)
diff --git a/storage-providers/filecoin-deals/README.md b/storage-providers/filecoin-deals/README.md
index e191f6700..2e7c0fd97 100644
--- a/storage-providers/filecoin-deals/README.md
+++ b/storage-providers/filecoin-deals/README.md
@@ -1,9 +1,20 @@
---
description: >-
- This section covers the different types of deals in the Filecoin network, and
- how they relate to storage providers.
+ Deal types, pricing strategies, and tools for accepting storage deals as a provider.
---
# Filecoin deals
+This section covers the different deal types available on Filecoin, how providers accept and manage client data, and tools that help streamline the process.
+
+## Table of contents
+
+* [Storage deals](storage-deals.md) — how providers accept and store client data in sectors
+* [Verified deals](verified-deals.md) — deals from Filecoin Plus clients that earn higher rewards
+* [Filecoin programs and tools](filecoin-programs.md) — platforms and programs that connect providers with clients
+* [Snap deals](snap-deals.md) — convert empty sectors into data sectors without re-sealing
+* [Charging for data](charging-for-data.md) — pricing strategies and revenue models for storage services
+* [Auxiliary services](auxiliary-services.md) — additional services providers can offer beyond storage
+* [Return on investment](return-on-investment.md) — how to calculate costs, revenue, and profitability
+
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/filecoin-deals)
diff --git a/storage-providers/filecoin-deals/auxiliary-services.md b/storage-providers/filecoin-deals/auxiliary-services.md
index b4c86aec7..238a3a84d 100644
--- a/storage-providers/filecoin-deals/auxiliary-services.md
+++ b/storage-providers/filecoin-deals/auxiliary-services.md
@@ -1,24 +1,16 @@
---
description: >-
As a storage provider, you can set your business apart from the rest by
- offering additional services to your customers. Many new use-cases for the
- Filecoin network are emerging as new technologies are
+ offering additional services to your customers. This page highlights a few
+ optional service areas to consider as the Filecoin ecosystem evolves.
---
# Auxiliary services
-## Saturn
-
-One of the additional services is participation in Saturn retrieval markets. [Saturn](https://saturn.tech) is a Web3 CDN (“content delivery network”), and will [launch in stages in 2023](https://saturn.tech/#roadmap). Saturn aims to be the biggest Web3 CDN, and biggest CDN overall with the introduction of Saturn, data stored on Filecoin is no longer limited to archive or cold storage, but can also be cached into a CDN layer for fast retrieval. Data that needs to be available quickly can then be stored on Filecoin and retrieved through Saturn. Saturn comes with 2 layers of caching, L1 and L2. L1 nodes typically run in data centers, require high availability and 10 GBs minimum connectivity. The L1 Saturn provider earns FIL through caching and serving data to clients. L2 nodes can be run via an app on desktop hardware.
-
## FVM
Other new opportunities are emerging since the launch of FVM (Filecoin Virtual Machine) in March 2023. The FVM allows smart contracts to be executed on the Filecoin blockchain. The FVM is Ethereum-compatible (also called the FEVM) and allows for entire new use cases to be developed in the Filecoin ecosystem. Think of on-chain FIL lending as an example, but the opportunities are countless.
-## Bacalhau
-
-A next step after the introduction of FVM is [Bacalhau](https://docs.bacalhau.org/)), which will be offering Compute over Data (COD). After the introduction of a compute layer on Filecoin, Bacalhau’s COD promises to run compute jobs over the data where the data resides, at the storage provider. Today, data scientists have to transfer their datasets to compute farms in order for their AI, ML or other data processing activities to run. Bacalhau will allow them to run compute activities on the data where the data is located, thereby removing the expensive requirement to move data around. Storage providers will be able to offer - and get rewarded for - providing compute power to data scientists and other parties who want to execute COD.
-
## Storage tiering
Another potential service to offer is storage tiers with various performance profiles. For example, storage providers can offer hot/online storage by keeping an additional copy of the unsealed data available for immediate retrieval, as well as the sealed that has been stored on the Filecoin Network.
diff --git a/storage-providers/filecoin-deals/filecoin-programs.md b/storage-providers/filecoin-deals/filecoin-programs.md
index 5615f92b0..950a6fbed 100644
--- a/storage-providers/filecoin-deals/filecoin-programs.md
+++ b/storage-providers/filecoin-deals/filecoin-programs.md
@@ -6,7 +6,7 @@ description: >-
# Filecoin programs and tools
-Although it is possible to find your own data storage customers with valuable datasets they want to store, and have them verified through KYC ([Know Your Customer](https://en.wikipedia.org/wiki/Know\_your\_customer)) to create verified deals for [Filecoin Plus](../../basics/how-storage-works/filecoin-plus.md), there are also programs and platforms that make it easier for storage providers to receive verified deals.
+Although it is possible to find your own data storage customers with valuable datasets they want to store, and have them verified through KYC ([Know Your Customer](https://en.wikipedia.org/wiki/Know\_your\_customer)) to create verified deals for [Filecoin Plus](../../getting-started/how-storage-works/filecoin-plus.md), there are also programs and platforms that make it easier for storage providers to receive verified deals.
## [Web3.storage](https://web3.storage/)
@@ -28,7 +28,7 @@ Spade automates the process of renewing storage deals on the Filecoin network, e
## [Singularity](https://github.com/data-preservation-programs/singularity)
-[](https://github.com/data-preservation-programs/singularity) [](https://github.com/data-preservation-programs/spade/graphs/commit-activity) [](https://data-programs.gitbook.io/singularity) [](https://filecoinproject.slack.com/archives/C05JABREATH)
+[](https://github.com/data-preservation-programs/singularity) [](https://github.com/data-preservation-programs/singularity/graphs/commit-activity) [](https://data-programs.gitbook.io/singularity) [](https://filecoinproject.slack.com/archives/C05JABREATH)
Singularity is an end-to-end solution for onboarding datasets to Filecoin storage providers, supporting [PiB-scale data](https://stats.singularity.storage/). It offers modular compatibility with various data preparation and deal-making tools, allowing efficient processing from local or remote storage. Singularity integrates with over 40 storage solutions and introduces inline preparation, which links CAR files to their original data sources, preserving dataset hierarchies. It also supports content distribution and retrieval through multiple protocols and provides push and pull modes for deal making along with robust wallet management features.
@@ -40,7 +40,7 @@ Many other programs and tools exist in the Filecoin community, developed by part
[](https://filecoinproject.slack.com/archives/C07FN47FCFJ)
-Akave is revolutionizing data management with a decentralized, modular solution that combines the robust storage of Filecoin with cutting-edge encryption and easy-to-use interfaces. Read more on the [Akave Docs](https://docs.akave.ai/).
+Akave is revolutionizing data management with a decentralized, modular solution that combines the robust storage of Filecoin with cutting-edge encryption and easy-to-use interfaces. Read more on the [Akave Docs](https://docs.akave.ai/).
### [CIDGravity](https://www.cidgravity.com/)
@@ -48,39 +48,31 @@ Akave is revolutionizing data management with a decentralized, modular solution
CIDGravity is a software-as-a-service that allows storage providers to handle dynamic pricing and client management towards your solution. It integrates with deal engines such as [Boost](https://boost.filecoin.io).
-### [Swan (Filswan)](https://github.com/filswan)
-
-[](https://github.com/filswan) [](https://docs.filswan.com/) [](https://filecoinproject.slack.com/archives/C04LBAMBDPD)
-
-Swan is a provider of cross-chain cloud computing solutions. Developers can use its suite of tools to access resources across multiple chains.
-
-Swan Cloud provides decentralized cloud computing solutions for Web3 projects by integrating storage, computing, and payment into one suite.
-
### [Open Panda](https://github.com/data-preservation-programs/open-panda)
-Open Panda was a platform for data researchers, analysts, students, and enthusiasts to interact with the largest open datasets in the world. Data available through the platform was stored on Filecoin, a decentralized storage network comprised of thousands of independent Storage Providers around the world.
+Open Panda is a platform for data researchers, analysts, students, and enthusiasts to interact with large open datasets. Data available through the platform is stored on Filecoin, a decentralized storage network comprised of thousands of independent Storage Providers around the world.
## Former programs and tools
-Here is a comprehensive list of deprecated tools and projects.
+Here is a comprehensive list of legacy tools and projects that are no longer actively maintained.
### Evergreen
-
+
Evergreen extended the [Slingshot](filecoin-programs.md#slingshot) program by aiming to store open datasets forever. Standard deals had a maximum duration of 540 days, which was not long enough for valuable, open datasets that might need to be stored forever. Evergreen used the [Spade](filecoin-programs.md#spade) deal engine, which automatically renewed deals to extend the lifetime of the dataset on-chain.
### CO2.Storage
-
+
CO2.Storage was a decentralized storage solution for structured data based on content-addressed data schemas. CO2.Storage primarily focused on structured data for environmental assets, such as Renewable Energy Credits, Carbon Offsets, and geospatial datasets, and mapped inputs to base data schemas (IPLD DAGs) for off-chain data (like metadata, images, attestation documents, and other assets) to promote the development of standard data schemas for environmental assets. This project was in alpha, and while many features could be considered stable, it was waiting until being feature complete to fully launch. The Filecoin Green team was actively working on this project and welcomed contributions from the community.
### Filecoin Tracker
-
+
-Filecoin Tracker was deprecated on April 20, 2024.
+Filecoin Tracker was retired on April 20, 2024.
Here are great existing and working Filecoin dashboards that cover similar topics:
@@ -90,41 +82,33 @@ Here are great existing and working Filecoin dashboards that cover similar topic
### Slingshot
-[](https://github.com/filecoin-project/slingshot)   [](https://filecoinproject.slack.com/archives/C01AZP8BKRQ)
+[](https://github.com/filecoin-project/slingshot)   [](https://filecoinproject.slack.com/archives/C01AZP8BKRQ)
-Slingshot was a program that united Data clients, Data preparers and storage providers in a community to onboard data and share replicas of publicly valuable [_Open Datasets_](https://datasets.filecoin.io). Rather than providing a web interface like Estuary, Slingshot was a program that provides a workflow and tools for onboarding of large open datasets. The Slingshot Deal Engine provided deals to registered and certified storage providers. The data was prepared and uploaded using a tool called [Singularity](filecoin-programs.md#singularity).
+Slingshot was a program that united Data clients, Data preparers and storage providers in a community to onboard data and share replicas of publicly valuable [_Open Datasets_](https://datasets.filecoin.io). Slingshot provided a workflow and tools for onboarding of large open datasets. The Slingshot Deal Engine provided deals to registered and certified storage providers. The data was prepared and uploaded using a tool called [Singularity](filecoin-programs.md#singularity).
### Dataprograms.org
-
+
dataprograms.org listed tools, products, and incentive programs designed to drive growth and make data storage on Filecoin more accessible. It was discontinued in April 2024.
### Moonlanding
-
+
Moon Landing was designed to ramp up storage providers in the Filecoin network by enabling them to serve verified deals at scale.
### Filecoin Dataset Explorer
-
+
Filecoin Dataset Explorer showcased data stored on the Filecoin network between 2020 and 2022, including telemetry, historical archives, Creative Commons media, entertainment archives, scientific research, and machine learning datasets. It highlighted Filecoin's capability to store large datasets redundantly, ensuring availability from multiple Storage Providers worldwide. Each dataset is identified by a unique content identifier (CID). The platform aimed to make diverse datasets accessible to users globally.
See also: Legacy Explorer (legacy.datasets.filecoin.io)
-## Estuary
-
-
-
-Estuary was an experimental software platform designed for sending public data to the Filecoin network, facilitating data retrieval from anywhere. It integrated IPFS and Filecoin technologies to provide a seamless end-to-end example for data storage and retrieval. When a file was uploaded, Estuary immediately made multiple storage deals with different providers to ensure redundancy and security. The software automated many aspects of deal making and retrieval, offering tools for managing connections, block storage, and deal tracking. Estuary aimed to simplify the use of decentralized storage networks for developers and users.
-
-Estuary was discontinued in July 2023, and the website shut down in April 2024.
-
### Big Data Exchange
-
+
Big Data Exchange was a program that allowed storage providers easy access to Filecoin+ deals through an auction where Storage Providers could bid on datasets by offering to pay clients FIL to choose the bidder as their Storage Provider.
diff --git a/storage-providers/filecoin-deals/return-on-investment.md b/storage-providers/filecoin-deals/return-on-investment.md
index f0bd97667..efca14a7f 100644
--- a/storage-providers/filecoin-deals/return-on-investment.md
+++ b/storage-providers/filecoin-deals/return-on-investment.md
@@ -18,9 +18,9 @@ Calculating the Return-on-Investment (ROI) of your storage provider business is
**Finally**, the forecasted growth of the network and the demand for storage will also impact the ROI calculation. If the network and demand for storage grow rapidly, the ROI may increase. However, if the growth is slower than anticipated, the ROI may decrease.
-**Overall**, calculating the ROI of a storage provider business is complex and requires a thorough understanding of the costs and income streams involved. The storage provider Forecast Calculator can assist in determining the ROI by accounting for various factors such as hardware costs, token price, and expected growth of the network.
+**Overall**, calculating the ROI of a storage provider business is complex and requires a thorough understanding of the costs and income streams involved. A forecasting model or spreadsheet can help determine ROI by accounting for factors such as hardware costs, token price, and expected growth of the network.
-Calculating the ROI of your storage provider business is important. Check out the [Storage Provider Forecast Calculator](https://calc.filecoin.eu/) for more details.
+Calculating the ROI of your storage provider business is important. Use the considerations on this page as a checklist for the assumptions you need to model.
For more information and context see the following video:
diff --git a/storage-providers/filecoin-deals/verified-deals.md b/storage-providers/filecoin-deals/verified-deals.md
index 94deef36e..6b17c175b 100644
--- a/storage-providers/filecoin-deals/verified-deals.md
+++ b/storage-providers/filecoin-deals/verified-deals.md
@@ -28,9 +28,9 @@ As a storage provider, you play a crucial role in the ecosystem. Unlike miners i
* Networking.
* Relationship building.
-Acquiring data copies requires systems and infrastructure capable of ingesting large volumes of data, sometimes up to a PiB. This necessitates significant internet bandwidth, with a minimum of 10 GB. For instance, transferring 1 PiB of data takes approximately 240 hours on a 10 GB connection. However, many large storage providers use up to 100 GB internet connections. \`\`\`
+Acquiring data copies requires systems and infrastructure capable of ingesting large volumes of data, sometimes up to a PiB. This necessitates significant internet bandwidth, with a minimum of 10 Gbps. For instance, transferring 1 PiB of data takes approximately 240 hours on a 10 Gbps connection. However, many large storage providers use up to 100 Gbps internet connections.
-Data preparation, which involves separating files and folders in CAR files, is time-consuming and requires expertise. You can delegate this task to a Data Preparer for a fee or assume the role yourself. Tools like [Singularity](https://singularity.storage/) simplify this process.
+Data preparation, which involves separating files and folders in CAR files, is time-consuming and requires expertise. You can delegate this task to a Data Preparer for a fee or assume the role yourself. Tools like [Singularity](https://data-programs.gitbook.io/singularity) simplify this process.
Once the data is sealed and you are proving your copies on-chain (i.e. on the blockchain), you will need to offer retrievals to your customer as well. This obviously requires network bandwidth once more, so you may need to charge for retrievals accordingly.
diff --git a/storage-providers/filecoin-economics/README.md b/storage-providers/filecoin-economics/README.md
index e8b8e9acb..c0c451211 100644
--- a/storage-providers/filecoin-economics/README.md
+++ b/storage-providers/filecoin-economics/README.md
@@ -1,9 +1,18 @@
---
description: >-
- This section discusses the economics of Filecoin in relation to storage
- providers.
+ How storage providers earn rewards, post collateral, and manage economic risks on Filecoin.
---
# Filecoin economics
+This section explains the financial mechanics of running a storage provider, including how rewards are earned, what collateral is required, and what penalties apply for failures.
+
+## Table of contents
+
+* [Storage proving](storage-proving.md) — how providers prove they are storing data using Proof-of-Spacetime
+* [FIL collateral](fil-collateral.md) — the token commitment required to begin providing storage
+* [Block rewards](block-rewards.md) — how providers earn FIL by mining blocks based on storage power
+* [Slashing](slashing.md) — penalties for failing to prove storage or acting maliciously
+* [Committed capacity](committed-capacity.md) — sectors filled with placeholder data to earn consensus power
+
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/filecoin-economics)
diff --git a/storage-providers/filecoin-economics/block-rewards.md b/storage-providers/filecoin-economics/block-rewards.md
index e435f7856..2bb96e4a9 100644
--- a/storage-providers/filecoin-economics/block-rewards.md
+++ b/storage-providers/filecoin-economics/block-rewards.md
@@ -10,7 +10,7 @@ description: >-
WinningPoSt (short for [Winning Proof of SpaceTime](https://spec.filecoin.io/algorithms/pos/post/)) is the cryptographic challenge through which storage providers are rewarded for their contributions to the network. At the beginning of each epoch (1 epoch = 30 seconds), a small number of storage providers are elected by the network to mine new [blocks](../../reference/general/glossary.md#block). Each elected storage provider who successfully creates a block is granted Filecoin tokens by means of a _block reward_. The amount of FIL per block reward varies over time and is listed on various blockchain explorers like [Filfox](https://filfox.info/en).
-The election mechanism of the Filecoin network is based on the “storage power” of the storage providers. A minimum of 10 TiB in storage power is required to be eligible for WinningPoSt, and hence to earn block rewards. The more storage power a storage provider has, the more likely they will be elected to mine a block. This concept becomes incredibly advantageous in the context of [Filecoin Plus verified deals](../../basics/how-storage-works/filecoin-plus.md).
+The election mechanism of the Filecoin network is based on the “storage power” of the storage providers. A minimum of 10 TiB in storage power is required to be eligible for WinningPoSt, and hence to earn block rewards. The more storage power a storage provider has, the more likely they will be elected to mine a block. This concept becomes incredibly advantageous in the context of [Filecoin Plus verified deals](../../getting-started/how-storage-works/filecoin-plus.md).
Note that the deadline cron, a built-in actor that processes all miner actors every 60 epochs (every 30 minutes), is responsible for updating the rewards vesting table. A miner operator wishing to process vesting manually, ahead of the per-deadline cron call, could do so by calling WithdrawFunds with an amount of zero. Such a call would require use of the miner's Owner address. More details can be found in [FIP005: Remove ineffective reward vesting](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0005.md).
@@ -36,7 +36,7 @@ The below graph shows the evolution of FIL per block reward over time:
There is a positive side to releasing less FIL per block reward too. As Filecoin has a capped maximum token supply of 2 billion FIL, the slower minting rate allows for minting over a longer period. A lower circulating supply also has a positive effect on the price of FIL.
-See the [Crypto Economics](../../basics/what-is-filecoin/crypto-economics.md) page of this documentation and the [Filecoin spec](https://spec.filecoin.io/#section-systems.filecoin\_token.minting\_model) for more information.
+See the [Crypto Economics](../../getting-started/what-is-filecoin/crypto-economics.md) page of this documentation and the [Filecoin spec](https://spec.filecoin.io/#section-systems.filecoin\_token.minting\_model) for more information.
diff --git a/storage-providers/filecoin-economics/committed-capacity.md b/storage-providers/filecoin-economics/committed-capacity.md
index ea24ca90b..1045871fa 100644
--- a/storage-providers/filecoin-economics/committed-capacity.md
+++ b/storage-providers/filecoin-economics/committed-capacity.md
@@ -15,7 +15,7 @@ Because the Filecoin network needs consistency, meaning all data stored is still
## What’s next?
-Providing committed capacity is the easiest way to get started as a storage provider, but the economics are very dependent on the price of FIL. If the price of FIL is low, it can be unprofitable to provide only committed capacity. The optimal FIL-price your business needs to be profitable will depend on your setup. Profitability can be increased by utilizing [Filecoin Plus](../../basics/how-storage-works/filecoin-plus.md), along with [extra services you can charge for](../filecoin-deals/auxiliary-services.md).
+Providing committed capacity is the easiest way to get started as a storage provider, but the economics are very dependent on the price of FIL. If the price of FIL is low, it can be unprofitable to provide only committed capacity. The optimal FIL-price your business needs to be profitable will depend on your setup. Profitability can be increased by utilizing [Filecoin Plus](../../getting-started/how-storage-works/filecoin-plus.md), along with [extra services you can charge for](../filecoin-deals/auxiliary-services.md).
Note that as of [FIP008: Add miner batched sector pre-commit method](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0008.md), storage providers can now batch pre-commit up to 256 sectors at once. This change reduces gas costs, requires fewer reads/writes to the blockchain, and lowers transaction congestion. Note that if anything in the batch is invalid, nothing in the batch is pre-committed.
diff --git a/storage-providers/filecoin-economics/fil-collateral.md b/storage-providers/filecoin-economics/fil-collateral.md
index ab52eaa0c..c6cabc943 100644
--- a/storage-providers/filecoin-economics/fil-collateral.md
+++ b/storage-providers/filecoin-economics/fil-collateral.md
@@ -43,7 +43,7 @@ The gas fees fluctuate over time and can be followed on various websites like [F
## FIL lending programs
-The ecosystem has FIL lenders who can provide you FIL (with interest) to get you started, which you can pay back over time and with the help of earned block rewards. Every lender, though, will still require you to supply up to 20% of the required collateral. The [Filecoin Virtual Machine](../../smart-contracts/fundamentals/the-fvm.md), introduced in March 2023, enables the creation of new lending mechanisms via smart contracts.
+The ecosystem has FIL lenders who can provide you FIL (with interest) to get you started, which you can pay back over time and with the help of earned block rewards. Every lender, though, will still require you to supply up to 20% of the required collateral. The [Filecoin Virtual Machine](../../core-concepts/filecoin-virtual-machine/), introduced in March 2023, enables the creation of new lending mechanisms via smart contracts.
diff --git a/storage-providers/basics/README.md b/storage-providers/getting-started.md
similarity index 54%
rename from storage-providers/basics/README.md
rename to storage-providers/getting-started.md
index ec502118d..8ab537e37 100644
--- a/storage-providers/basics/README.md
+++ b/storage-providers/getting-started.md
@@ -6,7 +6,7 @@ description: >-
keywords: "earn FIL, Filecoin rewards, storage provider rewards, stake FIL, staking FIL, Filecoin staking, become storage provider, FIL staking alternative"
---
-# Basics
+# Getting started
The Filecoin network provides decentralized data storage and makes sure data is verified, always available, and immutable. Storage providers in the Filecoin network are in charge of storing, providing content and issuing new blocks.
@@ -16,8 +16,15 @@ Follow these steps to begin your storage provider journey:
1. Understand Filecoin economics
2. Plan your business
-3. Make sure you have the right skills
+3. Build the right core competencies
4. Build the right infrastructure
+5. Get to know the ecosystem
+6. Understand ROI and collateral
+7. Get started with Lotus
+8. Set up a local development environment
+9. Become a storage provider
+10. Supercharge your mainnet experience with Boost
+11. Explore verified deals and ecosystem tools
## Understand Filecoin economics
@@ -25,25 +32,25 @@ To understand how you can run a profitable business as a Filecoin storage provid
Storage providers can also add additional value to clients when they offer certain certifications. These can enable a storage provider to charge customers additional fees for storing data in compliance with those standards, for example, HIPAA, SOC2, PCI, GDPR and others.
-[Filecoin economics ->](../filecoin-economics/storage-proving.md)
+[Filecoin economics ->](./filecoin-economics/storage-proving.md)
## Plan your business
-The hardware and other requirements for running a Filecoin storage provider business are significantly higher than regular blockchain mining operations. The mechanisms are designed this way because, in contrast to some other blockchain solutions, where you can simply configure one or more nodes to “mine” tokens, the Filecoin network’s primary goal is to provide decentralized storage for humanity’s most valuable data.
+The hardware and other requirements for running a Filecoin storage provider business are significantly higher than regular blockchain mining operations. The mechanisms are designed this way because, in contrast to some other blockchain solutions, where you can simply configure one or more nodes to "mine" tokens, the Filecoin network's primary goal is to provide decentralized storage for humanity's most valuable data.
You need to understand the various earning mechanisms in the Filecoin network.
-[Filecoin deals ->](../filecoin-deals/storage-deals.md)
+[Filecoin deals ->](./filecoin-deals/storage-deals.md)
### Daily fees and startup readiness (FIP-0100)
With the activation of [FIP-0100](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0100.md) in network version 25, all new sectors — and any sectors that are extended or updated — incur a daily fee.
-This fee replaces the previous batch fee model and introduces a predictable cost structure tied to each sector’s quality-adjusted power and the network’s circulating supply.
+This fee replaces the previous batch fee model and introduces a predictable cost structure tied to each sector's quality-adjusted power and the network's circulating supply.
The fee begins accruing the day after a sector is committed or extended. It is deducted automatically at the end of each proving deadline.
-The network first draws from vesting block rewards. If those are insufficient, it draws from the miner’s available balance. If both are empty, the unpaid amount becomes **fee debt**.
+The network first draws from vesting block rewards. If those are insufficient, it draws from the miner's available balance. If both are empty, the unpaid amount becomes **fee debt**.
Fee debt does not directly cause faults. However, it can impact operations:
@@ -53,12 +60,12 @@ Fee debt does not directly cause faults. However, it can impact operations:
To avoid this, storage providers should:
-- Keep a FIL buffer in the miner actor’s balance.
+- Keep a FIL buffer in the miner actor's balance.
- Avoid fully withdrawing unlocked funds unless upcoming rewards will cover future fees.
### Startup considerations
-Miners become eligible to win block rewards once they reach **10 TiB of raw byte power (RBP)**.
+Miners become eligible to win block rewards once they reach **10 TiB of raw byte power (RBP)**.
However, rewards are not guaranteed as soon as that threshold is met. Block production is probabilistic, and smaller miners may wait longer to win a block — especially when competing against larger ones.
@@ -74,13 +81,13 @@ While the amount of FIL required is relatively small compared to overall infrast
To estimate how much FIL may be needed, review the [FIP-0100 discussion thread](https://github.com/filecoin-project/FIPs/discussions/1105) or use the [real-time fee calculator](https://penalty.660688.xyz/dailyfee) to model your expected onboarding rate.
-## Make sure you have the right skills
+## Build the right core competencies
As will become clear, running a storage operation is a serious business, with client data and pledged funds at stake. You will be required to run a highly-available service, and there are automatic financial penalties if you cannot demonstrate data availability to the network. There are many things that can go wrong in a data center, on your network, on your OS, or at an application level.
You will need skilled people to operate your storage provider business. Depending on the size and complexity of your setup this can be 1 person with skills across many different domains, or multiple dedicated people or teams.
-[People and skills ->](../skills/linux.md)
+[Core competencies ->](./core-competencies/README.md)
## Build the right infrastructure
@@ -88,8 +95,48 @@ At the lowest level, you will need datacenter infrastructure. You need people ca
Take availability and suitable redundancy into consideration when choosing your datacenter or collocation provider. Any unavailability of your servers, network or storage can result in automatic financial penalties on the Filecoin network.
-[Software architecture ->](../architecture/lotus-components.md)
+[Software architecture ->](./architecture/lotus-components.md)
-[Infrastructure ->](../skills/storage.md)
+[Infrastructure ->](./infrastructure/README.md)
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/storage-providers/basics)
+## Get to know the ecosystem
+
+One of the enriching elements of the Filecoin ecosystem lies in its vibrant community. Within this dynamic network, you will find individuals eager to share their experiences and offer solutions to the challenges they have encountered. Whether it is navigating the intricacies of storage provider operations or overcoming hurdles on the blockchain, this supportive community stands ready to help. Embrace the spirit of collaboration and tap into this remarkable network.
+
+[Filecoin Slack ->](https://filecoinproject.slack.com/ssb/redirect)
+
+## Understand ROI and collateral
+
+To run a successful storage provider business, it is crucial to understand the concept of Return on Investment (ROI) and the significance of collateral. By planning ahead and considering various factors, such as CAPEX, OPEX, network variables, and collateral requirements, you can make informed decisions that impact your business's profitability and desired capacity.
+
+## Get started with Lotus
+
+Lotus is the leading reference implementation of the Filecoin protocol and the most widely used software stack for interacting with the blockchain and operating a storage provider setup. Understanding Lotus is fundamental to navigating the Filecoin network and building a reliable storage operation.
+
+[Lotus documentation ->](https://lotus.filecoin.io)
+
+## Set up a local development environment
+
+Setting up a local development network (devnet) is the most accessible way to begin your hands-on Filecoin journey. A local devnet lets you experiment with sealing sectors and observe firsthand how the process works without risking real FIL or affecting the mainnet.
+
+[Local devnet ->](../networks-and-tools/networks/local-testnet/)
+
+## Become a storage provider
+
+Once ready, determine your starting capacity and architect a solution to accommodate it. Equip yourself with the necessary hardware and test your setup on the calibration testnet to fine-tune your skills and ensure seamless operations before joining the mainnet.
+
+[Reference architectures ->](./infrastructure/reference-architectures.md)
+
+## Supercharge your mainnet experience with Boost
+
+As you step into the mainnet, Boost is the software designed to help you secure storage deals and offer efficient data retrieval services to data owners. Deploying Boost unlocks your ability to participate in deal-making and serve clients across the Filecoin network.
+
+[Boost documentation ->](https://boost.filecoin.io)
+
+## Explore verified deals and ecosystem tools
+
+Within the Filecoin network there are many programs and tools designed to enhance your storage provider setup. Explore the documentation to gain insights into verified deals, client programs, and other resources that can improve your operations and expand your client base.
+
+[Filecoin programs ->](./filecoin-deals/filecoin-programs.md)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill_Page+URL=https://docs.filecoin.io/storage-providers/getting-started)
diff --git a/storage-providers/infrastructure/README.md b/storage-providers/infrastructure/README.md
index 34639702c..d4c685e34 100644
--- a/storage-providers/infrastructure/README.md
+++ b/storage-providers/infrastructure/README.md
@@ -1,9 +1,17 @@
---
description: >-
- This section covers various infrastructure considerations that storage
- providers should be aware of.
+ Hardware, networking, and disaster recovery planning for storage provider infrastructure.
---
# Infrastructure
+This section covers the physical and network infrastructure needed to operate a storage provider, including storage systems, networking, and recovery planning.
+
+## Table of contents
+
+* [Storage](storage.md) — RAID configurations, I/O behavior, and disk performance for sealed sectors
+* [Network](network.md) — bandwidth requirements, VLANs, redundancy, and network topologies
+* [Backup and disaster recovery](backup-and-disaster-recovery.md) — strategies to protect data and ensure business continuity
+* [Reference architectures](reference-architectures.md) — example infrastructure designs for different scales
+
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/infrastructure)
diff --git a/storage-providers/infrastructure/backup-and-disaster-recovery.md b/storage-providers/infrastructure/backup-and-disaster-recovery.md
index d9b564175..ad2c610e5 100644
--- a/storage-providers/infrastructure/backup-and-disaster-recovery.md
+++ b/storage-providers/infrastructure/backup-and-disaster-recovery.md
@@ -44,7 +44,7 @@ Both storage providers and data owners (customers) should look at RPO and RTO op
RTO for data owners is a matter of how fast the storage provider(s) can provide you the data.
* Do your storage providers offer “fast retrieval” of the data through unsealed copies? If not, the unsealing process (typically multiple hours) must be calculated into the RTO.
-* Do your storage providers offer retrieval through [Saturn, (the Web3 CDN)](https://saturn.tech) for ultra-fast retrieval?
+* Do your storage providers offer dedicated retrieval infrastructure or caching for ultra-fast retrieval?
* Do your storage providers pin your data on IPFS, in addition to storing it on Filecoin?
RPO for data owners is less of a concern, especially once the data is sealed. The Filecoin blockchain will enforce availability and durability of the data being stored, once it is sealed. It is therefore important, as a data owner, to know how fast your storage provider can prove the data on-chain.
@@ -66,6 +66,7 @@ This helps to reduce the amount of manual tasks for a failover drastically. If t
Having the services on a floating IP allows to assign this IP to another machine and start the service on it.
## No Penalty for Recovered Faults
-Note that as of [FIP006: No repay debt requirement for DeclareFaultsRecovered](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0006.md), storage providers are no longer required to pay [fee debt](https://docs.filecoin.io/storage-providers/filecoin-economics/slashing) prior to recovering a new storage fault. This enables a storage provider that currently has accrued fee debt to recover faults without being further penalized with additional fees.
+
+Note that as of [FIP006: No repay debt requirement for DeclareFaultsRecovered](https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0006.md), storage providers are no longer required to pay [fee debt](../filecoin-economics/slashing.md) prior to recovering a new storage fault. This enables a storage provider that currently has accrued fee debt to recover faults without being further penalized with additional fees.
[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/infrastructure/backup-and-disaster-recovery)
diff --git a/storage-providers/infrastructure/network.md b/storage-providers/infrastructure/network.md
index 610600a93..4c8a527a2 100644
--- a/storage-providers/infrastructure/network.md
+++ b/storage-providers/infrastructure/network.md
@@ -9,7 +9,7 @@ description: >-
## Internet bandwidth
-The amount of internet bandwidth required for a network largely depends on the size of the organization and customer expectations. A bandwidth between 1 Gbps and 10 Gbps is generally sufficient for most organizations, but the specific requirements should be determined based on the expected traffic. A minimum bandwidth of 10 Gbps is recommended for setups that include a [Saturn](https://saturn.tech) node. Saturn requires a high-speed connection to handle large amounts of data.
+The amount of internet bandwidth required for a network largely depends on the size of the organization and customer expectations. A bandwidth between 1 Gbps and 10 Gbps is generally sufficient for most organizations, but the specific requirements should be determined based on the expected traffic. Workloads with high-throughput retrieval services may require 10 Gbps or more.
## LAN bandwidth
diff --git a/storage-providers/nodes/README.md b/storage-providers/nodes/README.md
new file mode 100644
index 000000000..ad67fcf62
--- /dev/null
+++ b/storage-providers/nodes/README.md
@@ -0,0 +1,14 @@
+---
+description: >-
+ Node types, implementations, and setup guides for running Filecoin nodes.
+---
+
+# Filecoin nodes
+
+Filecoin nodes are the backbone of the network. They store and verify the blockchain. This section covers the available node types and how to set them up.
+
+## Table of contents
+
+* [Implementations](implementations/README.md) — available node software including Lotus and Venus
+* [Lite nodes](lite-nodes/README.md) — lightweight nodes that rely on full nodes for chain data
+* [Full nodes](full-nodes/README.md) — complete nodes that store and validate the full blockchain
\ No newline at end of file
diff --git a/nodes/full-nodes/README.md b/storage-providers/nodes/full-nodes/README.md
similarity index 63%
rename from nodes/full-nodes/README.md
rename to storage-providers/nodes/full-nodes/README.md
index 57b7529f1..2b4d0fae8 100644
--- a/nodes/full-nodes/README.md
+++ b/storage-providers/nodes/full-nodes/README.md
@@ -6,4 +6,10 @@ description: >-
# Full-nodes
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/full-nodes)
+## Table of contents
+
+* [Pre-requisites](pre-requisites.md)
+* [Basic setup](basic-setup.md)
+* [Node providers](node-providers.md)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/full-nodes)
diff --git a/nodes/full-nodes/basic-setup.md b/storage-providers/nodes/full-nodes/basic-setup.md
similarity index 97%
rename from nodes/full-nodes/basic-setup.md
rename to storage-providers/nodes/full-nodes/basic-setup.md
index 68aab1b6d..639735b8e 100644
--- a/nodes/full-nodes/basic-setup.md
+++ b/storage-providers/nodes/full-nodes/basic-setup.md
@@ -38,4 +38,4 @@ cd /usr/local/bin/lotus-1.34.1
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/full-nodes/basic-setup)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/full-nodes/basic-setup)
diff --git a/nodes/full-nodes/node-providers.md b/storage-providers/nodes/full-nodes/node-providers.md
similarity index 90%
rename from nodes/full-nodes/node-providers.md
rename to storage-providers/nodes/full-nodes/node-providers.md
index dfc92c8c8..366e3716f 100644
--- a/nodes/full-nodes/node-providers.md
+++ b/storage-providers/nodes/full-nodes/node-providers.md
@@ -22,8 +22,8 @@ Node providers often limit the specifications of the nodes that they offer. Some
### Node providers
-There are multiple node providers for the Filecoin mainnet and each of the testnets. Checkout the [Networks section](https://docs.filecoin.io/nodes/full-nodes/node-providers/) for details.
+There are multiple node providers for the Filecoin mainnet and each of the testnets. Check out the [Mainnet RPCs page](../../../networks-and-tools/networks/mainnet/rpcs.md) for details on current public node providers.
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/full-nodes/node-providers)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/full-nodes/node-providers)
diff --git a/nodes/full-nodes/pre-requisites.md b/storage-providers/nodes/full-nodes/pre-requisites.md
similarity index 96%
rename from nodes/full-nodes/pre-requisites.md
rename to storage-providers/nodes/full-nodes/pre-requisites.md
index e99546032..0a56593f4 100644
--- a/nodes/full-nodes/pre-requisites.md
+++ b/storage-providers/nodes/full-nodes/pre-requisites.md
@@ -22,4 +22,4 @@ To get more information, check out the official [Lotus documentation](https://lo
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/full-nodes/pre-requisites)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/full-nodes/pre-requisites)
diff --git a/nodes/implementations/README.md b/storage-providers/nodes/implementations/README.md
similarity index 90%
rename from nodes/implementations/README.md
rename to storage-providers/nodes/implementations/README.md
index 11c2e78ca..c919dd51e 100644
--- a/nodes/implementations/README.md
+++ b/storage-providers/nodes/implementations/README.md
@@ -9,7 +9,7 @@ description: >-
## Lotus
-
+
Lotus is the reference implementation of the Filecoin protocol, developed by Protocol Labs, the organization behind Filecoin. Lotus is a full-featured implementation of the Filecoin network, including the storage, retrieval, and mining functionalities. It is written in Go and is designed to be modular, extensible, and highly scalable.
@@ -17,7 +17,7 @@ Lotus is the reference implementation of the Filecoin protocol, developed by Pro
## Venus
-
+
Venus is an open-source implementation of the Filecoin network, developed by IPFSForce. The project is built in Go and is designed to be fast, efficient, and scalable.
@@ -47,7 +47,7 @@ Lotus has a more global focus, while Venus has a stronger focus on the Chinese m
### Forest
-
+
Forest is the Rust implementation of the Filecoin protocol with low hardware requirements (16 GiB, 4 cores), developed by ChainSafe. Forest is focused on blockchain analytics, and does not support storage, retrieval or mining.
@@ -57,4 +57,4 @@ You can learn more about Forest at the [codebase on GitHub](https://github.com/C
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/implementations)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/implementations)
diff --git a/nodes/implementations/lotus.md b/storage-providers/nodes/implementations/lotus.md
similarity index 96%
rename from nodes/implementations/lotus.md
rename to storage-providers/nodes/implementations/lotus.md
index b582f31b3..31863e957 100644
--- a/nodes/implementations/lotus.md
+++ b/storage-providers/nodes/implementations/lotus.md
@@ -29,7 +29,7 @@ If you are interested in contributing to the development of Lotus itself, you ca
## Hosted nodes
-Many hosting service provide access to Lotus nodes on the Filecoin network. Check out the [RPC section for more information](../../networks/mainnet/rpcs.md)
+Many hosting service provide access to Lotus nodes on the Filecoin network. Check out the [RPC section for more information](../../../networks-and-tools/networks/mainnet/rpcs.md)
## More information
@@ -37,4 +37,4 @@ For more information about Lotus, including advanced configuration, check out th
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/implementations/lotus)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/implementations/lotus)
diff --git a/nodes/implementations/venus.md b/storage-providers/nodes/implementations/venus.md
similarity index 98%
rename from nodes/implementations/venus.md
rename to storage-providers/nodes/implementations/venus.md
index 6bd04421a..675700251 100644
--- a/nodes/implementations/venus.md
+++ b/storage-providers/nodes/implementations/venus.md
@@ -35,4 +35,4 @@ For more information about Venus, including advanced configuration, see the [Ven
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/implementations/venus)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/implementations/venus)
diff --git a/nodes/lite-nodes/README.md b/storage-providers/nodes/lite-nodes/README.md
similarity index 72%
rename from nodes/lite-nodes/README.md
rename to storage-providers/nodes/lite-nodes/README.md
index a165b7b4e..6a3aa8ebe 100644
--- a/nodes/lite-nodes/README.md
+++ b/storage-providers/nodes/lite-nodes/README.md
@@ -6,4 +6,8 @@ description: >-
# Lite-nodes
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/lite-nodes)
+## Table of contents
+
+* [Spin up a lite-node](spin-up-a-lite-node.md)
+
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/lite-nodes)
diff --git a/nodes/lite-nodes/spin-up-a-lite-node.md b/storage-providers/nodes/lite-nodes/spin-up-a-lite-node.md
similarity index 97%
rename from nodes/lite-nodes/spin-up-a-lite-node.md
rename to storage-providers/nodes/lite-nodes/spin-up-a-lite-node.md
index 6ef897bed..5044d8b31 100644
--- a/nodes/lite-nodes/spin-up-a-lite-node.md
+++ b/storage-providers/nodes/lite-nodes/spin-up-a-lite-node.md
@@ -80,7 +80,7 @@ Before we can build the Lotus binaries, we need to follow a few pre-build steps.
```shell
git checkout v1.34.1
```
-4. Done! You can move on to the [Build](https://docs.filecoin.io/nodes/lite-nodes/spin-up-a-lite-node/#build-the-binary) section.
+4. Done! You can move on to the [Build](#build-the-binary) section.
{% endtab %}
{% tab title="MacOS ARM" %}
@@ -113,7 +113,7 @@ Before we can build the Lotus binaries, we need to follow a few pre-build steps.
export FFI_BUILD_FROM_SOURCE=1
export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"
```
-5. Done! You can move on to the [Build](https://docs.filecoin.io/nodes/lite-nodes/spin-up-a-lite-node/#build-the-binary) section.
+5. Done! You can move on to the [Build](#build-the-binary) section.
{% endtab %}
{% tab title="Ubuntu" %}
@@ -139,7 +139,7 @@ Before we can build the Lotus binaries, we need to follow a few pre-build steps.
```shell
git checkout v1.34.1
```
-4. If your processor was released later than an AMD Zen or Intel Ice Lake CPU, enable SHA extensions by adding these two environment variables. If in doubt, ignore this command and move on to [the next section](https://docs.filecoin.io/nodes/lite-nodes/spin-up-a-lite-node/#build-the-binary).
+4. If your processor was released later than an AMD Zen or Intel Ice Lake CPU, enable SHA extensions by adding these two environment variables. If in doubt, ignore this command and move on to [the next section](#build-the-binary).
```shell
export RUSTFLAGS="-C target-cpu=native -g"
@@ -412,4 +412,4 @@ You should now have a local lite-node connected to a remote full-node with an ad
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/nodes/lite-nodes/spin-up-a-lite-node)
+[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/nodes/lite-nodes/spin-up-a-lite-node)
diff --git a/storage-providers/pdp/README.md b/storage-providers/pdp/README.md
index 0bd1450ff..082fc2092 100644
--- a/storage-providers/pdp/README.md
+++ b/storage-providers/pdp/README.md
@@ -1,23 +1,13 @@
---
-layout:
- title:
- visible: true
- description:
- visible: true
- tableOfContents:
- visible: true
- outline:
- visible: true
- pagination:
- visible: true
+description: >-
+ PDP is a cryptographic protocol that verifies storage providers hold client data. It is a core component of Filecoin Onchain Cloud.
---
-# PDP
+# PDP (Proof of Data Possession)
-{% hint style="danger" %}
-**ALPHA FEATURE - UNDER DEVELOPMENT**
+PDP is a challenge-response protocol that lets applications verify storage providers still hold specific data without re-downloading it. It is a core component of [Filecoin Onchain Cloud (FOC)](../../build/filecoin-onchain-cloud/README.md), where it powers the verification layer for FWSS and Filecoin Pay.
-This documentation covers the PDP (Proof of Data Possession) feature, which is currently in alpha and under active development. This tool is intended for testing and experimental use only.
+## Table of contents
-For production use and submitting real deals with live PDP Storage Providers, please use the [Synapse SDK](https://github.com/FilOzone/synapse-sdk).
-{% endhint %}
+* [About PDP](about.md) — how the protocol works, when to use it, and what it replaces
+* [Install and run PDP](install-and-run-pdp.md) — set up a PDP-enabled storage provider with Lotus, YugabyteDB, and Curio
diff --git a/storage-providers/pdp/about.md b/storage-providers/pdp/about.md
new file mode 100644
index 000000000..b7a9b6afd
--- /dev/null
+++ b/storage-providers/pdp/about.md
@@ -0,0 +1,43 @@
+---
+description: >-
+ PDP is a cryptographic protocol that verifies storage providers hold client
+ data without re-downloading it.
+---
+
+# About PDP
+
+## What PDP is
+
+Proof of Data Possession (PDP) is a cryptographic challenge-response protocol on Filecoin. It lets applications verify that a storage provider still holds specific data without downloading it.
+
+The protocol works in four steps:
+
+1. Providers compute Merkle trees over stored pieces.
+2. The PDP contract generates randomized challenges using the drand beacon.
+3. Providers submit Merkle inclusion proofs in response.
+4. The contract verifies the proofs on-chain.
+
+PDP is a core component of [Filecoin Onchain Cloud (FOC)](../../build/filecoin-onchain-cloud/README.md). Within FOC, the Filecoin Warm Storage Service (FWSS) uses PDP to verify provider availability and Filecoin Pay uses PDP results to adjust payments automatically.
+
+## When to use PDP
+
+* You need verifiable proof that your data is stored and available.
+* You want on-chain storage guarantees as part of your application logic.
+
+## What PDP replaces
+
+PDP replaces older programmatic storage patterns built around direct Deal Client contracts and RaaS. Those workflows are preserved as [legacy reference material](../../reference/general/legacy-content.md) only.
+
+## Getting started
+
+1. **Learn about FOC** at [Filecoin Onchain Cloud](../../build/filecoin-onchain-cloud/README.md).
+2. **Run PDP infrastructure** with [Install and run PDP](install-and-run-pdp.md).
+3. **Build with the Synapse SDK** using the [FOC developer guides](https://docs.filecoin.cloud/developer-guides).
+4. **Choose a storage path** via [Upload to Filecoin](../../getting-started/how-storage-works/upload-to-filecoin.md).
+
+## Resources
+
+* [FOC documentation](https://docs.filecoin.cloud/)
+* [PDP overview (FOC docs)](https://docs.filecoin.cloud/core-concepts/pdp-overview)
+* [FWSS overview (FOC docs)](https://docs.filecoin.cloud/core-concepts/fwss-overview)
+* [Synapse SDK repository](https://github.com/FilOzone/synapse-sdk)
diff --git a/storage-providers/pdp/install-and-run-pdp.md b/storage-providers/pdp/install-and-run-pdp.md
index 0ea51222c..aec7bd958 100644
--- a/storage-providers/pdp/install-and-run-pdp.md
+++ b/storage-providers/pdp/install-and-run-pdp.md
@@ -6,14 +6,6 @@ description: >-
# Install & Run PDP
-{% hint style="danger" %}
-**ALPHA FEATURE - UNDER DEVELOPMENT**
-
-This documentation covers the PDP (Proof of Data Possession) feature, which is currently in alpha and under active development. This tool is intended for testing and experimental use only.
-
-For production use and submitting real deals with live PDP Storage Providers, please use the [Synapse SDK](https://github.com/FilOzone/synapse-sdk).
-{% endhint %}
-
## 🚀 Prerequisites
{% hint style="warning" %}
@@ -58,7 +50,7 @@ go version
```
{% hint style="success" %}
-You should see something like: `go version go1.23.7 linux/amd64`
+You should see something like: `go version go1.24.0 linux/amd64`
{% endhint %}
***
@@ -117,7 +109,7 @@ lotus --version
```
{% hint style="success" %}
-You should see something like: `lotus version 1.32.2+calibnet+git.ff88d8269`
+You should see something like: `lotus version 1.36.0+calibnet+git.154c0c3a4`
{% endhint %}
***
@@ -278,12 +270,12 @@ echo 'net.core.rmem_default=2097152' | sudo tee -a /etc/sysctl.conf
### 🔬 Build Curio
-Clone the repository and switch to the PDP branch:
+Clone the repository and switch to the latest branch:
```sh
git clone https://github.com/filecoin-project/curio.git
cd curio
-git checkout pdpM3d
+git checkout $(curl -s https://api.github.com/repos/filecoin-project/curio/releases/latest | jq -r .tag_name)
```
{% hint style="info" %}
@@ -396,9 +388,9 @@ This will launch the Curio web GUI locally.
***
-## 🧪 Enabling FWSS PDP
+## 🧪 Enabling PDP
-🧠 This section enables **FWSS Proof of Data Possession (PDP)** on your SP node using Curio. These steps guide you through running a standalone PDP service using Curio and pdptool.
+🧠 This section enables **Proof of Data Possession (PDP)** on your storage provider node using Curio. PDP is the verification layer used by the [Filecoin Warm Storage Service (FWSS)](https://docs.filecoin.cloud/core-concepts/fwss-overview) within [Filecoin Onchain Cloud](../../build/filecoin-onchain-cloud/README.md). These steps guide you through running a standalone PDP service using Curio and pdptool.
@@ -437,6 +429,7 @@ You may find it helpful to search for the setting names in your browser.
* ✅ `EnablePDP`
* ✅ `EnableCommP`
* ✅ `EnableMoveStorage`
+* ✅ `NoUnsealedDecode`
In the **HTTP** section:
@@ -496,7 +489,7 @@ Browse to the **PDP** page of the Curio GUI and in the **Owner Address** section
Your 0x wallet address - the delegated Ethereum address derived from your Filecoin delegated wallet private key - will be added to the **Owner Address** section of the Curio PDP page.
{% endhint %}
-Make sure to send a small amount of FIL or tFIL (testnet FIL) to your 0x wallet - we recommend 8 FIL for Mainnet & 5 tFIL for Calibration to ensure uninterrupted PDP operation during initial setup and testing. [Calibration test FIL faucet information](https://docs.filecoin.io/smart-contracts/developing-contracts/get-test-tokens).
+Make sure to send a small amount of FIL or tFIL (testnet FIL) to your 0x wallet - we recommend 8 FIL for Mainnet & 5 tFIL for Calibration to ensure uninterrupted PDP operation during initial setup and testing. [Calibration test FIL faucet information](../../build/developing-contracts/get-test-tokens.md).
{% hint style="warning" %}
**Important:** Secure your private key material. Don't expose or store it in plain text without protection.
@@ -517,7 +510,7 @@ If you encounter errors related to `EnableEthRPC` or `EnableIndexer`, run the fo
{% endhint %}
```sh
-sed -i 's/^\( *\)#*EnableEthRPC = .*/\1EnableEthRPC = true/; s/^\( *\)#*EnableIndexer = .*/\1Enabl
+sed -i 's/^\( *\)#*EnableEthRPC = .*/\1EnableEthRPC = true/; s/^\( *\)#*EnableIndexer = .*/\1EnableIndexer = true/' ~/.lotus/config.toml
```
{% hint style="info" %}
@@ -528,39 +521,60 @@ If you encounter errors binding to port 443 when starting Curio with the pdp con
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/curio
```
-Test the PDP service:
+***
-{% hint style="info" %}
-If `pdptool` is not installed, clone and build Curio:
-{% endhint %}
+### 🔗 Test Connectivity
-```sh
-git clone https://github.com/filecoin-project/curio.git
-cd curio/cmd/pdptool
-go build .
+Browse to your PDP node's domain name in your browser. You should see the following message in your browser window:
+
+```
+Hello, World!
+ -Curio
```
-Generate a service secret:
+***
-```sh
-./pdptool create-service-secret
-```
+### 🗳️ Register Your PDP Calibration Node With The Filecoin Warm Storage Service
-```sh
-./pdptool ping --service-url https://your-domain.com --service-name public
-```
+Browse to the **PDP** page of the Curio GUI and locate the **Filecoin Service Registry** section.
+
+#### STEP 1 — Update Details
+
+Select **Update Details** and fill in:
+
+| Field | Notes |
+| --- | --- |
+| Name | ≤ 128 chars |
+| Description | ≤ 256 chars |
+
+Select **Update** to submit your node details to the on-chain FWSS contract.
{% hint style="info" %}
-Always use `public` for the `--service-name` flag
+You can review the names and descriptions of other FWSS providers at [https://filecoin.cloud/service-providers](https://filecoin.cloud/service-providers).
{% endhint %}
-{% hint style="success" %}
-Expected output:
-{% endhint %}
+#### STEP 2 — Update PDP Offering
-```sh
-Ping successful: Service is reachable and JWT token is valid.
-```
+Select **Update PDP Offering** and set:
+
+| Field | Recommended value |
+| --- | --- |
+| Minimum Piece Size (Bytes) | `1048576` |
+| Maximum Piece Size (Bytes) | `1073741824` |
+| Storage Price (USDFC per TiB per day) | `0.833` |
+| Minimum Proving Period (Epochs) | `30` |
+| Location | e.g. `C=US;ST=California;L=San Francisco` (only `C=` is required) |
+
+Then use **Add Capability** to add the following key/value pairs:
+
+| Key | Value |
+| --- | --- |
+| `serviceStatus` | `prod` |
+| `capacityTib` | your available storage capacity in TiB |
+
+Select **Update PDP** to submit your offering to the on-chain FWSS contract.
+
+You can revisit **Update PDP Offering** at any time to change the Service URL, piece size range, IPNI toggles, price, proving period, location, or custom capabilities.
***
@@ -569,15 +583,15 @@ Ping successful: Service is reachable and JWT token is valid.
You've successfully launched a **PDP-enabled Filecoin Storage Provider** stack. Your system is now:
* ✅ Syncing with the Filecoin network via Lotus
-* ✅ Recording deal and sector metadata in YugabyteDB
+* ✅ Recording deal and piece metadata in YugabyteDB
* ✅ Operating Curio to manage sealing and coordination
* ✅ Enabled Proof of Data Possession (PDP)
* ✅ Connected to your PDP-enabled storage provider
+* ✅ Registered with the Filecoin Warm Storage Service onchain contract
***
## 🔜 Next Steps
-* :heavy\_check\_mark: Register your FWSS node
* :link: Explore FWSS & PDP tools & resources at [https://www.filecoin.services](https://www.filecoin.services/)
* 💬 Join the community - Filecoin Slack - [#fil-pdp](https://filecoinproject.slack.com/archives/C0717TGU7V2)
diff --git a/storage-providers/skills/README.md b/storage-providers/skills/README.md
deleted file mode 100644
index c8fa5beb5..000000000
--- a/storage-providers/skills/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: >-
- This section covers the technical skills and knowledge required to become a
- storage provider.
----
-
-# Skills
-
-[Was this page helpful?](https://airtable.com/apppq4inOe4gmSSlk/pagoZHC2i1iqgphgl/form?prefill\_Page+URL=https://docs.filecoin.io/storage-providers/skills)
diff --git a/storage-providers/storage-providers.md b/storage-providers/storage-providers.md
deleted file mode 100644
index 33e112a90..000000000
--- a/storage-providers/storage-providers.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Storage providers
-