亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

基于Mixin Network的Go語言比特幣開發(fā)教程 : 用 Mixin Messenger 機(jī)器

Kaede / 3725人閱讀

摘要:基于的語言比特幣開發(fā)教程用機(jī)器人接受和發(fā)送比特幣在上一篇教程中我們創(chuàng)建了自動回復(fù)消息的機(jī)器人當(dāng)用戶發(fā)送消息時,機(jī)器人會自動回復(fù)同一條消息按本篇教程后學(xué)習(xí)后完成后,你的機(jī)器人將會接受用戶發(fā)送過來的加密貨幣,然后立即轉(zhuǎn)回用戶。

基于Mixin Network的Go語言比特幣開發(fā)教程 : 用 Mixin Messenger 機(jī)器人接受和發(fā)送比特幣


在 上一篇教程中, 我們創(chuàng)建了自動回復(fù)消息的機(jī)器人,當(dāng)用戶發(fā)送消息"Hello,World!"時,機(jī)器人會自動回復(fù)同一條消息!

按本篇教程后學(xué)習(xí)后完成后,你的機(jī)器人將會接受用戶發(fā)送過來的加密貨幣,然后立即轉(zhuǎn)回用戶。
完整代碼如下:

main.go
fpackage main

import (
    "context"
    "encoding/base64"
    "encoding/json"
    "log"
    "github.com/MooooonStar/mixin-sdk-go/messenger"
    mixin "github.com/MooooonStar/mixin-sdk-go/network"
)

type Listener struct {
    *messenger.Messenger
}

// interface to implement if you want to handle the message
func (l *Listener) OnMessage(ctx context.Context, msg messenger.MessageView, userId string) error {
    data, err := base64.StdEncoding.DecodeString(msg.Data)
    if err != nil {
        return err
    }
    if msg.Category == "SYSTEM_ACCOUNT_SNAPSHOT" {
        var transfer messenger.TransferView
        if err := json.Unmarshal(data, &transfer); err != nil {
            return err
        }
        log.Println("I got a coin: ", transfer.Amount)
        mixin.Transfer(msg.UserId,transfer.Amount,transfer.AssetId,"",messenger.UuidNewV4().String(),
                                    PinCode,PinToken,UserId,SessionId,PrivateKey)
        return nil
        // return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data))
    } else if msg.Category == "PLAIN_TEXT" {
        log.Printf("I got a message, it said: %s", string(data))
        if string(data) == "g" {
            payLinkEOS := "https://mixin.one/pay?recipient=" +
                             msg.UserId  + "&asset=" +
                             "6cfe566e-4aad-470b-8c9a-2fd35b49c68d"   +
                             "&amount=" + "0.1" +
                             "&trace="  + messenger.UuidNewV4().String() +
                             "&memo="
          payLinkBTC := "https://mixin.one/pay?recipient=" +
                             msg.UserId  + "&asset=" +
                             "c6d0c728-2624-429b-8e0d-d9d19b6592fa"   +
                             "&amount=" + "0.001" +
                             "&trace="  + messenger.UuidNewV4().String() +
                             "&memo="
          log.Println(payLinkBTC)
            BtnEOS := messenger.Button{Label: "Pay EOS 0.1", Color: "#0080FF", Action: payLinkEOS}
            BtnBTC := messenger.Button{Label: "Pay BTC 0.0001", Color: "#00FF80", Action: payLinkBTC}
            if err := l.SendAppButtons(ctx, msg.ConversationId, msg.UserId, BtnEOS, BtnBTC); err != nil {
                return err
            }
            return nil
        } else if string(data) == "a"  {
            card := messenger.AppCard{Title: "Pay BTC 0.0001", Description: "topay", Action: "http://www.google.cn",
                IconUrl: "https://images.mixin.one/HvYGJsV5TGeZ-X9Ek3FEQohQZ3fE9LBEBGcOcn4c4BNHovP4fW4YB97Dg5LcXoQ1hUjMEgjbl1DPlKg1TW7kK6XP=s128"}
            if err := l.SendAppCard(ctx, msg.ConversationId, msg.UserId, card); err != nil {
                return err
            }
            return nil
        } else if string(data) == "r" {
            mixin.Transfer(msg.UserId,"0.0001","c6d0c728-2624-429b-8e0d-d9d19b6592fa","",messenger.UuidNewV4().String(),
                                        PinCode,PinToken,UserId,SessionId,PrivateKey)
            return nil
        } else { return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data)) }
    } else {
        log.Println("Unknown message!", msg.Category)
        return err
    }
}
const (
    UserId    = "21042518-85c7-4903-bb19-f311813d1f51"
    PinCode   = "911424"
    SessionId = "4267b63d-3daa-449e-bc13-970aa0357776"
    PinToken  = "gUUxpm3fPRVkKZNwA/gk10SHHDtR8LmxO+N6KbsZ/jymmwwVitUHKgLbk1NISdN8jBvsYJgF/5hbkxNnCJER5XAZ0Y35gsAxBOgcFN8otsV6F0FAm5TnWN8YYCqeFnXYJnqmI30IXJTAgMhliLj7iZsvyY/3htaHUUuN5pQ5F5s="
    //please delele the blank of PrivateKey the before each line
    PrivateKey = `-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCDXiWJRLe9BzPtXmcVe6acaFTY9Ogb4Hc2VHFjKFsp7QRVCytx
3KC/LRojTFViwwExaANTZQ6ectwpAxIvzeYeHDZCXCh6JRFIYK/ZuREmYPcPQEWD
s92Tv/4XTAdTH8l9UJ4VQY4zwqYMak237N9xEvowT0eR8lpeJG0jAjN97QIDAQAB
AoGADvORLB1hGCeQtmxvKRfIr7aEKak+HaYfi1RzD0kRjyUFwDQkPrJQrVGRzwCq
GzJ8mUXwUvaGgmwqOJS75ir2DL8KPz7UfgQnSsHDUwKqUzULgW6nd/3OdDTYWWaN
cDjbkEpsVchOpcdkywvZhhyGXszpM20Vr8emlBcFUOTfpTUCQQDVVjkeMcpRsImV
U3tPYyiuqADhBTcgPBb+Ownk/87jyKF1CZOPvJAebNmpfJP0RMxUVvT4B9/U/yxZ
WNLhLtCXAkEAnaOEuefUxGdE8/55dUTEb7xrr22mNqykJaax3zFK+hSFBrM3gUY5
fEETtHnl4gEdX4jCPybRVc1JSFY/GWoyGwJBAKoLti95JHkErEXYavuWYEEHLNwv
mgcZnoI6cOKVfEVYEEoHvhTeCkoWHVDZOd2EURIQ1eY18JYIZ0M4Z66R8DUCQCsK
iKTR3dA6eiM8qiEQw6nWgniFscpf3PnCx/Iu3U/m5mNr743GhM+eXSj7136b209I
YfEoQiPxRz8O/W+NBV0CQQDVPxqJlFD34MC9aQN42l3NV1hDsl1+nSkWkXSyhhNR
MpobtV1a7IgJGyt5HxBzgNlBNOayICRf0rRjvCdw6aTP
-----END RSA PRIVATE KEY-----`
)


