运行本地节点

Icon Link运行本地 Fuel 节点

除了在 Fuel 测试网上部署和测试外,您还可以运行本地 Fuel 节点。

有两种类型的 Fuel 网络可以运行:

  1. 内存中的网络(无状态持久性)
  2. 带有持久性的本地网络

Icon Link内存中的本地节点(无状态持久性)

内存中的节点不会将区块链状态持久保存在任何地方,它仅在节点处于活动和运行状态时存储在内存中。

要启动本地内存中的 Fuel 节点,请下载或复制来自此处 Icon Link的本地快照,然后运行以下命令:

fuel-core run --db-type in-memory --debug --snapshot ./your/path/to/chain_config_folder

要将合约部署到本地节点,请运行以下命令:

forc deploy <signing-key> --node-url 127.0.0.1:4000/graphql

要使用由 fuel-core 预先资助的默认签名者进行部署,请运行以下命令:

forc deploy --default-signer --node-url 127.0.0.1:4000/graphql

Icon Link链配置

要修改链的初始状态,您必须配置链配置文件夹中的 state_config.json 文件。 以下是使用版本 0.26.0fuel-core 的示例:

Here is the specific configuration Icon Link

chain_config.json

{
  "chain_name": "Upgradable Testnet",
  "consensus_parameters": {
    "V1": {
      "tx_params": {
        "V1": {
          "max_inputs": 255,
          "max_outputs": 255,
          "max_witnesses": 255,
          "max_gas_per_tx": 30000000,
          "max_size": 112640,
          "max_bytecode_subsections": 256
        }
      },
      "predicate_params": {
        "V1": {
          "max_predicate_length": 102400,
          "max_predicate_data_length": 102400,
          "max_message_data_length": 102400,
          "max_gas_per_predicate": 30000000
        }
      },
      "script_params": {
        "V1": {
          "max_script_length": 102400,
          "max_script_data_length": 102400
        }
      },
      "contract_params": {
        "V1": {
          "contract_max_size": 102400,
          "max_storage_slots": 1760
        }
      },
      "fee_params": {
        "V1": {
          "gas_price_factor": 92,
          "gas_per_byte": 63
        }
      },
      "chain_id": 0,
      "gas_costs": {
        "V1": {
          "add": 2,
          "addi": 2,
          "aloc": 1,
          "and": 2,
          "andi": 2,
          "bal": 366,
          "bhei": 2,
          "bhsh": 2,
          "burn": 33949,
          "cb": 2,
          "cfei": 2,
          "cfsi": 2,
          "div": 2,
          "divi": 2,
          "eck1": 3347,
          "ecr1": 46165,
          "ed19": 4210,
          "eq": 2,
          "exp": 2,
          "expi": 2,
          "flag": 1,
          "gm": 2,
          "gt": 2,
          "gtf": 16,
          "ji": 2,
          "jmp": 2,
          "jne": 2,
          "jnei": 2,
          "jnzi": 2,
          "jmpf": 2,
          "jmpb": 2,
          "jnzf": 2,
          "jnzb": 2,
          "jnef": 2,
          "jneb": 2,
          "lb": 2,
          "log": 754,
          "lt": 2,
          "lw": 2,
          "mint": 35718,
          "mlog": 2,
          "mod": 2,
          "modi": 2,
          "move": 2,
          "movi": 2,
          "mroo": 5,
          "mul": 2,
          "muli": 2,
          "mldv": 4,
          "noop": 1,
          "not": 2,
          "or": 2,
          "ori": 2,
          "poph": 3,
          "popl": 3,
          "pshh": 4,
          "pshl": 4,
          "ret_contract": 733,
          "rvrt_contract": 722,
          "sb": 2,
          "sll": 2,
          "slli": 2,
          "srl": 2,
          "srli": 2,
          "srw": 253,
          "sub": 2,
          "subi": 2,
          "sw": 2,
          "sww": 29053,
          "time": 79,
          "tr": 46242,
          "tro": 33251,
          "wdcm": 3,
          "wqcm": 3,
          "wdop": 3,
          "wqop": 3,
          "wdml": 3,
          "wqml": 4,
          "wddv": 5,
          "wqdv": 7,
          "wdmd": 11,
          "wqmd": 18,
          "wdam": 9,
          "wqam": 12,
          "wdmm": 11,
          "wqmm": 11,
          "xor": 2,
          "xori": 2,
          "call": {
            "LightOperation": {
              "base": 21687,
              "units_per_gas": 4
            }
          },
          "ccp": {
            "LightOperation": {
              "base": 59,
              "units_per_gas": 20
            }
          },
          "croo": {
            "LightOperation": {
              "base": 1,
              "units_per_gas": 1
            }
          },
          "csiz": {
            "LightOperation": {
              "base": 59,
              "units_per_gas": 195
            }
          },
          "k256": {
            "LightOperation": {
              "base": 282,
              "units_per_gas": 3
            }
          },
          "ldc": {
            "LightOperation": {
              "base": 45,
              "units_per_gas": 65
            }
          },
          "logd": {
            "LightOperation": {
              "base": 1134,
              "units_per_gas": 2
            }
          },
          "mcl": {
            "LightOperation": {
              "base": 3,
              "units_per_gas": 523
            }
          },
          "mcli": {
            "LightOperation": {
              "base": 3,
              "units_per_gas": 526
            }
          },
          "mcp": {
            "LightOperation": {
              "base": 3,
              "units_per_gas": 448
            }
          },
          "mcpi": {
            "LightOperation": {
              "base": 7,
              "units_per_gas": 585
            }
          },
          "meq": {
            "LightOperation": {
              "base": 11,
              "units_per_gas": 1097
            }
          },
          "retd_contract": {
            "LightOperation": {
              "base": 1086,
              "units_per_gas": 2
            }
          },
          "s256": {
            "LightOperation": {
              "base": 45,
              "units_per_gas": 3
            }
          },
          "scwq": {
            "HeavyOperation": {
              "base": 30375,
              "gas_per_unit": 28628
            }
          },
          "smo": {
            "LightOperation": {
              "base": 64196,
              "units_per_gas": 1
            }
          },
          "srwq": {
            "HeavyOperation": {
              "base": 262,
              "gas_per_unit": 249
            }
          },
          "swwq": {
            "HeavyOperation": {
              "base": 28484,
              "gas_per_unit": 26613
            }
          },
          "contract_root": {
            "LightOperation": {
              "base": 45,
              "units_per_gas": 1
            }
          },
          "state_root": {
            "HeavyOperation": {
              "base": 350,
              "gas_per_unit": 176
            }
          },
          "new_storage_per_byte": 63,
          "vm_initialization": {
            "LightOperation": {
              "base": 1645,
              "units_per_gas": 14
            }
          }
        }
      },
      "base_asset_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "block_gas_limit": 30000000,
      "privileged_address": "0000000000000000000000000000000000000000000000000000000000000000"
    }
  },
  "consensus": {
    "PoA": {
      "signing_key": "f65d6448a273b531ee942c133bb91a6f904c7d7f3104cdaf6b9f7f50d3518871"
    }
  }
}

