jack 4 months ago
parent
commit
ce88170774

BIN
project/CheckBalance/checkBalance


+ 30 - 0
project/CheckBalance/go.mod

@@ -0,0 +1,30 @@
+module gethereum
+
+go 1.23.0
+
+toolchain go1.24.6
+
+require github.com/ethereum/go-ethereum v1.16.3
+
+require (
+	github.com/Microsoft/go-winio v0.6.2 // indirect
+	github.com/StackExchange/wmi v1.2.1 // indirect
+	github.com/bits-and-blooms/bitset v1.20.0 // indirect
+	github.com/consensys/gnark-crypto v0.18.0 // indirect
+	github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect
+	github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
+	github.com/deckarep/golang-set/v2 v2.6.0 // indirect
+	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
+	github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect
+	github.com/ethereum/go-verkle v0.2.2 // indirect
+	github.com/go-ole/go-ole v1.3.0 // indirect
+	github.com/gorilla/websocket v1.4.2 // indirect
+	github.com/holiman/uint256 v1.3.2 // indirect
+	github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
+	github.com/supranational/blst v0.3.14 // indirect
+	github.com/tklauser/go-sysconf v0.3.12 // indirect
+	github.com/tklauser/numcpus v0.6.1 // indirect
+	golang.org/x/crypto v0.36.0 // indirect
+	golang.org/x/sync v0.12.0 // indirect
+	golang.org/x/sys v0.31.0 // indirect
+)

+ 181 - 0
project/CheckBalance/go.sum

@@ -0,0 +1,181 @@
+github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
+github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
+github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
+github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
+github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU=
+github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
+github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
+github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw=
+github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo=
+github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
+github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
+github.com/consensys/gnark-crypto v0.18.0 h1:vIye/FqI50VeAr0B3dx+YjeIvmc3LWz4yEfbWBpTUf0=
+github.com/consensys/gnark-crypto v0.18.0/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c=
+github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
+github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI=
+github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI=
+github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg=
+github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA=
+github.com/dchest/siphash v1.2.3/go.mod h1:0NvQU092bT0ipiFN++/rXm69QG9tVxLAlQHIXMPAkHc=
+github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM=
+github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
+github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
+github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
+github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w=
+github.com/ethereum/c-kzg-4844/v2 v2.1.0/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E=
+github.com/ethereum/go-ethereum v1.16.3 h1:nDoBSrmsrPbrDIVLTkDQCy1U9KdHN+F2PzvMbDoS42Q=
+github.com/ethereum/go-ethereum v1.16.3/go.mod h1:Lrsc6bt9Gm9RyvhfFK53vboCia8kpF9nv+2Ukntnl+8=
+github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8=
+github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
+github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY=
+github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg=
+github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
+github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
+github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
+github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
+github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
+github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc=
+github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
+github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
+github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA=
+github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
+github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
+github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
+github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
+github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
+github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
+github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
+github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
+github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
+github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
+github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
+github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
+github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8=
+github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s=
+github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
+github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
+github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0=
+github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ=
+github.com/pion/transport/v2 v2.2.1 h1:7qYnCBlpgSJNYMbLCKuSY9KbQdBFoETvPNETv0y4N7c=
+github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g=
+github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM=
+github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM=
+github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
+github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
+github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
+github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
+github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
+github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
+github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
+github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo=
+github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w=
+github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ=
+github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
+github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
+golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
+golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
+golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
+golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
+golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
+golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
+golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 10 - 0
project/CheckBalance/keys.txt

@@ -0,0 +1,10 @@
+f6ba92eb503641312b88ae9cebde70b034fddc4f0ea421d6ff2b4b2a22ab35a9
+2a185eae14ca82ac934a5f952e12e0d4a64043c911c33a19afd48ef1a1d70c46
+df5d009c711475b8f9987f235b373cfdbd93c858063efa9eebd9188dbc534097
+64f548051325022a7aa9e32c5756161d227fd5fb641c3f4623558cb574775254
+aa6fc003745793d7c192b2c404e332770b501ac0b81879d7538d6659ca84b7cf
+e92637de4029ae6397c18ff62cab0460e6caee1f166a0e710d52d46556c16627
+1741e24dd3a1a5cecf39dea82ba6ba62506d7a07ebcc7998b9b66eb8423e93db
+b898cf63a5ec89105ba755ef3b7533c25ea9130ab50fb0db14779fb6efd4f9c6
+f139f86b139f92070b6e6139177e59d85532c867dda6a8833e479fd60a8d37b7
+399ec8a9a9fcbb3118f993351c7624bdffc9b93d31e6576ebe69e9b24a2ecab3

+ 141 - 0
project/CheckBalance/main.go

@@ -0,0 +1,141 @@
+package main
+
+import (
+	"bufio"
+	"context"
+	"crypto/ecdsa"
+	"fmt"
+	"log"
+	"math/big"
+	"os"
+	"strconv"
+	"strings"
+
+	"github.com/ethereum/go-ethereum/crypto"
+	"github.com/ethereum/go-ethereum/ethclient"
+)
+
+const (
+	keyFileName    = "keys.txt"
+	nodeURLTxtName = "nodeURL.txt"
+)
+
+func main() {
+	// 1. 读取 nodeURL.txt
+	nodeURLs, err := readLinesNoBlank(nodeURLTxtName)
+	if err != nil {
+		log.Fatalf("读取%s失败: %v", nodeURLTxtName, err)
+	}
+	if len(nodeURLs) == 0 {
+		log.Fatalf("%s 文件为空,请填入至少一个节点URL(每行一个)后重试。", nodeURLTxtName)
+	}
+
+	// 2. 展示节点列表,提示选择
+	fmt.Println("可用网络节点列表:")
+	for i, url := range nodeURLs {
+		fmt.Printf("  %d. %s\n", i+1, url)
+	}
+	fmt.Printf("请输入要使用的节点编号 (1-%d): ", len(nodeURLs))
+
+	var urlIndex int
+	reader := bufio.NewReader(os.Stdin)
+	for {
+		fmt.Printf("请输入要使用的节点编号 (1-%d): ", len(nodeURLs))
+		line, err := reader.ReadString('\n')
+		if err != nil {
+			fmt.Println("读取输入失败,请重试。")
+			continue
+		}
+		line = strings.TrimSpace(line)
+		// 检查line是否只包含数字
+		num, err := strconv.Atoi(line)
+		if err != nil || num < 1 || num > len(nodeURLs) {
+			fmt.Printf("输入无效,请输入 1 到 %d 之间的数字。\n", len(nodeURLs))
+			continue
+		}
+		urlIndex = num - 1
+		break
+	}
+	nodeURL := nodeURLs[urlIndex]
+	fmt.Printf("当前使用节点: %s\n", nodeURL)
+
+	// 检查keys.txt是否存在
+	if _, err := os.Stat(keyFileName); os.IsNotExist(err) {
+		file, err := os.Create(keyFileName)
+		if err != nil {
+			log.Fatalf("创建%s失败: %v", keyFileName, err)
+		}
+		defer file.Close()
+		fmt.Printf("没有%s文件,已创建,请填入你的key,每行一个,然后重新运行本程序。\n", keyFileName)
+		return
+	}
+
+	// 读取keys.txt
+	myKeyArr, err := readLinesNoBlank(keyFileName)
+	if err != nil {
+		log.Fatalf("打开%s失败: %v", keyFileName, err)
+	}
+	if len(myKeyArr) == 0 {
+		fmt.Printf("%s 为空,请至少填入一个私钥(每行一个),然后重新运行本程序。\n", keyFileName)
+		return
+	}
+
+	// 连接以太坊节点
+	client, err := ethclient.Dial(nodeURL)
+	if err != nil {
+		log.Fatalf("连接节点失败: %v", err)
+	}
+
+	// 查询每个key对应地址的余额
+	for i, key := range myKeyArr {
+		privateKey, err := crypto.HexToECDSA(key)
+		if err != nil {
+			fmt.Printf("钱包 %d: 私钥解析失败,跳过。错误:%v\n\n", i+1, err)
+			continue // 跳过无效私钥
+		}
+		publicKey := privateKey.Public()
+		publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey)
+		if !ok {
+			fmt.Printf("钱包 %d: 公钥转化失败,跳过。\n\n", i+1)
+			continue
+		}
+		address := crypto.PubkeyToAddress(*publicKeyECDSA)
+		fmt.Printf("钱包 %d , 钱包地址: %s\n", i+1, address.Hex())
+
+		balance, err := client.BalanceAt(context.Background(), address, nil)
+		if err != nil {
+			fmt.Printf("钱包 %d: 查询余额失败,跳过。错误:%v\n\n", i+1, err)
+			continue
+		}
+
+		nonce, err := client.PendingNonceAt(context.Background(), address)
+		if err != nil {
+			fmt.Printf("钱包 %d: 查询Nonce失败,跳过。错误:%v\n\n", i+1, err)
+			continue
+		}
+
+		fmt.Printf("余额(wei): %s\n", balance.String())
+		etherValue := new(big.Float).Quo(new(big.Float).SetInt(balance), big.NewFloat(1e18))
+		fmt.Printf("余额(Token): %f\n", etherValue)
+		fmt.Printf("Nonce: %d\n\n", nonce)
+	}
+}
+
+// 读取文件每行,过滤空行和首尾空白
+func readLinesNoBlank(filename string) ([]string, error) {
+	file, err := os.Open(filename)
+	if err != nil {
+		return nil, err
+	}
+	defer file.Close()
+
+	var lines []string
+	scanner := bufio.NewScanner(file)
+	for scanner.Scan() {
+		line := strings.TrimSpace(scanner.Text())
+		if line != "" {
+			lines = append(lines, line)
+		}
+	}
+	return lines, scanner.Err()
+}

