Compare commits

..

4 Commits

Author SHA1 Message Date
john 20c5eaf47d 🐞 fix: 2024-07-01 19:01:47 +08:00
john 6a819b6412 Merge branch 'develop' into feature/pc端 2024-07-01 17:02:08 +08:00
john daf5634a10 feat:
更新主题色
2024-07-01 15:18:09 +08:00
john 5e4d6e6521 feat: 2024-06-28 20:13:46 +08:00
26 changed files with 660 additions and 417 deletions

View File

@ -1,11 +1,11 @@
###
# @LastEditors: John
# @Date: 2024-06-26 15:04:10
# @LastEditTime: 2024-06-27 20:18:39
# @LastEditTime: 2024-07-01 15:13:11
# @Author: John
###
VITE_BASE_URL=https://node.yotta-network.com
VITE_BASE_API_URL=https://node.yotta-network.com/api
VITE_BASE_URL=https://www.nodeai.world
VITE_BASE_API_URL=https://www.nodeai.world/api
VITE_PARTICIPATE_CHAIN_ID=56
VITE_PURCHASED_CONTRACT_ADDRESS=0x17c38AaF564716A3D9dD4EBE7Fb5db2D43c6A834
VITE_NETWORK_USDT_ADDRESS=0x55d398326f99059fF775485246999027B3197955

Binary file not shown.

100
nodeai.worid.crt Normal file
View File

@ -0,0 +1,100 @@
-----BEGIN CERTIFICATE-----
MIIFuTCCBKGgAwIBAgIRAM0x4XaWUXTydUUUUxaKx6swDQYJKoZIhvcNAQELBQAw
gY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE
AxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD
QTAeFw0yNDA2MjgwMDAwMDBaFw0yNDA5MjYyMzU5NTlaMBcxFTATBgNVBAMTDG5v
ZGVhaS53b3JsZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ699oW5
ui84v8H0mCdkfvLMT8oNOuHok1swS9qVPATsG+nunCFNJ4MWIkjWjRdYHIAMKkSh
hwVnXrTnAQBSnijODJEm4XvTlC7iX3GqMoFZzH4HO635bKQUKQ4IS/W4iBTgVNP/
jPV9q+uiHdGYw32IdAcvMBybJZK6hu6hHCPzavb/OlaLnP5QmVDhkyuGTkXPnZNn
Q3S5BtKX4nYTDa+7xk+641xjkUjQPMXnBCkv0lLrBE1UxYW2ydtoIBk0G4y6PkLN
0HFDSDU2HRkq9HCl3YcKykwePbOdOUrIxlVaIz5SvXX+1uKMlSl3zSFrK2ML4R6A
MyEtd2NolWvwVusCAwEAAaOCAoUwggKBMB8GA1UdIwQYMBaAFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMB0GA1UdDgQWBBQt2UCT9yi00+7Qbr/oqhwkYPjjRjAOBgNVHQ8B
Af8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
BQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUFBwIBFhdo
dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUFBwEBBHgw
djBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNB
RG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEFBQcwAYYX
aHR0cDovL29jc3Auc2VjdGlnby5jb20wKQYDVR0RBCIwIIIMbm9kZWFpLndvcmxk
ghB3d3cubm9kZWFpLndvcmxkMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAdv+I
Pwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGQXkQx7gAABAMARjBEAiAv
rU66TNkQIw0xeWnoVyki3czMgJqHhfcG5lFaFDHA6wIgbxtFc6uJ8ihs/uZNgOoZ
22/smxhg0Wdn85rSr/WYcVUAdgA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF
7PhkbgAAAZBeRDGHAAAEAwBHMEUCIHcG7OuFdpyy8dxRRw0YdO9AopeQhr07FOLo
3iZZhZzvAiEAxjpBbU1mqMTKa4M5kCmrVwsPbzSBxWErPh14O8FB0ZIwDQYJKoZI
hvcNAQELBQADggEBADdlHwQL8rHTaoMbYEy5HwyWSgts02h6evh0sK37XCQt1ZGR
mH/Y8VBOipCKmjATrUagM70x7cD9qOANVSjeqa68i2rplSisKIAJrHbJ2vp0ef6j
ZkdwOoWRQMZ/8xc9TMfnxQ/AlPPlXL39Z77k1uhTGUgLdng7z2QPYJB6/X/+UkE+
r2ADKfvCeSe9Y/5lZFi+QknGNxukwvkoeZJDzFPz8LZrRsX0Ke3HfEnx21kFsOnH
w3ybLJruUwb5XySkgiHgr2ZGZe101g9zEVQhgCbHp+b7FpTNCBHTAZZmaVFCQ1s9
HY3AZ+OU0GYeApMkXgjxVLuDuxyAAjkeAQRfYuY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----

