maybe
This commit is contained in:
45
tron/java-tron/tron-mainnet-java-tron-pruned-rocksdb.yml
Normal file
45
tron/java-tron/tron-mainnet-java-tron-pruned-rocksdb.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
services:
|
||||||
|
tron-mainnet:
|
||||||
|
image: tronprotocol/java-tron:GreatVoyage-v4.7.7
|
||||||
|
user: root
|
||||||
|
stop_grace_period: 5m
|
||||||
|
ulimits:
|
||||||
|
nofile: 1048576
|
||||||
|
expose:
|
||||||
|
- "8545"
|
||||||
|
ports:
|
||||||
|
- "25815:25815/tcp"
|
||||||
|
- "25815:25815/udp"
|
||||||
|
volumes:
|
||||||
|
- tron-mainnet-java-tron-pruned-rocksdb:/java-tron/output-directory
|
||||||
|
- ./tron/mainnet/config:/config
|
||||||
|
command: -c /config/config.conf --log-config /config/logback.xml
|
||||||
|
networks:
|
||||||
|
- chains
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.middlewares.tron-mainnet-java-tron-pruned-rocksdb-set-path.replacepath.path=/jsonrpc"
|
||||||
|
- "traefik.http.services.tron-mainnet-java-tron-pruned-rocksdb.loadbalancer.server.port=8545"
|
||||||
|
- "traefik.http.routers.tron-mainnet-java-tron-pruned-rocksdb.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.tron-mainnet-java-tron-pruned-rocksdb.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.routers.tron-mainnet-java-tron-pruned-rocksdb.rule=Host(`$DOMAIN`) && PathPrefix(`/tron-mainnet`)"
|
||||||
|
- "traefik.http.middlewares.tron-mainnet-java-tron-pruned-rocksdb-strip-trailing-slash.stripprefixregex.regex=/$"
|
||||||
|
- "traefik.http.routers.tron-mainnet-java-tron-pruned-rocksdb.middlewares=tron-mainnet-java-tron-pruned-rocksdb-set-path, tron-mainnet-java-tron-pruned-rocksdb-strip-trailing-slash, ipwhitelist"
|
||||||
|
|
||||||
|
tron-mainnet-download:
|
||||||
|
image: alpine:latest
|
||||||
|
user: root
|
||||||
|
environment:
|
||||||
|
- SNAPSHOT_URL=https://snapshots.publicnode.com/tron-pruned-70904745.tar.lz4
|
||||||
|
volumes:
|
||||||
|
- tron-mainnet-java-tron-pruned-rocksdb:/java-tron/output-directory
|
||||||
|
- ./tron/scripts/download.java-tron.sh:/download.sh
|
||||||
|
command: sh -c "/download.sh"
|
||||||
|
restart: "no"
|
||||||
|
profiles:
|
||||||
|
- manual
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
tron-mainnet-java-tron-pruned-rocksdb:
|
||||||
742
tron/mainnet/config.conf
Normal file
742
tron/mainnet/config.conf
Normal file
@@ -0,0 +1,742 @@
|
|||||||
|
net {
|
||||||
|
type = mainnet
|
||||||
|
# type = testnet
|
||||||
|
}
|
||||||
|
|
||||||
|
storage {
|
||||||
|
# Directory for storing persistent data
|
||||||
|
db.engine = "ROCKSDB",
|
||||||
|
db.sync = false,
|
||||||
|
db.directory = "database",
|
||||||
|
index.directory = "index",
|
||||||
|
transHistory.switch = "on",
|
||||||
|
# You can custom these 14 databases' configs:
|
||||||
|
|
||||||
|
# account, account-index, asset-issue, block, block-index,
|
||||||
|
# block_KDB, peers, properties, recent-block, trans,
|
||||||
|
# utxo, votes, witness, witness_schedule.
|
||||||
|
|
||||||
|
# Otherwise, db configs will remain default and data will be stored in
|
||||||
|
# the path of "output-directory" or which is set by "-d" ("--output-directory").
|
||||||
|
# setting can impove leveldb performance .... start
|
||||||
|
# node: if this will increase process fds,you may be check your ulimit if 'too many open files' error occurs
|
||||||
|
# see https://github.com/tronprotocol/tips/blob/master/tip-343.md for detail
|
||||||
|
# if you find block sync has lower performance,you can try this settings
|
||||||
|
#default = {
|
||||||
|
# maxOpenFiles = 100
|
||||||
|
#}
|
||||||
|
#defaultM = {
|
||||||
|
# maxOpenFiles = 500
|
||||||
|
#}
|
||||||
|
#defaultL = {
|
||||||
|
# maxOpenFiles = 1000
|
||||||
|
#}
|
||||||
|
# setting can impove leveldb performance .... end
|
||||||
|
# Attention: name is a required field that must be set !!!
|
||||||
|
properties = [
|
||||||
|
// {
|
||||||
|
// name = "account",
|
||||||
|
// path = "storage_directory_test",
|
||||||
|
// createIfMissing = true,
|
||||||
|
// paranoidChecks = true,
|
||||||
|
// verifyChecksums = true,
|
||||||
|
// compressionType = 1, // compressed with snappy
|
||||||
|
// blockSize = 4096, // 4 KB = 4 * 1024 B
|
||||||
|
// writeBufferSize = 10485760, // 10 MB = 10 * 1024 * 1024 B
|
||||||
|
// cacheSize = 10485760, // 10 MB = 10 * 1024 * 1024 B
|
||||||
|
// maxOpenFiles = 100
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name = "account-index",
|
||||||
|
// path = "storage_directory_test",
|
||||||
|
// createIfMissing = true,
|
||||||
|
// paranoidChecks = true,
|
||||||
|
// verifyChecksums = true,
|
||||||
|
// compressionType = 1, // compressed with snappy
|
||||||
|
// blockSize = 4096, // 4 KB = 4 * 1024 B
|
||||||
|
// writeBufferSize = 10485760, // 10 MB = 10 * 1024 * 1024 B
|
||||||
|
// cacheSize = 10485760, // 10 MB = 10 * 1024 * 1024 B
|
||||||
|
// maxOpenFiles = 100
|
||||||
|
// },
|
||||||
|
]
|
||||||
|
|
||||||
|
needToUpdateAsset = true
|
||||||
|
|
||||||
|
//dbsettings is needed when using rocksdb as the storage implement (db.engine="ROCKSDB").
|
||||||
|
//we'd strongly recommend that do not modify it unless you know every item's meaning clearly.
|
||||||
|
dbSettings = {
|
||||||
|
levelNumber = 7
|
||||||
|
//compactThreads = 32
|
||||||
|
blocksize = 64 // n * KB
|
||||||
|
maxBytesForLevelBase = 256 // n * MB
|
||||||
|
maxBytesForLevelMultiplier = 10
|
||||||
|
level0FileNumCompactionTrigger = 4
|
||||||
|
targetFileSizeBase = 256 // n * MB
|
||||||
|
targetFileSizeMultiplier = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
//backup settings when using rocks db as the storage implement (db.engine="ROCKSDB").
|
||||||
|
//if you want to use the backup plugin, please confirm set the db.engine="ROCKSDB" above.
|
||||||
|
backup = {
|
||||||
|
enable = false // indicate whether enable the backup plugin
|
||||||
|
propPath = "prop.properties" // record which bak directory is valid
|
||||||
|
bak1path = "bak1/database" // you must set two backup directories to prevent application halt unexpected(e.g. kill -9).
|
||||||
|
bak2path = "bak2/database"
|
||||||
|
frequency = 10000 // indicate backup db once every 10000 blocks processed.
|
||||||
|
}
|
||||||
|
|
||||||
|
balance.history.lookup = false
|
||||||
|
|
||||||
|
# checkpoint.version = 2
|
||||||
|
# checkpoint.sync = true
|
||||||
|
|
||||||
|
# the estimated number of block transactions (default 1000, min 100, max 10000).
|
||||||
|
# so the total number of cached transactions is 65536 * txCache.estimatedTransactions
|
||||||
|
# txCache.estimatedTransactions = 1000
|
||||||
|
|
||||||
|
# data root setting, for check data, currently, only reward-vi is used.
|
||||||
|
|
||||||
|
# merkleRoot = {
|
||||||
|
# reward-vi = 9debcb9924055500aaae98cdee10501c5c39d4daa75800a996f4bdda73dbccd8 // main-net, Sha256Hash, hexString
|
||||||
|
# }
|
||||||
|
}
|
||||||
|
|
||||||
|
node.discovery = {
|
||||||
|
enable = true
|
||||||
|
persist = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# custom stop condition
|
||||||
|
#node.shutdown = {
|
||||||
|
# BlockTime = "54 59 08 * * ?" # if block header time in persistent db matched.
|
||||||
|
# BlockHeight = 33350800 # if block header height in persistent db matched.
|
||||||
|
# BlockCount = 12 # block sync count after node start.
|
||||||
|
#}
|
||||||
|
|
||||||
|
node.backup {
|
||||||
|
# udp listen port, each member should have the same configuration
|
||||||
|
port = 10001
|
||||||
|
|
||||||
|
# my priority, each member should use different priority
|
||||||
|
priority = 8
|
||||||
|
|
||||||
|
# time interval to send keepAlive message, each member should have the same configuration
|
||||||
|
keepAliveInterval = 3000
|
||||||
|
|
||||||
|
# peer's ip list, can't contain mine
|
||||||
|
members = [
|
||||||
|
# "ip",
|
||||||
|
# "ip"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
crypto {
|
||||||
|
engine = "eckey"
|
||||||
|
}
|
||||||
|
# prometheus metrics start
|
||||||
|
# node.metrics = {
|
||||||
|
# prometheus{
|
||||||
|
# enable=true
|
||||||
|
# port="9527"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# prometheus metrics end
|
||||||
|
|
||||||
|
node {
|
||||||
|
# trust node for solidity node
|
||||||
|
# trustNode = "ip:port"
|
||||||
|
trustNode = "127.0.0.1:50051"
|
||||||
|
|
||||||
|
# expose extension api to public or not
|
||||||
|
walletExtensionApi = true
|
||||||
|
|
||||||
|
listen.port = 25814
|
||||||
|
|
||||||
|
connection.timeout = 2
|
||||||
|
|
||||||
|
fetchBlock.timeout = 200
|
||||||
|
|
||||||
|
tcpNettyWorkThreadNum = 0
|
||||||
|
|
||||||
|
udpNettyWorkThreadNum = 1
|
||||||
|
|
||||||
|
# Number of validate sign thread, default availableProcessors / 2
|
||||||
|
# validateSignThreadNum = 16
|
||||||
|
|
||||||
|
maxConnections = 30
|
||||||
|
|
||||||
|
minConnections = 8
|
||||||
|
|
||||||
|
minActiveConnections = 3
|
||||||
|
|
||||||
|
maxConnectionsWithSameIp = 2
|
||||||
|
|
||||||
|
maxHttpConnectNumber = 50
|
||||||
|
|
||||||
|
minParticipationRate = 15
|
||||||
|
|
||||||
|
isOpenFullTcpDisconnect = false
|
||||||
|
|
||||||
|
p2p {
|
||||||
|
version = 11111 # 11111: mainnet; 20180622: testnet
|
||||||
|
}
|
||||||
|
|
||||||
|
active = [
|
||||||
|
# Active establish connection in any case
|
||||||
|
# Sample entries:
|
||||||
|
# "ip:port",
|
||||||
|
# "ip:port"
|
||||||
|
]
|
||||||
|
|
||||||
|
passive = [
|
||||||
|
# Passive accept connection in any case
|
||||||
|
# Sample entries:
|
||||||
|
# "ip:port",
|
||||||
|
# "ip:port"
|
||||||
|
]
|
||||||
|
|
||||||
|
fastForward = [
|
||||||
|
"100.26.245.209:18888",
|
||||||
|
"15.188.6.125:18888"
|
||||||
|
]
|
||||||
|
|
||||||
|
http {
|
||||||
|
fullNodeEnable = true
|
||||||
|
fullNodePort = 8090
|
||||||
|
solidityEnable = true
|
||||||
|
solidityPort = 8091
|
||||||
|
}
|
||||||
|
|
||||||
|
rpc {
|
||||||
|
port = 50051
|
||||||
|
#solidityPort = 50061
|
||||||
|
# Number of gRPC thread, default availableProcessors / 2
|
||||||
|
# thread = 16
|
||||||
|
|
||||||
|
# The maximum number of concurrent calls permitted for each incoming connection
|
||||||
|
# maxConcurrentCallsPerConnection =
|
||||||
|
|
||||||
|
# The HTTP/2 flow control window, default 1MB
|
||||||
|
# flowControlWindow =
|
||||||
|
|
||||||
|
# Connection being idle for longer than which will be gracefully terminated
|
||||||
|
maxConnectionIdleInMillis = 60000
|
||||||
|
|
||||||
|
# Connection lasting longer than which will be gracefully terminated
|
||||||
|
# maxConnectionAgeInMillis =
|
||||||
|
|
||||||
|
# The maximum message size allowed to be received on the server, default 4MB
|
||||||
|
# maxMessageSize =
|
||||||
|
|
||||||
|
# The maximum size of header list allowed to be received, default 8192
|
||||||
|
# maxHeaderListSize =
|
||||||
|
|
||||||
|
# Transactions can only be broadcast if the number of effective connections is reached.
|
||||||
|
minEffectiveConnection = 1
|
||||||
|
|
||||||
|
# The switch of the reflection service, effective for all gRPC services
|
||||||
|
# reflectionService = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# number of solidity thread in the FullNode.
|
||||||
|
# If accessing solidity rpc and http interface timeout, could increase the number of threads,
|
||||||
|
# The default value is the number of cpu cores of the machine.
|
||||||
|
#solidity.threads = 8
|
||||||
|
|
||||||
|
# Limits the maximum percentage (default 75%) of producing block interval
|
||||||
|
# to provide sufficient time to perform other operations e.g. broadcast block
|
||||||
|
# blockProducedTimeOut = 75
|
||||||
|
|
||||||
|
# Limits the maximum number (default 700) of transaction from network layer
|
||||||
|
# netMaxTrxPerSecond = 700
|
||||||
|
|
||||||
|
# Whether to enable the node detection function, default false
|
||||||
|
# nodeDetectEnable = false
|
||||||
|
|
||||||
|
# use your ipv6 address for node discovery and tcp connection, default false
|
||||||
|
# enableIpv6 = false
|
||||||
|
|
||||||
|
# if your node's highest block num is below than all your pees', try to acquire new connection. default false
|
||||||
|
# effectiveCheckEnable = false
|
||||||
|
|
||||||
|
# Dynamic loading configuration function, disabled by default
|
||||||
|
# dynamicConfig = {
|
||||||
|
# enable = false
|
||||||
|
# Configuration file change check interval, default is 600 seconds
|
||||||
|
# checkInterval = 600
|
||||||
|
# }
|
||||||
|
|
||||||
|
dns {
|
||||||
|
# dns urls to get nodes, url format tree://{pubkey}@{domain}, default empty
|
||||||
|
treeUrls = [
|
||||||
|
#"tree://AKMQMNAJJBL73LXWPXDI4I5ZWWIZ4AWO34DWQ636QOBBXNFXH3LQS@main.trondisco.net", //offical dns tree
|
||||||
|
]
|
||||||
|
|
||||||
|
# enable or disable dns publish, default false
|
||||||
|
# publish = false
|
||||||
|
|
||||||
|
# dns domain to publish nodes, required if publish is true
|
||||||
|
# dnsDomain = "nodes1.example.org"
|
||||||
|
|
||||||
|
# dns private key used to publish, required if publish is true, hex string of length 64
|
||||||
|
# dnsPrivate = "b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291"
|
||||||
|
|
||||||
|
# known dns urls to publish if publish is true, url format tree://{pubkey}@{domain}, default empty
|
||||||
|
# knownUrls = [
|
||||||
|
#"tree://APFGGTFOBVE2ZNAB3CSMNNX6RRK3ODIRLP2AA5U4YFAA6MSYZUYTQ@nodes2.example.org",
|
||||||
|
# ]
|
||||||
|
|
||||||
|
# staticNodes = [
|
||||||
|
# static nodes to published on dns
|
||||||
|
# Sample entries:
|
||||||
|
# "ip:port",
|
||||||
|
# "ip:port"
|
||||||
|
# ]
|
||||||
|
|
||||||
|
# merge several nodes into a leaf of tree, should be 1~5
|
||||||
|
# maxMergeSize = 5
|
||||||
|
|
||||||
|
# only nodes change percent is bigger then the threshold, we update data on dns
|
||||||
|
# changeThreshold = 0.1
|
||||||
|
|
||||||
|
# dns server to publish, required if publish is true, only aws or aliyun is support
|
||||||
|
# serverType = "aws"
|
||||||
|
|
||||||
|
# access key id of aws or aliyun api, required if publish is true, string
|
||||||
|
# accessKeyId = "your-key-id"
|
||||||
|
|
||||||
|
# access key secret of aws or aliyun api, required if publish is true, string
|
||||||
|
# accessKeySecret = "your-key-secret"
|
||||||
|
|
||||||
|
# if publish is true and serverType is aliyun, it's endpoint of aws dns server, string
|
||||||
|
# aliyunDnsEndpoint = "alidns.aliyuncs.com"
|
||||||
|
|
||||||
|
# if publish is true and serverType is aws, it's region of aws api, such as "eu-south-1", string
|
||||||
|
# awsRegion = "us-east-1"
|
||||||
|
|
||||||
|
# if publish is true and server-type is aws, it's host zone id of aws's domain, string
|
||||||
|
# awsHostZoneId = "your-host-zone-id"
|
||||||
|
}
|
||||||
|
|
||||||
|
# open the history query APIs(http&GRPC) when node is a lite fullNode,
|
||||||
|
# like {getBlockByNum, getBlockByID, getTransactionByID...}.
|
||||||
|
# default: false.
|
||||||
|
# note: above APIs may return null even if blocks and transactions actually are on the blockchain
|
||||||
|
# when opening on a lite fullnode. only open it if the consequences being clearly known
|
||||||
|
# openHistoryQueryWhenLiteFN = false
|
||||||
|
|
||||||
|
jsonrpc {
|
||||||
|
# Note: If you turn on jsonrpc and run it for a while and then turn it off, you will not
|
||||||
|
# be able to get the data from eth_getLogs for that period of time.
|
||||||
|
|
||||||
|
httpFullNodeEnable = true
|
||||||
|
httpFullNodePort = 8545
|
||||||
|
# httpSolidityEnable = true
|
||||||
|
# httpSolidityPort = 8555
|
||||||
|
# httpPBFTEnable = true
|
||||||
|
# httpPBFTPort = 8565
|
||||||
|
}
|
||||||
|
|
||||||
|
# Disabled api list, it will work for http, rpc and pbft, both fullnode and soliditynode,
|
||||||
|
# but not jsonrpc.
|
||||||
|
# Sample: The setting is case insensitive, GetNowBlock2 is equal to getnowblock2
|
||||||
|
#
|
||||||
|
# disabledApi = [
|
||||||
|
# "getaccount",
|
||||||
|
# "getnowblock2"
|
||||||
|
# ]
|
||||||
|
}
|
||||||
|
|
||||||
|
## rate limiter config
|
||||||
|
rate.limiter = {
|
||||||
|
# Every api could be set a specific rate limit strategy. Three strategy are supported:GlobalPreemptibleAdapter、IPQPSRateLimiterAdapte、QpsRateLimiterAdapter
|
||||||
|
# GlobalPreemptibleAdapter: permit is the number of preemptible resource, every client must apply one resourse
|
||||||
|
# before do the request and release the resource after got the reponse automaticlly. permit should be a Integer.
|
||||||
|
# QpsRateLimiterAdapter: qps is the average request count in one second supported by the server, it could be a Double or a Integer.
|
||||||
|
# IPQPSRateLimiterAdapter: similar to the QpsRateLimiterAdapter, qps could be a Double or a Integer.
|
||||||
|
# If do not set, the "default strategy" is set.The "default startegy" is based on QpsRateLimiterAdapter, the qps is set as 10000.
|
||||||
|
#
|
||||||
|
# Sample entries:
|
||||||
|
#
|
||||||
|
http = [
|
||||||
|
# {
|
||||||
|
# component = "GetNowBlockServlet",
|
||||||
|
# strategy = "GlobalPreemptibleAdapter",
|
||||||
|
# paramString = "permit=1"
|
||||||
|
# },
|
||||||
|
|
||||||
|
# {
|
||||||
|
# component = "GetAccountServlet",
|
||||||
|
# strategy = "IPQPSRateLimiterAdapter",
|
||||||
|
# paramString = "qps=1"
|
||||||
|
# },
|
||||||
|
|
||||||
|
# {
|
||||||
|
# component = "ListWitnessesServlet",
|
||||||
|
# strategy = "QpsRateLimiterAdapter",
|
||||||
|
# paramString = "qps=1"
|
||||||
|
# }
|
||||||
|
],
|
||||||
|
|
||||||
|
rpc = [
|
||||||
|
# {
|
||||||
|
# component = "protocol.Wallet/GetBlockByLatestNum2",
|
||||||
|
# strategy = "GlobalPreemptibleAdapter",
|
||||||
|
# paramString = "permit=1"
|
||||||
|
# },
|
||||||
|
|
||||||
|
# {
|
||||||
|
# component = "protocol.Wallet/GetAccount",
|
||||||
|
# strategy = "IPQPSRateLimiterAdapter",
|
||||||
|
# paramString = "qps=1"
|
||||||
|
# },
|
||||||
|
|
||||||
|
# {
|
||||||
|
# component = "protocol.Wallet/ListWitnesses",
|
||||||
|
# strategy = "QpsRateLimiterAdapter",
|
||||||
|
# paramString = "qps=1"
|
||||||
|
# },
|
||||||
|
]
|
||||||
|
|
||||||
|
# global qps, default 50000
|
||||||
|
# global.qps = 50000
|
||||||
|
# IP-based global qps, default 10000
|
||||||
|
# global.ip.qps = 10000
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
seed.node = {
|
||||||
|
# List of the seed nodes
|
||||||
|
# Seed nodes are stable full nodes
|
||||||
|
# example:
|
||||||
|
# ip.list = [
|
||||||
|
# "ip:port",
|
||||||
|
# "ip:port"
|
||||||
|
# ]
|
||||||
|
ip.list = [
|
||||||
|
"3.225.171.164:18888",
|
||||||
|
"52.53.189.99:18888",
|
||||||
|
"18.196.99.16:18888",
|
||||||
|
"34.253.187.192:18888",
|
||||||
|
"18.133.82.227:18888",
|
||||||
|
"35.180.51.163:18888",
|
||||||
|
"54.252.224.209:18888",
|
||||||
|
"18.231.27.82:18888",
|
||||||
|
"52.15.93.92:18888",
|
||||||
|
"34.220.77.106:18888",
|
||||||
|
"15.207.144.3:18888",
|
||||||
|
"13.124.62.58:18888",
|
||||||
|
"54.151.226.240:18888",
|
||||||
|
"35.174.93.198:18888",
|
||||||
|
"18.210.241.149:18888",
|
||||||
|
"54.177.115.127:18888",
|
||||||
|
"54.254.131.82:18888",
|
||||||
|
"18.167.171.167:18888",
|
||||||
|
"54.167.11.177:18888",
|
||||||
|
"35.74.7.196:18888",
|
||||||
|
"52.196.244.176:18888",
|
||||||
|
"54.248.129.19:18888",
|
||||||
|
"43.198.142.160:18888",
|
||||||
|
"3.0.214.7:18888",
|
||||||
|
"54.153.59.116:18888",
|
||||||
|
"54.153.94.160:18888",
|
||||||
|
"54.82.161.39:18888",
|
||||||
|
"54.179.207.68:18888",
|
||||||
|
"18.142.82.44:18888",
|
||||||
|
"18.163.230.203:18888",
|
||||||
|
# "[2a05:d014:1f2f:2600:1b15:921:d60b:4c60]:18888", // use this if support ipv6
|
||||||
|
# "[2600:1f18:7260:f400:8947:ebf3:78a0:282b]:18888", // use this if support ipv6
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
genesis.block = {
|
||||||
|
# Reserve balance
|
||||||
|
assets = [
|
||||||
|
{
|
||||||
|
accountName = "Zion"
|
||||||
|
accountType = "AssetIssue"
|
||||||
|
address = "TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm"
|
||||||
|
balance = "99000000000000000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
accountName = "Sun"
|
||||||
|
accountType = "AssetIssue"
|
||||||
|
address = "TXmVpin5vq5gdZsciyyjdZgKRUju4st1wM"
|
||||||
|
balance = "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
accountName = "Blackhole"
|
||||||
|
accountType = "AssetIssue"
|
||||||
|
address = "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy"
|
||||||
|
balance = "-9223372036854775808"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
witnesses = [
|
||||||
|
{
|
||||||
|
address: THKJYuUmMKKARNf7s2VT51g5uPY6KEqnat,
|
||||||
|
url = "http://GR1.com",
|
||||||
|
voteCount = 100000026
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TVDmPWGYxgi5DNeW8hXrzrhY8Y6zgxPNg4,
|
||||||
|
url = "http://GR2.com",
|
||||||
|
voteCount = 100000025
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TWKZN1JJPFydd5rMgMCV5aZTSiwmoksSZv,
|
||||||
|
url = "http://GR3.com",
|
||||||
|
voteCount = 100000024
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TDarXEG2rAD57oa7JTK785Yb2Et32UzY32,
|
||||||
|
url = "http://GR4.com",
|
||||||
|
voteCount = 100000023
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TAmFfS4Tmm8yKeoqZN8x51ASwdQBdnVizt,
|
||||||
|
url = "http://GR5.com",
|
||||||
|
voteCount = 100000022
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TK6V5Pw2UWQWpySnZyCDZaAvu1y48oRgXN,
|
||||||
|
url = "http://GR6.com",
|
||||||
|
voteCount = 100000021
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TGqFJPFiEqdZx52ZR4QcKHz4Zr3QXA24VL,
|
||||||
|
url = "http://GR7.com",
|
||||||
|
voteCount = 100000020
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TC1ZCj9Ne3j5v3TLx5ZCDLD55MU9g3XqQW,
|
||||||
|
url = "http://GR8.com",
|
||||||
|
voteCount = 100000019
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TWm3id3mrQ42guf7c4oVpYExyTYnEGy3JL,
|
||||||
|
url = "http://GR9.com",
|
||||||
|
voteCount = 100000018
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TCvwc3FV3ssq2rD82rMmjhT4PVXYTsFcKV,
|
||||||
|
url = "http://GR10.com",
|
||||||
|
voteCount = 100000017
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TFuC2Qge4GxA2U9abKxk1pw3YZvGM5XRir,
|
||||||
|
url = "http://GR11.com",
|
||||||
|
voteCount = 100000016
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TNGoca1VHC6Y5Jd2B1VFpFEhizVk92Rz85,
|
||||||
|
url = "http://GR12.com",
|
||||||
|
voteCount = 100000015
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TLCjmH6SqGK8twZ9XrBDWpBbfyvEXihhNS,
|
||||||
|
url = "http://GR13.com",
|
||||||
|
voteCount = 100000014
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TEEzguTtCihbRPfjf1CvW8Euxz1kKuvtR9,
|
||||||
|
url = "http://GR14.com",
|
||||||
|
voteCount = 100000013
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TZHvwiw9cehbMxrtTbmAexm9oPo4eFFvLS,
|
||||||
|
url = "http://GR15.com",
|
||||||
|
voteCount = 100000012
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TGK6iAKgBmHeQyp5hn3imB71EDnFPkXiPR,
|
||||||
|
url = "http://GR16.com",
|
||||||
|
voteCount = 100000011
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TLaqfGrxZ3dykAFps7M2B4gETTX1yixPgN,
|
||||||
|
url = "http://GR17.com",
|
||||||
|
voteCount = 100000010
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TX3ZceVew6yLC5hWTXnjrUFtiFfUDGKGty,
|
||||||
|
url = "http://GR18.com",
|
||||||
|
voteCount = 100000009
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TYednHaV9zXpnPchSywVpnseQxY9Pxw4do,
|
||||||
|
url = "http://GR19.com",
|
||||||
|
voteCount = 100000008
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TCf5cqLffPccEY7hcsabiFnMfdipfyryvr,
|
||||||
|
url = "http://GR20.com",
|
||||||
|
voteCount = 100000007
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TAa14iLEKPAetX49mzaxZmH6saRxcX7dT5,
|
||||||
|
url = "http://GR21.com",
|
||||||
|
voteCount = 100000006
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TBYsHxDmFaRmfCF3jZNmgeJE8sDnTNKHbz,
|
||||||
|
url = "http://GR22.com",
|
||||||
|
voteCount = 100000005
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TEVAq8dmSQyTYK7uP1ZnZpa6MBVR83GsV6,
|
||||||
|
url = "http://GR23.com",
|
||||||
|
voteCount = 100000004
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TRKJzrZxN34YyB8aBqqPDt7g4fv6sieemz,
|
||||||
|
url = "http://GR24.com",
|
||||||
|
voteCount = 100000003
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TRMP6SKeFUt5NtMLzJv8kdpYuHRnEGjGfe,
|
||||||
|
url = "http://GR25.com",
|
||||||
|
voteCount = 100000002
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TDbNE1VajxjpgM5p7FyGNDASt3UVoFbiD3,
|
||||||
|
url = "http://GR26.com",
|
||||||
|
voteCount = 100000001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address: TLTDZBcPoJ8tZ6TTEeEqEvwYFk2wgotSfD,
|
||||||
|
url = "http://GR27.com",
|
||||||
|
voteCount = 100000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
timestamp = "0" #2017-8-26 12:00:00
|
||||||
|
|
||||||
|
parentHash = "0xe58f33f9baf9305dc6f82b9f1934ea8f0ade2defb951258d50167028c780351f"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optional.The default is empty.
|
||||||
|
// It is used when the witness account has set the witnessPermission.
|
||||||
|
// When it is not empty, the localWitnessAccountAddress represents the address of the witness account,
|
||||||
|
// and the localwitness is configured with the private key of the witnessPermissionAddress in the witness account.
|
||||||
|
// When it is empty,the localwitness is configured with the private key of the witness account.
|
||||||
|
|
||||||
|
//localWitnessAccountAddress =
|
||||||
|
|
||||||
|
localwitness = [
|
||||||
|
]
|
||||||
|
|
||||||
|
#localwitnesskeystore = [
|
||||||
|
# "localwitnesskeystore.json"
|
||||||
|
#]
|
||||||
|
|
||||||
|
block = {
|
||||||
|
needSyncCheck = true
|
||||||
|
maintenanceTimeInterval = 21600000
|
||||||
|
proposalExpireTime = 259200000 // 3 day: 259200000(ms)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transaction reference block, default is "solid", configure to "head" may incur TaPos error
|
||||||
|
# trx.reference.block = "solid" // head;solid;
|
||||||
|
|
||||||
|
# This property sets the number of milliseconds after the creation of the transaction that is expired, default value is 60000.
|
||||||
|
# trx.expiration.timeInMilliseconds = 60000
|
||||||
|
|
||||||
|
vm = {
|
||||||
|
supportConstant = false
|
||||||
|
maxEnergyLimitForConstant = 100000000
|
||||||
|
minTimeRatio = 0.0
|
||||||
|
maxTimeRatio = 5.0
|
||||||
|
saveInternalTx = false
|
||||||
|
|
||||||
|
# Indicates whether the node stores featured internal transactions, such as freeze, vote and so on
|
||||||
|
# saveFeaturedInternalTx = false
|
||||||
|
|
||||||
|
# In rare cases, transactions that will be within the specified maximum execution time (default 10(ms)) are re-executed and packaged
|
||||||
|
# longRunningTime = 10
|
||||||
|
|
||||||
|
# Indicates whether the node support estimate energy API.
|
||||||
|
# estimateEnergy = false
|
||||||
|
|
||||||
|
# Indicates the max retry time for executing transaction in estimating energy.
|
||||||
|
# estimateEnergyMaxRetry = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
committee = {
|
||||||
|
allowCreationOfContracts = 0 //mainnet:0 (reset by committee),test:1
|
||||||
|
allowAdaptiveEnergy = 0 //mainnet:0 (reset by committee),test:1
|
||||||
|
}
|
||||||
|
|
||||||
|
event.subscribe = {
|
||||||
|
native = {
|
||||||
|
useNativeQueue = true // if true, use native message queue, else use event plugin.
|
||||||
|
bindport = 5555 // bind port
|
||||||
|
sendqueuelength = 1000 //max length of send queue
|
||||||
|
}
|
||||||
|
|
||||||
|
path = "" // absolute path of plugin
|
||||||
|
server = "" // target server address to receive event triggers
|
||||||
|
// dbname|username|password, if you want to create indexes for collections when the collections
|
||||||
|
// are not exist, you can add version and set it to 2, as dbname|username|password|version
|
||||||
|
// if you use version 2 and one collection not exists, it will create index automaticaly;
|
||||||
|
// if you use version 2 and one collection exists, it will not create index, you must create index manually;
|
||||||
|
dbconfig = ""
|
||||||
|
contractParse = true
|
||||||
|
topics = [
|
||||||
|
{
|
||||||
|
triggerName = "block" // block trigger, the value can't be modified
|
||||||
|
enable = false
|
||||||
|
topic = "block" // plugin topic, the value could be modified
|
||||||
|
solidified = false // if set true, just need solidified block, default is false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "transaction"
|
||||||
|
enable = false
|
||||||
|
topic = "transaction"
|
||||||
|
solidified = false
|
||||||
|
ethCompatible = false // if set true, add transactionIndex, cumulativeEnergyUsed, preCumulativeLogCount, logList, energyUnitPrice, default is false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "contractevent"
|
||||||
|
enable = false
|
||||||
|
topic = "contractevent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "contractlog"
|
||||||
|
enable = false
|
||||||
|
topic = "contractlog"
|
||||||
|
redundancy = false // if set true, contractevent will also be regarded as contractlog
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "solidity" // solidity block trigger(just include solidity block number and timestamp), the value can't be modified
|
||||||
|
enable = true // the default value is true
|
||||||
|
topic = "solidity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "solidityevent"
|
||||||
|
enable = false
|
||||||
|
topic = "solidityevent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
triggerName = "soliditylog"
|
||||||
|
enable = false
|
||||||
|
topic = "soliditylog"
|
||||||
|
redundancy = false // if set true, solidityevent will also be regarded as soliditylog
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
filter = {
|
||||||
|
fromblock = "" // the value could be "", "earliest" or a specified block number as the beginning of the queried range
|
||||||
|
toblock = "" // the value could be "", "latest" or a specified block number as end of the queried range
|
||||||
|
contractAddress = [
|
||||||
|
"" // contract address you want to subscribe, if it's set to "", you will receive contract logs/events with any contract address.
|
||||||
|
]
|
||||||
|
|
||||||
|
contractTopic = [
|
||||||
|
"" // contract topic you want to subscribe, if it's set to "", you will receive contract logs/events with any contract topic.
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
18
tron/mainnet/logback.xml
Normal file
18
tron/mainnet/logback.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<!-- Console Appender for stdout -->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Log levels -->
|
||||||
|
<logger name="org.springframework" level="WARN"/>
|
||||||
|
<logger name="org.hibernate" level="WARN"/>
|
||||||
|
|
||||||
|
<!-- Root logger -->
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
||||||
38
tron/scripts/download.java-tron.sh
Normal file
38
tron/scripts/download.java-tron.sh
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
https://snapshots.publicnode.com/tron-pruned-70904745.tar.lz4
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit on error and show commands
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Default snapshot URL
|
||||||
|
SNAPSHOT_URL=${SNAPSHOT_URL:-"https://snapshots.publicnode.com/tron-pruned-70904745.tar.lz4"}
|
||||||
|
OUTPUT_DIR=${OUTPUT_DIR:-"/java-tron/output-directory"}
|
||||||
|
|
||||||
|
# Verify required tools are available
|
||||||
|
if ! command -v wget &> /dev/null || ! command -v lz4 &> /dev/null || ! command -v tar &> /dev/null; then
|
||||||
|
echo "Installing required tools..."
|
||||||
|
apk add --no-cache wget tar lz4
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create and prepare output directory
|
||||||
|
echo "Preparing output directory: ${OUTPUT_DIR}"
|
||||||
|
mkdir -p "${OUTPUT_DIR}"
|
||||||
|
rm -rf "${OUTPUT_DIR}"/*
|
||||||
|
|
||||||
|
# Download and extract the snapshot
|
||||||
|
echo "Downloading Tron snapshot from ${SNAPSHOT_URL}"
|
||||||
|
wget -q --show-progress -c "${SNAPSHOT_URL}" -O - | \
|
||||||
|
lz4 -d | \
|
||||||
|
tar -xvf - -C "${OUTPUT_DIR}"
|
||||||
|
|
||||||
|
# Verify extraction
|
||||||
|
if [ -n "$(ls -A ${OUTPUT_DIR})" ]; then
|
||||||
|
echo "Snapshot successfully downloaded and extracted to ${OUTPUT_DIR}"
|
||||||
|
else
|
||||||
|
echo "Error: Extraction failed - output directory is empty"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user