JS調用MetaMask調用啟動轉賬

1 、代碼必須跑在nginx下,否則沒有eth對象。

2、可以下載ganache來單跑個私服,然后安裝谷歌metamask瀏覽器插件來實驗

3、賬戶1:0xFA387e41FA471172cC729167EBD4862aA7020D91

? ? ?賬戶2:0x818DF62ff0bE3B28AE8be25e2e848E10138018B7

4、1000000000000000 為金額

<!doctype html>
<html class="no-js" lang="en">
<meta charset="UTF-8">
?
<head>
? <script src="https://cdn.jsdelivr.net/npm/const@1.0.0/src/const.min.js"></script>
? <script src="https://cdn.jsdelivr.net/npm/big.js@6.2.1/big.min.js"></script>
? <script src="https://cdn.jsdelivr.net/npm/web3@1.8.1/dist/web3.min.js"></script>
? <script type="text/javascript">
?
? ? send = async () =>{
? ? ? alert('test')
? ? ? const web3 = new Web3(window.ethereum);
? ? ? ethereum.enable()
? ? ? //獲取地址
? ? ? let accounts = await ?web3.eth.getAccounts();
? ? ? let account = accounts[0];
? ? ? console.log("地址:"+account)
? ? ? // 返回指定地址賬戶的余額
? ? ? let balance = await web3.eth.getBalance(account);
? ? ? console.log("賬戶余額:"+balance)
? ? ? let contractAbi = [這里輸入你要交互合約的ABI]
? ? ? let contractAddress = '這里輸入你自己要交互的0X開頭的合約地址'
? ? ? let myContract = new web3.eth.Contract(contractAbi, contractAddress, {
? ? ? ? from: account, // default from address
? ? ? ? gasLimit: 70000,
? ? ? ? gasPrice: 1000000000 // default gas price in wei, 10 gwei in this case
? ? ? });
? ? ? let a = 1000000
? ? ? let toAddress = document.getElementById("toAddress").value;
? ? ? console.log("轉賬地址:"+toAddress)
? ? ? myContract.methods.transfer(toAddress, 1 * a,).send({from: account}, function(error, transactionHash){
? ? ? ? if(!error) {
? ? ? ? ? console.log('transactionHash is' + transactionHash);
? ? ? ? } else {
? ? ? ? ? console.log(error);
? ? ? ? }
? ? ? });
? ? }

function login(){
? var web3Provider;
? ? if (window.ethereum) {
? ? ? ? web3Provider = window.ethereum;
? ? ? ? try {
? ? ? ? ? ? // 請求用戶授權
? ? ? ? ? ? ?window.ethereum.enable();
? ? ? ? } catch (error) {
? ? ? ? ? ? // 用戶不授權時
? ? ? ? ? ? console.error("User denied account access")
? ? ? ? }
? ? }
? ? web3js = new Web3(web3Provider);//web3js就是你需要的web3實例
?
? ? web3js.eth.getAccounts(function (error, result) {
? ? ? ? if (!error)
? ? ? ? ? ? console.log(result)//授權成功后result能正常獲取到賬號了
? ? });
}

?function sendTransaction(){
? console.log(web3js)

web3js.eth.sendTransaction({
? ? ? ? from: '0xFA387e41FA471172cC729167EBD4862aA7020D91',
? ? ? ? to: '0x818DF62ff0bE3B28AE8be25e2e848E10138018B7',
? ? ? ? value: '1000000000000000'
? ? }).on('transactionHash', function(hash){
? ? ? ? console.info(hash)
? ? })
? ? ? ? .on('receipt', function(receipt){
? ? ? ? console.info(receipt)
? ? ? ? })
? ? ? ? .on('confirmation', function(confirmationNumber, receipt){
? ? ? ? ? ? console.info(confirmationNumber)
? ? ? ? ? ? console.info(receipt)
? ? ? ? })
? ? ? ? .on('error', console.error);
?}
? </script>
</head>
?
<body>
<!-- 會導出一個全局的變量: ethers -->
<input type="text" id="toAddress" placeholder="to transfer address" ?value="0x615DD7fF9E4CE3eB832551C473a21F4AA4Bd727B"/>
<input type="button" οnclick="send()" value="有簽名轉賬(無需提供privateKey)需要metamask解鎖" ?/>


<input type="button" οnclick="login()" value="Login" ?/>


<input type="button" οnclick="sendTransaction()" value="Trade" ?/>
</body>
?
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386419.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓開發工程師面試題!春招我借這份PDF的復習思路,不吃透都對不起自己

寫在前面 身邊有不少去大廠面試的朋友&#xff0c;其中小金面試字節跳動的經歷很有意義&#xff0c;在這里分享給大家。小金是末流211計算機專業大三本科生&#xff0c;前幾天面試了字節跳動的廣州Android開發實習生。下面是他的面試經歷&#xff0c;還有一些他自己的經驗。 …

合算的日本料理

巨鹿路和那個茂名路路口的《和味》&#xff0c;有預訂的話才98一個人&#xff0c;味道不錯&#xff0c;樓上的桃子MM服務狠好&#xff0c;笑容狠甜。那里的東西味道還是狠正宗的&#xff0c;除了一個色拉不對。那里的清酒和梅酒都不錯&#xff0c;尤其梅酒。生牛肉雖然沒有大漁…

安卓開發必須會的技能!淺談Android消息機制原理,威力加強版

目錄 想要成為一名優秀的Android開發&#xff0c;你需要一份完備的知識體系&#xff0c;在這里&#xff0c;讓我們一起成長為自己所想的那樣。 PagerAdapter 介紹ViwePager 緩存策略ViewPager 布局處理ViewPager 事件處理相關內容 Android 基礎 1.Activity 1、 什么是 Activi…

NuGet 無法連接到遠程服務器-解決方法(轉)

原地址&#xff1a; http://www.lixin.me/blog/2012/03/01/29362 今天打開NuGet的Manage NuGet Packages&#xff0c;顯示“無法連接到遠程服務器”。打開Setting-》Package Manager-》Package Sources。看到里面有一個源&#xff1a;https://go.microsoft.com/fwlink/?LinkID…

安卓開發面試書籍,全世界都在問Android開發涼了嗎?建議收藏

前言 本想今年辭掉工作大干一場&#xff0c;沒想到碰到疫情&#xff0c;家里蹲了3個月…&#xff0c;還好字節能給一次機會。前陣子字節跳動的提前批開始了&#xff0c;看宣傳是說有海量HC&#xff0c;機會多多&#xff0c;本著漲漲面經的心理&#xff0c;然后就投遞了一下杭州…

杭州集訓Day5

下面是Day5的題目&#xff01;&#xff08;其實都咕了好幾天了 1007040210. T1 皇后 XY 的疑難 (1s 512MB) 1.1 題目描述有一個n*n的王國城堡地圖上&#xff0c;皇后XY喜歡看騎士之間的戰斗&#xff0c;于是他準備布置m個騎士&#xff0c;其中每一個騎士都可以向8個方向&#x…

安卓開發面試書籍,每個程序員都必須掌握的8種數據結構!面試必會

前言 本篇文章主要記錄分享我的面試準備過程。 很多朋友問我為什么離職 關于離職原因&#xff0c;馬云有一句經典的話“要么錢沒給到位&#xff0c;要么心委屈了”&#xff0c;想必大家耳熟能詳了&#xff0c;我這里再細說一下我個人離職原因&#xff1a; 工資倒掛&#xf…

使用thinkPHP做注冊程序的實例

登錄界面&#xff1a; 數據庫和數據表的結構 具體的操作步驟如下&#xff1a; 第一步&#xff1a;入口文件index.php內容 (此文件基本是屬于固定的格式&#xff09; <?phpdefine(THINK_PATH,./ThinkPHP/);define(APP_NAME,MyApp);define(APP_PAHT,./MyApp/);require_once T…

安卓開發面試技能介紹,來一份全面的面試寶典練練手,不吃透都對不起自己

前言 網上有很多對程序員簡歷的一些指導&#xff0c;這里就不重述&#xff0c;大家可以搜下網上其他大神的總結&#xff0c;結合自身情況修改下。我有幾點建議&#xff1a; 1.盡量不要花哨&#xff0c;程序員和設計師或者產品運營還不一樣&#xff0c;我們的簡歷成功與否決定…

上交所行情文件導入數據庫

事情的起因很簡單&#xff0c;需要將股票收盤行情導入數據庫&#xff0c;因為科創板交易時間延長&#xff0c;需要將原有的程序進行改造&#xff0c;眾所周知&#xff0c;程序員永遠是不夠用的&#xff0c;只能自己解決這個問題。 方式是用定時器調用shell腳本。 上交所的mktdt…

安卓開發面試題及答案,一次嗶哩嗶哩面試經歷,年薪50W

沒有穩定的工作&#xff0c;只有穩定的能力。 又到了萬物復蘇的季節&#xff0c;在程序猿這個行當里&#xff0c;作為 Android 開發出生的&#xff0c;在經歷了八年的脫發生涯后&#xff0c;有了越來越多的想法和感觸 趨勢 隨著各類移動跨平臺的興起&#xff0c;在 ReactNati…

Intent 簡單用法

1.Intent有什么用&#xff1f; Android設計理念是鼓勵減少組件間的耦合&#xff0c;因此Android提供了Intent (意圖) &#xff0c;Intent是一種消息傳遞機制&#xff0c;可以在程序內使用&#xff0c;也可以在程序間使用&#xff0c;主要用于啟動“Activity”“Service”和“廣…

安卓開發面試題!帶著問題深入學習Handler,進階學習資料!

進大廠本來就很難了&#xff0c;不過做足了準備&#xff0c;你會發現很多問題都迎刃而解了&#xff0c;當然有時候運氣也占了一部分&#xff0c;除了運氣以外&#xff0c;當然與我自身的努力也是分不開的。運氣也是實力的一部分&#xff0c;畢竟天助自助者~ 每次到年底做總結的…

VueJS教程3

目錄 13、Vue實例 13.1 動態組件&#xff08;Tab切換、簡化版留言板&#xff09;13.2 使用Vue開發TodoList14、Vue CLI14.1 使用vue-cli開發TodoList接著VueJS教程2。 13、Vue實例 13.1 動態組件&#xff08;Tab切換、簡化版留言板&#xff09; 參考&#xff1a;https://vuejs.…

春招我借這份PDF的復習思路,論程序員成長的正確姿勢

一. 開發背景 想要成為一名優秀的Android開發&#xff0c;你需要一份完備的知識體系&#xff0c;在這里&#xff0c;讓我們一起成長為自己所想的那樣。 面試總結 面試大廠一定要做好充分的準備&#xff0c;沒有準備就去面試完全是去當炮灰的&#xff0c;更是對自己的不負責。再…

T-SQL語句學習(三)

這部分介紹下視圖、索引技術。 1、視圖&#xff1a;是從一個或幾個基本表&#xff08;或視圖&#xff09;導出表。視圖與基本表不同&#xff0c;是一個虛表。 當基本表中的數據發生變化時&#xff0c;從視圖中查詢出來的數據也會隨之改變。 1.1 定義視圖 a、創建視圖的語法要求…

普通二本的辛酸Android面試之路,滿滿干貨指導

一、自我介紹 應該算是起點比較高吧&#xff01;985大學畢業后面一直在國外讀研。之前準備面試微軟但是可能經驗不夠&#xff0c;沒有通過。經過朋友介紹我準備回國&#xff0c;積累一些開發經驗。于是我面試了國內大廠BATJ&#xff0c;還有一些其他比較知名的公司&#xff0c…

python-3.8.0 新特性之賦值表達式

【python-3.8.0 新特性之賦值表達式】 賦值表達式的語法是這樣的“ name : expression ”&#xff0c;形式上看和賦值語句 “ ” 差不多&#xff0c;就作用上來看也雷同。也就是說 “:” 不是必不可少的&#xff0c;它只是一個錦上添花的新語法。 【1、例子】 假設我們要對列表…

普通二本的辛酸Android面試之路,算法太TM重要了

前言 編程是一個江湖&#xff0c;江湖之大&#xff0c;魚龍混雜&#xff0c;一部分江湖人士乃蝦兵蟹將&#xff0c;一不小心就被一箭射死&#xff0c;我們稱之為“碼農”&#xff0c;這些人事江湖的重要組成部分&#xff0c;他們承擔著堆砌代碼&#xff0c;實現功能設計的使命…

SQL常用日期處理函數(轉)

/**datepart()函數的使用 * datepart()函數可以方便的取到時期中的各個部分*如日期&#xff1a;2006-07--02 18&#xff1a;15&#xff1a;36.513* yy:取年 2006* mm:取月 7* dd:取月中的天 2* dy:取年中的天 183* wk:取…