/ launching_quai_network

/ sequence_initiated

/ launching_quai_network

/ sequence_initiated

/ launching_quai_network

/ sequence_initiated

/ 56% complete


struct group_info init_groups = { .usage = ATOMIC_INIT(2) };
struct group_info *groups_alloc(int gidsetsize){
struct group_info *group_info;
int nblocks;
int i;


nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK;
/* Make sure we always allocate at least one indirect block pointer */
nblocks = nblocks ? : 1;
group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER);
if (!group_info)
return NULL;
group_info->ngroups = gidsetsize;
group_info->nblocks = nblocks;
atomic_set(&group_info->usage, 1);


if (gidsetsize <= NGROUPS_SMALL)
group_info->blocks[0] = group_info->small_block;
else {
for (i = 0; i < nblocks; i++) {
gid_t *b;
b = (void *)__get_free_page(GFP_USER);
if (!b)
goto out_undo_partial_alloc;
group_info->blocks[i] = b;
}
}
return group_info;

EXPORT_SYMBOL(groups_alloc);


void groups_free(struct group_info *group_info)
{
if (group_info->blocks[0] != group_info->small_block) {
int i;
for (i = 0; i < group_info->nblocks; i++)
free_page((unsigned long)group_info->blocks[i]);
}
kfree(group_info);
}


EXPORT_SYMB|

/ launching_quai_network

/ sequence_initiated

/ launching_quai_network

/ sequence_initiated

/ launching_quai_network

/ sequence_initiated

/ 56% complete


struct group_info init_groups = { .usage = ATOMIC_INIT(2) };
struct group_info *groups_alloc(int gidsetsize){
struct group_info *group_info;
int nblocks;
int i;


nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK;
/* Make sure we always allocate at least one indirect block pointer */
nblocks = nblocks ? : 1;
group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER);
if (!group_info)
return NULL;
group_info->ngroups = gidsetsize;
group_info->nblocks = nblocks;
atomic_set(&group_info->usage, 1);


if (gidsetsize <= NGROUPS_SMALL)
group_info->blocks[0] = group_info->small_block;
else {
for (i = 0; i < nblocks; i++) {
gid_t *b;
b = (void *)__get_free_page(GFP_USER);
if (!b)
goto out_undo_partial_alloc;
group_info->blocks[i] = b;
}
}
return group_info;

EXPORT_SYMBOL(groups_alloc);


void groups_free(struct group_info *group_info)
{
if (group_info->blocks[0] != group_info->small_block) {
int i;
for (i = 0; i < group_info->nblocks; i++)
free_page((unsigned long)group_info->blocks[i]);
}
kfree(group_info);
}


EXPORT_SYMB|

0%_LOADING

/ launching_quai_network

/ sequence_initiated

/

loading...

REBUILDING CURRENCY
a new currency
a new financial system
a new world
/ launching_quai_network / sequence_initiated / scroll_to_commence_build
> Quai Network is a set of EVM-compatible blockchains that achieves 50k+ TPS without compromising decentralization.

Today, January 29th, 2025, we’re launching Orchard – a permanent testnet that will run alongside mainnet. This environment allows for continuous testing and development without risking real assets.

It marks the first stage of the Quai mainnet rollout:

  • January 29, 2025: Orchard public testing environment launch
  • February 4, 2025: TGE & Node Wrangler mining
  • February 5, 2025: Public mining opens for everyone
  • Mid February: Mainnet QUAI transactions live 
  • March 19, 2025: Mainnet QI mining and transactions live

Getting started

Orchard testnet is now live, allowing everyone to test mining setups, update their nodes, and start testing their smart contracts before the incentivized public mining begins on mainnet launch on February 5th. To use the Orchard testnet, make sure to upgrade to the following:

We’ve prepared all essential resources to support this testnet including, Note: these ancillary services may not be available immediately, but should be online by 23:00 UTC 01/29/2025:

Important Note on Network Parameters

For testing purposes, Orchard uses modified parameters compared to mainnet. For example, the coinbase unlock period is set to 1 day (versus 2 weeks on mainnet) to facilitate faster testing cycles. These adjustments help developers and miners test functionality more efficiently while maintaining the network’s core mechanics.

For a more detailed technical overivew, please see Orchard Public Testnet: Technical Details and Implementation

What This Means For…

Developers

Orchard provides a comprehensive environment for testing smart contracts before mainnet deployment. You can validate application behavior, experiment with network interactions, and debug implementations without cost. The testnet faucet ensures you have the tokens needed for development and testing.

Miners

Public mining opens on February 5th, allowing everyone to participate in securing the network. 

If you’re preparing for mainnet mining, Orchard is your testing ground. Configure and validate your mining setup, test different strategies, and understand network parameters before public mainnet launches.This ensures you’re fully prepared when incentivized mining begins.

Node Wranglers

Incentivized mining for Node Wranglers begins on February 4th. You can begin providing statistics for Orchard immediately. Use this opportunity to test your node configurations and prepare for the transition to mainnet on February 4th. Your role in maintaining network stability remains crucial during this testing phase.

Users

Starting today, you can use Orchard to request testnet tokens from the faucet, send test transactions, interact with Pelagus Wallet, and try smart contract interactions that developers are going to test on the network. 

You will be able to transact with mainnet QUAI starting mid February and mainnet QI starting March 19th.

The Road Ahead

Orchard will continue operating after mainnet launch, providing a permanent testing environment for future network upgrades and development. This ensures we maintain a stable, risk-free environment for ongoing innovation and testing.

Join Quai

Tutorials to help you get started:

Security

All Quai Network blockchains are braided together, keeping the entire network censorship resistant and secure creating Scalable Proof-of-Work.

Decentralization

Quai allows anyone to participate in network governance by running a node or miner. With thousands of participants distributed across the globe, there is no single party with the ability to modify or turn off the network, ensuring zero network downtime.

Scalability

Quai Network automatically expands with demand to upwards of 50,000 TPS while keeping fees under $0.01.

Consensus

Transactions in Quai Network can be locally confirmed prior to global confirmation, offering high throughput with the shortest possible time to economic finality.

Shared Security

All blockchains within Quai Network share Proof-of-Work security through merged mining. Every Quai transaction is eventually confirmed by 100% of network hash power.

Merge-Mined Parachains

Parachains inherit security and interoperability by merged mining with Quai Network, and create new incentives for miners and users.

The Prime Chain

The Prime blockchain acts as the "knot" tying all Quai Network chains together. The Prime blockchain braids sub networks together, facilitating the transfer of data across chains.

Sub Networks

Quai's many high-speed sub networks independently and asynchronously process transactions. All sub networks are braided together by the Prime chain, ensuring shared security and interoperability across the network.