content: # Config generated by `ckb init --chain dev`
  
  data_dir = "data"
  
  [chain]
  # Choose the kind of chains to run, possible values:
  # - { file = "specs/dev.toml" }
  # - { bundled = "specs/testnet.toml" }
  # - { bundled = "specs/mainnet.toml" }
  spec = { file = "specs/integration.toml" }
  
  [logger]
  filter = "info,ckb-rpc=debug,ckb-sync=debug,ckb-relay=debug,ckb-tx-pool=debug,ckb-network=debug"
  color = true
  log_to_file = true
  log_to_stdout = false
  
  [sentry]
  # set to blank to disable sentry error collection
  dsn = ""
  # if you are willing to help us to improve,
  # please leave a way to contact you when we have troubles to reproduce the errors.
  # org_contact = ""
  
  # [memory_tracker]
  # # Seconds between checking the process, 0 is disable, default is 0.
  # interval = 600
  
  [network]
  listen_addresses = ["/ip4/0.0.0.0/tcp/8115"]
  ### Specify the public and routable network addresses
  # public_addresses = []
  
  # Node connects to nodes listed here to discovery other peers when there's no local stored peers.
  # When chain.spec is changed, this usually should also be changed to the bootnodes in the new chain.
  bootnodes = []
  
  ### Whitelist-only mode
  # whitelist_only = false
  ### Whitelist peers connecting from the given IP addresses
  # whitelist_peers = []
  
  max_peers = 125
  max_outbound_peers = 8
  # 2 minutes
  ping_interval_secs = 120
  # 20 minutes
  ping_timeout_secs = 1200
  connect_outbound_interval_secs = 0
  # If set to true, try to register upnp
  upnp = false
  # If set to true, network service will add discovered local address to peer store, it's helpful for private net development
  discovery_local_address = true
  # If set to true, random cleanup when there are too many inbound nodes
  # Ensure that itself can continue to serve as a bootnode node
  bootnode_mode = false
  
  [rpc]
  # By default RPC only binds to localhost, thus it only allows accessing from the same machine.
  #
  # Allowing arbitrary machines to access the JSON-RPC port is dangerous and strongly discouraged.
  # Please strictly limit the access to only trusted machines.
  listen_address = "127.0.0.1:8114"
  
  # Default is 10MiB = 10 * 1024 * 1024
  max_request_body_size = 10485760
  
  # List of API modules: ["Net", "Pool", "Miner", "Chain", "Stats", "Subscription", "Experiment", "Debug"]
  modules = ["Net", "Pool", "Miner", "Chain", "Experiment", "Stats", "IntegrationTest"]
  
  # By default RPC only binds to HTTP service, you can bind it to TCP and WebSocket.
  # tcp_listen_address = "127.0.0.1:18114"
  # ws_listen_address = "127.0.0.1:28114"
  reject_ill_transactions = true
  
  # By default deprecated rpc methods are disabled.
  enable_deprecated_rpc = true
  
  # threads number for RPC service, default value is the number of CPU cores
  # threads = 4
  
  # the largest rpc batch request size, default is disabled
  # rpc_batch_limit = 2000
  
  [tx_pool]
  max_tx_pool_size = 180_000_000 # 180mb
  min_fee_rate = 0 # Here fee_rate are calculated directly using size in units of shannons/KB
  min_rbf_rate = 0 # Here rbf_rate are calculated directly using size in units of shannons/KB
  max_tx_verify_cycles = 70_000_000
  max_ancestors_count = 25
  
  [store]
  header_cache_size          = 4096
  cell_data_cache_size       = 128
  block_proposals_cache_size = 30
  block_tx_hashes_cache_size = 30
  block_uncles_cache_size    = 30
  
  # [notifier]
  # # Execute command when the new tip block changes, first arg is block hash.
  # new_block_notify_script = "your_new_block_notify_script.sh"
  # # Execute command when node received an network alert, first arg is alert message string.
  # network_alert_notify_script = "your_network_alert_notify_script.sh"
  
  # Set the lock script to protect mined CKB.
  #
  # CKB uses CS architecture for miner. Miner process (ckb miner) gets block
  # template from the Node process (ckb run) via RPC. Thus the lock script is
  # configured in ckb.toml instead of ckb-miner.toml, and the config takes effect
  # after restarting Node process.
  #
  # The `code_hash` identifies different cryptography algorithm. Read the manual
  # of the lock script provider about how to generate this config.
  #
  # CKB provides an secp256k1 implementation, it requires a hash on the
  # compressed public key. The hash algorithm is blake2b, with personal
  # "ckb-default-hash". The first 160 bits (20 bytes) are used as the only arg.
  #
  # You can use any tool you trust to generate a Bitcoin private key and public
  # key pair, which can be used in CKB as well. CKB CLI provides the function for
  # you to convert the public key into block assembler configuration parameters.
  #
  # Here is an example using ckb-cli to generate an account, this command will
  # print the block assembler args(lock_arg) to screen:
  #
  #     ckb-cli account new
  #
  # If you already have a raw secp256k1 private key, you can get the lock_arg by:
  #
  #     ckb-cli util key-info --privkey-path <privkey-path>
  #
  # The command `ckb init` also accepts options to generate the block assembler
  # directly. See `ckb init --help` for details.
  #
  #     ckb init <lock_arg>
  #
  # secp256k1_blake160_sighash_all example:
  
  # always-success block assembler
  [block_assembler]
  code_hash = "0x28e83a1277d48add8e72fadaa9248559e1b632bab2bd60b27955ebc4c03800a5"
  hash_type = "data"
  args = "0x"
  message = "0x"
  update_interval_millis = 0
  