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