Only this pageAll pages
Powered by GitBook
1 of 29

Bluzelle

Loading...

Loading...

Loading...

Loading...

Loading...

BLZ Staking

Loading...

Loading...

Loading...

Loading...

Loading...

GAMMA 4

Loading...

Loading...

Loading...

Bluzelle R2 - Decentralized Storage

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Guide & Resources

Loading...

Loading...

Useful Links

The BLZ Token

Bluzelle's token, BLZ, will play a key component as part of GameFi. BLZ will be used to purchase NFTs and as in-game currency. It will also be used to store NFTs on the network and validators to earn. Future burn and buybacks will occur to keep supply in balance.

You can buy BLZ on Binance or Huobi.

Bluzelle GameFi Overview

Bluzelle is a blockchain for GameFi with its ability to produce high quality games, protect players NFTs in it's decentralized storage layer, and leverage DeFi yields with its 10,000 TPS Cosmos-Based

The Metaverse can usher in the next 1 Billion users to #crypto. But the high gas fees and scaling issues on Ethereum delivers a poor user experience. The users that are playing games would not want that.

The solution is Bluzelle with it's four point framework:

1.Fast and Elegant Blockchain

With 10,000 TPS speed, games assets can be traded at a cost of pennies vs Ethereum's hundreds of dollars. This is important as transactions are a core part of games.

2.Decentralized Storage

Bluzelle has a fully decentralized storage layer that protects the hard earned NFTs that players have accumulated. A #Metaverse that cannot protect its players assets is no longer a metaverse.

3.Defi in Games

Bluzelle aggregates the DeFi products in the Cosmos ecosystem so players can lend, stake and earn yield on their game assets. Finance is a key feature for the Metaverse, and Bluzelle allows people to learn and apply crypto.

4.High Quality Games

To show the power of Bluzelle's GameFi blockchain, we are also delivering our own Play To Earn game called Denomination. This will be the first product in the Bluzelle Metaverse. With our team's experience working with Nintendo, EA, Xbox and more, this is an area we can excel.

Bluzelle is a Blockchain to the Metaverse. To make a Metaverse succeed it needs (a) Quality Games, (b) Easy integration to DeFi, and (c) Web 3.0 technologies. Bluzelle has all three.

What is Bluzelle?

Game Finance, referred to as GameFi, is the convergence of gaming, blockchain and finance. Players can now own the assets they earn in games and by using them with crypto-mechanics, they can not only play to earn but also get yield.

Bluzelle is a blockchain for GameFi with its ability to produce high quality games, protect players NFTs in it's decentralized storage layer, and leverage DeFi yields with its 10,000 TPS Cosmos-Based Blockchain.

The Problem

Currently games on Ethereum are facing high scaling issues and enormous transaction fees. This is not conductive when players are constantly buying, selling and trading NFT assets. At the same time NFTs are stored on a centralized server which can go down and lose the assets the player acquired. To bring in the next billion crypto users through gaming, there needs to be a better experience.

The Solution

Bluzelle solves these problems with an elegant blockchain. Bluzelle executes 10,000 TPS at a cost of pennies vs Ethereum's hundreds of dollars. In addition, Bluzelle has a fully decentralized storage layer that store players Game NFTs in hundreds of nodes instantly. This ensures players don't lose their hard earned NFTs. Bluzelle also aggregates all the highly performing DeFi products in the Cosmos ecosystem to offer lending, staking, and yield strategies for game assets. With its' founders experienced in the games industry, Bluzelle also is producing its first P2E game called Denomination.

The BLZ Token

Bluzelle's token, BLZ, will play a key component as part of GameFi. BLZ will be used to purchase NFTs and as in-game currency. It will also be used to store NFTs on the network and validators to earn. Future burn and buybacks will occur to keep supply in balance.

Latest news: follow us on Twitter

Ask questions: Join our community on Discord

Source code: Check out our Github

🔥
❓
⚙️

Gas & Tax

Bluzelle has an all-important crypto-economic system baked into its blockchain. The economic system provides rewards, known as “block rewards”, to responsible suppliers to the network. Conversely, consumers of the network pay for its use by using “gas”, which is bought and then immediately expended in the form of a fee. More specifically, to do a certain operation that costs X gas, that much gas is bought at the time of the operation at the specified gas price (expressed in BLZ / gas), and then the gas is “used” by the network. The BLZ paid to buy this gas is called the fee.

These fees ultimately percolate into the system and most of the fees are paid to suppliers as block rewards. A small portion of the fees are collected as “taxes”, on every transaction. The proceeds of these taxes are put toward the network development fund, for managing and upgrading the network. Both gas fees and taxes are applied using unique formulae tailored for the Bluzelle environment.

Gas and taxes are only applicable for transactions. Queries are always free of any charges.

Gas

As mentioned above, gas is required to perform any transactions on a Bluzelle blockchain network. The gas can be compared to the amount of “energy” required to do a certain task. More complex or long-running tasks or tasks that take up more resources (in space and time) will require more gas. Gas is bought at the specified gas price, paid for with BLZ, and the gas is immediately used when the transaction is sent.

Since Bluzelle is a database at its heart, we will go through an example of how much gas is required to store data to the database, using a “create” function.

When you store data to Bluzelle, you need to specify the length of time that the data will persist for. Once that time has elapsed, the data is purged, unless the data was renewed or deleted already. The length of time is specified typically in the # of blocks, but we have interfaces to allow the time to be specified in other units like seconds, etc. This length of time is tied to the “lease” for the data.

The lease is a cryptographic contractual agreement between the user of the database, and the blockchain itself, that guarantees that in return for the gas expended to create that data, the data will be stored securely and be highly available to the user for the length of time of that lease.

The most important factor here is the “Gas per DayByte”. The “DayByte” refers to one byte being stored for one day. So, “Gas Per DayByte” refers to the amount of gas units for each DayByte. “Gas per DayByte” is a rate.

Example:

*Note: 1 BLZ = 1,000,000 µBLZ

  • Gas per DayByte: 2.5 gas / DayByte.

  • # of Bytes to Store: 1,000,000.

  • # of Days to Store for: 10 days.

  • Gas Price: 0.002 µBLZ / gas.

Total Gas Required: 2.5 x 1,000,000 x 10 = 25,000,000 gas

Cost: 25,000,000 x 0.002 = 50,000 µBLZ = 0.05 BLZ

Following is the general formula used for calculating the “Gas per DayByte”:

While the constants in this formula are only an example and can vary from what is used in practice, what is important to note is that “x” is the length of the lease. Shorter leases are more expensive in terms of Gas required, but there is a sudden drop in “cost” as the lease value “X” gets bigger. Super long leases will approach a certain absolute minimum (in the formula above, that minimum is 10). This formula has the following desirable qualities:

  • The marginal extra cost for longer leases is reducing. So it is highly desirable and attractive to store data for longer. This is a fundamental economic property that applies in real world economies, where there are cost advantages to buying “more”.

  • The gas cost tends downwards and approaches a certain minimum for super-long leases. This encourages and supports the idea of storing data for long periods of time, or even forever. Indeed, Bluzelle can be used as a permanent data archive.

Looking at the following graph, notice how the gas cost (Gas per DayByte) drops quickly and flattens out, when graphed against the length of the lease, in days. Bluzelle is architected to support leases of all lengths, but provides strong economic advantages to those who store for longer.

Tax

Tax rates are governed by the tax collector entity. Tax collection is baked into the blockchain, and applied automatically on every transaction processed by the blockchain. The tax collected is used to support the ongoing development and maintenance of the Bluzelle Network.

Bluzelle carries two forms of taxes: Fee Taxes and Transfer Taxes.

Fee tax

The fee tax is applicable directly on the total amount of fees (see previous section) charged for a transaction. The fee tax percentage is taken from the total fees, so the total fees do not increase due to fee taxes. After the fee tax is deducted, whatever remains is added to the total fee pool collected that is distributed as part of the block rewards (see our previous blog post on block rewards). Fee taxes are invisible and never seen by the user issuing the transaction (there is no extra fee charged for the tax). Rather, the amount of total fees that percolates down to the validators and delegators is reduced to account for the fee taxes deducted.

Example:

Let’s use the following assumptions:

*Note: 1 BLZ = 1,000,000 µBLZ

  • This is a non-transfer transaction, so no transfer taxes are applicable.

  • Fee Tax Rate: 10%.

  • Gas Price: 0.002 µBLZ / gas.

  • Total Gas for TX: 200,000 gas.

Total Fee: 200,000 gas x 0.002 µBLZ / gas = 400 µBLZ

Fee Tax Collected: 10% x 400 µBLZ = 40 µBLZ

Net Fees distributed as Block Rewards: 400 µBLZ — 40 µBLZ = 360 µBLZ = 0.00036 BLZ Net Debit of BLZ from transaction sender’s account: 400 µBLZ

Transfer tax

The transfer tax is only applicable on transfers of BLZ tokens between accounts. For all other transactions, no transfer taxes are applicable (only fee taxes). Note that fee taxes are also applicable to transfers.

Transfer taxes are calculated based on the amount being transferred and are applied ON TOP of the total gas-related fees applicable for the transaction. Transfer taxes are not part of gas fee estimates, and are charged above and beyond the gas fees. As such, a transfer transaction will only succeed if the account it is sent from has sufficient BLZ for both the gas fees and the transfer tax. If there is not sufficient BLZ to cover both the gas fees and the transfer tax, the transfer will fail. The user is responsible to be aware of the transfer tax, ensure sufficient funds are available to cover it, and should expect it to be charged on all transfers.

Example: (for completeness, we will include the fees taxes here too)

Let’s use the following assumptions:

*Note: 1 BLZ = 1,000,000 µBLZ

  • Transfer Tax Rate: 0.1%

  • Fee Tax Rate: 10%.

  • Gas Price: 0.002 µBLZ / gas.

  • Total Gas for TX: 200,000 gas.

  • Total amount being transferred: 1,000,000 µBLZ

Total Fee: 200,000 gas x 0.002 µBLZ / gas = 400 µBLZ

Fee Tax Collected: 10% x 400 µBLZ = 40 µBLZ

Net Fees distributed as Block Rewards: 400 µBLZ — 40 µBLZ = 360 µBLZ = 0.00036 BLZ

Transfer Tax Collected: 0.1% x 1,000,000 µBLZ = 1,000 µBLZ

Total Taxes Collected: 40 µBLZ + 1,000 µBLZ = 1,040 µBLZ

Net Debit of BLZ from transaction sender’s account: 400 µBLZ + 1,000 µBLZ + 1,000,000 µBLZ = 1,001,400 µBLZ

Validator

How to become a Bluzelle validator

Hardware Requirement

Steps

  1. OS Setup for Curium

  2. Development Environment Setup

  3. Build the Curium Project

  4. Setup your own validator + sentry (optional) on our network

Testnet

  • Follow the Testnet path stated in Step 4

  • Faucet (Follow step 23 in the doc)

  • Testnet Explorers

    • BigDipper

    • CENSUS

Mainnet

  • Follow the Mainnet path in step 4

  • Swap your ERC20 BLZ to native BLZ

  • Mainnet Explorers

    • BigDipper

    • Census

Other Resources

If you have any questions, please reach out to our team on Discord.

Bluzelle Staking Economics

Bluzelle uses a "Proof of Stake" method to ensure the integrity of the network. Validators are required to “stake”, or “put up” a minimum number of tokens into. The validator is able to participate in Bluzelle as a validator. Their “power” as a validator relates to how much of a stake they have put up, with respect to the total cumulative stake of all the validators in the zone.

Bluzelle attracts people to become validators by offering them part of the revenue Bluzelle charges customers for storing data on Bluzelle. As a result, staking is critical to ensure the integrity of validators. Validators are required to “stake”, or “put up” a minimum number of BLZ tokens into. Their “power” as a validator relates to how much of a stake they have put up, with respect to the total cumulative stake of all the validators in the zone. Their power affects how much of the rewards they earn.

For example, Bob puts up 10,000 BLZ tokens and the total # of tokens staked is 100,000 - Bob has 10% of the power. This means that his node provides 10% of the voting power, and he also earns 10% of the total revenue available. Revenue comes from all the fees paid by developers who use the database. The higher your stake, the more you will earn.