28
nodeai.worid.key Normal file
View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQClZYi6pLHxz6G9
MSxUpeD44ADWJQ37QsA+fSZLURUkN7Vq8o7dafbgxLTveUcbrWhXlaU92+rQ7Z2Z
svBQ8NcmnQOSFuTzNMfvrGK7nr9PxwLdAvQmdkKZvCeMdVrZFKK5BMX0i3cvmbEp
td6mhs5BaJW5aNSZH9/qfCBLRcBm5dTNlKJB8e2m4b6Ib7aQ29ZtbD77F+tfXy2W
+eH4p2EtbkaSd2qv6CGn79rQsA/16LjA5GnLhFiYej37RKgEWNGBGbkmYoJznFVy
JUrZJCTcKLnJQJObzzcto2t93unOXYP4Tpyru0eQpDOqNwx31oNdM9lVZ3vfE4xc
aJ1vOOV3AgMBAAECggEAMKNlrIFvRM2K4jCaOUBYosd454CZFnkgQKAcCU0MWwy4
4Hz5D1qwe5PNI5k2FIkPpKYApGrOKGegD4lkC2Fv286TtLvf0zeDzlMS69q4ptS+
3lCWjNL9Lel7dd4y+6CKY79oGUyEHa7kPwBZO/5rnCeN1CrkTi1l8zZSZuBZvshB
mh1wRXD4gAtl+kpqhWyiTbZPDnd98ngaO8QTyKthAqugjnbI+BZgD7nYQQ2NM6ia
+eeLFls6k6/IFWHwcanZ1+aD8lBtRdBHgfcw4wCN/tJxdeqyZnq+Ptegz84Vj4em
FCpiRlA6DM0WpI+GkRcUDTaU1UAF5WSOtC9BnSpa2QKBgQDSBkI1V86Ix4L8ZofY
BTfotTSuJPoLkxMXoEXb86H+Er9db6TnsAhUTyhD7mnbF8XF76txEZs3ytvhXHq0
g10Ls+8jlNsqXW1ar4TeVHcDJNXLMl3L2gM7nZ0Dw7ET1AxR/L2+w9LjMA3E6q2H
P9238pzjDjOBv8lRjGJMTFBvKQKBgQDJmlaEpzpJ0jbqR0C3YdRZcQmkazTXiwXl
Ee+tdsvBdDd3IcgcpBwGrPaISy5CnO6VnaFkB28Hsvl0SDV1+60fdaOELSmmahKd
nYmSeO2YUQtYXy/6V/l3yST0VlL76byrAGNfa75HlDlgyRyz8oMfquzMGzYIs539
/gt1z+9jnwKBgQCgJnGaJ4iwOCKjwLNZgDEv2+191WhuJwpp+6cJn/Aow7b00stW
eJ8BWxMDKevCS5Bd7PI4WAqaMrAUWuaee4UaBW0XHs04suFOQ4T33EScOxxjw9ZO
OcI5VWiDlFeVHR7/7c/qhXxsDRqSy7ji50p0mCYV5aBVEh+7dWcHczHqcQKBgHOc
lYcHG28gJSve5qcDbDJKl5v5etksuZmu2oLggGKVUgV4kviRyByv7cUlUAcVVeDo
/5eMh8ijg1iC3F2nkZVb8gSnnZ34cGqA4FbmEGLr/xSTqcDn2IEwEYgpRPeACBkM
ZPBgqkMEJo9xZYtwRG/RpnA6HpeI4c65dDsAnqjDAoGAQta9vNa9KH8fpEK3DCVV
JSOi0HNw6jgwi1KVN3uD3g1t9KTMKugjKn+NT1wNW/aovYLkEe1VtlDvPzmen/5Y
scmamazk1+s9dbRDfPXfqL1xN2tX7EpMkfiCCpqD38013eHddC6JXpUuOkmrANfc
S5y9cEj8j6Waya5kNuQqSVs=
-----END PRIVATE KEY-----

