/ 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.
ThisWeekinQuai

Welcome to the twenty-first edition of “This Week in Quai,” an initiative by the development company of Quai Network, Dominant Strategies. This Week in Quai offers weekly updates to the Quai Community by aggregating popular Quai quotes and social posts from the past week and offering a schedule for upcoming events.

Want to get “This Week in Quai” delivered straight to your inbox? Sign up for the Quai Newsletter by Dominant Strategies.

What is Quai?

Quai Network is a pre-launch cryptocurrency. Quai is the first blockchain protocol that is simultaneously decentralized, censorship resistant, and infinitely scalable. Quai, in contrast to traditional cryptocurrencies, functions as a network of many interoperable blockchains braided together. Due to a breakthrough discovery that occurred during research on Proof-of-Work, Quai Network utilizes a new consensus mechanism, Proof-of-Entropy-Minima (PoEM), which eliminates all consensus-based forks, and enables all Quai nodes to remain in “perpetual consensus.”

Quote of the Week

“Hey everyone! Hope all is well. We’re now one week into testnet. I know it hasn’t felt very active given the syncing issue so I just wanted to reassure everyone we’ll be back on track soon. Here are some latest updates since my last:

1) As previously mentioned, we noticed an over propagation of pending external transactions. We identified this as the root cause of nodes to separate at block ~10,000 in Zones.

2) We made a naive assumption in our downloader that all zones could download directly from “longest” peer zone. This led to inconsistent data across shards. A fix is now being worked in order to download the correct data through Prime.

3) Our kademlia routing / peering reused enodes across shards. This created inconsistent peering across the shards and resulted in dropping connections unintentionally, interrupting syncing.

Of course there are other things that we discovered in this process since last Tuesday. None of it would be possible without having a public testnet up 😄

It is on our list to cut new releases and update public facing infra ASAP although I cannot give an exact time on when it will be done.

Thank you everyone ❤️”

  • Dominant Strategies CEO Alan Orwick 

In this quote, Alan shares updates on the syncing issue that has impacted the network this week. Core devs identified the issue as having to do with the go-quai client “over-propagating pending external transactions,” which caused peers to regularly drop each other. 

The primary purpose of Testnet is to identify issues that were not flushed out in the process of internal testing. By having a public Testnet up with thousands of nodes attempting to connect and sync to the network simultaneously, core developers have now been able to identify and work to address issues that exclusively appear at larger scales.

Dr. K also shared an extended update on the progress of the fix (and the learnings from this issue) as an announcement in the Quai Discord

Technical Term of the Week

Syncing – the process by which nodes in the network obtain, update, and maintain a consistent and up-to-date version of the blockchain ledger.

When a new node joins the network, it needs to download and verify all the blocks from the genesis block (the very first block) to the latest block. This process is often called a “full sync” or “initial sync.”

As new blocks are mined or created, they are broadcasted to the network. Nodes receive these blocks and verify them. Once verified, a node will add the block to its own copy of the blockchain and then forward the block to other nodes. This ensures that all nodes in the network are updated with the latest block.

Sometimes, two different blocks are proposed at the same height in the blockchain. In most blockchains, this creates a temporary “fork” in the chain. However, Quai Network’s unique Proof-of-Entropy-Minima consensus mechanism allows all nodes to immediately determine which chain to prefer, leading to the immediate resolution of all potential forks.

Top Posts of the Week

  • If you haven’t already, be sure to check out the official Iron Age Testnet schedule:
  • A community-made guide for node configuration in Chinese was released:
  • In Quai, miners mine a “slice” of the network instead of one blockchain:
  • A community video tutorial for setting up a Quai node was released:
  • ProgPoW, the algorithm used for mining in Quai, is far more ASIC resistant than both SHA-256 and Ethash:

Upcoming Events

Quai Network Office Hours with Justin: October 3, 2023 @ 10am CST – Join Dominant Strategies team member Justin for a casual discussion/AMA on Quai Network’s technology & Iron Age Testnet!

Quai Network Office Hours with Max: October 5, 2023 @ 9am CST – Join Dominant Strategies team member Max for a casual discussion/AMA on Quai Network’s technology & Iron Age Testnet!

Quai Friday – Tips to #MineQuai: October 6, 2023 @ 11am CST – Join members of the Dominant Strategies team for a discussion of some of the different ways Quai miners can optimize their hashpower when mining Quai.

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.