+ 2 - 0
project/CheckBalance/nodeURL.txt

@@ -0,0 +1,2 @@
+https://testnet-rpc.monad.xyz
+https://testnet.dplabs-internal.com

+ 1 - 1
project/monad/AccountList.txt

@@ -1 +1 @@
-aa6fc003745793d7c192b2c404e332770b501ac0b81879d7538d6659ca84b7cf
+0x618a59dcbbc05a38e10b9872f50855c1b52dd01baced785a7134876ba404be1b

+ 0 - 0
reference/project/monad/Contract.mjs → project/monad/Contract.mjs


+ 0 - 0
reference/project/monad/SendToken.mjs → project/monad/SendToken.mjs


+ 0 - 0
reference/project/monad/SignIn.mjs → project/monad/SignIn.mjs


+ 0 - 0
reference/project/monad/Swap.mjs → project/monad/Swap.mjs


+ 0 - 1
project/monad/contract.py

@@ -1 +0,0 @@
-# -*- coding: utf-8 -*-

+ 0 - 101
project/monad/faucet.py

@@ -1,101 +0,0 @@
-# -*- coding: utf-8 -*-
-import httpx
-import asyncio
-import json
-import random
-import logging
-from typing import List
-from fake_useragent import UserAgent  # 导入 fake_useragent 模块
-
-# 配置日志
-logging.basicConfig(
-    level=logging.INFO,
-    format='%(asctime)s - %(levelname)s - %(message)s'
-)
-logger = logging.getLogger(__name__)
-
-# 初始化 fake_useragent
-ua = UserAgent()
-
-async def send_post_request(wallet: str, timeout: float = 10.0) -> None:
-    """
-    向目标网站发送 POST 请求以领取水。
-
-    Args:
-        wallet: 钱包地址
-        timeout: 请求超时时间(秒)
-    """
-    url = "https://faucet.nerzo.xyz/monad"
-
-    headers = {
-        "accept": "text/x-component",
-        "accept-encoding": "gzip, deflate, br, zstd",
-        "accept-language": "zh-CN,zh;q=0.9",
-        "content-type": "text/plain;charset=UTF-8",
-        "next-action": "405d6e23437f844564e65cdd65851724c449d7f778",
-        "next-router-state-tree": '["",{"children":["(faucet)",{"children":["monad",{"children":["__PAGE__",{},"/monad","refresh"]}]}]},null,null,true]',
-        "origin": "https://faucet.nerzo.xyz",
-        "priority": "u=1, i",
-        "referer": "https://faucet.nerzo.xyz/monad",
-        "sec-ch-ua": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
-        "sec-ch-ua-mobile": "?0",
-        "sec-ch-ua-platform": '"Windows"',
-        "sec-fetch-dest": "empty",
-        "sec-fetch-mode": "cors",
-        "sec-fetch-site": "same-origin",
-        "user-agent": ua.random,
-        "x-deployment-id": "dpl_DWgqqeB8V4ASD1aCKUqWZwcPwnVd"
-    }
-    payload = json.dumps([wallet])
-
-    async with httpx.AsyncClient(timeout=timeout) as client:
-        retry = 3
-        while retry > 0:  # 修复了 retry 的逻辑错误
-            try:
-                response = await client.post(url, headers=headers, content=payload)
-                logger.info(f"Wallet: {wallet} | Status Code: {response.status_code} | Response: {response.text}")
-                return response
-            except httpx.RequestError as e:
-                logger.error(f"Wallet: {wallet} | Request failed: {e}")
-                retry -= 1
-
-                if retry <= 0:
-                    return None
-
-
-async def main(wallet_list: List[str], min_delay: float = 5.0, max_delay: float = 8.0) -> None:
-    """
-    批量处理钱包地址,发送 POST 请求,并添加随机延时。
-
-    Args:
-        wallet_list: 钱包地址列表
-        min_delay: 最小延时(秒)
-        max_delay: 最大延时(秒)
-    """
-    for i, wallet in enumerate(wallet_list, 1):
-        logger.info(f"Processing wallet {i}/{len(wallet_list)}: {wallet}")
-        await send_post_request(wallet)
-        # 在最后一个钱包之前添加随机延时
-        if i < len(wallet_list):
-            delay = random.uniform(min_delay, max_delay)
-            logger.info(f"Waiting for {delay:.2f} seconds before next request")
-            await asyncio.sleep(delay)
-
-
-if __name__ == "__main__":
-    wallet_list = [
-        '0xe50B77Cd771243b8Ae1d6ce33b4E13ECC5Fa28a6',
-        '0x9ea2ECAD4090E32916e03b77d7C75CbF6C8E0A55',
-        '0xE8A4b0C04300154DC9B1D0e565Ba70F996614690',
-        '0x1b623c5d70c93b437d93c305bf2cfa389095f636',
-        '0x06D25c3e0E1F753ac0486a3f8aaD7259149656cB',
-        '0x15cFEE34Ca4541CAc9a1c4B6F6aB47A65877E240',
-        '0x7aBF0dA8Ac07B6dE7206e467988455E1AD0b60B5',
-        '0xF736f45d4663a8D8DfF7EFA55b1Cf6Fe38D026c8',
-        '0x83173eECf3a6d9ABB79682568e16c2eAd361620e',
-        '0xa401b85B4849Fc7610Bd180cc937859C78528F47',
-        '0x10A43E7Fe77E2D84adBeC26cF0bFc6f403841266',
-        '0x70D5EE1DfddD3726f0D71F4CD5a8Ef43aC651a75'
-    ]
-    asyncio.run(main(wallet_list))
-    print("done")

+ 0 - 73
project/monad/monadscore_query.py