27
nodeai.worid.pem Normal file
View File

@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEpDCCA4ygAwIBAgIUIiGxxZFFYK/IksW5bUol8GS6ak8wDQYJKoZIhvcNAQEL
BQAwgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQw
MgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9y
aXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MB4XDTI0MDYzMDE1MzUwMFoXDTM5MDYyNzE1MzUwMFowYjEZMBcGA1UEChMQQ2xv
dWRGbGFyZSwgSW5jLjEdMBsGA1UECxMUQ2xvdWRGbGFyZSBPcmlnaW4gQ0ExJjAk
BgNVBAMTHUNsb3VkRmxhcmUgT3JpZ2luIENlcnRpZmljYXRlMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEApWWIuqSx8c+hvTEsVKXg+OAA1iUN+0LAPn0m
S1EVJDe1avKO3Wn24MS073lHG61oV5WlPdvq0O2dmbLwUPDXJp0Dkhbk8zTH76xi
u56/T8cC3QL0JnZCmbwnjHVa2RSiuQTF9It3L5mxKbXepobOQWiVuWjUmR/f6nwg
S0XAZuXUzZSiQfHtpuG+iG+2kNvWbWw++xfrX18tlvnh+KdhLW5Gkndqr+ghp+/a
0LAP9ei4wORpy4RYmHo9+0SoBFjRgRm5JmKCc5xVciVK2SQk3Ci5yUCTm883LaNr
fd7pzl2D+E6cq7tHkKQzqjcMd9aDXTPZVWd73xOMXGidbzjldwIDAQABo4IBJjCC
ASIwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQVW93wA7aT2uzpVH9qaHLNcgM1mDAf
BgNVHSMEGDAWgBQk6FNXXXw0QIep65TbuuEWePwppDBABggrBgEFBQcBAQQ0MDIw
MAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmNsb3VkZmxhcmUuY29tL29yaWdpbl9j
YTAnBgNVHREEIDAegg4qLm5vZGVhaS53b3JsZIIMbm9kZWFpLndvcmxkMDgGA1Ud
HwQxMC8wLaAroCmGJ2h0dHA6Ly9jcmwuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2Nh
LmNybDANBgkqhkiG9w0BAQsFAAOCAQEAGISJxOYxuAAXapVJxU5vP2rt61xH1vC8
UEUSD7u3WUoULJIZt3pHyfUI6twxHlXttlFWEq3aogrpuGlv76OCXILNy5B4Xkx8
OR47xvO5EClDdVJb9a5hET6iJn9UXR9UrSiuzZAE0HEOK1t3KEJOFh0/39sDqwTn
pJ49DjiVA7TvvJgUljjnumf40I1F6apuZbdnW03VHr3WsBkPE/wv+ZEBxwRTZaLB
1BakIMguI8tnSSReAf4O+oOwIAgz0OwT18d/xc4O8hhkitdfUnON03KZLEK26J1r
KQ+8PPhMBKVjsPTM9li8vAWSq8Cc3GxoNnvOeV/u1NXnxfD+X6vBwA==
-----END CERTIFICATE-----

