首页 > 其他分享 >ton jetton 发送字符串的方式

ton jetton 发送字符串的方式

时间:2024-11-07 16:32:02浏览次数:1  
标签:return err nil wallet jetton ton 字符串 ForwardPayloadBoc

func (t TonApiServiceImpl) TransferToken(ctx context.Context, tokenContractAddr string, toAddr string, amount big.Int) (string, error) {
	recipientAddr := tongo.MustParseAddress(toAddr)

	w, err := wallet.DefaultWalletFromSeed(t.cfg.LotteryOwnerSeed, t.lclient)
	if err != nil {
		t.logger.Error(fmt.Sprintf("Unable to create wallet: err:%v LotteryOwnerSeed:%s", err, t.cfg.LotteryOwnerSeed))
		return "", err
	}
	master := tongo.MustParseAccountID(tokenContractAddr)
	j := jetton.New(master, t.lclient)
	b, err := j.GetBalance(ctx, w.GetAddress())
	if err != nil || b == nil {
		t.logger.Error(fmt.Sprintf("Unable to get jetton wallet balance: err:%v LotteryOwnerSeed:%s", err, t.cfg.LotteryOwnerSeed))
		return "", err
	}

	if amount.Cmp(b) == 1 {
		return "", fmt.Errorf("%v jettons needed, but only %v on balance", amount, b)
	}
	owner := w.GetAddress()

	ForwardPayloadBoc := boc.NewCell()
	err = tlb.Marshal(ForwardPayloadBoc, wallet.TextComment("ForwardPayload Round:1"))
	if err != nil {
		return "", err
	}

	jettonTransfer := jetton.TransferMessage{
		Jetton:              j,
		Sender:              w.GetAddress(),
		JettonAmount:        &amount,
		Destination:         recipientAddr.ID,
		ResponseDestination: &owner,
		AttachedTon:         50_000_000,
		ForwardTonAmount:    1,
		ForwardPayload:      ForwardPayloadBoc,
		CustomPayload:       CustomPayloadBoc,
	}
	txId, err := w.SendV2(ctx, 0, jettonTransfer)
	if err != nil {
		t.logger.Error(fmt.Sprintf("Unable to send transfer message: %v", err))
	}
	return txId.Hex(), nil
}

这样就可以构造一个字符串了:

	ForwardPayloadBoc := boc.NewCell()
	err = tlb.Marshal(ForwardPayloadBoc, wallet.TextComment("ForwardPayload Round:1"))
	if err != nil {
		return "", err
	}

然后tonviewer就可以看到payload的显示了:

标签:return,err,nil,wallet,jetton,ton,字符串,ForwardPayloadBoc
From: https://www.cnblogs.com/zhanchenjin/p/18533077

相关文章

  • HintonLeCunBengio:AI算法的奠基者
    深度学习、神经网络、卷积神经网络、循环神经网络、GeoffreyHinton、YannLeCun、YoshuaBengio1.背景介绍人工智能(AI)的蓬勃发展,离不开深度学习的革命性突破。深度学习,作为机器学习的一个分支,通过构建多层神经网络来模拟人类大脑的学习机制,取得了令人瞩目的成就。而推......
  • python统计字符串中单个字符出现次数
    str='skdaskerkjsalkj'list=[]foriinrange(len(str)):list.append(str[i])list2=sorted(list)print(list2)foriinrange(len(list)):flag2=Falsest=list2[i]k=i-1#是不是第一个whilek>=0:if(li......
  • MySQL 字符串索引和前缀索引
    前缀索引创建前缀索引altertabletaddindexidx_email(email);altertabletaddindexidx_email(email(6));使用前缀索引,定义好长度,可以做到即节省空间,又不用额外增加太多查询成本。区分度建立索引时,区分度(不重复的值)越高越好。selectcount(distanceemail)fromt......
  • python之base64与字符串互相转化
    importbase64defstring_to_base64(input_string:str)->str:"""将字符串转换为Base64编码。参数:input_string(str):要转换的字符串。返回:str:Base64编码后的字符串。"""#将字符串转换为字节byte_data=input_string......
  • 讲解Java字符串
    字符串1.字符串的创建(1)字面量创建(2)使用`new`关键字2.字符串的不可变性3.字符串池(StringPool)4.String类的常用方法(1)`length()`(2)`charAt(intindex)`(3)`substring(intstart)`和`substring(intstart,intend)`(4)`toUpperCase()`和`toLowerC......
  • WPF RadioButton控件 一定要选一个
    WPFRadioButton控件一定要选一个RadioButton 控件用于提供多个选项供用户选择,其中只能选择一个。RadioButton 通常用于一组互斥的选项,如性别选择或支付方式选择,如判断题选择选项。<StackPanel><Label>请选择你的性别:</Label><Radi......
  • # JSON字符串处理 ##
    JSON字符串处理jacksonJackson是一个用于处理JSON数据的Java库,它提供了将Java对象转换为JSON格式和将JSON格式转换为Java对象的功能。添加依赖:如果你使用Maven,可以在pom.xml中添加以下依赖:<dependency><groupId>com.fasterxml.jackson.core</groupId><artif......
  • WPF Button控件 这里可以点一下
    WPFButton控件这里可以点一下 button表示一个Windows按钮控件,该控件对Click事件做出反应。可以点一下button,执行程序操作,如:显示对话框,更改显示内容。button的content属性表示按钮上显示的文字。<StackPanel><!--一个按钮控件,太小了,根本就看不到-->......
  • 【字节青训营--还原原始字符串(中)】
    问题描述给定一个字符串 F,这个字符串是通过对某个初始字符串 S 执行若干次以下操作得到的:选择一个整数 K(其中 0≤K<∣S∣0≤K<∣S∣,∣S| 表示字符串 S 的长度)将 S 从第 K个位置(从0开始计数)到末尾的子串追加到 S 的末尾,即:S=S+S[K:]输入格式输入为一个字符串 F......
  • ZYB 玩字符串
    Link。Sol好题!我不是DP高手吗,怎么这么简单的DP题没场切。考虑暴力枚举子串,显然最多有\(n\sqrtn\)个,这些子串一定包含答案。对于一个串\(t\)和原串\(s\),考虑\(s\)是否能用\(t\)拼出来。设\(t\)的长度为\(len\)。令\(f_{i,j}\)表示\(i\simj\)最后不能......