@@ -1,73 +0,0 @@
-from playwright.sync_api import sync_playwright
-import time
-
-
-def get_wallet_detail(wallet_address: str, page):
-    # 定义输入框和按钮的选择器
-    input_selector = '#root > div > div > div.min-h-screen.overflow-hidden.sm\\:ml-0 > div:nth-child(3) > div > div > div.flex.flex-col.space-y-4 > input'
-    button_selector = '#root > div > div > div.min-h-screen.overflow-hidden.sm\\:ml-0 > div:nth-child(3) > div > div > div.flex.flex-col.space-y-4 > button.px-4.py-2.text-white.font-semibold.rounded-md.bg-purple-600.cursor-pointer.hover\\:bg-purple-700'
-
-    try:
-        # 等待输入框出现并确保其可交互
-        page.wait_for_selector(input_selector, state='visible', timeout=10000)
-        # 清除输入框内容(如果有默认值)
-        page.fill(input_selector, '')
-        # 填入钱包地址
-        page.fill(input_selector, wallet_address)
-
-        # 等待按钮出现并确保其可点击
-        page.wait_for_selector(button_selector, state='visible', timeout=10000)
-        # 点击按钮
-        page.click(button_selector)
-    except Exception as e:
-        print(f"查询钱包 {wallet_address} 时出错: {str(e)}")
-
-
-def run():
-    with sync_playwright() as p:
-        # 启动一个 Chromium 浏览器,headless=False 确保可见
-        browser = p.chromium.launch(
-            headless=False,
-            args=["--start-maximized"]
-        )
-
-        wallet_list = [
-            '0xe50B77Cd771243b8Ae1d6ce33b4E13ECC5Fa28a6',
-            '0x9ea2ECAD4090E32916e03b77d7C75CbF6C8E0A55',
-            '0xE8A4b0C04300154DC9B1D0e565Ba70F996614690',
-            '0x1b623c5d70c93b437d93c305bf2cfa389095f636',
-            '0x06D25c3e0E1F753ac0486a3f8aaD7259149656cB',
-            '0x15cFEE34Ca4541CAc9a1c4B6F6aB47A65877E240',
-            '0x7aBF0dA8Ac07B6dE7206e467988455E1AD0b60B5',
-            '0xF736f45d4663a8D8DfF7EFA55b1Cf6Fe38D026c8',
-            '0x83173eECf3a6d9ABB79682568e16c2eAd361620e',
-            '0xa401b85B4849Fc7610Bd180cc937859C78528F47',
-            '0x10A43E7Fe77E2D84adBeC26cF0bFc6f403841266',
-            '0x70D5EE1DfddD3726f0D71F4CD5a8ef43aC651a75'
-        ]
-
-        context = browser.new_context(no_viewport=True)
-
-        for i, wallet in enumerate(wallet_list):
-            page = context.new_page()
-            page.goto("https://repute.monadscore.xyz/")
-            print(f"已打开第 {i + 1} 个标签页")
-            time.sleep(1)
-            page.add_style_tag(content="body { transform: scale(0.8);}")
-            print(f'正在查询钱包 {i} : {wallet}')
-            get_wallet_detail(wallet, page)
-
-        time.sleep(3600)
-
-        context.close()
-        browser.close()
-
-
-def main():
-    while True:
-        run()
-        time.sleep(5)
-
-
-if __name__ == "__main__":
-    main()

+ 0 - 0
reference/project/monad/nonce.mjs → project/monad/nonce.mjs


+ 0 - 109
project/monad/query_balance_and_nonce.py

@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-from web3 import Web3
-import time
-
-# 设置 RPC URL
-rpc_url = "https://testnet-rpc.monad.xyz"
-
-# 初始化 web3.py 提供器
-w3 = Web3(Web3.HTTPProvider(rpc_url))
-
-
-# 检查是否连接成功
-def check_connection():
-    try:
-        network_id = w3.eth.chain_id
-        print(f"已成功连接到链节点,网络ID为: {network_id}。正在查询钱包余额...")
-        return True
-    except Exception as e:
-        print("无法连接到链节点,请检查 URL 是否正确")
-        return False
-
-
-# 钱包地址列表
-wallet_addresses1 = [
-    '0xe50B77Cd771243b8Ae1d6ce33b4E13ECC5Fa28a6',
-    '0x9ea2ECAD4090E32916e03b77d7C75CbF6C8E0A55',
-    '0xE8A4b0C04300154DC9B1D0e565Ba70F996614690',
-    '0x1b623c5d70c93b437d93c305bf2cfa389095f636',
-    '0x06D25c3e0E1F753ac0486a3f8aaD7259149656cB',
-    '0x15cFEE34Ca4541CAc9a1c4B6F6aB47A65877E240',
-    '0x7aBF0dA8Ac07B6dE7206e467988455E1AD0b60B5',
-    '0xF736f45d4663a8D8DfF7EFA55b1Cf6Fe38D026c8',
-    '0x83173eECf3a6d9ABB79682568e16c2eAd361620e',
-    '0xa401b85B4849Fc7610Bd180cc937859C78528F47',
-]
-
-wallet_addresses2 = [
-    '0x10A43E7Fe77E2D84adBeC26cF0bFc6f403841266',
-    '0x70D5EE1DfddD3726f0D71F4CD5a8Ef43aC651a75'
-]
-
-
-def query_balances(wallet_num, wallet_address):
-    retry_count = 0
-    max_retries = 3
-    delay = 2  # 延迟时间,单位为秒
-
-    result_message = ""
-    result_balance = -1
-
-    # 转换为校验和地址
-    try:
-        checksum_address = w3.to_checksum_address(wallet_address)
-    except Exception as e:
-        print(f"钱包 {wallet_address} 地址格式无效: {str(e)}")
-        return wallet_num
-
-    while retry_count < max_retries:
-        try:
-            # 查询余额
-            balance = w3.eth.get_balance(checksum_address)
-            # 将余额从 Wei 转换为 Ether
-            balance_eth = w3.from_wei(balance, 'ether')
-            result_message = f"Wallet {wallet_num}: {checksum_address}\nbalance: {balance_eth} Token"
-            result_balance = balance_eth
-            print(result_message)
-            wallet_num += 1
-            break
-        except Exception as e:
-            print(f"查询钱包 {checksum_address} {wallet_num} 余额时发生错误: {str(e)}")
-            retry_count += 1
-            print(f"正在重试...(第 {retry_count} 次)")
-            time.sleep(delay)
-
-    if retry_count == max_retries:
-        result_message = f"钱包 {checksum_address} 查询余额失败,已达到最大重试次数。"
-        print(result_message)
-
-    return wallet_num
-
-
-def query_nonce(wallet_num, wallet_address):
-    try:
-        checksum_address = w3.to_checksum_address(wallet_address)
-    except Exception as e:
-        print(f"钱包 {wallet_address} 地址格式无效: {str(e)}")
-        return
-
-    try:
-        nonce_latest = w3.eth.get_transaction_count(checksum_address, "latest")
-        nonce_pending = w3.eth.get_transaction_count(checksum_address, "pending")
-        print(f'pending nonce: {nonce_pending} ; latest nonce: {nonce_latest}')
-    except Exception as e:
-        print(f"查询钱包 {checksum_address} {wallet_num} nonce时发生错误: {str(e)}")
-
-
-def main():
-    if not check_connection():
-        return
-
-    wallet_num = 1
-    for wallet_address in wallet_addresses2:
-        wallet_num = query_balances(wallet_num, wallet_address)
-        query_nonce(wallet_num - 1, wallet_address)
-        print('------------')
-
-
-if __name__ == "__main__":
-    main()

+ 0 - 143
project/monad/signin-lumiterra.py

