Построение частной цепочки PoA с мультивалидаторным узлом
Построение частной цепочки PoA с мультивалидаторным узлом

Примечание. Этот документ применим только к развертыванию консенсуса POA с несколькими узлами проверки. geth больше не поддерживает консенсус Clique начиная с версии 1.14.x, поэтому при компиляции контракта Solidity evm поддерживает только до Лондона.

зарегистрироваться

Язык кода:bash
копировать
# Создать каталог узлов
$ mkdir node0 node1 node2

# зарегистрироваться1
$ geth account new --datadir ./node0
INFO [10-11|09:53:51.790] Maximum peer count                       ETH=50 total=50
INFO [10-11|09:53:51.791] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:
Repeat password:

Your new key was generated

Public address of the key:   0x553E33DcE20bc261869aB5b8B7c3F86De3d1C06B
Path of the secret key file: node0/keystore/UTC--2024-10-11T01-53-58.025264504Z--553e33dce20bc261869ab5b8b7c3f86de3d1c06b

- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!

# зарегистрироваться2
$ geth account new --datadir ./node1
INFO [10-11|09:55:12.919] Maximum peer count                       ETH=50 total=50
INFO [10-11|09:55:12.919] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:
Repeat password:

Your new key was generated

Public address of the key:   0x28B188321dA923fCCf2678eA6E526a03BFb50adF
Path of the secret key file: node1/keystore/UTC--2024-10-11T01-55-19.151113014Z--28b188321da923fccf2678ea6e526a03bfb50adf

- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!

# зарегистрироваться3
$ geth account new --datadir ./node2
INFO [10-11|09:55:47.318] Maximum peer count                       ETH=50 total=50
INFO [10-11|09:55:47.319] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:
Repeat password:

Your new key was generated

Public address of the key:   0x46443c74496dCf0EB77beb5D60c81Ad7Cd536Cf3
Path of the secret key file: node2/keystore/UTC--2024-10-11T01-55-53.092518842Z--46443c74496dcf0eb77beb5d60c81ad7cd536cf3

- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!

инициализация

Язык кода:bash
копировать
# Подробности 0.0
$docker run --rm -v $(pwd)/node0:/root/.ethereum -v $(pwd)/genesis.json:/root/genesis.json ethereum/client-go:v1.13.15 init /root/ генезис.json
ИНФОРМАЦИЯ [ 10 - 11 | 02 : 18 : 54.853 ] Максимальное количество пиров ETH = 50, всего = 50
ИНФОРМАЦИЯ [ 10-11|02:18:54.855] Разъем для смарт-карты не найден, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [10-11|02:18:54.860] Set global gas cap                       cap=50,000,000
ИНФОРМАЦИЯ [10-11|02:18:54.860] Инициализация библиотеки KZG backend=gokzg
ИНФОРМАЦИЯ [10-11|02:18:54.900] По умолчанию в качестве резервной базы данных используется pebble.
ИНФОРМАЦИЯ [10-11|02:18:54.900] Выделенный кеш и дескрипторы файлов data=/root/.ethereum/geth/chaindata cache=16.00MiB handles=16
ИНФОРМАЦИЯ [10-11|02:18:54.924] Открыта древняя база данных Database=/root/.ethereum/geth/chaindata/ancient/chain readonly=false
ИНФОРМАЦИЯ [10-11|02:18:54.925] Для схемы состояния установлено значение по умолчанию: схема = хеш.
ИНФОРМАЦИЯ [10-11|02:18:54.925] Написание пользовательского блока генезиса
ИНФОРМАЦИЯ [10-11|02:18:54.926] Сохраняемое дерево из узлов базы данных памяти=4 size=600.00B time=1.264217ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 lifesize=0.00B
ИНФОРМАЦИЯ [10-11|02:18:54.940] Успешно записана база данных состояния генезиса = хэш цепочки данных = 7a5bce..943bf9
ИНФОРМАЦИЯ [10-11|02:18:54.940] По умолчанию в качестве резервной базы данных используется pebble.
ИНФОРМАЦИЯ [10-11|02:18:54.940] Выделенный кеш и дескрипторы файлов data=/root/.ethereum/geth/lightchaindata cache=16.00MiB handles=16
ИНФОРМАЦИЯ [10-11|02:18:54.962] Открыта древняя база данных Database=/root/.ethereum/geth/lightchaindata/ancient/chain readonly=false
ИНФОРМАЦИЯ [10-11|02:18:54.962] Для схемы состояния установлено значение по умолчанию: схема = хеш.
ИНФОРМАЦИЯ [10-11|02:18:54.962] Написание пользовательского блока происхождения
ИНФОРМАЦИЯ [10-11|02:18:54.963] Сохраняемое дерево из узлов базы данных памяти=4 size=600.00B time=1.129877ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 lifesize=0.00B
ИНФОРМАЦИЯ [10-11|02:18:54.976] Успешно записана база данных состояния генезиса = хеш-код данных Lightchain=7a5bce..943bf9