metadata.json

{
  "chain_config": "chain_config.json",
  "table_encoding": {
    "Json": {
      "filepath": "state_config.json"
    }
  }
}

state_config.json

{
  "coins": [],
  "messages": [],
  "contracts": [
    {
      "contract_id": "7777777777777777777777777777777777777777777777777777777777777777",
      "code": "9000000994318e6e453f30e85bf6088f7161d44e57b86a6af0c955d22b353f91b2465f5e6140000a504d00205d4d30001a4860004945048076440001240400005050c0043d51345024040000",
      "tx_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "output_index": 0,
      "tx_pointer_block_height": 0,
      "tx_pointer_tx_idx": 0,
      "states": [],
      "balances": []
    }
  ],
  "last_block": null
}

state_transition_bytecode.wasm

Which is too large to display on this page, but you can find it here Icon Link

要使用自定义配置启动节点,可以使用以下命令:

fuel-core run --snapshot ./your/path/to/chain_config_folder --db-type in-memory --debug

要查找特定 fuel-core 版本的示例链配置文件夹,请参考 fuel-core Icon Link 存储库。

Icon Link为本地钱包添加资金

您可以编辑 state_config.json 中的 coins 数组,以修改给定地址拥有的初始资产。

owner 地址必须是 B256 类型地址(以 0x 开头),而不是 Bech32 类型地址(以 fuel 开头)。

amount 是一个数值。在此示例中,该值转换为 11,152,921,504 ETH

Icon Link本地节点(带有状态持久性)

此节点会在本地持久化区块链状态。 要运行具有持久性的本地节点,需要一个链配置文件。

要启动节点,请运行以下命令:

fuel-core run --ip 127.0.0.1 --port 4000 --snapshot ./your/path/to/chain_config_folder --db-path ./.fueldb --debug

Icon Link从浏览器钱包连接到本地节点

要使用浏览器钱包连接到本地节点,请将网络地址导入为:

http://127.0.0.1:4000/graphql