59
nodeai.world.conf Normal file
View File

@ -0,0 +1,59 @@
server {
server_name nodeai.world www.nodeai.world;
client_max_body_size 50m;
listen *:80;
listen *:443 ssl;
#ssl on;
# 静态文件夹和域名对应
root /data/nginx/nodeai.world;
index index.html index.htm;
# 日志文件名和域名对应
access_log /data/nginx/logs/nodeai.world.access.log;
error_log /data/nginx/logs/nodeai.world.error.log;
ssl_certificate cert/nodeai.worid.pem;
ssl_certificate_key cert/nodeai.worid.key;
location /upload {
root /data/nginx/;
index index.html;
}
location /api {
proxy_pass http://127.17.0.1:8102;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/api {
proxy_pass http://127.17.0.1:8102/api;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /zip {
alias /data/nginx/zip/;#此处定义映射文件位置
allow all;
autoindex on;
}
}

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="46" height="46" viewBox="0 0 46 46"><g><g><g><rect x="0" y="0" width="46" height="46" rx="23" fill="#2DFCFC" fill-opacity="1"/></g><g><ellipse cx="15.29602861404419" cy="18.62433671951294" rx="5.9895710945129395" ry="5.9895710945129395" fill="#000000" fill-opacity="1"/></g><g><path d="M28.716520703125,12.63720703125L14.313720703125,33.363107031249996L22.288390703125,33.363107031249996L36.693520703125,12.63720703125L28.716520703125,12.63720703125Z" fill="#000000" fill-opacity="1"/></g></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="46" height="46" viewBox="0 0 46 46"><g><g><g><rect x="0" y="0" width="46" height="46" rx="23" fill="#EA6D28" fill-opacity="1"/></g><g><ellipse cx="15.29602861404419" cy="18.62433671951294" rx="5.9895710945129395" ry="5.9895710945129395" fill="#000000" fill-opacity="1"/></g><g><path d="M28.716520703125,12.63720703125L14.313720703125,33.363107031249996L22.288390703125,33.363107031249996L36.693520703125,12.63720703125L28.716520703125,12.63720703125Z" fill="#000000" fill-opacity="1"/></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 619 B

View File

@ -3,7 +3,7 @@ html,
#root {
width: 100%;
height: 100%;
background: url("./assets/home_bg.png");
background: #fafafb;
}
@font-face {

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-17 17:20:03
* @LastEditTime: 2024-06-28 17:44:02
* @LastEditTime: 2024-07-01 16:41:42
* @Author: John
*/
import { Route, Routes } from "react-router-dom";
@ -16,7 +16,7 @@ import InvitationList from "./pages/InvitationList";
import { useEffect } from "react";
import { useTranslation } from "react-i18next";
import useUserStore from "./store/User";
import { getUrlQueryParam, isMobile } from "./utils";
import { getUrlParameterByName, isMobile } from "./utils";
import { UrlQueryParamsKey } from "./constants";
import { signAndLogin } from "./utils/wallet";
import { useAccount } from "wagmi";
@ -26,7 +26,9 @@ function App() {
const { address } = useAccount();
useEffect(() => {
i18n.changeLanguage(currantLang);
UpdateInviteCode(getUrlQueryParam(UrlQueryParamsKey.INVITE_CODE) || "");
UpdateInviteCode(
getUrlParameterByName(UrlQueryParamsKey.INVITE_CODE) || ""
);
return () => {};
}, []);

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="46" height="46" viewBox="0 0 46 46"><g><g><g><rect x="0" y="0" width="46" height="46" rx="23" fill="#2DFCFC" fill-opacity="1"/></g><g><ellipse cx="15.29602861404419" cy="18.62433671951294" rx="5.9895710945129395" ry="5.9895710945129395" fill="#000000" fill-opacity="1"/></g><g><path d="M28.716520703125,12.63720703125L14.313720703125,33.363107031249996L22.288390703125,33.363107031249996L36.693520703125,12.63720703125L28.716520703125,12.63720703125Z" fill="#000000" fill-opacity="1"/></g></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="46" height="46" viewBox="0 0 46 46"><g><g><g><rect x="0" y="0" width="46" height="46" rx="23" fill="#EA6D28" fill-opacity="1"/></g><g><ellipse cx="15.29602861404419" cy="18.62433671951294" rx="5.9895710945129395" ry="5.9895710945129395" fill="#000000" fill-opacity="1"/></g><g><path d="M28.716520703125,12.63720703125L14.313720703125,33.363107031249996L22.288390703125,33.363107031249996L36.693520703125,12.63720703125L28.716520703125,12.63720703125Z" fill="#000000" fill-opacity="1"/></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 619 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 325 KiB

After

Width:  |  Height:  |  Size: 322 KiB

View File

@ -1,17 +1,17 @@
/*
* @LastEditors: John
* @Date: 2024-06-18 15:19:21
* @LastEditTime: 2024-06-18 18:49:40
* @LastEditTime: 2024-07-01 14:10:45
* @Author: John
*/
.header {
background-color: #101010;
background-color: #fafafb;
padding: 0 15px;
.header_top {
display: flex;
align-items: center;
gap: 8px;
border-bottom: 0.25px solid #333333;
border-bottom: 1px solid #d8d8d8;
padding: 10px 0;
.header_logo {
@ -30,7 +30,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -57,7 +57,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-18 15:16:31
* @LastEditTime: 2024-06-28 14:05:29
* @LastEditTime: 2024-07-01 15:19:02
* @Author: John
*/
import Picker, {
@ -70,7 +70,7 @@ function Mobile() {
<IconFont
className={classes.header_nav_icon}
name="icon_arrow_left"
color={"#fff"}
color={"#000000"}
/>
<span>{navTitle}</span>
</div>

View File

@ -61,7 +61,7 @@ createWeb3Modal({
wagmiConfig: config,
projectId,
themeVariables: {
"--w3m-accent": "#2dfcfc",
"--w3m-accent": "#EA6D28",
},
featuredWalletIds: [
...(window.ethereum

View File

@ -22,7 +22,7 @@
"总收益= 已领取 + 待领取": "Total Revenue = Claimed + Pending",
"邀请": "Invite",
"邀请链接": "Invite Link",
"Invite your friends to become YOTTA nodes and you will get a 20% rebate.": "Invite your friends to become YOTTA nodes and you will get a 20% rebate.",
"Invite your friends to become YOTTA nodes and you will get a 10% rebate.": "Invite your friends to become YOTTA nodes and you will get a 10% rebate.",
"数据披露": "Data Disclosure",
"资金池": "Fund Pool",
"社长席位": "Leader Seats",

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-17 17:20:03
* @LastEditTime: 2024-06-20 11:43:14
* @LastEditTime: 2024-07-01 16:46:07
* @Author: John
*/
import "@/i18n/init.ts";
@ -15,9 +15,9 @@ import EventBusProvider from "./context/EventBusContext.tsx";
import { WalletProvider } from "./components/WalletProvider.tsx";
import flexible from "./utils/flexible.ts";
import VConsole from "vconsole";
import { getUrlQueryParam } from "./utils/index.ts";
import { getUrlParameterByName } from "./utils/index.ts";
if (getUrlQueryParam("vconsole") === "1") {
if (getUrlParameterByName("vconsole") === "1") {
new VConsole();
}
flexible(window, document);

View File

@ -99,5 +99,6 @@ export default function () {
setTabIndex,
navigate,
userInviteLink,
open,
};
}

View File

@ -14,10 +14,8 @@
border-radius: 16px;
opacity: 1;
background: #171719;
box-shadow: 0px 4px 10px 0px rgba(45, 252, 252, 0.3),
inset 0px 0px 8px 0px #2dfcfc;
background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(99, 99, 99, 0.2);
padding: 14px 15px;
box-sizing: border-box;
@ -57,7 +55,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
}
@ -117,10 +115,9 @@
border-radius: 10px;
opacity: 1;
background: #2dfcfc;
background: #ea6d28;
box-sizing: border-box;
border: 1px solid;
padding: 0 20px;
@ -153,7 +150,7 @@
border-radius: 16px;
opacity: 1;
background: #212123;
background: #eeeeef;
display: flex;
flex-direction: column;
@ -173,7 +170,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
@ -193,7 +190,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -210,7 +207,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -245,7 +242,7 @@
border-radius: 10px;
opacity: 1;
background: #2dfcfc;
background: #ea6d28;
color: #101010;
}
@ -260,7 +257,8 @@
border-radius: 16px;
opacity: 1;
background: #171719;
background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(99, 99, 99, 0.2);
z-index: 1;
.nftToken_content_nft {
/* 自动布局 */
@ -286,7 +284,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
}
@ -303,7 +301,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #2dfcfc;
color: #ea6d28;
z-index: 0;
@ -335,7 +333,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 2;
}
@ -536,7 +534,7 @@
justify-content: center;
align-items: center;
padding: 10px 0;
background: #2dfcfc;
background: #ea6d28;
z-index: 0;
gap: 10px;
box-sizing: border-box;
@ -574,7 +572,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -600,7 +598,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
}
}
}
@ -625,7 +623,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
}
@ -641,7 +639,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #2dfcfc;
color: #ea6d28;
z-index: 0;
@ -657,7 +655,8 @@
border-radius: 16px;
opacity: 1;
background: #171719;
background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(99, 99, 99, 0.2);
display: flex;
flex-direction: column;
@ -680,7 +679,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #333333;
z-index: 0;
}
@ -697,7 +696,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #eaeaea;
color: #666666;
z-index: 1;
}
@ -720,7 +719,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-26 15:04:10
* @LastEditTime: 2024-06-28 14:36:37
* @LastEditTime: 2024-07-01 17:35:37
* @Author: John
*/
import classes from "./Home-m.module.css";
@ -27,6 +27,7 @@ function Mobile() {
setTabIndex,
navigate,
userInviteLink,
open,
} = useHome();
return (
@ -55,7 +56,7 @@ function Mobile() {
}}
name="tuichu"
className={classes.userinfo_top_right_wallet_disconnect}
color={"#fff"}
color={"#000000"}
/>
</div>
<div className={classes.userinfo_top_right_btns}>
@ -137,7 +138,7 @@ function Mobile() {
{t("Buy Node")}
<IconFont
name="chevronsrightshuangyoujiantou"
color={"#2DFCFC"}
color={"#EA6D28"}
/>
</span>
</div>
@ -199,7 +200,7 @@ function Mobile() {
{t("邀请列表")}{" "}
<IconFont
name="chevronsrightshuangyoujiantou"
color={"#2DFCFC"}
color={"#EA6D28"}
/>
</span>
)}
@ -219,7 +220,7 @@ function Mobile() {
}}
className={classes.invite_content_icon}
name="fuzhi"
color={"#fff"}
color={"#101010"}
/>{" "}
</>
) : (
@ -239,7 +240,7 @@ function Mobile() {
<span>
{t(
"Invite your friends to become YOTTA nodes and you will get a 20% rebate."
"Invite your friends to become YOTTA nodes and you will get a 10% rebate."
)}
</span>
</div>

View File

@ -11,7 +11,7 @@
height: 190px;
border-radius: 10px;
opacity: 1;
background: #171719;
background: #ffffff;
box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.16),
0px 3px 6px 0px rgba(0, 0, 0, 0.23);
padding: 8px;
@ -95,7 +95,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #9e9e9e;
color: #333333;
z-index: 0;
}
@ -137,7 +137,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
}
@ -154,7 +154,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -178,7 +178,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 0;
}
@ -194,7 +194,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
z-index: 1;
}
@ -215,7 +215,7 @@
padding: 11px 40px;
gap: 10px;
background: #2dfcfc;
background: #ea6d28;
z-index: 3;

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-18 10:28:21
* @LastEditTime: 2024-06-27 09:52:45
* @LastEditTime: 2024-07-01 11:55:38
* @Author: John
*/
import { GET, POST } from "./client";
@ -54,7 +54,7 @@ export function api_signUp() {
chainType: 2;
},
any
>({ url: "/api/account/signUp", requiresToken: false });
>({ url: "/api/account/signUp", requiresToken: false, catchErr: true });
}
// 获取钱包签名串

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-18 10:09:21
* @LastEditTime: 2024-06-21 14:47:26
* @LastEditTime: 2024-07-01 11:38:43
* @Author: John
*/
import { Client } from "@hyper-fetch/core";
@ -17,9 +17,11 @@ import i18next from "i18next";
function initClient({
requiresToken,
requiresAddress,
catchErr,
}: {
requiresToken: boolean;
requiresAddress: boolean;
catchErr: boolean;
}) {
return new Client({ url: import.meta.env.VITE_BASE_API_URL })
.onAuth(async (req) => {
@ -59,6 +61,7 @@ function initClient({
const resData: BASE_RESPONSE = res.data;
if (resData.code !== 200 && resData.code !== 0) {
if (resData.msg) Toast.show({ content: resData.msg, icon: "fail" });
if (catchErr) return res;
throw new Error(resData.msg || "client on response error");
}
return res;
@ -69,12 +72,14 @@ export const POST = <P = any, R = any, QueryParams = any>({
url,
requiresToken = true,
requiresAddress = true,
catchErr = false,
}: {
url: string;
requiresToken?: boolean;
requiresAddress?: boolean;
catchErr?: boolean;
}) => {
return initClient({ requiresToken, requiresAddress }).createRequest<
return initClient({ requiresToken, requiresAddress, catchErr }).createRequest<
BASE_RESPONSE<R>,
P,
any,
@ -89,12 +94,14 @@ export const GET = <P = any, R = any>({
url,
requiresToken = true,
requiresAddress = true,
catchErr = false,
}: {
url: string;
requiresToken?: boolean;
requiresAddress?: boolean;
catchErr?: boolean;
}) => {
return initClient({ requiresToken, requiresAddress }).createRequest<
return initClient({ requiresToken, requiresAddress, catchErr }).createRequest<
BASE_RESPONSE<R>,
any,
any,

View File

@ -1,9 +1,10 @@
@media only screen and (max-width: 1024px) {
.adm-tabs {
.adm-tabs-header {
border-bottom: 0.25px solid #333333;
.adm-tabs-tab-line {
background-color: #2dfcfc;
background-color: #ea6d28;
}
.adm-tabs-tab {
@ -51,7 +52,7 @@
opacity: 1;
box-sizing: border-box;
border: 1px solid #2dfcfc;
border: 1px solid #ea6d28;
z-index: 1;
background-color: transparent;
@ -80,7 +81,7 @@
border-radius: 8px;
opacity: 1;
background: #2dfcfc;
background: #ea6d28;
z-index: 0;
@ -192,7 +193,7 @@
/* background: rgba(252, 135, 43, 0.5) !important; */
box-sizing: border-box !important;
border: 1px solid #2dfcfc !important;
border: 1px solid #ea6d28 !important;
/* backdrop-filter: blur(10px); */
@ -263,16 +264,16 @@
height: 42px;
border-radius: 5px !important;
opacity: 1;
background: rgba(37, 33, 39, 0.2);
background: rgba(204, 184, 214, 0.2);
box-sizing: border-box !important;
border: 1px solid #2dfcfc !important;
border: 1px solid #ea6d28 !important;
.adm-button {
width: 42px;
height: 42px;
border-radius: 5px;
opacity: 1;
background: #2dfcfc;
background: #ea6d28;
svg {
width: 23px;
@ -296,7 +297,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
}
}
}
@ -305,7 +306,7 @@
.adm-dialog {
.adm-center-popup-body {
box-sizing: border-box !important;
border: 1px solid #2dfcfc !important;
border: 1px solid #ea6d28 !important;
border-radius: 10px !important;
background-color: transparent !important;
backdrop-filter: blur(10px);
@ -328,11 +329,11 @@
.adm-dialog-footer {
.adm-dialog-action-row {
border-top: 1px solid #2dfcfc !important;
border-top: 1px solid #ea6d28 !important;
.adm-dialog-button {
span {
color: #2dfcfc;
color: #ea6d28;
}
}
}
@ -357,3 +358,4 @@
z-index: 0;
}
}
}

View File

@ -11,6 +11,7 @@
height: 16px !important;
min-height: 16px !important;
background-color: transparent !important;
border-bottom: none;
.rdt_TableCol {
div {
@ -24,7 +25,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #eaeaea;
color: #333333;
}
}
}
@ -37,6 +38,8 @@
height: 18px !important;
min-height: 18px !important;
background-color: transparent !important;
border-bottom: none;
.rdt_TableCell {
div {
opacity: 1;
@ -49,7 +52,7 @@
font-variation-settings: "opsz" auto;
font-feature-settings: "kern" on;
color: #ffffff;
color: #000000;
}
}
}

View File

@ -1,7 +1,7 @@
/*
* @LastEditors: John
* @Date: 2024-06-17 18:19:27
* @LastEditTime: 2024-06-28 15:32:57
* @LastEditTime: 2024-07-01 16:49:14
* @Author: John
*/
import { type ClassValue, clsx } from "clsx";
@ -121,3 +121,14 @@ export function filterAmountBeforeZero(arr: bigint[]) {
}
return result;
}
export function getUrlParameterByName(name: string, url?: string) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
let regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return "";
console.log("url params:", results);
return decodeURIComponent(results[2].replace(/\+/g, " "));
}

View File

@ -1,16 +1,14 @@
/*
* @LastEditors: John
* @Date: 2024-06-19 15:55:07
* @LastEditTime: 2024-06-27 15:09:45
* @LastEditTime: 2024-07-01 16:44:04
* @Author: John
*/
import { config } from "@/components/WalletProvider";
import {
api_binding_invitation_relationship,
api_check_account_registration,
api_get_wallet_signature_string,
api_login,
api_query_whether_the_user_is_binding_relationship,
api_signUp,
} from "@/server/api";
import useUserStore from "@/store/User";
@ -24,7 +22,7 @@ import {
} from "@wagmi/core";
import Toast from "antd-mobile/es/components/toast";
import i18next from "i18next";
import { getUrlQueryParam } from ".";
import { getUrlParameterByName } from ".";
import { UrlQueryParamsKey } from "@/constants";
/**
@ -130,7 +128,8 @@ export async function signAndLogin(address?: `0x${string}`): Promise<void> {
loadingToast.close();
}
} else {
const inviteCode = getUrlQueryParam(UrlQueryParamsKey.INVITE_CODE);
const inviteCode = getUrlParameterByName(UrlQueryParamsKey.INVITE_CODE);
console.log("inviteCode:", inviteCode);
if (!inviteCode) {
Toast.show({
icon: "fail",
@ -139,7 +138,7 @@ export async function signAndLogin(address?: `0x${string}`): Promise<void> {
return loginOut();
}
// 注册
await api_signUp().send({
const { data } = await api_signUp().send({
data: {
account: address,
publicKey,
@ -147,7 +146,11 @@ export async function signAndLogin(address?: `0x${string}`): Promise<void> {
chainType: 2,
},
});
if (data?.code == 0) {
await signAndLogin(address);
} else {
return loginOut();
}
reslove();
loadingToast.close();
}