Poor behaviour (intentional or unintentional) by a validator can result in slashing. Slashing, considered the deterrent to bad behaviour, involves a penalty in tokens applied against a validator’s stake. It serves to ensure that nodes act responsibly and for the good of the network.

The Incentives

For providing the aforementioned functions, validators will be paid a portion of the network fees Bluzelle gets from customers. Bluzelle has allocated 10% (50M) of its token supply to compensate validators for being part of Bluzelle to kickstart the network.

Total Rewards from Staking = Block rewards + Staking Rewards from Bluzelle Community Incentivised Pool

Over four years as transaction fees grow, we expect the Community Incentivised Pool to decrease year over year. In the long run, the network is intended to sustain itself on the basis of transaction fees.

The portion of transaction fees that are distributed to validators has yet to be determined. Bluzelle will pick an amount that is high enough to provide positive income for validators and high enough for Bluzelle to support its network.

Below, you will learn how Block rewards & the staking rewards from the Bluzelle Community Pool is calculated.

Staking Rewards from Bluzelle Community Incentivised Pool

This part of the reward is what the Bluzelle team has purposely allocated to incentivise the community to participate in the network at early stage. It is distributed on a daily basis and will be distributed directly on your available balance.

Rewards Pool

Bluzelle has allocated an annual BLZ rewards pools that will decrease over time. These allotted rewards represent 10% (50M) of the total supply over four years. Unallocated rewards from the previous year will be rolled to the next year.

Yield

The targeted APY for Bluzelle staking is 25% APY. This is equivalent to 0.06115% daily yield. We also assume that all staking rewards are re-invested diligently, which means as soon as you receive your staking rewards, you stake all of them back into the pool. Every day, our mechanism guarantees that the total rewards for the whole community pool is 0.06115%. That means if the whole pool has 10 million tokens staked, the total reward pool for the day will be 6115 BLZ. However, how much of each individual will share from the total reward pool will vary from each other, depending on the staked amount as well as length of stake, which is explained in the below section.

Mathematics

It takes a few steps to determine how much each individual should receive every day. Here, we assume Alice & Bob are the only two participants.

Step 1. Look at the proportion of an individual’s stake against the total stake in the pool on the current day.

Here, S represents the staked amount that Alice & Bob is holding on the current day. This value only represents the current state and does not matter when you put in the stake.

Step 2. Look at the proportion of an individual’s staking history against the full staking history over the past 90 days.

The historical stake is the running totals of the daily stakes for the past 90 days.

Step 3. Divide daily rewards pool for individuals

Now let’s take an example to understand how these formula work. Below is the staking status of Alice & Bob each day.

Now, based on the data, let’s calculate how much Alice & Bob will receive on Day 3:

From the above, we can see that Alice actually yields 0.06682% (equivalent to 27.6% APY) on day 3, which is higher than the community target of 0.06115%. This is how the stake amount & tenure come into play.

Below, we will go through 3 different scenarios to understand how your daily earnings can be impacted by the staked amount, tenure, and also activities of other participants.

Examples

Ex 1. Stake on same day, different amounts

Alice & Bob staked 1,000,000 & 2,000,000 BLZ respectively on Day 1. We assume Alice & Bob re-invested their daily rewards automatically (Today’s stake is the sum of previous day stake + previous day reward). Therefore, Alice & Bob’s current stakes increase daily.

The above table showed that both yielded the same rate at 0.06115% on a daily basis. However, since Bob has a larger stake, he also receives higher rewards proportionally.

Ex 2. Stake on different days, same amount

Alice staked 1,000,000 BLZ on Day 1 while Bob only stake 1,000,000 BLZ on Day 6.

From the above table, it shows that when Bob contributes to the pool on Day 6, Alice’s daily yield also jumps up. This is because the total staking pool increases. Even though Alice & Bob put in the same stake, Alice has a higher historical stake % because she started staking earlier, leading to a higher daily yield than Bob. As Alice & Bob hold their stakes longer, their actual day rate will gradually regress to 0.06115% and becomes stable afterward.

Ex 3. Unstaking from the pool

Alice staked 1,000,000 on Day 1. Bob staked 1,000,000 on Day 5. Alice then unstaked everything on Day 9.

From the above table, it shows that even though Alice unstaked everything on Day 9, she still receives daily reward because she still shares a historical stake % from the previous 9 days. Her rewards will gradually decrease to 0%. Bob’s yield also decreases due to Alice leaving the pool.

Conclusion

Now, you all understand that your reward is determined by the current state as well as the past 90 days activities of the whole pool. It’s difficult to project the yield for tomorrow, next month, or the whole year because it is highly impacted by any future activities. The formula and above examples imply that:

  • The higher stake you have, the higher daily rewards you get compared to other participants in the pool

  • The longer you hold your stake, the higher daily rewards you get compared to other participants in the pool

  • If more stakes are contributed to the pool, you get higher daily rewards as well

  • If you unstake, you still earn some rewards because your past 90-day staking history still takes effect. Your daily rates will slowly regress to 0% till 90 days after you unstake.

There are several advantages of Bluzelle’s complex staking model:

  • Rewards are distributed on a daily basis and become immediately available upon receipt. Participants have the freedom to withdraw or re-invest your daily rewards

  • By staking earlier and longer, you get the opportunity to earn more than 25% APY

  • There is a network effect. The more people join the staking pool, the higher yields people can get. This will incentivise more participants to stake or invite others to do so.

Block Rewards

BLZ token holders are able to stake their BLZ tokens to Bluzelle. In doing so, they provide the critical security needed for the network. In return for doing so, they earn block rewards. These rewards come 100% from the total of all the fees paid for all the transactions on that block. As soon as a token holder stakes tokens, they start to receive a portion of the rewards associated with the validators they have staked with.

A validator operator also earns rewards this way, just like a delegator. As described below, validators operator also earns commissions. These commissions are the primary incentive to be a validator.

Rewards are always paid in BLZ tokens.

Commissions and Risks

Validators are free to set their commission levels, from 0% up to 20% (subject to change). As described below, the block rewards calculated for each delegator have the commission taken out of them and this commission is paid directly to the validator operator. Whatever is left, post-commision, from the block reward, is proportionally paid out to the stakers.

Mathematics

Without going into the specifics, every block, a “block proposer” is chosen, who gets to earn a bonus on top of the regular rewards. This bonus can range from 1% to 5%, depending on the amount of effort the block proposer made in securing the block.

We will follow here an example that we were inspired upon, from the COSMOS community. We have skipped concepts like the community pool and taxes, for the sake of simplicity.

Let’s use the following assumptions:

  • 10 Validators (1 block-proposing validator + 9 normal validator).

  • Each Validator has a 1% commission.

  • Each Validator has self-staked 20% of the total stake they have. So, 80% of their stake is held by delegators. We will use 20% and 80% below correspondingly.

  • Each validator has 20 delegators, and each has staked the same amount.

  • The block we are analyzing collected 1005 BLZ in fees (total gas collected from all the transactions included in this block).

  • The block proposer did the work necessary to earn the full bonus of 5%.

Let’s assume X is the # of tokens each normal validator earns for its gross reward pool. Therefore, the block-proposing validator will earn (1+5%)X.

Now we can solve the following simple algebraic equation:

X * 9 + (X + X * 5%) * 1 = 1005

=> 10.05X=1005

=> X = 1005/10.05 = 100

For the block-proposing validator:

  • Total Reward Pool: 100 + 5% * 100 = 105 BLZ

  • Commission: 105 * 20% * 1% = 0.84 BLZ

  • Validator Operator’s Reward: 105 * 20% + Commission = 21 + 0.84 = 21.84 BLZ

  • Total Delegator Reward Pool: 105 * 80% - Commission = 84 - 0.84 = 83.16 BLZ

  • Each Delegator’s Reward: 83.16 / 20 = 4.158 BLZ. The pool is divided up proportional to each delegator’s stake.

For the non-block-proposing validator:

  • Total Reward Pool: 100 BLZ

  • Commission: 100 * 20% * 1% = 0.8 BLZ

  • Validator Operator’s Reward: 100 * 20% + Commission = 20 + 0.8 = 20.8 BLZ

  • Total Delegator Reward Pool: 100 * 80% - Commission = 80 - 0.8 = 79.2 BLZ

  • Each Delegator’s Reward: 79.2 / 20 = 3.96 BLZ. The pool is divided up proportional to each delegator’s stake.

Reward Payout

Rewards are paid out automatically to each delegator, each block, which is approximately every 6–7 seconds. Once paid, these tokens are in a “rewards pool” for each delegator. The delegator must explicitly transfer these tokens out of their rewards pool to their main account before these reward tokens can be used (by “Claiming Rewards” on the dashboard). Once in the main account, these tokens can be withdrawn (via the bridge) or staked anew to validators to compound the delegator’s benefits.

Optimizing Rewards

Below are some tips and best practices that can help you maximize the block rewards you can earn:

  1. Be critical in your selection of validators. Research each wisely, look at their statistics including their CENSUS stats, previous slashings, and community opinion. Don’t always go for validators with low commissions. You often DO get what you pay for.

  2. Diversify your portfolio by spreading your tokens out across 4–6 validators that you have vetted.

  3. Immediately and regularly claim your block rewards and stake them anew to your chosen portfolio of validators. Tokens do NOT earn rewards when they sit in the rewards pool — only when staked. Take maximum advantage of the power of compounding and maximize your returns!

Total Daily Rewards (TDR) that the whole pool will receive is 0.06115% based on the TCS today.

Among the TDR, 25% of it is shared proportionally based on Current Stake %, while 75% of it is shared proportionally based on Historical Weighted Stake %. Therefore, the rewards for Alice will be computed as:

Technical Requirements
Bluzelle Staking Economics
Gas & Tax

Year

Rewards Pool (BLZ)

Percentage of Supply

1

20M

4%

2

15M

3%

3

10M

2%

4

5M

10%

Total

50M

10%

Careers

Be a part of building Web 3.0 by applying for one of our listed jobs. You'll get to learn or advance your blockchain skills as we work with a variety of languages and different crypto protocols.

https://jobs.wrk.xyz/bluzelle

Example 1. 📝

Problem

Currently games on Ethereum are facing high scaling issues and enormous transaction fees. This is not conductive when players are constantly buying, selling and trading NFT assets. At the same time NFTs are stored on a centralized server which can go down and lose the assets the player acquired. To bring in the next billion crypto users through gaming, there needs to be a better experience.

The Solution

Bluzelle solves these problems with an elegant blockchain. Bluzelle executes 10,000 TPS at a cost of pennies vs Ethereum's hundreds of dollars. In addition, Bluzelle has a fully decentralized storage layer that store players Game NFTs in hundreds of nodes instantly. This ensures players don't lose their hard earned NFTs. Bluzelle also aggregates all the highly performing DeFi products in the Cosmos ecosystem to offer lending, staking, and yield strategies for game assets. With its' founders experienced in the games industry, Bluzelle also is producing its first P2E game called Denomination.

Overview

Enter a world where a newly discovered living energy source, the Elementi, binds with multiple races across the galaxy to unlock powerful abilities.

GAMMA 4 is a play-to-earn, real-time card battle game where gamers can fight against each other (PvP) or against the environment (PvE), in order to be rewarded with tokens that can be used both for governance or to purchase unique NFTs.

GAMMA 4 is being built in collaboration with Starloop Studios, a top-rated development studio that has worked with the best game companies in the world, including Ubisoft, Bethesda, Scopely, Disney, Square Enix, and more.

Delegator

Being built on the Cosmos & Tendermint protocol, Bluzelle uses Delegated Proof of Stake Consensus (dPoS). This not only ensures the integrity of the network, but also allows every token holder, regardless of technical expertise, to participate in securing the network and earning transaction fees and rewards.

This guide will walk through how you can delegate your tokens to your chosen validators. This is currently connected to the testnet. Before you started, make sure you have created a Bluzelle wallet and have some token balance in your account.

Steps

1. View the full list of validators

On your dashboard, click “Stake BNT”. You can view the list of validators that you can delegate your tokens to.

2. Review details of individual validator

Click on one of the validators, review their information and commissions.

3. Stake Tokens

Click “Stake”. Enter the BNT amount and confirm the transaction. Please note that for each staking transaction, their will be a transaction fee of 2 BNT.

4. View your BNT balance and staking status

Go to “My Account”, you can view your BNT balance and the amount that you have delegated to each of the validators.

5. Check your transactions on Bluzelle Testnet Explorer

You can check out the explorer here. You can see both your previous transactions (receiving 2000 BNT and delegated BNT to one of the validators).

Feel free to check out other parts of the explorer and get more insight from the Bluzelle Chain.

For delegation rewards, check out the "Rewards" page for full details.

Create a Bluzelle Wallet

Game Lite Paper

Get all details of the game design here.

Technical Requirements

Setup and Hardware

Validators can choose to run their systems in the cloud or in a dedicated data center. It needs to be pointed out that if running your validators in the cloud you are risking exposure of your private keys.

There is a spectrum of different choices that can be made in the name of security. The most secure is a complex arrangement where the validator sits in a data center with some sort of KMS hardware key management system and has one or more sentries sitting in the cloud, with an elaborate setup of private VPN’s and firewalls.

Validator and Sentry Node Requirements

Bluzelle requires validators to have both a validator node and sentry node.

Validator Node

Sentry Node

  • I3EN Large

  • 16 GB RAM

  • 2 vCPU’s

  • 25 Gigabit Network Connection

  • 1 TB Storage

  • M5AD Extra Large

  • 16 GB RAM

  • 4 vCPU’s

  • 10 Gigabit Network Connection

  • 125 GB Storage

The Story

Initially, the various races lived together in 'uneasy' harmony. They met in the Reality Anchor, a neutral ground where the Humans, Atari and Cyborg Goblins all gathered for diplomatic, economic, and research purposes.

Humans began to colonize nearby planets, and not long after, trouble began. Several generations later, these seemingly habitable systems started to cause genetic mutations, and a decision had to be made: wipe out the mutant race and 'stop the disease from spreading.'

The last of the humans teamed up with the mutants and went to war with the alien faction. Sadly, the aliens had more advanced weapons, notably the Zero Sum Desolator. Of course, peace was finally achieved through the Nebula Accord, but not without the death of countless humans and mutants.

The four races now lived together in peace.

But a threat is looming...

Architecture

In centralized database services, data is created from an application and stored on one or two servers that can be located in a specific place. With Bluzelle, the data is stored on a network of 13 or more nodes. Each such network is called a database zone, and all zones are synced together. No node is a leader, ensuring that if a node is offline, the data is still available as all the other nodes have a copy. Additionally, because all the nodes are synced with a consensus engine, no changes can be made to the database unless ⅔ of the nodes agree. This ensures that the data is censorship resistant and tamper-proof. Finally, as an application requires more storage, more database zones can be added, ensuring scalability without the developer needing to do extra work and provisioning.

Bluzelle consists of many components that work together.

Database Engine - A NoSQL key-value store database. It is built using the Cosmos SDK.

BFT Consensus Engine - Powered by Tendermint, this component ensures all the node remain in sync.

Nodes - the core foundation of Bluzelle is operated by nodes which are provided by the public community. They provide the storage space and execute changes through consensus in return for a fee.

Bluzelle token (BLZ) - an Ethereum based ERC-20 token is easily obtained outside the Bluzelle network. It is on top exchanges like Binance, Huobi, Uniswap and others. There also exists the BLZ Mainnet token that is used for Bluzelle services within the ecosystem. BLZ ERC-20 and BLZ Mainnet are interchangeable through via Bluzelle's main dashboard.

Client Library - the interface to talk to Bluzelle. Currently in Javascript. Will support others.

Client Proxy - allows the client to trust the response given by a decentralized network

Bluzelle Studio - an interactive web app that allows developers to work with the database

Zone - a blockchain comprised of a collection of nodes. There are three types of zones.

  1. Database zones - the building blocks to provide capacity for the database network. As more capacity is required, more database zones are added. This is for scalability.

  2. Peg zone - a special blockchain of nodes that provides a decentralized means to bridge the database zones with other networks like Ethereum.

  3. Hub zone - allows the database zones and peg zone to communicate with one another

Features

Decentralized and Mutable

Currently decentralized databases operate as blockchains, keeping data permanently which only increases the storage costs of data. This is ineffective for applications. Bluzelle does the opposie and stores data like traditional databases - updated and deleted at a low cost. Added is the power of blockchain-like security, where data is accurate and only changed by the rightful owner. This is done by integrating Tendermint, the most powerful byzantine fault tolerant system available.

Greater Global Coverage

Bluzelle providers are currently spread across North America, Europe and Asia. Expansion will soon come to Africa, South America and Australia. Developers with Bluzelle are able to get multi-region coverage for the same price. As their customers grow in different countries, developers can continue to service them with no interruption.

Lower Cost

By using outside resources, Bluzelle reduces it’s overhead and is then able to offer lower prices to developers. The revenue generated by Bluzelle DB is then shared with the storage providers. This encourages others to become part of Bluzelle which leads to even greater global coverage.

Bluzelle Versus Filecoin

How is Bluzelle superior to Filecoin and IPFS

GAMMA 4 LITE PAPER (WIP)Starloop on Notion

Filecoin

Bluzelle

Replication & redundancy

You pay to store on a host. If you want more reliability or backups, you have to pay to store on multiple hosts. You must pay for each and every host. No guarantee is provided.

On Bluzelle you pay once and get backups across all nodes for the same price. Simple and straightforward. Bluzelle provides the guarantee your file will always be there for you.

Decentralization

You select which miners to store on. This leads to centralization.

On Bluzelle your data and files are randomly stored across multiple nodes ensuring decentralization.

Retrieval speed

You pay to retrieve your data. Faster you want data, the more you pay. Pay very little and it comes to you very slowly.

On Bluzelle all data retrieval is blazing fast. This is because all your data and files are available across all nodes and the info gets to you from the fastest one. Bluzelle doubles as a high speed edge data cache.

High volume downloads

High volume downloads are impractical due to limited replication and slow retrieval.

On Bluzelle high volume downloads are not only possible but extremely fast. This is because of auto replication across all nodes.

Deploy Your dApps

Bluzelle currently supports multiple languages including JS, Go, Python, Ruby & Java. We are also releasing client libraries for C# and PHP soon.

Python

Getting started

Grab the package from github:

Use:

Examples

Copy .env.sample to .env and configure if needed.

Then run the example:

Tests

Install requirements:

Then run the tests:

User Acceptance Testing

Licence

MIT

Select a client library to get started

Ensure you have a recent version of installed.

The tests/ can best be run in a environment. To do so, initialize one with:

Please checkout the document for more details.

👇
JS
Go
Python
Ruby
Java
pipenv install git+https://github.com/bluzelle/blzpy.git#egg=bluzelle
import bluzelle

client = bluzelle.new_client({
  'address':  '...',
  'mnemonic': '...',
})

gas_info = {
  'max_fee': 4000001,
}

key = 'foo'

client.create(key, 'bar', gas_info)
value = client.read(key)
client.update(key, 'baz', gas_info)
client.delete(key, gas_info)
cp .env.sample .env
DEBUG=false python examples/crud.py
pipenv --python 3
pipenv install
make test
Python 3
pipenv
UAT.md

JS

blzjs is a Typescript/JavaScript library that can be used to access the Bluzelle database service.

Installation

yarn add bluzelle
or
npm install bluzelle

There are two versions of the bluzelle library. bluzelle-node.js and bluzelle-js.js. By default the NodeJS version will be used.

To use the NodeJS version

import { bluzele } from 'bluzelle';
or
const { bluzelle } = require('bluzelle');

To use the pure JS version

import { bluzele } from 'bluzelle/lib/bluzelle-js';
or
const { bluzelle } = require('bluzelle/lib/bluzelle-js');

To load additional Typescript definitions

import {bluzelle, API, BluzelleConfig} from 'bluzelle'
import {bluzelle, API, BluzelleConfig} from 'bluzelle/lib/bluzelle-js'
  • API docs

  • Download browser version for <script> tag

  • Examples

  • REPL (interactive console)

Quckstart

Javascript

const {bluzelle} = require('bluzelle');

const config = {
    mnemonic: "apology antique such ancient spend narrow twin banner coral book iron summer west extend toddler walnut left genius exchange globe satisfy shield case rose",
    endpoint: "http://testnet.public.bluzelle.com:1317",
    chain_id: 'bluzelle',
    uuid: Date.now().toString()
};

(async () => {
    const bz = await bluzelle(config);

    await bz.create("somekey", "somevalue", {'gas_price': 10})
    console.log(await bz.read("somekey"))
})();

Typescript

import {bluzelle, API, BluzelleConfig} from 'bluzelle';

const config: BluzelleConfig = {
    mnemonic: "apology antique such ancient spend narrow twin banner coral book iron summer west extend toddler walnut left genius exchange globe satisfy shield case rose",
    endpoint: "http://testnet.public.bluzelle.com:1317",
    chain_id: 'bluzelle',
    uuid: Date.now().toString()
};

(async () => {
    const bz: API = await bluzelle(config);

    await bz.create("somekey", "somevalue", {'gas_price': 10})
    console.log(await bz.read("somekey"))
})();

Build Status
Coverage Status

Bridging between ERC20-BLZ and L1-BLZ

Disclaimer

Bluzelle is providing these instructions as a convenience for the public and is not responsible for inaccuracies, errors, omissions, etc. The user is solely responsible for the results of using this information.

Prerequisites

ETH Wallet

This is where the ERC20-BLZ tokens will live, for either converting to L1-BLZ, or where you will receive the ERC20-BLZ, when converting from L1-BLZ.

A typical example of this is Metamask, but there are others. You can have your ETH wallet attached to a hardware wallet like Ledger, if preferred. Install whichever extension you prefer for your wallet, to your browser, if applicable.

You will be expected, as part of these instructions, to use this wallet address to send tokens or to receive tokens into it.

Cosmos Wallet

This is where the L1-BLZ tokens will live, for either converting to ERC20-BLZ, or where you will receive the L1-BLZ, when converting from ERC20-BLZ.

A typical example of this is Keplr, but there are others. You can have your Cosmos wallet attached to a hardware wallet like Ledger, if preferred. Install whichever extension you prefer for your wallet, to your browser, if applicable.

You will be expected, as part of these instructions, to use this wallet address to send tokens or to receive tokens into it.

Ensure you have familiarity with your Cosmos wallet and that it has access to your Osmosis wallet address AND your Bluzelle wallet address. In Keplr, you can select the network, and see your Osmosis or Bluzelle address. With Keplr, if Bluzelle is not in your list of networks, select “Add Suggest Chains” in the network selector to goto https://chains.keplr.app/ where you can add Bluzelle.

Bridge Instructions