#инициализацияузел1
$ docker run --rm -v $(pwd)/node1:/root/.ethereum -v $(pwd)/genesis.json:/root/genesis.json ethereum/client-go:v1.13.15 init /root/ генезис.json
ИНФОРМАЦИЯ [10-11|02:19:58.497] Максимальное количество пиров ETH=50, всего=50
ИНФОРМАЦИЯ [10-11|02:19:58.498] Разъем для смарт-карты не найден, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [10-11|02:19:58.501] Set global gas cap                       cap=50,000,000
ИНФОРМАЦИЯ [10-11|02:19:58.501] Инициализация библиотеки KZG backend=gokzg
ИНФОРМАЦИЯ [10-11|02:19:58.536] По умолчанию в качестве резервной базы данных используется pebble.
ИНФОРМАЦИЯ [10-11|02:19:58.536] Выделенный кеш и дескрипторы файлов data=/root/.ethereum/geth/chaindata cache=16.00MiB handles=16
ИНФОРМАЦИЯ [10-11|02:19:58.562] Открыта древняя база данных data=/root/.ethereum/geth/chaindata/ancient/chain readonly=false
ИНФОРМАЦИЯ [10-11|02:19:58.562] Для схемы состояния установлено значение по умолчанию: схема = хеш.
ИНФОРМАЦИЯ [10-11|02:19:58.563] Написание пользовательского блока генезиса
ИНФОРМАЦИЯ [10-11|02:19:58.565] Сохраняемое дерево из узлов базы данных памяти=4 size=600.00B time=2.016678ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 lifesize=0.00B
ИНФОРМАЦИЯ [10-11|02:19:58.577] Успешно записана база данных состояния происхождения = хэш цепочки данных = 7a5bce..943bf9
ИНФОРМАЦИЯ [10-11|02:19:58.577] По умолчанию в качестве резервной базы данных используется pebble.
ИНФОРМАЦИЯ [10-11|02:19:58.577] Выделенный кеш и дескрипторы файлов data=/root/.ethereum/geth/lightchaindata cache=16.00MiB handles=16
ИНФОРМАЦИЯ [10-11|02:19:58.598] Открыта древняя база данных Database=/root/.ethereum/geth/lightchaindata/ancient/chain readonly=false
ИНФОРМАЦИЯ [10-11|02:19:58.598] Для схемы состояния установлено значение по умолчанию: схема = хеш.
ИНФОРМАЦИЯ [10-11|02:19:58.598] Написание пользовательского блока происхождения
ИНФОРМАЦИЯ [10-11|02:19:58.599] Сохраняемое дерево из узлов базы данных памяти=4 size=600.00B time=1.171228ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 lifesize=0.00B
ИНФОРМАЦИЯ [10-11|02:19:58.611] Успешно записана база данных состояния генезиса = хеш-код данных Lightchain=7a5bce..943bf9

