A list of frequently asked questions (FAQs) about Radix and related subjects.
Radix Basics
- What is Radix?
- Radix is an open-source payment network like Bitcoin but with the ability to host and run applications. Because of Radixâs integrated payments, these apps tend to be financial services, but they can also include games, web pages, and other software programs.
- What Makes Radix Special?
- Radix is the only network with the performance and scalability to serve the $400tn financial system. Having 2^256 shards means that it also scales linearly with the number of validators. Written in Rust, the Radix Engine employs finite state machines that natively understand on-ledger assets and eliminate the majority of edge-case considerations inherent in Solidity. This, in combination with Radixâs scripting language, Scrypto, makes it possible for beginners to go from zero to one in a matter of weeks, and more experienced developers to replicate Uniswap in only 155 lines of code or build dApps like chess and Twitter that are not feasible on Ethereum.
Wiki Basics
- What is a wiki?
- A wiki is an online knowledge base that can be contributed to and edited by anyone.
- What is RADIX.wiki?
- RADIX.wiki is a knowledge and community hub for the Radix ecosystem. At present, the site contains several articles, ecosystem listings and a jobs board but as Radix grows, we will build a fully decentralized, permissionless knowledge base entirely hosted on Radix and managed by the community as a DAO. Eventually, the system will grow to rival Wikipedia with the addition of dynamic oracle data feeds, prediction markets, deliberation voting, and other collective intelligence mechanisms to verify information.
- Utility: Knowledge and experience are wasted if they arenât shared, but a wiki can amplify and focus the collective wisdom, experience and intelligence of the Radix community, benefitting the whole web3 movement.
- Accessibility: Being spread across multiple locations makes information difficult and slow to find, but a comprehensive wiki can make it easier for community members to find the information they need, whether they are researching a topic or solving a problem.
- Speed: Information on a wiki can be updated within minutes of a new development, giving an immediate benefit to the community.
- Accuracy: Multiple users can contribute and edit content on a wiki, leading to a more comprehensive, balanced, accurate and up-to-date resource that also reflects the diversity of its contributors.
- Neutrality: Hype can be off-putting for newcomers, but a neutral voice helps people to view information about Radix objectively.
- Simplicity: A user-friendly interface makes it easy for anyone to contribute to Radix, no matter how small.
- Version control: The ability to roll back changes makes it easy to correct mistakes.
- Collaboration: Bringing knowledge and creators together in one place increases the collision rate of the community, leading to more projects and shared endeavors that will compound for Radix over the coming weeks and months.
- What are the benefits of a wiki?
- Being permissionless reduces the friction of contributing, which encourages people to share their knowledge and add value freely, rather than keep it to themselves.
- Having multiple editors allows for a diversity of perspectives that reflect the pluralistic reality of the world, rather than the limited perspective of a single individual.
- How can I contribute?
- âď¸Â EDIT - Share your knowledge / project.
- đŁÂ COMMENT - Questions, suggestions, etc.
- đ¸Â SPONSORSHIP - Enquiries via @RadixWiki.
- How does editing work?
- Sign up for Notion here. Itâs free and super useful for things like building a second brain.
- Click here, the link in the navbar (desktop) or main menu (mobile), then on âEditâ in the top-right corner.
- Make any changes you wish. All edits are saved automatically.
- Wait for your changes to be published. This is done manually so please be patient. Ping us on Twitter @RadixWiki if you have been waiting a while.
RADIX.wiki is easy to contribute to and has several advantages over static content:
$XRD / $eXRD
- What is $XRD?
- $XRD is the native currency of the Radix network, just like $BTC is the native currency of the Bitcoin network.
- What is $eXRD?
- $eXRD is a âwrappedâ version of $XRD on the Ethereum network, which was created to aid distribution. Both versions are swappable 1:1 on Instabridge and other exchanges.
- Is $eXRD the same as $XRD?
- $eXRD can only be used on the Ethereum network, whereas $XRD can only be used on the Radix network. Both hold the same value and can be exchanged, but the utility of $eXRD is limited by the constraints of the Ethereum network.
- What is the $XRD price?
- The current $XRD price can be found on CoinGecko.
NFTs
- What is a key advantage of Radix for NFTs?
- Radix offers a significant advantage for NFTs by natively tracking and managing token ownership at the protocol level, unlike Ethereum where NFT ownership exists only within smart contracts.
- How is NFT ownership recorded on Radix?
- On Radix, NFT ownership is directly recorded in user accounts, similar to token balances, eliminating the need for a separate contract.
- How are NFT transfers conducted on Radix?
- NFT transfers on Radix are done through simple account-to-account transactions, similar to transferring XRD, with ownership updated instantly.
- Can NFT transfers be restricted on Radix?
- Yes, NFT transfers can be restricted on Radix. For instance, making an NFT resource "non-transferrable" soulbinds it to the original recipient's account.
- What are some use cases for non-transferrable NFTs on Radix?
- Non-transferrable NFTs on Radix are useful for items like NFT tickets, certificates, or identity badges.
- How does Radix's approach to NFTs compare to smart contract approaches?
- Radix's built-in ownership tracking for NFTs removes friction and vulnerabilities that are common in smart contract approaches, making it more efficient and secure.
- Are NFT balances visible on Radix?
- Yes, all NFT balances are visible on-ledger on Radix, making it easy to prove ownership or authorize use.
- How can ownership or use of NFTs be authorized on Radix?
- Ownership or use of NFTs can be authorized via transaction attachments on Radix.
- What are some advanced access control features available for NFTs on Radix?
- Radix supports advanced access control features like transfer hooks and reclaimable NFTs, which can be implemented in Scrypto.
- What is the difference in NFT ownership tracking between Radix and Ethereum?
- Unlike Ethereum, where NFT ownership is maintained within smart contracts, Radix tracks NFT ownership directly in user accounts, offering a more integrated and secure approach.
Sharding
- What is Sharding?
- Sharding is a method of partitioning a database horizontally across separate servers to improve scalability, performance, and availability. In distributed ledgers like Radix, it allocates both data storage and transaction execution across a decentralized network of nodes.
- How does Radix implement sharding?
- Radix has developed an integrated sharding and consensus architecture specifically designed for the hyper-scalability of its decentralized network. It applies to both data availability and transaction execution, with both functions performed by nodes.
- What is Ledger Pre-Sharding in Radix?
- The current Radix Mainnet (Babylon) is sharded into a fixed number of 2^256 shards, covered by a single shard group. This will change with the forthcoming Xiâan release, which will lift the shard group cap.
- How does Radix differ from other sharding models like Shardeum or NEAR?
- Radix uses a fixed sharding model, in contrast to the dynamic adaptive state sharding model adopted by Shardeum, MultiversX, and NEAR, where shards are added incrementally as required.
- What is Deterministic Shard Indexing in Radix?
- In Radix, shards are indexed deterministically by public keys, meaning the shard index for any address can be calculated by taking the modulo of the public key over the shard space. This approach groups related data into the same shard, avoiding the need for expensive data reorganization.
- What is Asynchronous Parallel Execution in Radix?
- With a fixed, deterministic shard space, unrelated transactions on Radix are processed asynchronously in separate shards. This allows Radix to scale transaction throughput linearly by increasing the number of nodes.
- How does Radix ensure network security across its sharded network?
- Radix employs techniques like Node Identity Shard Mapping, incentives for multi-shard validation, dynamic shard support via a free market, and scaling security through staking to maintain security across its sharded network.
- What is the Cerberus Consensus in Radix?
- The Cerberus consensus protocol in Radix introduces âbraidedâ sharding to atomically compose transactions across shards. It shards transaction validation while braiding validation across shards to enforce system-wide transaction ordering and prevent double-spending.
- What are the advantages of sharding in Radix?
- Sharding enables parallel transaction processing and storage, significantly increasing throughput. It allows each node to maintain a subset of the overall data, contributing to the security and integrity of the full ledger.
- What are the challenges of sharding in distributed ledgers?
- Sharding introduces challenges like determining the optimal strategy for partitioning data, ensuring single transactional occurrences, and dealing with the spatially distributed nature of ledger shards, which affects instantaneous consistency.
- Could Radixâs fixed shard space run out of addresses?
Theoretically yes, but practically no. Every possible Bitcoin address could fit into Radixâs shardspace 79 billion billion billion times so itâs more likely that the universe will end before we run out of space. However, if the inconceivable were to happen, Radix could simply hard fork to a bigger one.
Consensus
- What is Cerberus?
- Cerberus is a family of deterministic, Byzantine Fault Tolerant (BFT) consensus protocols designed for the Radix network. It uses state provisioning for global consensus between shard groups on the correct ordering of software events.
- How does Cerberus achieve scalability?
- Scalability in Cerberus is achieved through sharding, which allows parallel transaction processing across multiple shards. This provides linear scalability as more shards are added.
- What is the role of sharding in Cerberus?
- Sharding in Cerberus partitions transaction processing and state management into groups called shards. Each shard runs a local Byzantine Fault Tolerant consensus algorithm to order transactions and maintain local state, overcoming scalability limitations of traditional fully replicated networks.
- How does Cerberus ensure security?
- Cerberus ensures security against Byzantine failures by having a BFT consensus within each shard, which can tolerate up to 1/3 of nodes per shard being faulty.
- What is the approach of Cerberus towards decentralization?
- Cerberus supports decentralization through permissionless participation of validators. It remains secure as long as no single entity controls over 1/3 of validators in any one shard.
- What is unique about Cerberusâs cross-shard communication mechanism?
- Cerberus utilizes a UTXO-based sharding and an efficient cross-shard communication mechanism that minimizes coordination for multi-shard commitment, making cross-shard ordering unnecessary.
- What are the three variants of Cerberus?
- The three variants of Cerberus are Core Cerberus (CCerberus), Optimistic Cerberus (OCerberus), and Pessimistic/Resilient Cerberus (PCerberus), each designed for different trust and operational environments.
- How does Core Cerberus work?
- Core Cerberus minimizes coordination costs by leveraging UTXO transaction properties. It ensures transaction atomicity using a three-step approach involving local input checks, cross-shard exchange, and a decision to commit or abort transactions.
- What is the difference between Optimistic and Pessimistic Cerberus?
- Optimistic Cerberus is designed for environments with rare faulty conditions and integrates conflict detection in a single multi-shard consensus step. Pessimistic Cerberus anticipates malicious behavior and adds coordination to normal case operations for enhanced resilience.
- What performance metrics have been achieved by Cerberus?
- During testing, Cerberus demonstrated high throughput, achieving over one million transactions per second in various scenarios, and exhibited superior efficiency, throughput, and latency compared to other multi-shard consensus protocols.
Execution
- What is the Radix Engine?
- The Radix Engine is a protocol-level runtime environment and application layer, similar to the Ethereum Virtual Machine (EVM). It uses finite state machines to define permitted asset states, enhancing the development of decentralized applications by moving asset logic to the protocol layer.
- How does the Radix Engine improve the development of decentralized applications (dApps)?
- By strictly defining asset states and removing the need to handle asset logic in smart contracts, the Radix Engine simplifies and improves the development process for dApps.
- What is the relationship between the Radix Engine and the Cerberus consensus protocol?
- The Radix Engine is one of the few application layers that is compatible with the Cerberus consensus protocol.
- What are some key features of the Radix Engine?
- Key features include implementing a UTXO model for scalability, sharding ledger state, grouping components and resources for efficiency, supporting transactions that specify intent, and providing atomicity and isolation in transactions.
- How does the Radix Engine handle transactions and ledger state?
- It executes transactions and maintains ledger state by sharding the ledger and processing transactions in a scalable and secure manner.
- What is unique about the Radix Engine's approach to scalability?
- The Radix Engine uses a ceramic sharding model that can scale to an unlimited number of shards, allowing it to process transactions in parallel across shards while maintaining a globally consistent ledger state.
- How does the Radix Engine ensure the security and validity of transactions?
- It resolves conflicts from concurrent transactions by aborting one of them and verifies the validity of transactions via owner signatures.
- What analogy is used to describe the Radix Engine, and why?
- The Radix Engine is likened to a game engine for DeFi, as it defines and enforces properties like asset permanence and transfer logic, similar to how a physics engine simulates physical properties in games.
- What advancements were made in Radix Engine v2?
- Radix Engine v2, released with the Alexandria developer environment, enables developers to create blueprints and components for decentralized applications.
- What are some disadvantages of the Ethereum Virtual Machine (EVM) compared to the Radix Engine?
- The EVM is complex, vulnerable to hacking, and limited in scalability and performance. It uses a stack-based virtual machine and a specialized language, Solidity, which can be challenging for developers.
Writing Smart Contracts
- What is Scrypto?
- Scrypto is a programming language used for developing applications on the Radix platform.
- What are components in Scrypto?
- Components are a core building block in Scrypto, used for encapsulating logic and holding state. They are similar to smart contracts in other blockchain platforms but have some key differences.
- How are components defined in Scrypto?
- Components are defined by creating a Rust struct inside a blueprint module.
- How do you instantiate a component in Scrypto?
- To instantiate a component from a blueprint, you call the
.instantiate()
method on the struct. - What happens after a component is instantiated in Scrypto?
- After instantiation, the component instance exists locally in the transaction. To make it accessible globally, it needs to be "globalized" using the
.globalize()
method. - How do you interact with a component in Scrypto?
- To interact with a component, you reference the component instance and call its methods.
- Can Scrypto components hold resources like tokens?
- Yes, components in Scrypto can hold resources like tokens in vaults and buckets.
- How do you put tokens into a vault in Scrypto?
- You can put tokens into a vault by using the
put
method on the vault object within a component. - How do you take tokens out of a vault in Scrypto?
- Tokens can be taken out of a vault by using the
take
method, specifying the amount to be taken. - What is the role of blueprints in Scrypto?
- Blueprints in Scrypto are used to define the structure and behavior of components, similar to classes in object-oriented programming.