Разработка децентрализованных приложений Ethereum с помощью Golang (сериализация 1)

задняя часть GitHub блокчейн Эфириум

[TOC]

Личный профиль

HundredLee
С 2013 года он стремился быть на переднем крае разработки платформы для торговли цифровыми валютами, а в 2016 году он соприкоснулся с блокчейном и с тех пор встал на путь невозврата. В настоящее время разрабатывается новый высокоскоростной механизм подбора игроков.
Вейбо:Weibo.com/сотня Ли2…
Электронная почта: Hundred9411#gmail.com

Серийная подготовка

Сериал 1, знакомство с Ethereum, проверка баланса и т. д.
Серийный номер два, переводы go-ethereum из Ethereum, как подключить токены, как проверить баланс токенов и как вывести токены.
Третий выпуск, немного опыта и краткое изложение стыковки торговой платформы с Ethereum.

Эфириум — волшебная штука?

Энциклопедия Байду:

Эфириум (Эфириум) — это не учреждение, а базовая система, которая может реализовать смарт-контракты и открытый исходный код на блокчейне.С момента рождения Эфириума до мая 2017 года, всего за три с половиной года, в мире насчитывалось 200 человек. Появилось несколько приложений Ethereum. Ethereum — это платформа и язык программирования, которые позволяют разработчикам создавать и публиковать распределенные приложения следующего поколения. Ethereum можно использовать для программирования, децентрализации, защиты и торговли чем угодно: голосованием, доменными именами, финансовыми биржами, краудфандингом, корпоративным управлением, контрактами и большинством соглашений, интеллектуальной собственностью и интеллектуальными активами, которые выигрывают от аппаратной интеграции.

Установить гет-клиент

  • geth в настоящее время является наиболее широко используемым клиентом, который можно использовать для майнинга, создания частных сетей, управления учетными записями Ethereum и т. д.
  • Пользователи osx могут установить его напрямую через brew. конкретная ссылкаblog.CSDN.net/ET будет китайским/…
  • Если вы хотите скомпилировать и установить из исходного кода, обратитесь сюдаWooooooo.OP на .com/ в блоге cn очень in459/ я боюсь…
  • Конечно, официальный документ github readme также очень подробный, рекомендуется ознакомитьсяGitHub.com/ether EU M/go…
  • Способ установки здесь подробно описываться не будет, а информации в интернете много.

развивать

Подключиться к Эфириуму

  • Первый, более важный шагgo get https://github.com/ethereum/go-ethereum

  • Если вы успешно установили клиент geth на предыдущем шаге и включили функцию rpc, напримерhttp://127.0.0.1, то вы можете подключить rpc в golang.

  • Перейдите непосредственно к коду:


import (
    "github.com/ethereum/go-ethereum/accounts/abi/bind"
    "github.com/ethereum/go-ethereum/ethclient"
    "github.com/ethereum/go-ethereum/rpc"
)

func connectToRpc() (*ethclient.Client, error) {
    client, err := rpc.Dial("http://127.0.0.1")

    if err != nil {
        return nil, err
    }

    conn := ethclient.NewClient(client)
    return conn, nil
}

Запрос баланса Ethereum (eth)

  • При разработке приложений Ethereum часто необходимо получить баланс на счете.
  • Поскольку мы успешно подключились к клиенту Ethereum на предыдущем шаге, нам нужно только напрямую и просто вызвать интерфейс.

import (
    "context"
    "github.com/ethereum/go-ethereum/accounts/abi/bind"
    "github.com/ethereum/go-ethereum/common"
)

//特别注意,这里的address就是你要查询的以太坊余额的地址。一般是0xddddd 这样的形式
func GetBalance(address string) {

    client,err := connectToRpc()

    if err != nil {
        panic(err.Error())
    }

    balance, err := client.BalanceAt(context.TODO(),common.HexToAddress(address), nil)

}
  • Особое внимание: десятичное число Ethereum равно 18, тогда полученный баланс необходимо умножить на 10^-18, чтобы получить нормальное количество Ethereum.
  • То же самое и с другими токенами Эфириума, будут другие Decimals, но будут и соответствующие методы их получения, об этом можно не беспокоиться, это будет упомянуто в следующей сериализации.

  if err != nil {
        beego.Error(err.Error())
    } else {

       //这个就是地址中以太坊的余额
        balanceV := float64(balance.Int64()) * math.Pow(10, -18)
    }

конец

Пожертвования принимаются, независимо от того, насколько вы поддерживаете.

WechatIMG13
WechatIMG13