@@ -1,143 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Monad 测试网 talentum 批量签到脚本
-网址: https://monad.talentum.id
-合约: 0x9E1DDC2a90bc0bec6325dF48Cbb3125Ce2879F7C  方法: checkIn() → 0x9e4cda43
-"""
-
-import asyncio
-import os
-import random
-from typing import List
-import traceback
-
-from web3 import Web3
-from web3.types import TxReceipt
-from eth_account import Account
-
-# ------------------------ 用户配置区 ------------------------
-RPC_URL = "https://testnet-rpc.monad.xyz"
-CHECK_IN_CONTRACT = "0x9E1DDC2a90bc0bec6325dF48Cbb3125Ce2879F7C"
-KEY_FILE = "AccountList.txt"
-MIN_KEEP_BALANCE = 0.02
-MIN_DELAY = 15
-MAX_DELAY = 30
-
-CHECK_IN_ABI = [{
-    "inputs": [],
-    "name": "checkIn",
-    "outputs": [],
-    "stateMutability": "nonpayable",
-    "type": "function"
-}]
-# -----------------------------------------------------------
-
-w3 = Web3(Web3.HTTPProvider(RPC_URL))
-if not w3.is_connected():
-    raise RuntimeError("无法连接 RPC")
-
-def load_private_keys(path: str) -> List[str]:
-    if not os.path.isfile(path):
-        raise FileNotFoundError(f"找不到私钥文件: {path}")
-    with open(path, "r", encoding="utf-8") as f:
-        return [line.strip() for line in f if line.strip()]
-
-def random_gas_limit(base: int = 100_000) -> int:
-    limit = base + random.randint(-5_000, 10_000)
-    return max(21_000, limit)  # 保证不会小于最低gas
-
-async def wait_tx(tx_hash: str, tx_params: dict):
-    print(f"⏳ 等待交易确认: {tx_hash}")
-    try:
-        receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=120)
-        if receipt.status == 1:
-            print("✅ 成功")
-        else:
-            print("❌ 失败(链上执行返回 status=0),尝试获取失败原因...")
-            # 用 eth_call 复现错误,获取revert reason
-            try:
-                w3.eth.call(tx_params, block_identifier="pending")
-                print("但 eth_call 没报错,说明没有 revert reason(或已被修复)")
-            except Exception as call_err:
-                # eth_call 抛出的异常中通常包含 revert reason
-                err_msg = str(call_err)
-                print(f"失败原因(revert reason): {err_msg}")
-            print("-" * 40)
-        return receipt
-    except Exception as e:
-        print(f"❌ 等待交易时出错: {e}")
-        import traceback
-        traceback.print_exc()
-        return None
-
-async def send_contract_call(private_key: str,
-                             contract_addr: str,
-                             contract_abi: list,
-                             desc: str):
-    acct = Account.from_key(private_key)
-    addr = acct.address
-    balance = w3.eth.get_balance(addr)
-    if w3.from_wei(balance, "ether") < MIN_KEEP_BALANCE:
-        print(f"⚠️  {addr} 余额不足({w3.from_wei(balance, 'ether')} ETH),跳过")
-        return
-
-    nonce = w3.eth.get_transaction_count(addr)
-    contract = w3.eth.contract(address=Web3.to_checksum_address(contract_addr), abi=contract_abi)
-    try:
-        data = contract.encodeABI(fn_name='checkIn')
-        tx = {
-            "to": Web3.to_checksum_address(contract_addr),
-            "value": 0,
-            "data": data,
-            "gas": random_gas_limit(),
-            "gasPrice": w3.eth.gas_price,
-            "nonce": nonce,
-            "chainId": w3.eth.chain_id,
-        }
-        signed = Account.sign_transaction(tx, private_key)
-        try:
-            tx_hash = w3.eth.send_raw_transaction(signed.rawTransaction).hex()
-            print(f"{desc} {addr} 提交签到交易: {tx_hash}")
-            # 传入 tx_params 方便 wait_tx 用 eth_call 复现
-            await wait_tx(tx_hash, {
-                "from": addr,
-                "to": tx["to"],
-                "data": tx["data"],
-                "value": tx["value"],
-                "gas": tx["gas"]
-            })
-        except Exception as send_e:
-            print(f"❌ {addr} 广播交易时遇到异常:{send_e}")
-            import traceback
-            traceback.print_exc()
-    except Exception as e:
-        print(f"❌ {addr} 构造或签名交易时出错: {e}")
-        import traceback
-        traceback.print_exc()
-
-async def process_account(private_key: str):
-    acct = Account.from_key(private_key)
-    print(f"\n========== 开始处理 {acct.address} ==========")
-    await send_contract_call(
-        private_key,
-        CHECK_IN_CONTRACT,
-        CHECK_IN_ABI,
-        "SignIn"
-    )
-
-async def main():
-    keys = load_private_keys(KEY_FILE)
-    if not keys:
-        print("私钥文件为空")
-        return
-
-    print(f"共读取到 {len(keys)} 个钱包")
-    for idx, pk in enumerate(keys):
-        await process_account(pk)
-        if idx != len(keys) - 1:
-            wait_sec = random.uniform(MIN_DELAY, MAX_DELAY)
-            print(f"⏳ 随机等待 {wait_sec:.2f} 秒,防批量风控")
-            await asyncio.sleep(wait_sec)
-
-if __name__ == "__main__":
-    asyncio.run(main())

+ 0 - 120
project/monad/signin-of_apr_io_daily.py

@@ -1,120 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Monad 测试网批量签到脚本(双合约版本)
-网址: of.apr.io
-1. signIn()  → 0x9E1DDC2a90bc0bec6325dF48Cbb3125Ce2879F7C  方法 0x9e4cda43
-2. checkIn() → 0x703e753E9a2aCa1194DED65833EAec17dcFeAc1b  方法 0x183ff085
-"""
-
-import asyncio
-import os
-import random
-from typing import List
-
-from web3 import Web3
-from web3.types import TxReceipt
-from eth_account import Account
-
-# ------------------------ 用户配置区 ------------------------
-RPC_URL = "https://testnet-rpc.monad.xyz"
-
-SIGN_IN_CONTRACT  = "0x9E1DDC2a90bc0bec6325dF48Cbb3125Ce2879F7C"
-CHECK_IN_CONTRACT = "0x703e753E9a2aCa1194DED65833EAec17dcFeAc1b"
-
-KEY_FILE = "AccountList.txt"
-MIN_KEEP_BALANCE = 0.02
-MIN_DELAY = 15
-MAX_DELAY = 30
-
-# -----------------------------------------------------------
-
-w3 = Web3(Web3.HTTPProvider(RPC_URL))
-if not w3.is_connected():
-    raise RuntimeError("无法连接 RPC")
-
-SIGN_IN_SELECTOR  = "0x9e4cda43"
-CHECK_IN_SELECTOR = "0x183ff085"
-
-def load_private_keys(path: str) -> List[str]:
-    if not os.path.isfile(path):
-        raise FileNotFoundError(f"找不到私钥文件: {path}")
-    with open(path, "r", encoding="utf-8") as f:
-        return [line.strip() for line in f if line.strip()]
-
-def random_gas_limit(base: int = 100_000) -> int:
-    return base + random.randint(-5_000, 10_000)
-
-async def wait_tx(tx_hash: str) -> TxReceipt:
-    print(f"⏳ 等待交易确认: {tx_hash}")
-    receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=120)
-    if receipt.status == 1:
-        print("✅ 成功")
-    else:
-        print("❌ 失败")
-    return receipt
-
-async def send_contract_call(private_key: str,
-                             contract_addr: str,
-                             selector: str,
-                             desc: str):
-    acct = Account.from_key(private_key)
-    addr = acct.address
-    balance = w3.eth.get_balance(addr)
-    if w3.from_wei(balance, "ether") < MIN_KEEP_BALANCE:
-        print(f"⚠️  {addr} 余额不足,跳过")
-        return
-
-    nonce = w3.eth.get_transaction_count(addr)
-    tx = {
-        "to": Web3.to_checksum_address(contract_addr),
-        "value": 0,
-        "data": selector,
-        "gas": random_gas_limit(),
-        "gasPrice": w3.eth.gas_price,
-        "nonce": nonce,
-        "chainId": w3.eth.chain_id,
-    }
-
-    signed = Account.sign_transaction(tx, private_key)
-    # 注意新版为 raw_transaction,不是 rawTransaction
-    tx_hash = w3.eth.send_raw_transaction(signed.raw_transaction).hex()
-    print(f"{desc} tx_hash: {tx_hash}")
-    await wait_tx(tx_hash)
-
-async def process_account(private_key: str):
-    acct = Account.from_key(private_key)
-    print(f"\n========== 开始处理 {acct.address} ==========")
-
-    try:
-        # 1. signIn
-        # await send_contract_call(
-        #     private_key,
-        #     SIGN_IN_CONTRACT,
-        #     SIGN_IN_SELECTOR,
-        #     "signIn"
-        # )
-        # await asyncio.sleep(random.uniform(MIN_DELAY, MAX_DELAY))
-
-        # 2. checkIn
-        await send_contract_call(
-            private_key,
-            CHECK_IN_CONTRACT,
-            CHECK_IN_SELECTOR,
-            "checkIn"
-        )
-    except Exception as e:
-        print(f"执行出错: {e}")
-
-async def main():
-    keys = load_private_keys(KEY_FILE)
-    if not keys:
-        print("私钥文件为空")
-        return
-
-    print(f"共读取到 {len(keys)} 个钱包")
-    for pk in keys:
-        await process_account(pk)
-        await asyncio.sleep(random.uniform(MIN_DELAY, MAX_DELAY))
-
-if __name__ == "__main__":
-    asyncio.run(main())

+ 0 - 108
project/monad/signin-talentum.py

@@ -1,108 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Monad 测试网 talentum 批量签到脚本
-网址: monad.talentum.id
-2. checkIn() → 0x703e753E9a2aCa1194DED65833EAec17dcFeAc1b  方法 0x183ff085
-"""
-
-import asyncio
-import os
-import random
-from typing import List
-
-from web3 import Web3
-from web3.types import TxReceipt
-from eth_account import Account
-
-# ------------------------ 用户配置区 ------------------------
-RPC_URL = "https://testnet-rpc.monad.xyz"
-
-CHECK_IN_CONTRACT = "0xcBE623D259261FFa0CFAff44484bFF46c1b7D6c2"
-
-KEY_FILE = "AccountList.txt"
-MIN_KEEP_BALANCE = 0.02
-MIN_DELAY = 15
-MAX_DELAY = 30
-
-# -----------------------------------------------------------
-
-w3 = Web3(Web3.HTTPProvider(RPC_URL))
-if not w3.is_connected():
-    raise RuntimeError("无法连接 RPC")
-
-CHECK_IN_SELECTOR = "0x7ab71841"
-
-def load_private_keys(path: str) -> List[str]:
-    if not os.path.isfile(path):
-        raise FileNotFoundError(f"找不到私钥文件: {path}")
-    with open(path, "r", encoding="utf-8") as f:
-        return [line.strip() for line in f if line.strip()]
-
-def random_gas_limit(base: int = 100_000) -> int:
-    return base + random.randint(-5_000, 10_000)
-
-async def wait_tx(tx_hash: str) -> TxReceipt:
-    print(f"⏳ 等待交易确认: {tx_hash}")
-    receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=120)
-    if receipt.status == 1:
-        print("✅ 成功")
-    else:
-        print("❌ 失败")
-    return receipt
-
-async def send_contract_call(private_key: str,
-                             contract_addr: str,
-                             selector: str,
-                             desc: str):
-    acct = Account.from_key(private_key)
-    addr = acct.address
-    balance = w3.eth.get_balance(addr)
-    if w3.from_wei(balance, "ether") < MIN_KEEP_BALANCE:
-        print(f"⚠️  {addr} 余额不足,跳过")
-        return
-
-    nonce = w3.eth.get_transaction_count(addr)
-    tx = {
-        "to": Web3.to_checksum_address(contract_addr),
-        "value": 0,
-        "data": selector,
-        "gas": random_gas_limit(),
-        "gasPrice": w3.eth.gas_price,
-        "nonce": nonce,
-        "chainId": w3.eth.chain_id,
-    }
-
-    signed = Account.sign_transaction(tx, private_key)
-    # 注意新版为 raw_transaction,不是 rawTransaction
-    tx_hash = w3.eth.send_raw_transaction(signed.raw_transaction).hex()
-    print(f"{desc} tx_hash: {tx_hash}")
-    await wait_tx(tx_hash)
-
-async def process_account(private_key: str):
-    acct = Account.from_key(private_key)
-    print(f"\n========== 开始处理 {acct.address} ==========")
-
-    try:
-        await send_contract_call(
-            private_key,
-            CHECK_IN_CONTRACT,
-            CHECK_IN_SELECTOR,
-            "0x7ab71841"
-        )
-    except Exception as e:
-        print(f"执行出错: {e}")
-
-async def main():
-    keys = load_private_keys(KEY_FILE)
-    if not keys:
-        print("私钥文件为空")
-        return
-
-    print(f"共读取到 {len(keys)} 个钱包")
-    for pk in keys:
-        await process_account(pk)
-        if pk != keys[-1]:
-            await asyncio.sleep(random.uniform(MIN_DELAY, MAX_DELAY))
-
-if __name__ == "__main__":
-    asyncio.run(main())

+ 0 - 158
project/monad/swap.py

@@ -1,158 +0,0 @@
-# -*- coding: utf-8 -*-
-from web3 import Web3
-import random
-import time
-import os
-
-# Monad 测试网 RPC URL
-provider_url = "https://testnet-rpc.monad.xyz"
-w3 = Web3(Web3.HTTPProvider(provider_url))
-
-# 合约地址、合约方法哈希值及描述
-contract_data = [
-    {
-        "address": "0x2c9c959516e9aaedb2c748224a41249202ca8be7",
-        "data_hash": "0xd5575982",
-        "description": "Magmastaking"
-    },
-    {
-        "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
-        "data_hash": "0xd5575982",
-        "description": "ApeBond"
-    },
-    {
-        "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
-        "data_hash": "0xd0e30db0",
-        "description": "OctoSwap - WMON"
-    }
-]
-
-# 读取私钥文件
-file_path = os.path.join(os.path.dirname(__file__), 'AccountList.txt')
-
-
-def get_random_amount():
-    # 生成随机交易金额 例如 0.00000000****(最后4位随机数)
-    # 小数位数也是随机, 14 - 18 位
-
-    random_tail = str(random.randint(1000, 9999))
-    random_bit = random.randint(14, 18)
-    random_balance = f"0.{random_tail.zfill(random_bit)}"
-    return Web3.to_wei(random_balance, "ether")
-
-
-def get_random_contract_data():
-    # 随机获取合约地址、合约方法哈希值及描述
-    if not contract_data:
-        print("The contract data array is empty, the contract cannot be selected, and the program exits.")
-        exit(1)
-    return random.choice(contract_data)
-
-
-def check_wallet_balance(balance, minimum_balance):
-    # 如果钱包余额小于等于最小余额
-    if balance <= Web3.to_wei(minimum_balance, "ether"):
-        print("The wallet balance is invalid.")
-        exit(1)
-
-
-async def execute_contract(account, minimum_balance):
-    try:
-        # 随机选择一个合约地址、合约方法哈希值及描述
-        contract_info = get_random_contract_data()
-        address = contract_info["address"]
-        data_hash = contract_info["data_hash"]
-        description = contract_info["description"]
-        print(f"Selected contract: {description}")
-        print(f"Selected contract address: {address}")
-        print(f"Selected contract dataHash: {data_hash}")
-
-        # 检查原生代币余额
-        balance = w3.eth.get_balance(account.address)
-        before_balance = Web3.from_wei(balance, "ether")
-        print(f"Native balance: {before_balance}")
-
-        # 检查钱包余额,不能小于 minimum_balance
-        check_wallet_balance(balance, minimum_balance)
-
-        amount_to_stake = get_random_amount()
-        print(f"Amount to contract: {Web3.from_wei(amount_to_stake, 'ether')}")
-
-        if balance < amount_to_stake:
-            raise Exception("Insufficient balance for contract execution.")
-
-        # 构建交易
-        nonce = w3.eth.get_transaction_count(account.address)
-        now_gas = Web3.from_wei(w3.eth.gas_price, 'ether')
-        print(f"Now Gas Fee is: {now_gas}")
-        tx = {
-            "to": Web3.to_checksum_address(address),
-            "value": amount_to_stake,
-            "data": data_hash,
-            "gas": 100000,
-            "gasPrice": w3.eth.gas_price,
-            "nonce": nonce,
-            "chainId": w3.eth.chain_id
-        }
-
-        # 签名并发送交易
-        signed_tx = w3.eth.account.sign_transaction(tx, account.key)
-        tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
-        print(f"Contract Execution hash: {tx_hash.hex()}")
-
-        # 等待交易确认
-        receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
-        execute_status = receipt["status"]
-        if execute_status == 1:
-            print("Contract Execution status: seccessful")
-        elif execute_status == 0:
-            print("Contract Execution status: failed")
-        else:
-            print("Contract Execution status: unknown")
-
-        # 检查交易后的余额
-        balance_staking = w3.eth.get_balance(account.address)
-        after_balance = Web3.from_wei(balance_staking, "ether")
-        print(f"Native balance after transaction: {after_balance}")
-        print(f"The cost of this transaction: {float(before_balance) - float(after_balance)}")
-
-    except Exception as e:
-        print(f"Error executing contract: {e}")
-
-
-async def run_multiple_staking(private_keys):
-    last_times = 9999
-    min_delay = 10
-    max_delay = 20
-    minimum_balance = 0.2
-
-    for private_key in private_keys:
-        account = w3.eth.account.from_key(private_key.strip())
-        print(f"Processing wallet with address: {account.address}")
-
-        for i in range(last_times):
-            if last_times > 1:
-                print(f"Starting Contract attempt {i + 1}")
-            await execute_contract(account, minimum_balance)
-            print(f"Completed Contract attempt {i + 1}")
-            if i < last_times - 1:
-                delay = random.uniform(min_delay, max_delay)
-                print(f"Waiting for {delay} seconds...")
-                print('------------------------------------------------------------')
-                time.sleep(random.uniform(min_delay, max_delay))
-
-
-async def main():
-    try:
-        with open(file_path, 'r') as file:
-            private_keys = [line.strip() for line in file if line.strip()]
-        await run_multiple_staking(private_keys)
-    except Exception as err:
-        print(f'读取文件时发生错误: {err}')
-        exit(1)
-
-
-if __name__ == "__main__":
-    import asyncio
-
-    asyncio.run(main())

+ 0 - 140
project/monad/transaction.py

@@ -1,140 +0,0 @@
-# -*- coding: utf-8 -*-
-from web3 import Web3
-import random
-import time
-import os
-
-# Monad 测试网 RPC URL
-provider_url = "https://testnet-rpc.monad.xyz"
-w3 = Web3(Web3.HTTPProvider(provider_url))
-
-# 合约地址、合约方法哈希值及描述
-contract_data = [
-    {
-        "address": "0x2c9c959516e9aaedb2c748224a41249202ca8be7",
-        "data_hash": "0xd5575982",
-        "description": "Magmastaking"
-    },
-    {
-        "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
-        "data_hash": "0xd5575982",
-        "description": "ApeBond"
-    },
-    {
-        "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
-        "data_hash": "0xd0e30db0",
-        "description": "OctoSwap - WMON"
-    }
-]
-
-# 读取私钥文件
-file_path = os.path.join(os.path.dirname(__file__), 'AccountList.txt')
-
-def get_random_amount():
-    # 生成随机交易金额 0.00000000****(最后4位随机数)
-    random_tail = random.randint(1000, 9999)
-    return Web3.to_wei(f"0.00000000{random_tail}", "ether")
-
-def get_random_contract_data():
-    # 随机获取合约地址、合约方法哈希值及描述
-    if not contract_data:
-        print("The contract data array is empty, the contract cannot be selected, and the program exits.")
-        exit(1)
-    return random.choice(contract_data)
-
-
-def check_wallet_balance(balance, minimum_balance):
-    # 如果钱包余额小于等于最小余额
-    if balance <= Web3.to_wei(minimum_balance, "ether"):
-        print("The wallet balance is invalid.")
-        exit(1)
-
-async def execute_contract(account, minimum_balance):
-    try:
-        # 随机选择一个合约地址、合约方法哈希值及描述
-        contract_info = get_random_contract_data()
-        address = contract_info["address"]
-        data_hash = contract_info["data_hash"]
-        description = contract_info["description"]
-        print(f"Selected contract: {description}")
-        print(f"Selected contract address: {address}")
-        print(f"Selected contract dataHash: {data_hash}")
-
-        # 检查原生代币余额
-        balance = w3.eth.get_balance(account.address)
-        before_balance = Web3.from_wei(balance, "ether")
-        print(f"Native balance: {before_balance}")
-
-        # 检查钱包余额,不能小于 0.2
-        check_wallet_balance(balance, minimum_balance)
-
-        # 质押金额
-        amount_to_stake = get_random_amount()
-        print(f"Amount to contract: {Web3.from_wei(amount_to_stake, 'ether')}")
-
-        if balance < amount_to_stake:
-            raise Exception("Insufficient balance for contract execution.")
-
-        # 构建交易
-        nonce = w3.eth.get_transaction_count(account.address)
-        tx = {
-            "to": Web3.to_checksum_address(address),
-            "value": amount_to_stake,
-            "data": data_hash,
-            "gas": 100000,
-            "gasPrice": Web3.to_wei(50, "gwei"),
-            "nonce": nonce,
-            "chainId": w3.eth.chain_id
-        }
-
-        # 签名并发送交易
-        signed_tx = w3.eth.account.sign_transaction(tx, account.key)
-        tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
-        print(f"Contract Execution hash: {tx_hash.hex()}")
-
-        # 等待交易确认
-        receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
-        print("Contract Execution status: ok")
-
-        # 检查交易后的余额
-        balance_staking = w3.eth.get_balance(account.address)
-        after_balance = Web3.from_wei(balance_staking, "ether")
-        print(f"Native balance after transaction: {after_balance}")
-        print(f"The cost of this transaction: {float(before_balance) - float(after_balance)}")
-
-    except Exception as e:
-        print(f"Error executing contract: {e}")
-
-async def run_multiple_staking(private_keys):
-    last_times = 100
-    min_delay = 10
-    max_delay = 20
-    minimum_balance = 3
-
-    for private_key in private_keys:
-        account = w3.eth.account.from_key(private_key.strip())
-        print(f"Processing wallet with address: {account.address}")
-
-        for i in range(last_times):
-            if last_times > 1:
-                print(f"Starting Contract attempt {i + 1}")
-            await execute_contract(account, minimum_balance)
-            print(f"Completed Contract attempt {i + 1}")
-            if i < last_times - 1:
-                delay = random.uniform(min_delay, max_delay)
-                print(f"Waiting for {delay} seconds...")
-                print('------------------------------------------------------------')
-                time.sleep(random.uniform(min_delay, max_delay))
-
-async def main():
-    try:
-        with open(file_path, 'r') as file:
-            private_keys = [line.strip() for line in file if line.strip()]
-        await run_multiple_staking(private_keys)
-    except Exception as err:
-        print(f'读取文件时发生错误: {err}')
-        exit(1)
-
-if __name__ == "__main__":
-    import asyncio
-    asyncio.run(main())

+ 0 - 1
project/somnia/AccountList.txt

@@ -1 +0,0 @@
-399ec8a9a9fcbb3118f993351c7624bdffc9b93d31e6576ebe69e9b24a2ecab3

+ 0 - 138
project/somnia/somnia_exchange_trade.py

@@ -1,138 +0,0 @@
-# -- coding: utf-8 --
-
-from web3 import Web3
-import random
-import time
-import os
-
-provider_url = "https://dream-rpc.somnia.network"
-w3 = Web3(Web3.HTTPProvider(provider_url))
-
-contract_data = [
-    {
-        "address": "0xF22eF0085f6511f70b01a68F360dCc56261F768a",
-        "data_hash": "0xd0e30db0",
-        "description": "SomniaExchangeTrade - 1"
-    }
-]
-
-file_path = os.path.join(os.path.dirname(__file__), 'AccountList.txt')
-
-def get_random_amount():
-    random_tail = str(random.randint(1000, 9999))
-    random_bit = random.randint(14, 18)
-    random_balance = f"0.{random_tail.zfill(random_bit)}"
-    return Web3.to_wei(random_balance, "ether")
-
-def get_random_contract_data():
-    if not contract_data:
-        print("The contract data array is empty, the contract cannot be selected, and the program exits.")
-        exit(1)
-    return random.choice(contract_data)
-
-def check_wallet_balance(balance, minimum_balance):
-    if balance <= Web3.to_wei(minimum_balance, "ether"):
-        print("The wallet balance is invalid.")
-        exit(1)
-
-async def execute_contract(account, minimum_balance):
-    try:
-        contract_info = get_random_contract_data()
-        address = contract_info["address"]
-        data_hash = contract_info["data_hash"]
-        description = contract_info["description"]
-        print(f"Selected contract: {description}")
-        print(f"Selected contract address: {address}")
-        print(f"Selected contract dataHash: {data_hash}")
-
-        balance = w3.eth.get_balance(account.address)
-        before_balance = Web3.from_wei(balance, "ether")
-        print(f"Native balance: {before_balance}")
-
-        check_wallet_balance(balance, minimum_balance)
-
-        amount_to_stake = get_random_amount()
-        print(f"Amount to contract: {Web3.from_wei(amount_to_stake, 'ether')}")
-
-        if balance < amount_to_stake:
-            raise Exception("Insufficient balance for contract execution.")
-
-        contract_address = Web3.to_checksum_address(address)
-        abi = [
-            {
-                "inputs": [],
-                "name": "deposit",
-                "outputs": [],
-                "stateMutability": "payable",
-                "type": "function"
-            }
-        ]
-        contract = w3.eth.contract(address=contract_address, abi=abi)
-
-        nonce = w3.eth.get_transaction_count(account.address)
-        now_gas = Web3.from_wei(w3.eth.gas_price, 'ether')
-        print(f"Now Gas Fee is: {now_gas}")
-
-        tx = contract.functions.deposit().build_transaction({
-            "from": account.address,
-            "value": amount_to_stake,
-            "gas": 100000,
-            "gasPrice": w3.eth.gas_price,
-            "nonce": nonce,
-            "chainId": w3.eth.chain_id
-        })
-
-        signed_tx = w3.eth.account.sign_transaction(tx, account.key)
-        tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
-        print(f"Contract Execution hash: {tx_hash.hex()}")
-
-        receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
-        execute_status = receipt["status"]
-        if execute_status == 1:
-            print("Contract Execution status: seccessful")
-        elif execute_status == 0:
-            print(f"Contract Execution status: failed\n{receipt}")
-        else:
-            print("Contract Execution status: unknown")
-
-        balance_staking = w3.eth.get_balance(account.address)
-        after_balance = Web3.from_wei(balance_staking, "ether")
-        print(f"Native balance after transaction: {after_balance}")
-        print(f"The cost of this transaction: {float(before_balance) - float(after_balance)}")
-
-    except Exception as e:
-        print(f"Error executing contract: {e}")
-
-async def run_multiple_staking(private_keys):
-    last_times = 1
-    min_delay = 10
-    max_delay = 20
-    minimum_balance = 0.2
-
-    for private_key in private_keys:
-        account = w3.eth.account.from_key(private_key.strip())
-        print(f"Processing wallet with address: {account.address}")
-
-        for i in range(last_times):
-            if last_times > 1:
-                print(f"Starting Contract attempt {i + 1}")
-            await execute_contract(account, minimum_balance)
-            print(f"Completed Contract attempt {i + 1}")
-            if i < last_times - 1:
-                delay = random.uniform(min_delay, max_delay)
-                print(f"Waiting for {delay} seconds...")
-                print('------------------------------------------------------------')
-                time.sleep(random.uniform(min_delay, max_delay))
-
-async def main():
-    try:
-        with open(file_path, 'r') as file:
-            private_keys = [line.strip() for line in file if line.strip()]
-        await run_multiple_staking(private_keys)
-    except Exception as err:
-        print(f'读取文件时发生错误: {err}')
-        exit(1)
-
-if __name__ == "__main__":
-    import asyncio
-    asyncio.run(main())

+ 0 - 114
project/zama/faucet.py

@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-import time
-import random
-from web3 import Web3
-from eth_account import Account
-
-private_key_list = [
-    "48cd0f0db84c9ca488292c9da449236d14a845e07618b6c0975cb158ccd60794"
-    ]
-
-def claim_token(private_key):
-    # 配置信息
-    rpc_url = "https://rpc.sepolia.ethpandaops.io"
-    target_chain_id = 11155111
-    contract_address = "0x3edf60dd017ace33a0220f78741b5581c385a1ba"
-    
-    try:
-        # 连接Web3
-        web3 = Web3(Web3.HTTPProvider(rpc_url))
-        if not web3.is_connected():
-            print("❌ 无法连接到目标网络")
-            return False
-
-        # 校验链ID是否为Sepolia
-        chain_id = web3.eth.chain_id
-        if chain_id != target_chain_id:
-            print(f"❌ 连接了错误的网络,当前链ID: {chain_id}, 期望: {target_chain_id}")
-            return False
-
-        # 创建账户对象
-        account = Account.from_key("0x" + private_key)
-
-        # 查询当前账户余额
-        balance = web3.eth.get_balance(account.address)
-        balance_eth = web3.from_wei(balance, 'ether')
-        print(f"当前账户余额: {balance_eth} Token")
-
-        # 构造调用数据
-        wallet_address = account.address[2:].lower()  # 去掉0x前缀
-        wallet_param = wallet_address.zfill(64)  # 补足64位(32字节)
-        call_data = "0x6a627842" + wallet_param
-
-        # 构造交易
-        transaction = {
-            "to": Web3.to_checksum_address(contract_address),
-            "value": 0,
-            "gas": 100000,  # 固定Gas限制,可根据需要调整
-            "gasPrice": web3.to_wei(20, "gwei"),  # 固定Gas价格,可调整
-            "nonce": web3.eth.get_transaction_count(account.address),
-            "data": call_data,
-            "chainId": target_chain_id,
-        }
-
-        print(f"📋 调用数据: {call_data}")
-        print("📤 发送交易中...")
-
-        # 签名交易
-        signed_txn = web3.eth.account.sign_transaction(
-            transaction, private_key)
-
-        # 发送交易
-        tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
-        tx_hash_hex = tx_hash.hex()
-        print(f"📤 交易已发送: {tx_hash_hex}")
-        print("⏳ 等待交易确认...")
-
-        # 等待交易确认
-        receipt = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=300)
-
-        if receipt.status == 1:
-            print(f"✅ 代币领取成功! Gas使用: {receipt.gasUsed}")
-            print(f"🔗 交易链接: https://sepolia.etherscan.io/tx/{tx_hash_hex}")
-            return True
-        else:
-            print("❌ 交易执行失败")
-            return False
-
-    except Exception as e:
-        error_msg = str(e).lower()
-        if "insufficient funds" in error_msg:
-            print("❌ ETH余额不足,无法支付Gas费用")
-        elif "nonce too low" in error_msg:
-            print("❌ Nonce值过低,请稍后重试")
-        elif "replacement transaction underpriced" in error_msg:
-            print("❌ 交易费用过低,请提高Gas价格")
-        else:
-            print(f"❌ 领取失败: {e}")
-        return False
-
-
-if __name__ == "__main__":
-    claim_times = 200000
-    for private_key in private_key_list:
-        for i in range(claim_times):
-            print(f'开始领取第 {i+1} 次')
-            n = 1
-            retry_min_time = 10
-            retry_max_time = 20
-            retry_time = random.uniform(retry_min_time, retry_max_time)
-            retry_max_times = 3
-            while True:
-                if n > retry_max_times:
-                    print(f'领取 {i+1} 次失败, 重试次数超过 {retry_max_times} 次, 跳过')
-                    break
-
-                if claim_token(private_key):
-                    break
-
-                print(f'领取 {i+1} 次失败, 重试第 {n} 次, 等待 {retry_time} 秒后再次领取')
-                n += 1
-                time.sleep(retry_time)
-
-            print(f'领取第 {i+1} 次成功, 等待 {retry_time} 秒后再次领取')
-            time.sleep(retry_time)

+ 0 - 137
project/zama/faucet_threading.py

@@ -1,137 +0,0 @@
-# -*- coding: utf-8 -*-
-import time
-import random
-import threading
-from web3 import Web3
-from eth_account import Account
-
-private_key_list = [
-    "2a185eae14ca82ac934a5f952e12e0d4a64043c911c33a19afd48ef1a1d70c46",
-    "df5d009c711475b8f9987f235b373cfdbd93c858063efa9eebd9188dbc534097",
-    "64f548051325022a7aa9e32c5756161d227fd5fb641c3f4623558cb574775254",
-    "aa6fc003745793d7c192b2c404e332770b501ac0b81879d7538d6659ca84b7cf",
-    "e92637de4029ae6397c18ff62cab0460e6caee1f166a0e710d52d46556c16627",
-    "1741e24dd3a1a5cecf39dea82ba6ba62506d7a07ebcc7998b9b66eb8423e93db",
-    "b898cf63a5ec89105ba755ef3b7533c25ea9130ab50fb0db14779fb6efd4f9c6",
-    "f139f86b139f92070b6e6139177e59d85532c867dda6a8833e479fd60a8d37b7",
-    "399ec8a9a9fcbb3118f993351c7624bdffc9b93d31e6576ebe69e9b24a2ecab3",
-    "48cd0f0db84c9ca488292c9da449236d14a845e07618b6c0975cb158ccd60794"
-    ]
-
-def claim_token(private_key):
-    # 配置信息
-    rpc_url = "https://rpc.sepolia.ethpandaops.io"
-    target_chain_id = 11155111
-    contract_address = "0x3edf60dd017ace33a0220f78741b5581c385a1ba"
-    
-    try:
-        # 连接Web3
-        web3 = Web3(Web3.HTTPProvider(rpc_url))
-        if not web3.is_connected():
-            print(f"❌ [{private_key[:8]}...] 无法连接到目标网络")
-            return False
-
-        # 校验链ID是否为Sepolia
-        chain_id = web3.eth.chain_id
-        if chain_id != target_chain_id:
-            print(f"❌ [{private_key[:8]}...] 连接了错误的网络,当前链ID: {chain_id}, 期望: {target_chain_id}")
-            return False
-
-        # 创建账户对象
-        account = Account.from_key("0x" + private_key)
-
-        # 查询当前账户余额
-        balance = web3.eth.get_balance(account.address)
-        balance_eth = web3.from_wei(balance, 'ether')
-        print(f"[{private_key[:8]}...] 当前账户余额: {balance_eth} Token")
-
-        # 构造调用数据
-        wallet_address = account.address[2:].lower()  # 去掉0x前缀
-        wallet_param = wallet_address.zfill(64)  # 补足64位(32字节)
-        call_data = "0x6a627842" + wallet_param
-
-        # 构造交易
-        transaction = {
-            "to": Web3.to_checksum_address(contract_address),
-            "value": 0,
-            "gas": 100000,  # 固定Gas限制,可根据需要调整
-            "gasPrice": web3.to_wei(20, "gwei"),  # 固定Gas价格,可调整
-            "nonce": web3.eth.get_transaction_count(account.address),
-            "data": call_data,
-            "chainId": target_chain_id,
-        }
-
-        print(f"[{private_key[:8]}...] 📋 调用数据: {call_data}")
-        print(f"[{private_key[:8]}...] 📤 发送交易中...")
-
-        # 签名交易
-        signed_txn = web3.eth.account.sign_transaction(transaction, private_key)
-
-        # 发送交易
-        tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
-        tx_hash_hex = tx_hash.hex()
-        print(f"[{private_key[:8]}...] 📤 交易已发送: {tx_hash_hex}")
-        print(f"[{private_key[:8]}...] ⏳ 等待交易确认...")
-
-        # 等待交易确认
-        receipt = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=300)
-
-        if receipt.status == 1:
-            print(f"[{private_key[:8]}...] ✅ 代币领取成功! Gas使用: {receipt.gasUsed}")
-            print(f"[{private_key[:8]}...] 🔗 交易链接: https://sepolia.etherscan.io/tx/{tx_hash_hex}")
-            return True
-        else:
-            print(f"[{private_key[:8]}...] ❌ 交易执行失败")
-            return False
-
-    except Exception as e:
-        error_msg = str(e).lower()
-        if "insufficient funds" in error_msg:
-            print(f"[{private_key[:8]}...] ❌ ETH余额不足,无法支付Gas费用")
-        elif "nonce too low" in error_msg:
-            print(f"[{private_key[:8]}...] ❌ Nonce值过低,请稍后重试")
-        elif "replacement transaction underpriced" in error_msg:
-            print(f"[{private_key[:8]}...] ❌ 交易费用过低,请提高Gas价格")
-        else:
-            print(f"[{private_key[:8]}...] ❌ 领取失败: {e}")
-        return False
-
-def worker(private_key, claim_times):
-    """为每个 private_key 执行的线程任务"""
-    for i in range(claim_times):
-        print(f"[{private_key[:8]}...] 开始领取第 {i+1} 次")
-        n = 1
-        retry_min_time = 10
-        retry_max_time = 20
-        retry_time = random.uniform(retry_min_time, retry_max_time)
-        retry_max_times = 3
-        while True:
-            if n > retry_max_times:
-                print(f"[{private_key[:8]}...] 领取 {i+1} 次失败, 重试次数超过 {retry_max_times} 次, 跳过")
-                break
-
-            if claim_token(private_key):
-                break
-
-            print(f"[{private_key[:8]}...] 领取 {i+1} 次失败, 重试第 {n} 次, 等待 {retry_time} 秒后再次领取")
-            n += 1
-            time.sleep(retry_time)
-
-        print(f"[{private_key[:8]}...] 领取第 {i+1} 次成功, 等待 {retry_time} 秒后再次领取")
-        time.sleep(retry_time)
-
-if __name__ == "__main__":
-    claim_times = 20
-    threads = []
-
-    # 为每个 private_key 创建一个线程
-    for private_key in private_key_list:
-        thread = threading.Thread(target=worker, args=(private_key, claim_times))
-        threads.append(thread)
-        thread.start()
-
-    # 等待所有线程完成
-    for thread in threads:
-        thread.join()
-
-    print("所有线程已完成")

+ 0 - 1
reference/project/monad/AccountList.txt

@@ -1 +0,0 @@
-0x618a59dcbbc05a38e10b9872f50855c1b52dd01baced785a7134876ba404be1b

+ 0 - 1
reference/project/pharos/AccountList.txt

@@ -1 +0,0 @@
-0x4b833cf91c19c4d9434ffed4b18714ef032d2acf44caec110a1c2c7db151eb65

+ 0 - 83
reference/project/pharos/Contract.mjs

@@ -1,83 +0,0 @@
-import {ethers} from "ethers";
-
-// 配置 provider,明确指定 chainId 并禁用 ENS
-const provider = new ethers.JsonRpcProvider("https://testnet.dplabs-internal.com");
-
-const privateKey = "0x4b833cf91c19c4d9434ffed4b18714ef032d2acf44caec110a1c2c7db151eb65";
-const wallet = new ethers.Wallet(privateKey, provider);
-
-const contractAddress = "0x76aaada469d23216be5f7c596fa25f282ff9b364";
-
-const contractABI = [
-    "function deposit() public"
-];
-
-async function validateSetup() {
-    try {
-        // 验证钱包地址
-        if (!ethers.isAddress(wallet.address)) {
-            throw new Error("Invalid wallet address derived from private key");
-        }
-        console.log("Wallet address:", wallet.address);
-
-        // 检查账户余额
-        const balance = await provider.getBalance(wallet.address);
-        console.log("Wallet balance:", ethers.formatEther(balance), "PHRS");
-        if (balance === 0n) {
-            throw new Error("Wallet has no balance to pay for gas");
-        }
-
-        // 验证合约地址
-        if (!ethers.isAddress(contractAddress)) {
-            throw new Error("Invalid contract address");
-        }
-
-        // 检查合约是否部署
-        const code = await provider.getCode(contractAddress);
-        if (code === "0x") {
-            throw new Error("No contract deployed at the specified address");
-        }
-        console.log("Contract is deployed at:", contractAddress);
-
-        // 检查网络连接
-        const network = await provider.getNetwork();
-        console.log("Connected to network:", network);
-    } catch (error) {
-        console.error("Validation failed:", error.message);
-        process.exit(1);
-    }
-}
-
-// 发送交易
-async function deposit() {
-    try {
-        // 验证设置
-        await validateSetup();
-
-        // 初始化合约
-        const contract = new ethers.Contract(contractAddress, contractABI, wallet);
-
-        // 获取交易参数
-        const nonce = await provider.getTransactionCount(wallet.address, "pending");
-        const gasPrice = (await provider.getFeeData()).gasPrice;
-
-        // 发送交易
-        const tx = await contract.deposit({
-            nonce,
-            gasPrice,
-            gasLimit: 100000 // 根据合约需求调整
-        });
-
-        console.log("Transaction sent:", tx.hash);
-
-        // 等待交易确认
-        const receipt = await tx.wait();
-        console.log("Transaction confirmed in block:", receipt.blockNumber);
-    } catch (error) {
-        console.error("Error sending transaction:", error);
-        process.exit(1);
-    }
-}
-
-// 执行 deposit 函数
-deposit();

+ 0 - 65
reference/project/pharos/balanceAndNonce.mjs

@@ -1,65 +0,0 @@
-import {ethers} from "ethers";
-import fs from 'fs/promises';
-import path from 'path';
-import {fileURLToPath} from 'url';
-
-// 使用 ethers.js 的 Provider
-const rpcUrl = 'https://testnet.dplabs-internal.com';
-const provider = new ethers.JsonRpcProvider(rpcUrl);
-
-// 读取私钥文件
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = path.dirname(__filename);
-const filePath = path.join(__dirname, './AccountList.txt');
-
-async function getBalance(privateKey) {
-    try {
-        const wallet = new ethers.Wallet(privateKey, provider);
-
-        // 获取账户余额
-        const balance = await provider.getBalance(wallet.address);
-
-        // 将余额从 wei 转换为 ether
-        const balanceInEther = ethers.formatEther(balance);
-
-        console.log(`Address: ${wallet.address}`);
-        console.log(`Balance: ${balanceInEther} PHRS`);
-    } catch (error) {
-        console.error(`Error getting balance for private key: ${privateKey}`);
-        console.error(error);
-    }
-}
-
-async function getNonces(privateKey, countNum) {
-    try {
-        const wallet = new ethers.Wallet(privateKey, provider);
-
-        // 获取最新的 nonce
-        const nonceLatest = await provider.getTransactionCount(wallet.address, 'latest');
-        const noncePending = await provider.getTransactionCount(wallet.address, 'pending');
-        console.log(`pending nonce: ${noncePending} ; latest nonce: ${nonceLatest}`);
-    } catch (error) {
-        console.error('获取 nonce 时发生错误:', error.message);
-    }
-}
-
-async function main() {
-    let privateKeys;
-    try {
-        const data = await fs.readFile(filePath, 'utf8');
-        privateKeys = data.split('\n').filter(line => line.trim() !== '');
-    } catch (err) {
-        console.error('读取文件时发生错误:', err);
-        process.exit(1);
-    }
-
-    let countNum = 1;
-    for (const privateKey of privateKeys) {
-        await getBalance(privateKey);
-        await getNonces(privateKey);
-        console.log('-----------------------------');
-        countNum++;
-    }
-}
-
-main();