#инициализацияузел2
$ docker run --rm -v $(pwd)/node2:/root/.ethereum -v $(pwd)/genesis.json:/root/genesis.json ethereum/client-go:v1.13.15 init /root/ генезис.json
ИНФОРМАЦИЯ [10-11|02:20:19.446] Максимальное количество пиров ETH=50, всего=50
ИНФОРМАЦИЯ [10-11|02:20:19.447] Разъем для смарт-карты не найден, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [10-11|02:20:19.449] Set global gas cap                       cap=50,000,000
INFO [10-11|02:20:19.450] Initializing the KZG library             backend=gokzg
INFO [10-11|02:20:19.483] Defaulting to pebble as the backing database
INFO [10-11|02:20:19.483] Allocated cache and file handles         database=/root/.ethereum/geth/chaindata cache=16.00MiB handles=16
INFO [10-11|02:20:19.507] Opened ancient database                  database=/root/.ethereum/geth/chaindata/ancient/chain readonly=false
INFO [10-11|02:20:19.507] State schema set to default              scheme=hash
INFO [10-11|02:20:19.507] Writing custom genesis block
INFO [10-11|02:20:19.508] Persisted trie from memory database      nodes=4 size=600.00B time=1.174364ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 livesize=0.00B
INFO [10-11|02:20:19.520] Successfully wrote genesis state         database=chaindata hash=7a5bce..943bf9
INFO [10-11|02:20:19.521] Defaulting to pebble as the backing database
INFO [10-11|02:20:19.521] Allocated cache and file handles         database=/root/.ethereum/geth/lightchaindata cache=16.00MiB handles=16
INFO [10-11|02:20:19.542] Opened ancient database                  database=/root/.ethereum/geth/lightchaindata/ancient/chain readonly=false
INFO [10-11|02:20:19.542] State schema set to default              scheme=hash
INFO [10-11|02:20:19.542] Writing custom genesis block
INFO [10-11|02:20:19.544] Persisted trie from memory database      nodes=4 size=600.00B time=1.793947ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=0 livesize=0.00B
INFO [10-11|02:20:19.556] Successfully wrote genesis state         database=lightchaindata hash=7a5bce..943bf9

Начальный узел

создать файл

Запустить в режиме докера,Мы используем следующиеизdocker-compose.yamlдокумент:

Язык кода:yaml
копировать
services:
  node0:
    image: ethereum/client-go:v1.13.15
    container_name: node0
    volumes:
      - ./node0:/root/.ethereum
      - ./genesis.json:/root/genesis.json
    ports:
      - 8545:8545  # HTTP RPC
      - 30303:30303  # P2P сеть
    command: >
      --networkid 377777
      --http
      --http.addr "0.0.0.0"
      --http.port 8545
      --http.corsdomain *
      --http.api eth,net,web3,personal,miner,admin,debug,txpool
      --allow-insecure-unlock
      --datadir /root/.ethereum
      --mine
      --miner.etherbase 553E33DcE20bc261869aB5b8B7c3F86De3d1C06B
      --miner.gasprice 10
      --unlock 553E33DcE20bc261869aB5b8B7c3F86De3d1C06B
      --password /root/.ethereum/password.txt
    networks:
      - ethereum-network

  node1:
    image: ethereum/client-go:v1.13.15
    container_name: node1
    volumes:
      - ./node1:/root/.ethereum
      - ./genesis.json:/root/genesis.json
    ports:
      - 8546:8545  # HTTP RPC
      - 30304:30303  # P2P сеть
    # bootnodes информация, указанная здесь node0 из enode информация,другойузел Вы можете использовать что-то вродеизуказан метод
    command: >
      --networkid 377777
      --http
      --http.addr "0.0.0.0"
      --http.port 8545
      --http.api eth,net,web3,personal,miner,admin,debug,txpool
      --allow-insecure-unlock
      --datadir /root/.ethereum
      --bootnodes "enode://16a453ed853a1261106523de0f98eb9208b73c5d17fe8902f616aa78a8c0379b66f19be51aa4594a605e93c98eaaa4499d088141bb564e5c3b04533bca2dbf3c@node0:30303"
      --mine
      --miner.etherbase 28B188321dA923fCCf2678eA6E526a03BFb50adF
      --miner.gasprice 10
      --unlock 28B188321dA923fCCf2678eA6E526a03BFb50adF
      --password /root/.ethereum/password.txt
    networks:
      - ethereum-network

  node2:
    image: ethereum/client-go:v1.13.15
    container_name: node2
    volumes:
      - ./node2:/root/.ethereum
      - ./genesis.json:/root/genesis.json
    ports:
      - 8547:8545  # HTTP RPC
      - 30305:30303  # P2P сеть
    command: >
      --networkid 377777
      --http
      --http.addr "0.0.0.0"
      --http.port 8545
      --http.api eth,net,web3,personal,miner,admin,debug,txpool
      --allow-insecure-unlock
      --datadir /root/.ethereum
      --bootnodes "enode://16a453ed853a1261106523de0f98eb9208b73c5d17fe8902f616aa78a8c0379b66f19be51aa4594a605e93c98eaaa4499d088141bb564e5c3b04533bca2dbf3c@node0:30303"
      --mine
      --miner.etherbase 46443c74496dCf0EB77beb5D60c81Ad7Cd536Cf3
      --miner.gasprice 10
      --unlock 46443c74496dCf0EB77beb5D60c81Ad7Cd536Cf3
      --password /root/.ethereum/password.txt
    networks:
      - ethereum-network

