主頁 > 區塊鏈 > 代碼設定錢包(Tron)多簽

代碼設定錢包(Tron)多簽

2023-06-27 08:00:11 區塊鏈

經常有人問我多簽代碼怎么寫,官網有很多資料,都是稀里糊涂的沒有完整的例子,而且也沒有C#的例子,最近剛好有需求就自己動手寫了,

代碼

//封裝
private static async Task<dynamic> AccountPermissionUpdateAsync(string privateKey, string toAddress) {
    var record = TronServiceExtension.GetRecord();
    var transactionClient = record.TronClient?.GetTransaction();
    var account = new TronAccount(privateKey, TronNetwork.MainNet);

    var transactionExtention = await transactionClient?.CreateAccountPermissionUpdateTransactionAsync(account.Address, toAddress)!;

    var transactionSigned = transactionClient.GetTransactionSign(transactionExtention.Transaction, privateKey);
    var returnObj = await transactionClient.BroadcastTransactionAsync(transactionSigned);

    return new { Result = returnObj.Result, Message = returnObj.Message, TransactionId = transactionExtention.Transaction.GetTxid() };
}

//呼叫
var privateKey = ""; //這里設定需要被多簽的私鑰
var ownerAddress = ""; //這里設定控制地址

//注意被設定多簽的地址,最少需要 100TRX 余額
var result = await AccountPermissionUpdateAsync(privateKey, ownerAddress);
Console.WriteLine(JsonConvert.SerializeObject(result));

Github 原始碼

https://github.com/jared1106/Tron.Wallet.Net

//介面
Task<TransactionExtention> CreateAccountPermissionUpdateTransactionAsync(string fromAddress, string toAddress);

//實作
public async Task<TransactionExtention> CreateAccountPermissionUpdateTransactionAsync(string fromAddress, string toAddress) {
    var wallet = _walletClient.GetProtocol();

    var accountPermissionUpdateContract = new AccountPermissionUpdateContract {
        OwnerAddress = _walletClient.ParseAddress(fromAddress),
        Owner = new Permission() { PermissionName = "owner", Threshold = 1, Type = Permission.Types.PermissionType.Owner }
    };
    accountPermissionUpdateContract.Owner.Keys.Add(new Key { Address = _walletClient.ParseAddress(toAddress), Weight = 1 });

    var activePermission = new Permission { 
      PermissionName = "active", 
      Threshold = 1, //授權需要的權重數量
      Type = Permission.Types.PermissionType.Active, 
      // 7fff1fc0037e0000000000000000000000000000000000000000000000000000  包含了除更新權限以外的全部權限,Owner 默認都有,不需要設定
      Operations = ByteString.CopyFrom("7fff1fc0037e0000000000000000000000000000000000000000000000000000".HexToByteArray()) 
    };
    var activeKey = new Key { 
      Address = _walletClient.ParseAddress(toAddress),  //授予地址
      Weight = 1 //權重值
    };
    activePermission.Keys.Add(activeKey);

    var permissions = new Google.Protobuf.Collections.RepeatedField<Permission> {
        activePermission
    };

    accountPermissionUpdateContract.Actives.Add(permissions);

    return await wallet.AccountPermissionUpdateAsync(accountPermissionUpdateContract);
}


引入依賴庫

PM> Install-Package Tron.Wallet.Net

設定波場主網RPC資訊(配置)

namespace Console1 {
    using Tron.Wallet.Net;

    public record TronRecord(IServiceProvider ServiceProvider, ITronClient TronClient, IOptions<TronNetOptions> Options);

    public static class TronServiceExtension {
        private static IServiceProvider AddTronNet() {
            IServiceCollection services = new ServiceCollection();
            services.AddTronNet(x => {
                x.Network = TronNetwork.MainNet;
                x.Channel = new GrpcChannelOption { Host = "grpc.trongrid.io", Port = 50051 };
                x.SolidityChannel = new GrpcChannelOption { Host = "grpc.trongrid.io", Port = 50052 };
                x.ApiKey = "80a8b20f-a917-43a9-a2f1-809fe6eec0d6";
            });
            services.AddLogging();
            return services.BuildServiceProvider();
        }

        public static TronRecord GetRecord() {
            var provider = AddTronNet();
            var client = provider.GetService<ITronClient>();
            var options = provider.GetService<IOptions<TronNetOptions>>();

            return new TronRecord(provider, client, options);
        }
    }
}

參考

https://cn.developers.tron.network/reference/accountpermissionupdate

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/556029.html

標籤:區塊鏈

上一篇:區塊鏈基礎之密碼學及安全技術

下一篇:返回列表

標籤雲
其他(161650) Python(38254) JavaScript(25514) Java(18265) C(15238) 區塊鏈(8273) C#(7972) AI(7469) 爪哇(7425) MySQL(7269) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4606) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2437) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1985) HtmlCss(1972) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • 代碼設定錢包(Tron)多簽

    經常有人問我多簽代碼怎么寫,官網有很多資料,都是稀里糊涂的沒有完整的例子,而且也沒有C#的例子,最近剛好有需求就自己動手寫了。 ### 代碼 ```C# //封裝 private static async Task AccountPermissionUpdateAsync(string privat ......

    uj5u.com 2023-06-27 08:00:11 more
  • 區塊鏈基礎之密碼學及安全技術

    ### 1.2 密碼學及安全技術 ![i區塊鏈中的密碼學與安全技術](https://upload-images.jianshu.io/upload_images/21415382-a06021e50cc209bf.png?imageMogr2/auto-orient/strip%7CimageVi ......

    uj5u.com 2023-06-25 07:48:30 more
  • web3產品介紹:mask將Web3的隱私和優勢引入像Facebook和Twitter這

    介紹: Mask Network是一個開源的瀏覽器擴展,將Web3的隱私和優勢引入像Facebook和Twitter這樣的社交媒體平臺。它是一個功能強大的工具,允許用戶在社交媒體上享受區塊鏈的隱私保護和其他Web3的好處。讓我們一起探索Mask Network的主要特點和為用戶帶來的益處。 主要特點 ......

    uj5u.com 2023-06-16 07:51:36 more
  • web3 產品介紹:Decentraland:開啟你的虛擬現實區塊鏈游戲之旅

    Decentraland(https://decentraland.org/)是一款基于區塊鏈技術的虛擬現實游戲,它將去中心化的概念引入游戲世界,為玩家提供了一個創造、互動和探索的虛擬空間。在Decentraland中,你可以擁有自己的虛擬土地,創建和交易虛擬資產,并與其他玩家進行社互動動。讓我們一 ......

    uj5u.com 2023-06-06 09:23:28 more
  • windows 以太坊開發框架Truffle環境搭建

    **一、安裝DApp開發環境**1. * 1.1 安裝Node.js 我們使用官方長期支持的8.10.0LTS版本,下載64位包裝包。 下載后直接安裝即可。安裝完畢,打開一個控制臺視窗,可以使用node了: ``` C:\Users\Administrator> node -v v8.10.0 `` ......

    uj5u.com 2023-06-02 08:31:32 more
  • web3 產品介紹:Mirror.xyz是一個創新的去中心化出版平臺

    Mirror.xyz是一個創新的去中心化出版平臺,它使作者能夠創建、發布和管理自己的內容,并與讀者建立直接的經濟聯系。在本文中,我們將介紹Mirror.xyz的主要特點、功能以及如何使用它來發布和消費內容。 一、Mirror.xyz的特點 去中心化出版:Mirror.xyz采用去中心化的方式,將權力 ......

    uj5u.com 2023-05-24 08:26:16 more
  • web3 產品介紹 etherscan 區塊鏈瀏覽器 將抽象的資料和理論可視

    Etherscan是一個廣泛使用的以太坊區塊鏈瀏覽器和分析平臺,它為用戶提供了全面的區塊鏈資料查詢和交易分析功能。在本文中,我們將介紹Etherscan的主要特點和功能,以及如何使用它來瀏覽以太坊區塊鏈。 一、Etherscan的特點 區塊鏈瀏覽器:Etherscan提供了完整的以太坊區塊鏈瀏覽器, ......

    uj5u.com 2023-05-16 12:04:37 more
  • Remix-Ethereum IDE連接本地詳解

    Remix-Ethereum IDE連接本地 ? 由于在學習和做專案的程序中,很多人用的都是網頁版的Remix,而在網頁中的代碼是存盤在快取中的,在使用程序中容易丟失,所以將Remix與本地檔案連接起來,能夠有效防止代碼丟失。 ? 在安裝remix之前,需要先安裝node。 1.安裝Remix ? ......

    uj5u.com 2023-05-16 12:04:26 more
  • Hardhat 開發框架 - Solidity開發教程連載

    Decert.me 要連載教程了, 《Solidity 開發教程》 力求系統、深入的介紹 Solidity 開發, 同時這是一套互動式教程,你可以實時的修改教程里的合約代碼并運行。 本教程來自貢獻者 @Tiny熊,讓我們正式開始學習吧。 如果你已經是 Hardhat 的使用者,可以直接跳到文末,參與 ......

    uj5u.com 2023-05-12 08:33:27 more
  • 波場(Tron) 網頁版錢包開源

    之前做區塊鏈專案太難了,很多組件、工具沒有開源專案,需要自己寫很麻煩。 我整理了幾個自己給公司開發專案的時候,分離出來的幾個工具,已經上傳到 Gihub 了,感覺瀏覽量還行,在這里給園子里的朋友分享下。 1、本地網頁版本錢包: 為了方便管理專案里所有用戶的私鑰,用一套助記詞派生出所有私鑰,這樣每個用 ......

    uj5u.com 2023-05-11 07:39:44 more