Going from ERC20-BLZ to L1-BLZ

  1. Using your ETH wallet, convert ERC20-BLZ to USDC via Uniswap (or any other exchange like Binance, etc). You can skip to the next step, if you already have USDC.

  2. Goto https://satellite.money/?source=ethereum&destination=osmosis&asset_denom=uusdc and do the following:

    1. Please be sure to look at the gas fees and other fees to ensure you are ok with these. It was about 80 USDC in fees when we wrote these instructions.

    2. Connect BOTH your ETH and Cosmos wallets. Click on the connect button and connect the ETH wallet, selecting Metamask (or whichever else). Do the same for Cosmos, clicking the connect button and connecting the Cosmos wallet, selecting Keplr (or whichever else).

    3. Accept any popups and permission requests from your wallet extensions. Typically, some wallets will popup a permission to allow a web app to use that wallet.

    4. Enter in the amount of USDC you converted from ERC20-BLZ into the first box for USDC. You can auto-fill the box with the MAX button if you want.

    5. In your Cosmos wallet, select the Osmosis network.

    6. Click the button to fill in your destination address from your Cosmos wallet, or alternatively, paste it in (be careful this is correct and matches your Cosmos wallet extension’s Osmosis address, or you lose all your funds!).

    7. Click the button to generate the deposit address.

    8. Wait a few moments and an ETH address will be given to you. Copy it if you want, but it will be available once you dismiss the popup.

    9. Send the amount of USDC you specified to that given ETH address. Alternatively and PREFERABLY, click the “Send from Metamask” (if you are using Metamask) button to automatically ask your ETH wallet to send the USDC to that address.

    10. In your ETH wallet extension, confirm the ETH address (the one generated by satellite.money) and amount being sent to are correct, and send the transfer.

    11. Wait and watch the satellite.money screen until the required number of blocks have elapsed. This can take upwards of 20 minutes. Note that this screen only typically updates if you clicked on the “Send from…” button to send the USDC. Otherwise, you just have to wait and look for the USDC on the Cosmos side (in your Cosmos wallet), after sufficient time.

    12. Once satellite.money confirms the transfer is complete, goto your Cosmos wallet, and verify you have the USDC in your Osmosis wallet (minus any fees).

  3. Goto https://frontier.osmosis.zone/?from=USDC&to=BLZ and convert your USDC to BLZ. This is your new L1-BLZ.

  4. Once you have your L1-BLZ, use the IBC transfer function in your Cosmos wallet to transfer your L1-BLZ to your Bluzelle address. Be certain you have used the correct Bluzelle address as the destination address, that you found in your Cosmos wallet, when the Bluzelle network is selected. Alternatively, follow this method on Frontier-Osmosis if you are not familiar with the IBC function on your Cosmos wallet:

    1. Go to the assets page on Osmosis Frontier (the left side menu)

    2. Look for "BLZ" on the list (you should have a balance)

    3. Click "withdraw"

    4. If you don't have the Bluzelle chain added to your wallet (Keplr or Cosmostation), a pop up will ask you if you want to approve adding the Bluzelle chain to your wallet. Click Approve

    5. It will show an animation of “Osmosis transferring to your Bluzelle address” (the transfer has not happened yet, of course). Be absolutely sure that it’s the same Bluzelle address as what is in your wallet (Keplr or Cosmostation or etc...)

    6. Enter the amount you want to transfer to your Bluzelle address

    7. Click withdraw BLZ

    8. Approve the transfer in your wallet

  5. Wait a few minutes and confirm that your L1-BLZ is in your Bluzelle wallet on your Cosmos wallet.

Going from L1-BLZ to ERC20-BLZ

  1. Using your Cosmos wallet, use the IBC transfer function to transfer your L1-BLZ to your Osmosis address. Be certain you have used the correct Osmosis address as the destination address, that you found in your Cosmos wallet, when the Osmosis network is selected. Alternatively, follow this method on Frontier-Osmosis if you are not familiar with the IBC function on your Cosmos wallet:

    1. Go to the assets page on Osmosis Frontier (the left side menu)

    2. Look for "BLZ" on the list

    3. Click "deposit"

    4. If you don't have the Bluzelle chain added to your wallet (Keplr or Cosmostation), a pop up will ask you if you want to approve adding the Bluzelle chain to your wallet. Click Approve

    5. It will show an animation of “Bluzelle transferring to your Osmosis address” (the transfer has not happened yet, of course). Be absolutely sure that it’s the same Osmosis address as what is in your wallet (Keplr or Cosmostation or etc...)

    6. Enter the amount you want to transfer to your Osmosis address

    7. Click withdraw BLZ

    8. Approve the transfer in your wallet

  2. Wait a few minutes and confirm that your L1-BLZ is in your Osmosis wallet on your Cosmos wallet.

  3. Goto https://frontier.osmosis.zone/?from=BLZ&to=USDC and convert your L1-BLZ to USDC.

  4. Goto https://satellite.money/?source=osmosis&destination=ethereum&asset_denom=uusdc&destination_address= and do the following:

    1. Please be sure to look at the gas fees and other fees to ensure you are ok with these. It was about 80 USDC in fees when we wrote these instructions.

    2. Connect BOTH your ETH and Cosmos wallets. Click on the connect button and connect the ETH wallet, selecting Metamask (or whichever else). Do the same for Cosmos, clicking the connect button and connecting the Cosmos wallet, selecting Keplr (or whichever else).

    3. Accept any popups and permission requests from your wallet extensions. Typically, some wallets will popup a permission to allow a web app to use that wallet.

    4. In your Cosmos wallet, ensure you have selected the Osmosis network.

    5. Enter in the amount of USDC you converted from L1-BLZ into the first box for USDC. You can auto-fill the box with the MAX button if you want.

    6. Click the button to fill in your destination address from your ETH wallet, or alternatively, paste it in (be careful this is correct and matches your ETH wallet extension’s address, or you lose all your funds!).

    7. Click the button to generate the deposit address.

    8. Wait a few moments and an Axelar address may be given to you. Copy it if you want, but it will be available once you dismiss the popup (which may only be a confirmation).

    9. Send the amount of USDC you specified to that given Axelar address as an IBC Transfer in your Cosmos wallet. Alternatively and PREFERABLY, click the “Send from Keplr” (if you are using Keplr) button to automatically ask your Cosmos wallet to send the USDC to that address. This will be an IBC transfer, as an FYI.

    10. In your Cosmos wallet extension, confirm the Axelar address (the one generated by satellite.money) and amount being sent to are correct, and send the transfer.

    11. Wait and watch the satellite.money screen until the required number of blocks have elapsed. Note that this screen only typically updates if you clicked on the “Send from…” button to send the USDC. Otherwise, you just have to wait and look for the USDC on the ETH side (in your ETH wallet), after sufficient time.

    12. Once satellite.money confirms the transfer is complete, goto your ETH wallet, and verify you have the USDC in your wallet (minus any fees).

  5. Using your ETH wallet, convert USDC to ERC20-BLZ via Uniswap (or any other exchange like Binance, etc)..

Java

blzjava is a Java/Android library that can be used to access the Bluzelle database service.

  • Build and API docs

  • Java docs

  • Examples

  • Android example

  • Tests

Quickstart

Make sure that Java is installed and has a version at least 8 (JDK 1.8).

$ java -version
$ javac -version

If Java is not installed, install it.

$ sudo apt-get update
$ sudo apt-get install default-jdk

Download bluzelle.jar from releases or using terminal.

$ wget https://github.com/bluzelle/blzjava/releases/download/0.0.1/bluzelle.jar

Create file "Quickstart.java".

import com.bluzelle.*;

