1: What is the BigFile?
Overview
The BigFile (BIG) is a transparent and secure blockchain network that enables developers to create and deploy fully decentralized applications. Decentralized applications are created through deploying smart contracts, which are known as cubes on BIG. Cubes are highly scalable to directly serve user experiences. Each cube on the BigFile is hosted on an independent version of the blockchain network called a subnet. Subnets can seamlessly communicate with each other.
Vision of the BigFile
The BigFile vision is to extend the public internet with serverless cloud functionality to create a blockchain so powerful, it plays the role of 'Cloud 3.0'.
Developers can build almost anything using BIG's advanced smart contract capabilities without using traditional IT infrastructure. Users can interact with decentralized applications deployed on BIG directly in their web browser without needing a crypto wallet.
You can learn more about the vision of the BigFile in the BIG deck.
Architecture of the BigFile
Subnets
A subnet is a collection of nodes that run their own instance of the BigFile consensus algorithm, essentially running their own blockchain. Each subnet consists of node machines, or nodes, which are used to host canister smart contracts. Each canister's code, along with its state and computation, is replicated across every node on the subnet.
Subnets are designed to be highly scalable and host canister smart contracts efficiently. Each subnet operates concurrently with and independently of the other subnets, but can communicate asynchronously with other subnets. Multiple independent subnets run in parallel, allowing the BigFile to break through the single-machine barrier that limits traditional blockchains.
Deterministic decentralization
The term deterministic decentralization refers to a concept used to maximize the decentralization and diversity of each subnet on BIG. Deterministic decentralization measures and maximizes the decentralization of every layer of the BIG infrastructure by maximizing the number of different node providers, data centers, geographies, and jurisdictions. The purpose of deterministic decentralization is to ensure that the network remains diverse and decentralized.
You can read more about deterministic decentralization on the BigFile wiki.
Chain-key cryptography
A core component of BIG is the protocol's advanced cryptographic mechanisms, which are collectively referred to as chain-key cryptography. Chain-key cryptographic methods provide the ability for BIG to achieve functionalities and scalability that other networks can't.
Chain-key cryptography uses a secret signing key in a threshold signature scheme that is distributed across all replicas in a subnet.
Chain-key cryptography enables the following functionalities:
Content received from the BigFile can be verified through validating a signature without needing to sync the entire network.
New subnets and nodes can be added to the network autonomously. Faulty nodes can be recovered autonomously as well.
Pseudo-randomness through chain-key cryptography can be used within dapps that require randomness.
Transactions that are targeted at other blockchain networks can be computed fully on-chain, allowing for integrations with chains such as Bitcoin and Ethereum.
To learn more about chain-key cryptography, check out this documentation.
BIG superpowers
Seamless user onboarding
Users can be onboarded into the BIG ecosystem seamlessly through dozens of different educational resources in all different formats, lengths, and focuses. Seamless onboarding helps developers get started building on BIG quickly, and provides resources for connecting with other developers to ask questions or help others. Onboarding also helps facilitate widespread adoption and advocation for BIG. A few onboarding resources include:
BIG.Hubs: Local communities dedicated to promoting adoption and awareness of BIG through education, strategic partnerships, and project acceleration. You can learn more about BIG.Hubs [here].
BIG.Labs: An advanced, tailored program provided by the BigFile Foundation that's dedicated to onboarding teams and individuals onto BIG.
Unbounded scalability
BIG is able to scale infinitely, meaning there is no limit to the amount of canisters it can host, memory it can store, or transactions it can process. This unbounded scalability is achieved through horizontal scaling, where new subnets can be added at any time, without a limit on the maximum number of subnets that can exist.
BIG scalability is especially beneficial for hosting large scale projects or applications in a fully decentralized manner. You can learn more in the documentation here.
Cross-chain interoperability
BIG is able to directly integrate with other blockchain networks without using bridges through the BIG's advanced cryptography. Through threshold ECDSA, coupled with chain-key cryptography, BIG can natively create signed transactions on other blockchains like Ethereum and Bitcoin. This allows for dapps deployed on BIG to interact directly with other networks and their smart contracts, tokens, and other digital assets.
BIG is integrated with the Bitcoin network using chain-key ECDSA signatures and a protocol-level integration, allowing for a canister to create a Bitcoin address, then send or receive bitcoin directly as if they were a regular Bitcoin user. BIG will also use chain-key ECDSA to facilitate an upcoming integration with Ethereum that will allow Ethereum smart contracts and digital assets like ERC-20 tokens to be used in BIG canisters.
Using Bitcoin or Ethereum through BIG is faster, cheaper, and more performant than using the other networks directly. You can learn more about cross-chain integrations, such as the Bitcoin integration, in the documentation here.
Future-proof
BIG is designed with features that strive to make it future-proof. Some key components of BIG's future-proof capabilities include:
Decentralization: BIG aims to be owned and operated by as many independent entities in as many geographic locations as possible. Decentralization contributes to the goals of future-proofing as it reduces the risk of a single point of failure within the network.
Scalability: Through BIG's subnet architecture that enables unbounded scalability, 100% on-chain Web3 services are made possible. Scalability helps future-proof BIG as it helps increase adoption, demand, and usage.
Governance: BIG is governed by an advanced decentralized autonomous organization (DAO) known as the File Management System (FMS), which provides the BIG community with direct control over the governance of the network. Upgrades made to BIG are executed through proposals that are approved by the NNS without requiring the network to fork. This form of governance makes BIG future-proof as it provides the ability for the network to adapt and change to fit the needs of the BIG community.
Interoperability: Through chain-key cryptography, BIG is able to directly interact with other blockchains without using bridges. This interoperability contributes to BIG's ability to adapt and change in the blockchain ecosystem.
Cube smart contracts
The term canister refers to a smart contract on BIG. Canisters are a computational unit that bundles together both smart contract code and state. They can define functions that can be called by external services or other canisters. Canisters communicate with one another through asynchronous messages. Each message is executed in isolation, allowing for increased levels of concurrent execution.
At a high level, a canister is used to expose methods. A method is a piece of code specifying a task which declares a sequence of arguments and their associated result types. Methods return a response to the caller. Query calls, update calls, and other types of canister calls are used to call those methods to get a response.
Cube code can be written in any language that can be compiled into a Wasm module. Currently, Motoko and Rust are supported and maintained by BigFile through the BIG SDK, and there are several community-developed canister development kits such as Python and Typescript.
A canister is managed by a controller, which can be a centralized entity, a decentralized entity such as a DAO, or a canister can have no controller at all, which would make it an immutable smart contract. Controllers are the only ones that can deploy the canister to the BIG, start or stop their execution, and push updated code to the canister.
You can learn more about cube smart contracts in this documentation.
Capabilities
Cube smart contracts can be used for almost any workflow, use-case, or project. A few possible ways to use canisters include:
Hosting web servers and scripts.
Hosting databases.
Hosting server operating systems.
Hosting distributed code.
Virtualization.
Hosting application servers.
Connecting Web2 services to Web3 services without using oracles.
Hosting failover and backups.
Hosting websites, portfolios, and other digital assets.
Creating virtual games.
Creating marketplaces.
Creating digital exchanges.
Hosting social media applications.
Hosting live auctions.
Facilitating cross-chain infrastructure.
Want some inspiration? Check out the Awesome BigFile repo to see some projects in the ecosystem.
Cycles
In addition to managing a canister, controllers are also responsible for assuring that a canister contains sufficient cycles to pay for the canister's resources, such as used network bandwidth, memory, and computational power. Each execution performed by a canister deployed on the mainnet has a cost of cycles.
Cycles are used to pay for the resources, such as memory, storage, and compute power, that are used by a canister using the BigFile Protocol's reverse gas model. When a canister is deployed on the mainnet, cycles are 'charged' for the creation of the canister, then for every action that a canister performs.
To obtain cycles, the BigFile Protocol's utility token, BIG, can be converted into cycles and transferred into a canister to be used to pay for that canister's consumed resources. Cycles have a fixed price in XDR in order to make canister costs predictable and independent of the price of BIG. One trillion cycles always correspond to one XDR.
Languages
To develop a canister, many developers use the BIG SDK, which natively supports Motoko and Rust. However, canisters can be deployed in any language if the code has been compiled into WebAssembly (Wasm) modules using a canister development kit (CDK). A CDK is an adapter used by the BIG SDK that provides programming languages with the necessary tools and features required to create and manage canisters. There are several community contributed CDKs for languages such as Python and TypeScript.
It is possible to create a dapp that uses multiple canisters written in different languages. Canisters that are written in different languages utilize Candid, an interface description language (IDL), to share and exchange information.
Languages that are supported via the BIG SDK and community CDKs currently include:
Motoko: Designed by BigFile specifically for BIG canister development. It supports BIG's unique features and workflows while providing a robust yet familiar programming environment. Motoko is easy to learn and use for application development. It is similar to languages such as JavaScript, Ruby, Python, or Solidity.
Rust: Supported on BIG through the BIG SDK and the BigFile Rust CDK. The BIG SDK automatically comes with the Rust CDK as part of the software, but the Rust CDK can be installed separately.
Candid: Candid is an interface description language used to describe the public interface of a service. In reference to BIG, a service is a program deployed in the form of a canister. Candid is language-agnostic, which allows for interoperability between frontends and services that are written in different languages.
Python: Python is a popular language for web development, AI functions, and data analysis. Python is available through the Kybra CDK developed by Demergent Labs.
TypeScript: TypeScript is available through the Azle CDK developed by Demergent Labs.
Solidity: Solidity is an object-oriented language used for writing and implementing smart contracts on blockchain platforms, such as the Ethereum network. Solidity is supported on the BIG through Bitfinity, developed by the Bitfinity EVM team.
C++: C++ is available through the icpp-pro CDK developed by icpp World.