func main() {
    ctx := context.Background()
    m := messenger.NewMessenger(UserId, SessionId, PrivateKey)
    l := &Listener{m}
    go m.Run(ctx, l)
    select {}
}
你好, 比特幣!

在項目目錄下編譯并執(zhí)行

cd mixin_labs-go-bot
go build
./mixin_labs-go-bot

開發(fā)者可以通過消息面板,給機(jī)器人轉(zhuǎn)比特幣,當(dāng)機(jī)器人收到比特幣后,馬上返還給用戶!

事實上,用戶可以發(fā)送任意的幣種給機(jī)器人,它都能馬上返還!

源代碼解釋
if msg.Category == "SYSTEM_ACCOUNT_SNAPSHOT" {
  var transfer messenger.TransferView
  if err := json.Unmarshal(data, &transfer); err != nil {
    return err
  }
  log.Println("I got a coin: ", transfer.Amount)
  mixin.Transfer(msg.UserId,transfer.Amount,transfer.AssetId,"",messenger.UuidNewV4().String(),
                PinCode,PinToken,UserId,SessionId,PrivateKey)
  return nil
  // return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data))
}

調(diào)用SDK的 mixin.Transfer 將幣返還用戶!

高級用法 APP_BUTTON_GROUP

在一些應(yīng)用場景,比如:有一個交易所想提供換幣服務(wù),將比特幣換成以太坊,EOS,比特幣現(xiàn)金等,
你想顯示給用戶一組按鈕,它們分別代表不同的幣與不同的數(shù)量,APP_BUTTON_GROUP可以幫你做到這一點.

payLinkEOS := "https://mixin.one/pay?recipient=" +
         msg.UserId  + "&asset=" +
         "6cfe566e-4aad-470b-8c9a-2fd35b49c68d"   +
         "&amount=" + "0.1" +
         "&trace="  + messenger.UuidNewV4().String() +
         "&memo="
payLinkBTC := "https://mixin.one/pay?recipient=" +
         msg.UserId  + "&asset=" +
         "c6d0c728-2624-429b-8e0d-d9d19b6592fa"   +
         "&amount=" + "0.001" +
         "&trace="  + messenger.UuidNewV4().String() +
         "&memo="
log.Println(payLinkBTC)
BtnEOS := messenger.Button{Label: "Pay EOS 0.1", Color: "#0080FF", Action: payLinkEOS}
BtnBTC := messenger.Button{Label: "Pay BTC 0.001", Color: "#00FF80", Action: payLinkBTC}
if err := l.SendAppButtons(ctx, msg.ConversationId, msg.UserId, BtnEOS, BtnBTC); err != nil {
  return err
}

這里演示給用戶BTC與EOS兩種,你還可以增加更多的按鈕.

APP_CARD

如果你覺得一組按鈕太單調(diào)了,可以試一下APP_CARD,它提供一個圖標(biāo)的鏈接

card := messenger.AppCard{Title: "CNB", Description: "Chui Niu Bi", Action: "http://www.google.cn",
  IconUrl: "https://images.mixin.one/0sQY63dDMkWTURkJVjowWY6Le4ICjAFuu3ANVyZA4uI3UdkbuOT5fjJUT82ArNYmZvVcxDXyNjxoOv0TAYbQTNKS=s128"}
if err := l.SendAppCard(ctx, msg.ConversationId, msg.UserId, card); err != nil {
  return err
}

Full source code

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/24595.html

相關(guān)文章

  • 基于Mixin NetworkGo語言比特開發(fā)教程 : 創(chuàng)建一個比特錢包

    摘要:帳號之間的比特幣支付通過,我們可以先轉(zhuǎn)比特幣給機(jī)器人,然后讓機(jī)器人轉(zhuǎn)幣給新用戶。下面的代碼,可以讀取比特幣錢包余額讀取的余額,來確認(rèn)比特幣是不是轉(zhuǎn)成功了注意是新用戶的。 showImg(https://github.com/wenewzhang/mixin_labs-go-bot/raw/master/Bitcoin_go.jpg);我們已經(jīng)創(chuàng)建過一個回復(fù)消息的機(jī)器人和一個能自動支付比...

    legendaryedu 評論0 收藏0
  • Go語言買賣比特

    摘要:比特幣的到帳時間是個區(qū)塊的高度,約分鐘。請注意,比特幣與的地址是一樣的。 showImg(https://segmentfault.com/img/remote/1460000018378805?w=1200&h=659); 方案一: 通過ExinCore API進(jìn)行幣幣交易 Exincore 提供了基于Mixin Network的幣幣交易API. 你可以支付USDT給ExinCore...

    AlphaWallet 評論0 收藏0
  • 一塊聽聽:Mixin 主網(wǎng)上線語音直播文字稿

    摘要:本文是在一塊聽聽上的語音直播的文字精簡版。主網(wǎng)上線的細(xì)節(jié)主網(wǎng)在北京時間年月日早上點正式完成了上線。目前主網(wǎng)上線工作已經(jīng)完成,正在把測試網(wǎng)上的資產(chǎn)遷移到主網(wǎng)上。主網(wǎng)上線意味著什么真的是一個去中心化的區(qū)塊鏈項目了。主網(wǎng)上線對來說只是一個起點。 本文是在一塊聽聽上的語音直播的文字精簡版。 Mixin Network的成績,主網(wǎng)和展望 大家好,我是Mixin Network 的李林。非常高興能...

    nanchen2251 評論0 收藏0
  • 戶只有一部手機(jī),怎么保護(hù)私鑰—— mixin如何實現(xiàn)資產(chǎn)安全

    摘要:比特幣白皮書都發(fā)布了年,這一種資產(chǎn)保護(hù)模式一直延續(xù)到現(xiàn)在。如果考慮到一個人除了比特幣以外如果還擁有其他數(shù)字資產(chǎn),一個資產(chǎn)一個私鑰,那么私鑰的管理難度就更大了。以用戶在網(wǎng)絡(luò)存儲比特幣為例。用戶存入的比特幣只有經(jīng)過節(jié)點批準(zhǔn)才能提走。 **Mixin開發(fā)者大賽正在進(jìn)行中,javascript, python, ruby, go程序員都可以來贏30萬大獎。 大賽地址活動地址 mixin.one...

    molyzzx 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<