public class Quickstart {

    public static void main(String[] args) {
        Bluzelle bluzelle = Bluzelle.connect(
                "around buzz diagram captain obtain detail salon mango muffin brother morning jeans display attend knife carry green dwarf vendor hungry fan route pumpkin car",
                "http://dev.testnet.public.bluzelle.com:1317",
                null,
                null
        );

        GasInfo gasInfo = new GasInfo(10, 0, 0);
        LeaseInfo leaseInfo = new LeaseInfo(1, 0, 0, 0);

        bluzelle.create("key", "value", gasInfo, leaseInfo);
        System.out.println("created");
        bluzelle.update("key", "new value", gasInfo, leaseInfo);
        System.out.println("updated");
        System.out.println("'key': " + bluzelle.read("key", false));
        bluzelle.delete("key", gasInfo);
        System.out.println("deleted");
    }
}

Compile.

$ javac -cp ./bluzelle.jar Quickstart.java

Run.

$ java -cp .:./bluzelle.jar Quickstart

Go

Getting started

Grab the package from github:

Use:

Examples

You can test out the examples/ included by following these steps:

  1. Copy .env.sample to .env and configure if needed.

  1. Install dependencies:

  1. Run an example as defined in the Makefile, for example, to read the value of an existing key, foo, run:

This will run the examples/crud/read.go.

Integration Tests

User Acceptance Testing

Licence

MIT

Ensure you have a recent version of installed.

Please checkout the document for more details.

go get github.com/bluzelle/blzgo
package main

import (
  "github.com/bluzelle/blzgo"
  "log"
)

func main() {
  // create client
  options := &bluzelle.Options{
    Mnemonic: "...",
    Endpoint: "http://dev.testnet.public.bluzelle.com:1317",
    UUID: "...",
  }
  client, err := bluzelle.NewClient(options)
  if err != nil {
    log.Fatalf("%s", err)
  }

  key := "foo"
  value := "bar"

  gasInfo := bluzelle.GasInfo{
    MaxFee: 4000001,
  }
  leaseInfo := bluzelle.LeaseInfo{
    Days: 1,
  }

  // create key
  if err := client.Create(key, value, gasInfo, leaseInfo); err != nil {
    log.Fatalf("%s", err)
  } else {
    log.Printf("create key success: true\n")
  }

  // read key
  if v, err := client.Read(key); err != nil {
    log.Fatalf("%s", err)
  } else {
    log.Printf("read key success: %t\n", v == value)
  }

  // update key
  if err := client.Create(key, value, gasInfo, nil); err != nil {
    log.Fatalf("%s", err)
  } else {
    log.Printf("create key success: true\n")
  }

  // delete key
  if err := client.Delete(key, gasInfo); err != nil {
    log.Fatalf("%s", err)
  } else {
    log.Printf("delete key success: true\n")
  }
}
cp .env.sample .env
go get ./...
make read key=foo
make test
Go
UAT.md

Create a Bluzelle Wallet

Bluzelle wallet is now ready to be tested. It is where users store BNT tokens, the Bluzelle internal token to be used in all transactions on the Bluzelle chain. Users need to convert their BLZ tokens

This tutorial will walk you through how to create your Bluzelle wallet. Currently this is still connected to our testnet. The whole process will take you less than 5 minutes to complete. Before you start, make sure you have the following prepared:

  • You are using a browser with Metamask extension installed. e.g. Chrome, Firefox & Brave. (Check out installation guide)

  • Import your Ethereum BLZ account into Metamask (Check out guide)

Step 1

Visit this link using a Metamask supported browser such as Chrome. On the main page, click “Login”

Step 2

You will need to login to Metamask (if you haven’t done so) and allow Bluzelle Staking to connect to your wallet. If you have logged in before, you can directly go to step 3.

Step 3

You will be shown a 12-word seed phase for your wallet. Click “copy” and save them into a safe place. Click “continue” once you save it.

p.s. Please do not share it to others or lose it, otherwise you risk losing your wallet and tokens forever (even the Bluzelle team wouldn’t have access).

Step 4

You will be prompted a Metamask window where you will need to sign the transaction. This would allow your Bluzelle BNT wallet to be mapped to your Ethereum BLZ account. Click “sign”.

Now you have successfully created a Bluzelle wallet. Going forward, you don’t need the mnemonics phrase to login again. Your Bluzelle BNT wallet will be connected to your BLZ account.

If you have any questions, you can join our discord channel where we will share information about BluzelleNet, Staking, validators and more.

Ruby

Getting started

  1. Add the gem to your Gemfile:

  1. Then install:

  1. Use:

Examples

Copy .env.sample to .env and configure if needed.

Then run the example:

Tests

Configure env as described in the examples section above.

User Acceptance Testing

Abort 6 error

If you encounter this error, you either might have to:

Licence

MIT

Login to your Metamask
Click “Connect” to allow Bluzelle Staking to connect to your wallet

Ensure you have a recent version of installed.

Install libsecp256k1 as described .

Please checkout the document for more details.

Add a new entry to if using a newer OpenSSL version

Specify where your libsecp256k1.dylib is located with the .

gem 'money-tree', git: 'https://github.com/bluzelle/money-tree'
gem 'bitcoin-secp256k1', git: 'git@github.com:cryptape/ruby-bitcoin-secp256k1'
gem 'bluzelle', git: 'https://github.com/bluzelle/blzrb'
bundle install
require "bluzelle"

client = Bluzelle::new_client({
  "address" =>  "...",
  "mnemonic" => "...",
  "uuid" => "bluzelle",
  "endpoint" => "http://dev.testnet.public.bluzelle.com:1317",
})

key = 'foo'
gas_info = {
  'max_fee' => 4000001,
}

client.create key, 'bar', gas_info
value = client.read key
client.update key, 'baz', gas_info
client.delete key, gas_info
cp .env.sample .env
DEBUG=false LIBRESSL_REDIRECT_STUB_ABORT=0 bundle exec ruby examples/crud.rb
bundle exec rspec --format documentation
Ruby
here
UAT.md
ffi_lib in money-tree/lib/openssl_extensions.rb
LIBSECP256K1 environment variable
Image for post
Image for post
Logo
cloud1