networks:
  ethereum-network:
    driver: bridge

Запустите загрузочный узел

Узлы начальной загрузки помогают другим узлам подключаться к сети.

Язык кода:bash
копировать
# Здесь мы используем node0 в качестве загрузочного узла.
$ docekr compose up -d node0
# Подождите, пока запуск узла завершится через geth. attachполучатьузелизenodeинформация
$ docker exec -it node0 geth attach
Welcome to the Geth JavaScript console!

instance: Geth/v1.13.15-stable-c5ba367e/linux-amd64/go1.21.9
coinbase: 0x553e33dce20bc261869ab5b8b7c3f86de3d1c06b
at block: 2 (Fri Oct 11 2024 02:28:40 GMT+0000 (UTC))
 datadir: /root/.ethereum
 modules: admin:1.0 clique:1.0 debug:1.0 engine:1.0 eth:1.0 miner:1.0 net:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d or type exit
> admin.nodeInfo
{
  enode: "enode://16a453ed853a1261106523de0f98eb9208b73c5d17fe8902f616aa78a8c0379b66f19be51aa4594a605e93c98eaaa4499d088141bb564e5c3b04533bca2dbf3c@127.0.0.1:30303",
  enr: "enr:-KO4QDZB7dyjt7owZEavKOPJcnYY7sdYtmZPAYdb8Ae5dSYgbuJBPWrus0XXKvddBvOLI_rAQrpQrUEFx0GJkIio8qeGAZJ5Ykflg2V0aMfGhLnGSDaAgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQIWpFPthToSYRBlI94PmOuSCLc8XRf-iQL2Fqp4qMA3m4RzbmFwwIN0Y3CCdl-DdWRwgnZf",
  id: "f25ed62576ac407895a2521d915ac2b416b02a37d01c3f373a4bc9a78dc88649",
  ip: "127.0.0.1",
  listenAddr: "[::]:30303",
  name: "Geth/v1.13.15-stable-c5ba367e/linux-amd64/go1.21.9",
  ports: {
    discovery: 30303,
    listener: 30303
  },
  protocols: {
    eth: {
      config: {
        berlinBlock: 0,
        byzantiumBlock: 0,
        chainId: 377777,
        clique: {...},
        constantinopleBlock: 0,
        eip150Block: 0,
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0,
        istanbulBlock: 0,
        petersburgBlock: 0
      },
      difficulty: 757,
      genesis: "0x7a5bce2da2aa676a1dec6d2d2066570d2d5e11cb2eafe10208321e0508943bf9",
      head: "0x21ea0c49448e4ab5e9cf50a36824a11233d8cbd31d664538e9962a53e75cdb41",
      network: 377777
    },
    snap: {}
  }
}

# копироватьenodeинформация,并在другойузелиз Добавить в командную строку--bootnodesпараметр,Запустить другие узлы
$ docker составить -d узел1/узел2

На данный момент наша приватная цепочка успешно запущена и содержит 3 узла валидатора.

