雖然這篇使用者設定檔無法複製鄉民發文沒有被收入到精華區:在使用者設定檔無法複製這個話題中,我們另外找到其它相關的精選爆讚文章
在 使用者設定檔無法複製產品中有5篇Facebook貼文,粉絲數超過7,351的網紅3c老實說 / 30天評測心得連載 / 投幣式編輯人生 / 氣象部落客勞倫斯,也在其Facebook貼文中提到, 感覺這次 iOS 15 搶了不少 Google 的飯碗(原況文字、地圖擴增實境),而且 iPhone 6s 也能升級,佛心。 - iOS 15 帶來保持聯繫的新方式,以及幫助使用者專注、探索的強大更新,還能透過智慧功能用 iPhone 完成更多事。FaceTime 更新提供更自然的視訊通話;「專...
同時也有30部Youtube影片,追蹤數超過2萬的網紅呂聰賢,也在其Youtube影片中提到,1.建立51(1)白板,並設定共用給五年1班(1) 2.再建立副本為51(2) ,並設定共用給五年1班(2)… 呂聰賢老師【Meet白板操作】研習筆記 學校帳號開啟會議後,目前只有「白板」和「錄製」功能。 白板 功能與 Google Meet整合度沒有非常高 白板功能要開啟給學生使用,學要...
-
使用者設定檔無法複製 在 呂聰賢 Youtube 的精選貼文
2021-06-23 13:56:361.建立51(1)白板,並設定共用給五年1班(1)
2.再建立副本為51(2) ,並設定共用給五年1班(2)…
呂聰賢老師【Meet白板操作】研習筆記
學校帳號開啟會議後,目前只有「白板」和「錄製」功能。
白板 功能與 Google Meet整合度沒有非常高
白板功能要開啟給學生使用,學要先行設定。
預設為限制:只有已取得存取權的使用者可以透過這個連開啟(與新北市政府教育局共用)
→按一下「取得連結」
→限制→改為「知道連結的使用者(任何知道這個連結的網際網路使用者都能編輯)」
→檢視者→改為「編輯者」
【教師提問】
Q.有學生無法進入白板介面?
A.使用手機必須先裝設白板的APP「jamboard app」
【白板應用】
(1)分頁
不同組別可在不同頁面中進行操作
如第一組在第一頁、第二組在第二頁
一開始就先設立好分頁。
(2)背景 可於https://pixabay.com/圖庫搜尋
或 google搜尋 教學背景→點選「工具」使用權選擇「創用CC授權」(避免公開播映時的版權爭議與觸法問題)
(3)「便利貼」功能 誠摯推薦
分組討論實際操作宋怡慧老師分享
遠距線上教學怎麼教? 六步驟建立課堂「儀式感」、活絡與學生「互動感」https://udn.com/news/story/6887/5538911?from=udn-referralnews_ch2artbottom
(4)檔名更改
預設為會議室名稱,可改為科目/班級/組別名稱
(5)檔案存檔
更多動作(三個直點)─下載為PDF檔 或 建立副本
即時保留教學檔案,預防學生不慎刪除檔案
(6)檔案設置
用上課的校務行政帳號,先於「Jamboard」設置白板。
右下角(+)新增檔案→左上角(未命名的Jam)重新命名檔案名稱→(設定背景)→
【迅速完成分組白板頁面】
開啟設置好的檔案→更多功能:建立副本→更改分組名稱
有幾個組別做幾次,分組以4~6人為佳
白板共用人數越少,小組成員間越容易做約束
【給予學生的方式】
(1)設置聯絡人群組的預備操作:
方式一:任課教師可以在校務行政系統/學生帳號模組,查詢學生帳號。(資訊組補充)
方式二:Google Classroom課程中→成員→全選所有學生→動作:傳送電子郵件→複製所有收件人(一次取得所有加入課程學生完整郵件(含私人帳號))→於「聯絡人」功能:「匯入聯絡人」→「建立多位聯絡人」貼上「複製所有收件人的內容」→個別編輯學生名稱。
方式三:學生個別寄送郵件給老師
(2)編輯:
Google功能「聯絡人」→「建立標籤」:任教班級名稱
「Jamboard」共用→與使用者與群組共用→選擇設置好的群組標籤名稱
(3)檢視:
取得連結→「知道連結的使用者」+「檢視者」
【影片聲音同步分享】
分享Youtube影片時,要記得改為「分頁」
【研習中白板功能試用小建議】
建議如果想要試個別功能,
可以自己再開一個會議室嘗試,避免研習版面混亂。
操作方式:
另開會議室(可以跟研習時的會議室同步開啟)
再開白板,可以盡情操作各個功能
主任之前分享的兩個視窗分左右配置很好用(電腦網頁版適用)。
【下次研習準備】
下次研習前,請先安裝好「威力導演」軟體。
老師提供雲端硬碟全數安裝才是完整功能
先行安裝主程式,再安裝其他素材包。
威力導演18
https://drive.google.com/drive/folders/1WazKofQScGVGrwRwHMTUVt2Uy-WHU83b -
使用者設定檔無法複製 在 呂聰賢 Youtube 的最佳貼文
2021-06-23 13:53:151.雲端硬碟建立資料夾
2.設定分享給五年1班全班同學,使用聯絡人群組設定。
呂聰賢老師【Meet白板操作】研習筆記
學校帳號開啟會議後,目前只有「白板」和「錄製」功能。
白板 功能與 Google Meet整合度沒有非常高
白板功能要開啟給學生使用,學要先行設定。
預設為限制:只有已取得存取權的使用者可以透過這個連開啟(與新北市政府教育局共用)
→按一下「取得連結」
→限制→改為「知道連結的使用者(任何知道這個連結的網際網路使用者都能編輯)」
→檢視者→改為「編輯者」
【教師提問】
Q.有學生無法進入白板介面?
A.使用手機必須先裝設白板的APP「jamboard app」
【白板應用】
(1)分頁
不同組別可在不同頁面中進行操作
如第一組在第一頁、第二組在第二頁
一開始就先設立好分頁。
(2)背景 可於https://pixabay.com/圖庫搜尋
或 google搜尋 教學背景→點選「工具」使用權選擇「創用CC授權」(避免公開播映時的版權爭議與觸法問題)
(3)「便利貼」功能 誠摯推薦
分組討論實際操作宋怡慧老師分享
遠距線上教學怎麼教? 六步驟建立課堂「儀式感」、活絡與學生「互動感」https://udn.com/news/story/6887/5538911?from=udn-referralnews_ch2artbottom
(4)檔名更改
預設為會議室名稱,可改為科目/班級/組別名稱
(5)檔案存檔
更多動作(三個直點)─下載為PDF檔 或 建立副本
即時保留教學檔案,預防學生不慎刪除檔案
(6)檔案設置
用上課的校務行政帳號,先於「Jamboard」設置白板。
右下角(+)新增檔案→左上角(未命名的Jam)重新命名檔案名稱→(設定背景)→
【迅速完成分組白板頁面】
開啟設置好的檔案→更多功能:建立副本→更改分組名稱
有幾個組別做幾次,分組以4~6人為佳
白板共用人數越少,小組成員間越容易做約束
【給予學生的方式】
(1)設置聯絡人群組的預備操作:
方式一:任課教師可以在校務行政系統/學生帳號模組,查詢學生帳號。(資訊組補充)
方式二:Google Classroom課程中→成員→全選所有學生→動作:傳送電子郵件→複製所有收件人(一次取得所有加入課程學生完整郵件(含私人帳號))→於「聯絡人」功能:「匯入聯絡人」→「建立多位聯絡人」貼上「複製所有收件人的內容」→個別編輯學生名稱。
方式三:學生個別寄送郵件給老師
(2)編輯:
Google功能「聯絡人」→「建立標籤」:任教班級名稱
「Jamboard」共用→與使用者與群組共用→選擇設置好的群組標籤名稱
(3)檢視:
取得連結→「知道連結的使用者」+「檢視者」
【影片聲音同步分享】
分享Youtube影片時,要記得改為「分頁」
【研習中白板功能試用小建議】
建議如果想要試個別功能,
可以自己再開一個會議室嘗試,避免研習版面混亂。
操作方式:
另開會議室(可以跟研習時的會議室同步開啟)
再開白板,可以盡情操作各個功能
主任之前分享的兩個視窗分左右配置很好用(電腦網頁版適用)。
【下次研習準備】
下次研習前,請先安裝好「威力導演」軟體。
老師提供雲端硬碟全數安裝才是完整功能
先行安裝主程式,再安裝其他素材包。
威力導演18
https://drive.google.com/drive/folders/1WazKofQScGVGrwRwHMTUVt2Uy-WHU83b -
使用者設定檔無法複製 在 呂聰賢 Youtube 的最讚貼文
2021-06-23 13:53:001.匯出PDF 留存(不能再編輯)
2.建立副本(保有白板功能)
呂聰賢老師【Meet白板操作】研習筆記
學校帳號開啟會議後,目前只有「白板」和「錄製」功能。
白板 功能與 Google Meet整合度沒有非常高
白板功能要開啟給學生使用,學要先行設定。
預設為限制:只有已取得存取權的使用者可以透過這個連開啟(與新北市政府教育局共用)
→按一下「取得連結」
→限制→改為「知道連結的使用者(任何知道這個連結的網際網路使用者都能編輯)」
→檢視者→改為「編輯者」
【教師提問】
Q.有學生無法進入白板介面?
A.使用手機必須先裝設白板的APP「jamboard app」
【白板應用】
(1)分頁
不同組別可在不同頁面中進行操作
如第一組在第一頁、第二組在第二頁
一開始就先設立好分頁。
(2)背景 可於https://pixabay.com/圖庫搜尋
或 google搜尋 教學背景→點選「工具」使用權選擇「創用CC授權」(避免公開播映時的版權爭議與觸法問題)
(3)「便利貼」功能 誠摯推薦
分組討論實際操作宋怡慧老師分享
遠距線上教學怎麼教? 六步驟建立課堂「儀式感」、活絡與學生「互動感」https://udn.com/news/story/6887/5538911?from=udn-referralnews_ch2artbottom
(4)檔名更改
預設為會議室名稱,可改為科目/班級/組別名稱
(5)檔案存檔
更多動作(三個直點)─下載為PDF檔 或 建立副本
即時保留教學檔案,預防學生不慎刪除檔案
(6)檔案設置
用上課的校務行政帳號,先於「Jamboard」設置白板。
右下角(+)新增檔案→左上角(未命名的Jam)重新命名檔案名稱→(設定背景)→
【迅速完成分組白板頁面】
開啟設置好的檔案→更多功能:建立副本→更改分組名稱
有幾個組別做幾次,分組以4~6人為佳
白板共用人數越少,小組成員間越容易做約束
【給予學生的方式】
(1)設置聯絡人群組的預備操作:
方式一:任課教師可以在校務行政系統/學生帳號模組,查詢學生帳號。(資訊組補充)
方式二:Google Classroom課程中→成員→全選所有學生→動作:傳送電子郵件→複製所有收件人(一次取得所有加入課程學生完整郵件(含私人帳號))→於「聯絡人」功能:「匯入聯絡人」→「建立多位聯絡人」貼上「複製所有收件人的內容」→個別編輯學生名稱。
方式三:學生個別寄送郵件給老師
(2)編輯:
Google功能「聯絡人」→「建立標籤」:任教班級名稱
「Jamboard」共用→與使用者與群組共用→選擇設置好的群組標籤名稱
(3)檢視:
取得連結→「知道連結的使用者」+「檢視者」
【影片聲音同步分享】
分享Youtube影片時,要記得改為「分頁」
【研習中白板功能試用小建議】
建議如果想要試個別功能,
可以自己再開一個會議室嘗試,避免研習版面混亂。
操作方式:
另開會議室(可以跟研習時的會議室同步開啟)
再開白板,可以盡情操作各個功能
主任之前分享的兩個視窗分左右配置很好用(電腦網頁版適用)。
【下次研習準備】
下次研習前,請先安裝好「威力導演」軟體。
老師提供雲端硬碟全數安裝才是完整功能
先行安裝主程式,再安裝其他素材包。
威力導演18
https://drive.google.com/drive/folders/1WazKofQScGVGrwRwHMTUVt2Uy-WHU83b
呂聰賢老師【Meet白板操作】研習筆記
學校帳號開啟會議後,目前只有「白板」和「錄製」功能。
白板 功能與 Google Meet整合度沒有非常高
白板功能要開啟給學生使用,學要先行設定。
預設為限制:只有已取得存取權的使用者可以透過這個連開啟(與新北市政府教育局共用)
→按一下「取得連結」
→限制→改為「知道連結的使用者(任何知道這個連結的網際網路使用者都能編輯)」
→檢視者→改為「編輯者」
【教師提問】
Q.有學生無法進入白板介面?
A.使用手機必須先裝設白板的APP「jamboard app」
【白板應用】
(1)分頁
不同組別可在不同頁面中進行操作
如第一組在第一頁、第二組在第二頁
一開始就先設立好分頁。
(2)背景 可於https://pixabay.com/圖庫搜尋
或 google搜尋 教學背景→點選「工具」使用權選擇「創用CC授權」(避免公開播映時的版權爭議與觸法問題)
(3)「便利貼」功能 誠摯推薦
分組討論實際操作宋怡慧老師分享
遠距線上教學怎麼教? 六步驟建立課堂「儀式感」、活絡與學生「互動感」https://udn.com/news/story/6887/5538911?from=udn-referralnews_ch2artbottom
(4)檔名更改
預設為會議室名稱,可改為科目/班級/組別名稱
(5)檔案存檔
更多動作(三個直點)─下載為PDF檔 或 建立副本
即時保留教學檔案,預防學生不慎刪除檔案
(6)檔案設置
用上課的校務行政帳號,先於「Jamboard」設置白板。
右下角(+)新增檔案→左上角(未命名的Jam)重新命名檔案名稱→(設定背景)→
【迅速完成分組白板頁面】
開啟設置好的檔案→更多功能:建立副本→更改分組名稱
有幾個組別做幾次,分組以4~6人為佳
白板共用人數越少,小組成員間越容易做約束
【給予學生的方式】
(1)設置聯絡人群組的預備操作:
方式一:任課教師可以在校務行政系統/學生帳號模組,查詢學生帳號。(資訊組補充)
方式二:Google Classroom課程中→成員→全選所有學生→動作:傳送電子郵件→複製所有收件人(一次取得所有加入課程學生完整郵件(含私人帳號))→於「聯絡人」功能:「匯入聯絡人」→「建立多位聯絡人」貼上「複製所有收件人的內容」→個別編輯學生名稱。
方式三:學生個別寄送郵件給老師
(2)編輯:
Google功能「聯絡人」→「建立標籤」:任教班級名稱
「Jamboard」共用→與使用者與群組共用→選擇設置好的群組標籤名稱
(3)檢視:
取得連結→「知道連結的使用者」+「檢視者」
【影片聲音同步分享】
分享Youtube影片時,要記得改為「分頁」
【研習中白板功能試用小建議】
建議如果想要試個別功能,
可以自己再開一個會議室嘗試,避免研習版面混亂。
操作方式:
另開會議室(可以跟研習時的會議室同步開啟)
再開白板,可以盡情操作各個功能
主任之前分享的兩個視窗分左右配置很好用(電腦網頁版適用)。
【下次研習準備】
下次研習前,請先安裝好「威力導演」軟體。
老師提供雲端硬碟全數安裝才是完整功能
先行安裝主程式,再安裝其他素材包。
威力導演18
https://drive.google.com/drive/folders/1WazKofQScGVGrwRwHMTUVt2Uy-WHU83b
使用者設定檔無法複製 在 3c老實說 / 30天評測心得連載 / 投幣式編輯人生 / 氣象部落客勞倫斯 Facebook 的最佳貼文
感覺這次 iOS 15 搶了不少 Google 的飯碗(原況文字、地圖擴增實境),而且 iPhone 6s 也能升級,佛心。
-
iOS 15 帶來保持聯繫的新方式,以及幫助使用者專注、探索的強大更新,還能透過智慧功能用 iPhone 完成更多事。FaceTime 更新提供更自然的視訊通話;「專注模式」幫助使用者減少分心;「原況文字」等新功能利用裝置端智慧技術來顯示實用資訊;「地圖」的升級體驗提供探索世界的全新方法;還有更多強大新功能。iOS 15 今日以免額外付費軟體更新形式提供。
增強後更自然的 FaceTime 通話
FaceTime 變得比以往更不可或缺,讓使用者能輕鬆和最重要的人聯繫。FaceTime 音訊和視訊功能的強大更新,讓通話更自然、更栩栩如生。透過空間音訊,群組 FaceTime 通話中的聲音聽起來就像是從對方在畫面中的方位傳來。「語音隔離」是新的麥克風模式,運用機器學習技術排除背景噪音,優先聚焦使用者的聲音;「寬廣頻譜」模式則將所有背景聲音都收錄到通話中。受 iPhone 拍攝的絢麗人像照片啟發, FaceTime 上的「人像」模式可以將背景模糊,將畫面對焦在使用者身上。「語音隔離」、「寬廣頻譜」和「人像」模式也能以第三方 app 使用,例如 Webex、Zoom 和 WhatsApp。群組 FaceTime 提供新的格狀顯示選項,能以相同大小的方格來顯示通話參與者。
FaceTime 通話現在延伸至 Apple 裝置以外,Android 或 Windows 裝置的使用者也能從各自的網頁瀏覽器加入通話。網頁版 FaceTime 通話仍經端對端加密處理,隱私性不受影響。iPhone、iPad 和 Mac 使用者只需建立一個 FaceTime 連結,並透過「訊息」、「行事曆」、「郵件」或第三方 app 分享連結,即可開啟通話,與親友聯繫變得前所未有地容易。
今年秋季稍晚,「同播共享」將帶來讓使用者在 FaceTime 通話中與親友分享體驗的新方式,例如一同聆聽歌曲、觀看電視節目或電影、一起完成體能訓練、或分享螢幕以查看 app。「同播共享」將適用於 Apple Music、Apple TV+,以及 Disney+、HBO Max、MasterClass、SoundCloud、TikTok、Twitch,還有其他許多 app。「同播共享」可透過 iPhone、iPad 和 Mac 使用。共享播放控制選項,讓所有參與「同播共享」的成員都能播放、暫停或快轉。「同播共享」也可在 Apple TV 使用,讓使用者可在大螢幕上欣賞節目或電影。
藉由「訊息」保持聯繫的更多方式
「與你分享」是出現於「照片」、Safari、Music、Apple Podcasts 以及 Apple TV 等 app 的新區塊,顯示親友透過「訊息」分享的照片、文章、音樂等內容。「與你分享」自動於「照片」app 中顯示分享的照片,並在對應 app 中顯示其他相關內容。「與你分享」區塊顯示該內容的傳送者,讓使用者能輕鬆查看對應的訊息,並重啟對話。
iOS 15 中,Memoji 帶來讓使用者展現自己的更多元方式,包括多色頭飾、更多眼鏡款式,以及人工電子耳、氧氣管、軟頭盔等無障礙選項。使用者可用 40 多種服飾選項,以及沙卡、揮手、靈機一動燈泡時刻等九種全新貼圖手勢,自訂 Memoji 貼圖。
一日之中保持專注的強大工具
iOS 15 推出「專注模式」,可根據當下想專注處理的事情過濾通知,藉此幫助使用者減少分心。例如,工作期間可以設定「工作專注模式」,僅允許同事或工作用 app 傳送的通知;「個人專注模式」可在與親友一同休息放鬆時使用;「健身專注模式」則可幫助使用者進行體能訓練時保持在狀況內。使用者可以建立自訂「專注模式」或選擇系統提供的「專注模式」,運用裝置端智慧技術,建議允許發送通知給使用者的人和 app。為了進一步延伸專注功能,使用者能用符合特定「專注模式」的相關 app 建立專用「主畫面」。
使用「專注模式」時,「訊息」app 和 Slack 等支援此功能的第三方通訊 app 會自動對聯絡人顯示使用者狀態,使對方明白此刻不宜打擾。使用者甚至能收到開啟「專注模式」的建議,依據時間點或地點等因素而提供,且在一個 Apple 裝置上設定好的「專注模式」也會自動套用在使用者的其他 Apple 裝置上。
通知的全新樣貌
通知經過重新設計,新增了聯絡人照片和較大的 app 圖示,使通知內容更容易辨識。通知摘要是每日於使用者指定時間發送的通知整合。裝置端智慧技術會根據使用者與 app 的互動,將摘要按照優先順序整理,最為重要的通知會在最上方。有時效性的通知、訊息和電話會立即傳遞,因此使用者不會錯過緊急的通知。此外,若想將特定 app 或訊息通知轉為靜音一小時或一天,也都輕而易舉。
裝置端的智慧技術驅動「原況文字」、更先進的 Spotlight 搜尋、以及「回憶」等功能
「原況文字」將照片中文字內容變得有互動性。「原況文字」使用裝置端智慧技術辨識全系統 (包括網頁) 照片中的文字內容,並讓使用者採取進一步行動,例如複製貼上、查詢資訊、翻譯等。使用者甚至可輕點電話號碼的影像以撥打電話,或輕點網址的影像以在 Safari 中開啟頁面。透過神經網路引擎的能力,「相機」app 也可以快速在當下辨識並擷取文字,例如社區咖啡廳牆上寫的 Wi-Fi 密碼。使用者可利用「圖像查詢」獲得有關流行藝術、地標、書籍、自然界中的植物花草、寵物品種等進一步資訊。
Spotlight 是 iPhone 上通用的啟動搜尋方式,現在可以直接從鎖定畫面使用,並包括以地點、人物、場景或物品搜尋照片的功能。利用「原況文字」,Spotlight 可搜尋到照片中的文字與手寫內容。
iOS 15 為「回憶」功能帶來目前為止最大幅度的更新。全新電影級「回憶」功能具備煥然一新的樣貌、互動式介面,並結合 Apple Music 利用裝置端智慧技術推薦音樂曲目,重溫最愛或遺忘的回憶變得更容易。
重新設計的 Safari 瀏覽體驗
Safari 推出新設計的瀏覽體驗,使控制選項更容易觸及。新的標籤列預設置於螢幕底部,讓使用者可以輕鬆以單手在標籤頁間滑動瀏覽。利用「標籤頁群組」,使用者可以輕鬆地整理標籤頁,並隨時隨地在 iPhone、iPad、Mac 裝置上讀取。iOS 上自訂起始頁面以及網頁延伸功能,使 Safari 變得更個人化、更強大。
用Apple「地圖」導航、探索
iOS 15 中的「地圖」提供看世界的嶄新方式。視覺效果絢麗的地圖,提供更勝以往的細節呈現社區、商業區、建築物,也擁有客製地標,以及帶著閃耀月光效果的全新夜間模式。導航提供全新 3D 駕駛顯示,搭配新的道路細節呈現,幫助使用者更清楚辨識轉彎車道、分隔帶、人行穿越道、人行道等。升級的地圖功能於洛杉磯、紐約、舊金山提供,日後將於更多地區推出。設計精美的互動式地球儀提供山脈、沙漠、雨林、水體等地貌的豐富細節。
大眾運輸使用者輕輕一點,即可找到附近站點、釘選愛用路線。「地圖」會自動跟隨所選的交通路線,在接近出發時間時通知使用者,並在 Apple Watch 上追蹤這些資訊。使用者只要舉起 iPhone,即可透過擴增實境獲取詳細的步行路線指引。
「錢包」新增鑰匙和州證件
有了 iOS 15,「錢包」新增住家、飯店、辦公室,甚至汽車鑰匙,讓使用者僅透過輕輕一點 iPhone 即可進出更多地方。具備超寬頻支援的數位汽車鑰匙變得更厲害,使用者不必從口袋或包包拿出 iPhone,即可安全上鎖、解鎖、啟動指定車輛。 只要將鑰匙儲存在「錢包」裡,iPhone 也可以用來解鎖住家、辦公室,甚至飯店房間。 此外,未來將開放讓住在美國參與州的使用者可以把合格州證件與駕照加入 iPhone「錢包」。
重新設計的「天氣」功能
「天氣」全新設計的外觀配有全螢幕地圖、圖像化顯示的天氣資訊、以及根據情況動態調整的配置。精美的動畫背景能更準確反映太陽位置、雲量與降水,以及降雨或降雪的開始與結束時間通知。
運用「備忘錄」整理、協作
「備忘錄」新增可供使用者自訂的標籤,易於快速分類筆記,「提及」功能讓共享筆記的成員可通知彼此重要的內容更新。全新「活動」顯示,可查看共享筆記的近期紀錄;Highlights 則顯示編輯者的細節。首先於 Mac 和 iPad 登場的「快速備忘錄」可在「備忘錄」app 中查看與編輯。
更多隱私控制
全新隱私權功能提供透明度,以及用戶對於提供給 app 資料的掌控度。「郵件隱私權保護」防止寄件人得知郵件是否被開啟,也隱藏 IP 地址,如此一來寄件人就無法從 IP 地址得知使用者地點,或藉此對使用者進行建檔分析。Siri 對使用者隱私權的保護更進一步,透過裝置端語音辨識,使用者的指令音訊預設完全在裝置端處理,實現更加個人化、離線指令、以及更快的性能。
其他功能特色
Siri 新增 AirPods 上的「播報通知」功能,也能讓使用者透過下達指令與他人分享螢幕。Siri 現在可以在第三方 HomeKit 配件中啟用,如此一來 HomePod 與 HomePod mini 使用者可以輕鬆、安全地請 Siri 傳送訊息、設定提醒事項,或將內部訊息透過家中更多設備廣播給家人。
iCloud+ 結合所有使用者最愛的 iCloud 功能,再加上新的進階功能,包括「隱藏我的電子郵件」、擴充的「HomeKit 安全錄影」支援,還有創新的網路隱私權服務 「iCloud 私密轉送」。iCloud 目前的訂閱者將會自動升級至 iCloud+,無需額外付費。所有的 iCloud+ 方案皆可與使用者「家人共享」群組中的其他成員共享,如此一來,所有人都能享受這項服務提供的新功能、儲存空間和升級的體驗。
「健康」app 新增分享標籤頁,使用者可以跟家人、照護者或照護團隊分享健康資料;「趨勢」讓使用者可注意有意義的個人健康數據變化;新的衡量指標「步行穩定性」則賦予使用者積極管理跌倒風險的能力。使用者也能夠直接在「健康」app 中儲存可驗證的 COVID-19 疫苗或篩檢結果紀錄,以供隨時輕鬆取用。
「翻譯」 新增「自動翻譯」功能,不需點按麥克風按鈕,即可自動偵測到使用者開始說話,並翻譯語音內容,使得跨語言對話更加流暢自然。全系統適用的翻譯功能,讓使用者可透過選擇文字並點選「翻譯」,在 iPhone 上隨處進行翻譯。
新的 iPhone 設定讓使用者可更無縫地啟用 iPhone。原 iPhone 使用者無需訂閱 iCloud,也可以暫時在 iCloud 備份資料,以便輕鬆轉移資料到新的 iPhone。針對第一次換到 iPhone 的使用者,進化版的「移轉到 iOS」,讓使用者輕鬆轉移「照片」相簿、檔案、資料夾、「輔助使用」設定等,從最開始就享受個人化的 iPhone 使用體驗。
「輔助使用」透過「旁白」讓使用者探索圖片中人物、物品、文字、表格資料、以及圖片中表格的更多細節。新的背景音持續於背景播放,掩蓋惱人的環境或外部噪音。「聲音控制」功能提供客製化「切換控制」,可用嘴巴發出的聲音進行操作,使用者也可在不同 app 上自訂顯示和文字大小。Apple 也將為「耳機調節」功能支援辨識外部載入的聽力圖 —— 顯示聽力測試結果的圖表。
使用者設定檔無法複製 在 台灣物聯網實驗室 IOT Labs Facebook 的最佳貼文
AI 如何為公司創造更多價值?專家:2 個缺陷,要先由人類來修補
2021/05/13
採訪‧撰文
盧廷羲
張凱崴
美國人工智慧國家安全委員會(NSCAI)今年 4 月建議,國防部每年應至少分配 3.4% 的預算投入科技領域,並提撥 80 億美元研發 AI。企業方面,微軟(Microsoft)4 月宣布,將以 197 億美元收購語音辨識開發商紐安斯通訊(Nuance Communications);後者是雲端與 AI 軟體的先驅。
從企業到國家,都愈來愈重視人工智慧,知道要想辦法運用 AI 創造更好的生活。不過,目前 AI 發展到底處於什麼階段?我們又該如何應用?
美國加州大學洛杉磯分校(UCLA)電腦科學系助理教授張凱崴形容,目前人工智慧技術已經可以幫助人類完成很多事,像是疫情來襲,電腦可以從大數據中篩選條件,自動搜尋、判讀潛在病例,幫助醫生大幅減少檢查時間,但 AI 也並非萬能,要先認知它的局限。他研究如何讓 AI 更符合人性,獲得 2021 年的史隆研究獎(Sloan Research Fellowships)。
AI 局限1. 資料寬廣度不足時,就會複製人類偏見
張凱崴認為,電腦在學習的時候,是依賴「彙整數據資料」來判斷,並沒有真正思考,如果資料來源太狹隘、不夠多元,資料寬廣度不足,電腦判斷就會出現偏差,「你跟電腦講清楚 input(輸入)、output(輸出),提供足夠的數據資料,它可以對應、學得很好,但還有很多面向 AI 做不到。」
舉例來說,亞馬遜(Amazon)2014 年推出智慧音箱(Amazon Echo),使用者口頭下指令給語音助理 Alexa 就能放音樂、查資訊。然而,有些人口音較罕見,或是用字較特殊,智慧音箱的資料庫沒有「不同口音」「不同用詞」的檔案,就可能失靈,這是當前 AI 的其中一大問題。
張凱崴進一步解釋,AI 另一項挑戰是,它無法清楚分辨「不曾出現」與「不能出現」(無法出現)之間的區別,只是從資料統計出要學的東西,無法像人類一樣進行邏輯思辨。
AI 的運作方式,第一步是輸入資料,第二步是分析,但這過程容易出現偏見。例如電腦在理解「總統」這個字,會去看四周有什麼字詞,來學習總統這個詞,由於許多總統都是男性,電腦就會「覺得」總統是男性。
這也是為什麼,如果讓 AI 學習,在它的認知裡,女性「不可能」當美國總統(因為沒有資料紀錄)。「你可以跟人類說,任何職業、性別都是平等的,但對電腦來講,這很困難,」張凱崴說明,一旦資料的寬廣度受限,電腦就容易產生偏見。
就像在自然語言處理(Natural Language Processing,讓電腦把輸入的語言變成有意義的符號)領域,張凱崴說明,AI需要知道代名詞指的是「哪個名詞」,才能運算下去。但如果資料受限,使用男性的「他」,電腦可能判斷這個代名詞是指總統、總理、執行長;但換成女性的「她」,由於數據不足,電腦就會混亂,出現系統性誤差。
他再舉一例,美國人工智慧研究組織 OpenAI 提出「生成式預先訓練」系統(GPT,Generative Pre-training),推出到 GPT3 版本,屬於書寫類 AI,電腦能夠揣測人們說完上一句話,下一句可能會講的句子,自動完成後半段。
好比有人上一句寫下「我正在和教授聊天」,系統可能推導出「我們在研究室討論學術問題」,因為電腦藉由蒐集來的語料資料中判讀出「教授」和「學術」具高度相關。但研究也顯示,GPT2(前一代版本)系統也從資料中學習到許多偏見,像是如果句子前半談論白人男性,系統傾向產生正面評價;如果句子前半是黑人女性,系統竟會產生負面句子。對企業來說,許多組織接觸 AI,想讓它們取代部分工作,首先需要留意資料的廣度、多元性,才能減少電腦犯錯的機會。
AI 局限2. 即便條件相同,也無法每次都做出正確判斷
「其實,現在的 AI 就像一台原型飛機,還缺乏穩定性。」張凱崴說,現行的 AI 就好比萊特兄弟(Wright brothers)剛發明飛機,看似可以做很多有趣的事,但「可以飛」跟「飛得很好」,有一大段落差。
紐西蘭的簽證系統曾鬧出笑話。人們上傳簽證照片,AI 掃描後,確認是不是本人,但當時系統沒有估算到某些亞洲人眼睛比較小,一名亞裔男子被判定「沒有張開眼睛」,因此照片無效。
張凱崴說,在這個例子中,凸顯出 AI 的穩定性不足,「系統沒有考慮到不同人種的差異,很死板地認為你眼睛沒張開。」所謂的缺乏穩定性,指的是 AI 沒辦法在相同條件下,每次都做出正確決策,這也是使用 AI 時,須留意的第二個挑戰。
他再舉例,許多模型可以準確分析,一則影評對電影的評價是正面或負面。然而研究顯示,有時只要將影評中一些字換成同義詞,例如把電影(movie)換成影片(film),或改寫句子,即使意思並未改變,系統卻把原本判斷為正面的影評標註成負面。這顯示AI系統還未真正了解語言的含義。
在設計這些程式時,人們必須注意到 AI 可能有局限,設定的資料範圍要更完整,考慮這些因素,就能減少偏見、落差,進而加強穩定性。
餵指令給 AI 要多元化,嘗試「換句話說」、刻意混淆
經理人雖然不一定具備 AI 方面的專業知識,但只要掌握觀念,再透過 AI 領域專才協助,也能優化系統。張凱崴指出,最直接的方法是,設計 AI 模型時,要把來源群組不同的資料分門別類測試,在測試階段讓群體多元化,並確保不同特色的使用者,用起來都沒有問題。
舉例來說,一套 A 系統擁有來自各地的使用者,如果設計者是台北人,設計系統的思維容易以台北生活為主,很可能因為當地習慣不同,導致花蓮使用者操作不順。
另一個方法,則是用不同的「語意」,去測試 AI 有沒有徹底學會一個概念。例如,有一套餐廳評鑑的 AI 系統,只要蒐集、整理使用者意見,就能判斷每個顧客對於餐廳的評比是高分或低分。那麼要如何確認這套系統的穩定性?張凱崴建議,可以利用「抽換詞面」的方法。
比如,把詞彙換成同義字,再看 AI 是否能運算出相同結果,「你可能會發現,原本評比結果是食物很美味,但如果美味換成比較困難的詞,AI 就會分不出這則評比是好是壞。」因此在訓練模型時,可以將詞彙隨機抽換成同義詞,增加 AI 的詞彙量。
第三種方式更進階:改變句型、重寫句子。張凱崴指出,同樣一句話,如果換成不同說法,電腦可能判讀錯誤,將「因為發生 A 事件,所以導致 B 事件」,改寫成「B 事件發生了,是因為 A 事件的緣故」,明明兩句話意思一樣,但 AI 很可能因為穩定性不足,搞混兩者的差別。如果要鞏固 AI 的穩定性,可以使用自動改寫的方式,增加資料的多樣性。
張凱崴表示,經過這些測試,讓 AI 接受更多元化的訓練,得到更廣的學習範圍,往後碰到同義詞、相似資訊,才能有效判讀。
張凱崴總結,AI 還在快速發展,或許可以創造更多工作機會、新的職位,但現行階段,它只是輔助角色。AI 並非魔術盒子,使用它就一定有更好結果,人們還是要保持高度耐心,先認識它的缺陷,才能在技術更迭下,發揮出最好的結果。
張凱崴
台灣大學資訊工程系碩士、美國伊利諾大學(UIUC)電腦科學博士。美國加州大學洛杉磯分校(UCLA)電腦科學系助理教授,研究領域包括人工智慧、機器學習、自然語言處理。2021 年獲得史隆研究獎(Sloan Research Fellowship),研究團隊開發的運算方法,使人類語言處理的程序更有效率、更多元,同時兼具公平性。
附圖:優化AI系統的3方法
資料來源:https://www.managertoday.com.tw/articles/view/62902?fbclid=IwAR2jI1bhg1anqct0AZZR_3LKKJqIsvG0wz2whSN8iniROZApHt-_qpD7dis
使用者設定檔無法複製 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
V̶y̶p̶e̶r̶ Solidity coding time!
Image source: https://uniswap.org/
Outline
一. 前言二. 程式碼結構 1. Wrapped Ether(WETH)? 2. Impermanent Loss三. 創建交易對 - 準備 Interfaces四. 注入資金 - 注意事項五. 兌換虛擬貨幣六. 取得報價作為預言機七. 自行兌換 WETH八. 結語
一. 前言
暨上一篇解釋了 Uniswap 的演算法後,由於個人有使用 Uniswap v2 的需求,因此整理後寫成本篇,希望能幫助到其他也需要用 Uniswap 的讀者!(不熟 Uniswap 的人也可以參考區塊勢 許明恩 Astro Hsu 寫的介紹文:點我)
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
本文希望透過實際操作 Uniswap 我個人會用到、我認為大家比較常會用到的功能,來讓不熟悉的讀者快速了解其程式架構(v2 相較 v1 繁複)、熟悉實作方法,無法顧及全部還請見諒。
以下實作的測試環境為 Rinkeby 測試網,由於只是要講解使用方法,因此選擇在 Remix 上操作。
而 Uniswap v2 跟 v1 的差異,個人沒有很認真研究,大致列舉以下幾點,本文只會就其中幾點在後方進行較詳細的解釋:
使用 Wrapped Ether, WETH (於 二. 程式碼結構 解釋),讓 ERC20 交易對不再需要透過 Ether ,降低 gas 的消耗,但還是可以用 Ether 支付
加入時間權重的預言機,降低被操縱價格的風險,於 六. 取得報價作為預言機 中舉例說明,有興趣者可以看看 白皮書 有詳細介紹
閃電貸
使用 Solidity 而非 Vyper,因為 Solidity 功能上較齊全,於 五. 兌換虛擬貨幣 中舉例說明原因
在開始之前,本文超長,播個背景音樂吧:
二. 程式碼結構
本段落簡單描述 Uniswap 程式碼各部分的功能。若讀者要自己實作,可以參考此處得知該去哪一份程式碼找相應的功能:
Factory / UniswapV2Factory.sol : 創建交易對、查詢交易對的地址與總數;查詢、指定交易對手續費的收款地址
Pair(ERC-20) / UniswapV2ERC20.sol : Uniswap 流動性代幣 ERC20 的部分
Pair / UniswapV2Pair.sol : Uniswap 流動性代幣的其他部分;查詢交易對資訊
Router / UniswapV2Router01.sol : 注入、取出流動性/資金;兌換虛擬貨幣。此合約看似最複雜,其實只是因為收付款的單位可以是 Ether 或是 ERC20,所以有很多重複的函式
ExampleOracleSimple.sol, ExampleSlidingWindowOracle.sol : 預言機的範例程式碼
Library / UniswapV2OracleLibrary.sol : 供預言機調用的函式
Library / UniswapV2Library.sol : 供內部調用的函式
除了描述程式碼結構,為了以下的實作我們還需要知道 Wrapped Ether 是什麼,順便了解其使用原因:
1. Wrapped Ether (WETH) ?
從字面上來解釋,Wrapped Ether 是被包起來的 Ether。那為什麼好好的 Ether 不用還要創造出另一版本,嫌這小小世界的術語不夠多嗎 (ETH, WETH, Dai, aDai, cDai, sDai…)?xD
wETH | ERC20 tradable version of ETH
主因有兩個:廣泛地說,Ether 是以太坊上的原生虛擬貨幣,但它與廣為使用的 ERC20 標準並不相容( ERC20 有 approve(), transfer() 等等功能);而針對 Uniswap 的場景來說,v1 的交易對都一定有 Ether,而使用 Ether 可能會造成 Impermanent Loss,於下方解釋。
因此,就以上兩點的解決方法個別是:
部署一 ERC20 <-> Ether 的兌換合約:使用者將 Ether 付給 Wrapped Ether (ERC20) 的智能合約,合約就會給使用者同等數目的 WETH;拿回 Ether 則有點不太一樣,方法是告訴 WETH 的合約使用者要 withdraw(),WETH 的合約就會把使用者 WETH 擁有的額度設回 0 (或減少) 並返還 Ether,於 五. 兌換虛擬貨幣 中舉例說明
v2 交易對的建立不再只能是 (Ether, ERC20),可以是 (ERC20, ERC20)
2. Impermanent Loss
Impermanent loss 在 DeFi 指的是像 Uniswap 這類用演算法的去中心化交易所,如果交易對是兩幣價不相干的虛擬貨幣,例如:穩定幣 (Dai, USDC, etc) 和 Ether,流動性提供者 liquidity provider 會因為幣價的相對波動而比起直接持有兩幣還損失了一筆。
容我舉個例解釋清楚點,可以搭配我上一篇所寫的 Uniswap 的演算法 來理解:假設一開始 1 Ether 幣價為 100 Dai,只有一流動性提供者 LP 投入了 1 Ether 及 100 Dai (1 * 100 = 100 = k,k值要維持不變),總價值為 200 Dai。當 Ether 的幣價來到 200 Dai,眼尖者會發現資金池中的 Ether 價格低、有利可圖,因此會進行套利,例如:拿 33 Dai 約可以換到 0.25 Ether (0.75 * 133 ≒ 100),比起市場上要用 50 Dai 才能換到 0.25 Ether,套利者賺到了。此時,流動性提供者若將自己的資金提出,0.75 Ether 和 133 Dai 此時的總價值是 283 Dai,看似比當初的 200 Dai 還多,但其實將兩幣放著不動 1 Ether + 100 Dai 在此時就已經是 300 Dai 的價值了。於是,impermanent loss 就變成了 permanent loss :(
三. 創建交易對
- 準備 Interfaces
在開始之前,由於使用到的合約不少,所以我將全部所需整理在此:點我。其中,UniswapImplementation.sol 是本文實作的檔案。
若讀者在自己調用 Interface 時遇到版本問題,就依照 compiler 提供的指示稍作修改即可。我所整理的合約都修正過版本的差異、以下的實作也測試了可行,因此可以安心使用。
進入正題
通常大家使用的 Uniswap 資金池都是已經存在的,而如果想要上架自己的虛擬貨幣就要自己創建一組新的交易對,有兩種方式:在 Uniswap 官網上執行或是透過呼叫 Uniswap 的合約來建立,本文使用合約的方式。
首先,我們需要決定資金池為哪兩種虛擬貨幣,那就很普通地選 ETH 和 Dai 吧。雖然選了 ETH,但如同上方所述實際上必須使用 WETH,於是記下其在 Rinkeby 上的位置 。Dai 就使用 Compound 部署在 Rinkeby 上的版本,位置在 0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa。
接著,打開 IUniswapVFactory.sol,依照官方文件的指示將此合約部署在 Rinkeby 上的 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f。以下會有許多由 Uniswap 文件得知的合約地址及其他資訊等等,就不再一一附上來源或畫面截圖!
如上圖黑框所示,輸入了地址後按下藍色按鍵就完成部署了。接著,如下圖將 Dai 的地址 及 WETH 的地址輸入 createPair():
由於這個交易對我已經部署過了,因此讀者若想嘗試就麻煩去找別的 Rinkeby 上的測試幣了、或自己發一個! 完成後可以用 getPair() 輸入兩幣地址來確認交易對被建立成功:
如果想要進一步核對,可以先呼叫下圖紅框中的 allPairsLength(),得知當前總共有幾組交易對,再將 (交易對數 - 1) 輸入 allPairs(),就能得到和上圖一樣的地址。需要減 1 是因為陣列的 index 從 0 開始。
allPairsLength 的值會因為其他人的使用而增加,故日後可能會和本圖產出的 9 不同
四. 注入資金
看到標題的讀者可能會想:為何要把注入資金/流動性和上方的創建交易對分開呢?因為注入流動性這個功能被放在了 UniswapV2Router01.sol 中,所以就分開解釋。
雖然上一節只需要複製貼上按按鍵,但接下來要探討的注入資金 addLiquidity() 及虛擬貨幣的交換 swap()比起創建交易對 createPair() 是較有可能被融入到其他 DeFi 服務的功能(應該不太會有人會一直需要創建新的交易對),因此打開 UniswapImplementation.sol、要開始 Solidity coding!
如果不熟悉為何別的 DeFi 會需要在自己的服務中使用 Uniswap,可以搜尋 DeFi Money Lego/ DeFi 樂高,顧名思義就是在一個 DeFi 服務上使用另一個 DeFi 服務。實際的例子有:Aave 的新功能是可以拿往 Uniswap 注入流動性後得到的流動性代幣再投入 Aave 來賺取利息,以及下一節兌換虛擬貨幣的功能可以在 Pelith 的輕鬆貸 EasyDai、一站式 DeFi 組合工具 Furucombo 等場景中看到他們如何將 Uniswap 銜接上其他的 DeFi 服務。
回歸正題
在開始之前,先簡單提及一下有哪些變數、instance 需要初始化:
我們要呼叫 Uniswap 合約的 instance 來進行互動: IUniswapV2Router01
不只需要 Dai 的 instance,也需要 Dai 和 WETH 的地址;DaiAmount 和 ETHAmount 是為了稍後注入流動性所設置的,本文假設第一筆流動性我們使用 200 Dai + 1 Ether
immutable 是版本 0.6.5 加入的,用途是讓變數只能被讀取 read-only,但不同於 constant 的是能夠在 constructor() 中賦值。之所以各 instance 的地址不一起加上 immutable ,是因為若加上了,這些地址就不能在 constructor() 中被使用
p.s. 由於 gist 沒有 Solidity 的 syntax highlighting,所以隨便用了 .js 請忽略
看完了初始設定後,由於我們目前鎖定的資金池是 Dai 及 ETH,因此使用如下的 addLiquidityETH() 此函式,可以直接匯入 ETH 及 Dai。
本處我使用長度為 3 的陣列 addLiquidityResult 來記錄注入資金後的返回值:注入 Ether 的數量、Dai 的數量及返回的 Uniswap 流動性代幣的數量。實際上應該要依照不同使用者記錄的他們執行 addLiquidity() 後各自的返還值
第五行中的 approve() 是為了讓 UniswapV2Router01 的合約能夠從我們部署的合約 UniswapImplementation 取得 200 Dai 的使用權
於第六行 addLiquidityETH() 後方的大括號 {value: ETHAmount},這是 Solidity 0.6.0 後版本如果要在呼叫 function 的同時送入 Ether 的標準寫法,以前的寫法 .value() 目前也還能用但 compiler 會給提示
addLiquidityETH() 的第三、四個參數為最少要成功注入的數量。使用者能夠成功注入的數量取決於資金池中兩虛擬貨幣當下的數量,而本處直接給 0 比較方便
這邊非常重要的是上述程式碼還欠缺了一個無法被寫在合約內的步驟:使用者要同意這個被部署的合約 UniswapImplementation 可以從自己的帳戶中轉出 200 Dai。因此,將 ERC20 (Dai) 部署在 Rinkeby 上的位置,也就是0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa,接著輸入被部署合約的地址以及 200 Dai = 200000000000000000000、按下 approve() 後準備作業完成,如下圖。
終於可以呼叫 addLiquidity() 了! 如下圖,在紅框中以 1 Ether 呼叫黑框中的 addLiquidity() 後,就能成功將資金注入到 liquidity pool 了! 由於本文寫在測試後,因此沒有留下第一次 addLiquidity() 的結果 :(
此處被部署的合約位置跟上方截圖不同,因為其中測試了一些東西所以重新部署qq
接著,可以拿出 IUniswapV2Pair.sol,將其部署在 三. 創建交易對 中成功部署的位置 0x03E6c12eF405AC3F642B9184eDed8E1322de1a9e,使用黑框中的 getReserves() 就可以看到資金池中確實有匯入的資金! (本處依然沒有第一次使用後的截圖,因此截圖只是為了讓讀者看到 getReserves() 的結果)
此圖黑框中的值代表:在資金池中,Dai的數量、Ether的數量及上一次匯入資金的時間戳記
- 注意事項
使用 addLiquidity() 時需要小心的地方是:除了第一筆注入的資金可以自行決定兩虛擬貨幣的數量,第二筆開始就會依照其演算法算出兩幣可以投入的各自數量,因此使用者放入的兩幣中可能會有部分的其中一幣被 Uniswap 返回。
上方的程式碼只是為了第一筆流動性所寫,如果不是第一筆的情況就需要用成功注入流動性後的返回值(例如筆者的作法是用一陣列 addLiquidityResult 來存結果)來把沒有成功注入的資金返回給使用者。
五. 兌換虛擬貨幣
本節使用的兌換功能依舊是來自 IUniswapV2Router01.sol。
由於兌換虛擬貨幣實際上只有五行不到的程式碼,那麼就來把兌換 Ether 而得到的 Dai… 投到 Compound 來賺取放款利息吧! (雖然只是在測試網) 如果覺得這個場景似曾相識,沒錯,這就是上面提到的 輕鬆貸 EasyDai 的不專業版本!
首先將 Ether 和 Dai 互換的邏輯完成:
Ether 換 Dai : 使用 swapExactETHForTokens(),給某數量的 Ether 能換多少 Dai 是多少
Dai 換 Ether : 使用 swapExactTokensForETH(),作法只差在要把 Dai 轉到當前合約,再同意 UniswapV2Router01 可以從當前合約把 Dai 轉走
兩個做法的第二個參數都是可以自行指定兌換的路徑,此處就直接給 WETH 和 Dai 的地址即可(順序有差)。需要注意的是這個路徑要是動態陣列 dynamic array,而這就是 Vyper 所不支援的功能! 動態陣列跟靜態陣列宣告方式的差別我有註解在程式碼中
此處就先來試試 Dai 換 Ether 吧!和上方一樣,在使用時也要先 approve() 當前合約,當前合約才能轉走使用者的 Dai。
由上方的截圖可以很清楚的看到 Dai 換 Ether 這個動作牽涉到的資金轉移路徑:
Dai: 我的帳戶→當前合約→交易對所在合約
WETH: 交易對所在合約→UniswapV2Router01
Ether: WETH 合約→UniswapV2Router01→我的帳戶
以上的路徑有些人稍微思考後可能會納悶:為什麼上方沒有一筆 WETH 從 UniswapV2Router01 再轉到 WETH 合約的動作呢? 這就是在 Wrapped Ether (WETH) ? 中提到的案例。原因是:把 WETH 還回 WETH 的合約時實際上使用的函示是 withdraw() 而非 transfer(),而在 WETH 合約中發生的只是把使用者 WETH 擁有的額度歸零或減少而已。
接下來就是把 Dai 轉到 Compound 的部分。由於 Compound 不是本文重點,此處只求功能正常,因此比起真正的實作方法當然是簡化許多。
一如往常初始化 Compound 合約的 instance
ETH 換 Dai 後放入 Compound : 將用 ETH 換得的 Dai 的數量,也就是 swapExactETHForTokens() 返回的第二個值,approve() Compound 的合約後就可以用 mint() 匯入了! 要注意的是,ETH 換成 Dai 後的收款地址(第四個參數)是當前合約,才能從此合約轉 Dai 到 Compound
還款給使用者: 用 redeem() 取出 Dai,一如往常同意 UniswapV2Router01 使用 Dai 的權力
之所以說這個程式碼不能真的拿來用是因為:cDai 轉給使用者、讓使用者自己持有是比較安全的作法;即使選擇把 cDai 留在當前合約,以上程式碼檢查 cDai 數量是用當前合約 address(this) 去檢查,實際上應該要去記錄每個使用者所擁有的 cDai 數量
最後附上截圖,可以看一下資金的轉移路徑:
ETH -> WETH -> Dai -> cDai (Compound)
cDai -> Dai -> WETH -> ETH
六. 取得報價作為預言機
若使用 Uniswap v1的報價作為預言機,攻擊者可以利用其演算法造成的滑點來操控價格。為此,Uniswap v2 提供了兩個加入時間權重的合約範例:
ExampleOracleSimple.sol : 簡單版
ExampleSlidingWindowOracle.sol : 複雜版;Sliding Window 在此場景是指透過改變擷取資料(歷史價格)的片段,用該特定期間的價格來做成時間權重,讓使用上更靈活!
本處以簡單版為例。打開 ExampleOracleSimple.sol,由於一些匯入檔案的問題我將 UniswapV2OracleLibrary 也放在這份檔案中。
做法非常簡單:將 UniswapV2Factory、Dai 及 WETH 所在的地址作為部署合約 ExampleOracleSimple 時的輸入值就完成了。部署成功後會有個 24 小時的鎖 Time lock,因為這個預言機是有時間權重的,所以並不是一部署完就能立刻使用。若要體驗更新價格此功能可以使用我部署的兩個,其位置我寫在註解中。
將 WETH 或是 Dai 的地址和要查詢的數量輸入 consult() 就能查到兩虛擬貨幣的價格:
1 ETH 價格約為 97 Dai
1 Dai 價格約為 0.01 ETH
然而,在測試網上我們沒辦法拿著預言機查到的價格套入演算法來核對,因為測試網上的 Uniswap 沒有啟用收費機制,而 k 值要在收費機制啟動時才能被計算,欲知詳情者就麻煩去看官方文件了!
七. 自行兌換 WETH
上方雖然有提到 WETH 在 Uniswap 中的使用原因及場合,但或許有人想試著自己動手將 Ether 換成 WETH、把 WETH 換回 Ether。方法非常簡單,將 WETH.sol 部署到 0xc778417E063141139Fce010982780140Aa0cD5Ab 就能使用,如下圖:
按下綠框中的 At Address 後,使用下方黑框中的 deposit 搭配在中間的黑框輸入所要兌換 Ether 的量,就能成功換到 WETH。同理,圖中未顯示的 withdraw 功能就是讓人輸入 WETH 來換回等量的 Ether。
稍微提一下,如果是第一次兌換,將 WETH 所在的地址輸入 Metamask 就能在錢包中看到自己擁有的 WETH 的數量,如下兩圖:
Voila!
八. 結語
呼,雖然上述操作及程式碼的撰寫其實還蠻簡單的,但畢竟 Uniswap 的功能不少、我個人也希望能將小細節解釋清楚些,因此長度遠超過預期...有看到結尾處的讀者,辛苦了xD 希望大家現在對於 Uniswap v2 的內容跟實作方法都很清楚了!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