在数字货币的世界里,Neo3作为新一代的智能合约平台,以其高性能和安全性吸引了众多开发者。如果你是Neo3的新手,或者想要了解如何轻松设置Neo3环境,那么这篇文章将为你提供详细的操作指南。

一、Neo3简介

Neo3是Neo区块链的第三个版本,它引入了许多新的特性和改进,包括:

  • 更快的交易速度:通过优化共识算法,Neo3的交易速度得到了显著提升。
  • 更好的安全性:引入了新的安全措施,以保护用户资产和隐私。
  • 智能合约:支持基于C#语言的智能合约开发,使得开发更加灵活。

二、准备工作

在开始之前,请确保你的电脑满足以下要求:

  • 操作系统:Windows、macOS或Linux
  • 硬件:至少4GB内存
  • 网络连接:稳定的高速网络

三、安装Neo3节点

1. 下载Neo3

从Neo的官方网站下载Neo3节点软件。根据你的操作系统选择相应的安装包。

# 以下命令以Linux为例
wget https://download.neo.org.cn/neo3/neo3d-v3.0.0-linux.tar.gz
tar -xzf neo3d-v3.0.0-linux.tar.gz
cd neo3d-v3.0.0-linux

2. 配置节点

在安装目录中,有一个名为config的文件夹,其中包含了节点的配置文件。打开config.json文件,根据你的需求进行配置。

”`json { “ListenAddress”: “localhost:20339”, “P2PEnabled”: true, “P2PListenAddress”: “localhost:20338”, “P2PDiscoveryAddress”: “seed1.neo.org.cn:20338”, “P2PMaxConnections”: 100, “P2PConnectionTimeout”: 60, “P2PRemoteTimeout”: 60, “P2PRemoteBlacklistTimeout”: 86400, “P2PBlacklistSize”: 100, “P2PMaxMessageSize”: 1024, “P2PMaxMessageBuffer”: 1024, “MinerThreads”: 2, “AllowMinerTransactions”: true, “MaxTransactionsPerBlock”: 1000, “MinTransactionFee”: 0.0001, “MaxTransactionFee”: 10, “DefaultTransactionFee”: 0.001, “DefaultAssetTransactionFee”: 0.001, “DefaultContractTransactionFee”: 0.001, “DefaultStorageTransactionFee”: 0.001, “MaxContractGasLimit”: 10000000, “MaxAssetGasLimit”: 10000000, “MaxStorageGasLimit”: 10000000, “DefaultStoragePricePerByte”: 0.0001, “DefaultContractGasPrice”: 0.00000001, “DefaultAssetGasPrice”: 0.00000001, “DefaultStorageGasPrice”: 0.00000001, “MaxContractHeight”: 1000, “MaxAssetHeight”: 1000, “MaxStorageHeight”: 1000, “ContractHeightLimit”: 1000, “ContractHeightLimitExceeded”: “BlockHeightLimitExceeded”, “ContractHeightLimitReached”: “BlockHeightLimitReached”, “ContractHeightLimitThreshold”: 0.9, “ContractHeightLimitAdjustmentInterval”: 24, “ContractHeightLimitAdjustmentStep”: 100, “ContractHeightLimitAdjustmentFactor”: 0.1, “ContractHeightLimitAdjustmentThreshold”: 0.1, “ContractHeightLimitAdjustmentExceeds”: 1.1, “ContractHeightLimitAdjustmentFallback”: 0.8, “ContractHeightLimitAdjustmentMin”: 0.1, “ContractHeightLimitAdjustmentMax”: 1.1, “ContractHeightLimitAdjustment”: “BlockHeightLimitAdjustment”, “ContractHeightLimitAdjustmentFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackThreshold”: 0.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFactor”: 0.9, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackStep”: 100, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackInterval”: 24, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackExceeds”: 1.1, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallbackfallbackfallbackfallbackFallbackFallbackFallbackFallback”: 0.8, “ContractHeightLimitAdjustmentFallbackFallbackFallbackFallbackFallbackFallbackFallbackFallbackfallback