Пример операции

Язык кода:bash
копировать
# Подключиться к узлу node0
$ docker exec -it node0 geth attach
Welcome to the Geth JavaScript console!

instance: Geth/v1.13.15-stable-c5ba367e/linux-amd64/go1.21.9
coinbase: 0x553e33dce20bc261869ab5b8b7c3f86de3d1c06b
at block: 2 (Fri Oct 11 2024 02:28:40 GMT+0000 (UTC))
 datadir: /root/.ethereum
 modules: admin:1.0 clique:1.0 debug:1.0 engine:1.0 eth:1.0 miner:1.0 net:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d or type exit
# Запрос баланса указанного счета
> eth.getBalance("0x46443c74496dCf0EB77beb5D60c81Ad7Cd536Cf3")
1e+27
> eth.getBalance("0x28B188321dA923fCCf2678eA6E526a03BFb50adF")
1e+27

# Совершить переводные операции
> eth.sendTransaction({to:"0xC524757EBF87AB13B99F9bb667CcCD26B3682281",from:"0x553E33DcE20bc261869aB5b8B7c3F86De3d1C06B",value: 1e19})
"0x2b9c235858d04594e6e82b8129e030062eded42f9dd424bf1cf4bda7e1568aef"

# Запрос информации о транзакции
> eth.getTransaction("0x2b9c235858d04594e6e82b8129e030062eded42f9dd424bf1cf4bda7e1568aef")
{
  blockHash: "0xc4a33c3c5d7691302874e987f6caacd50fb469fece60f14fdc35bab794ecfb49",
  blockNumber: 38,
  chainId: "0x5c3b1",
  from: "0x553e33dce20bc261869ab5b8b7c3f86de3d1c06b",
  gas: 21000,
  gasPrice: 10,
  hash: "0x2b9c235858d04594e6e82b8129e030062eded42f9dd424bf1cf4bda7e1568aef",
  input: "0x",
  nonce: 0,
  r: "0x7b5eb4e97eed492bdc75768e3e7437a977e54e3180546669d057b7951f720809",
  s: "0x42ded8ee861cebb208bc3801345448620a88ce771101f1f688d4112118e99f5c",
  to: "0xc524757ebf87ab13b99f9bb667cccd26b3682281",
  transactionIndex: 0,
  type: "0x0",
  v: "0xb8785",
  value: 10000000000000000000
}
# Запрос информации о квитанции транзакции
> eth.getTransactionReceipt("0x2b9c235858d04594e6e82b8129e030062eded42f9dd424bf1cf4bda7e1568aef")
{
  blockHash: "0xc4a33c3c5d7691302874e987f6caacd50fb469fece60f14fdc35bab794ecfb49",
  blockNumber: 38,
  contractAddress: null,
  cumulativeGasUsed: 21000,
  effectiveGasPrice: 10,
  from: "0x553e33dce20bc261869ab5b8b7c3f86de3d1c06b",
  gasUsed: 21000,
  logs: [],
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  status: "0x1",
  to: "0xc524757ebf87ab13b99f9bb667cccd26b3682281",
  transactionHash: "0x2b9c235858d04594e6e82b8129e030062eded42f9dd424bf1cf4bda7e1568aef",
  transactionIndex: 0,
  type: "0x0"
}

# Запросить баланс 0xc524757ebf87ab13b99f9bb667cccd26b3682281 на узле node1
$ docker exec -it node1 geth attach
Welcome to the Geth JavaScript console!

instance: Geth/v1.13.15-stable-c5ba367e/linux-amd64/go1.21.9
coinbase: 0x553e33dce20bc261869ab5b8b7c3f86de3d1c06b
at block: 2 (Fri Oct 11 2024 02:28:40 GMT+0000 (UTC))
 datadir: /root/.ethereum
 modules: admin:1.0 clique:1.0 debug:1.0 engine:1.0 eth:1.0 miner:1.0 net:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d or type exit
# Запрос баланса указанного счета
> eth.getBalance("0xc524757ebf87ab13b99f9bb667cccd26b3682281")
8999999999933280560
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose