【 Demo Day The Innovators 5 新創搶先報2⃣】
本次Demo Day除了有 新北市-亞馬遜AWS聯合創新中心 Batch#5的新同學外,還有Batch#4的成員以及來自 新北創力坊 InnoSquare的優秀團隊一起共襄盛舉,今天繼續為大家點名介紹👏
📍 分子智藥
VIRTUALMAN能預測臨床前藥物開發的實驗結果,並提供明確的藥物最佳化指引,不同於傳統AI工具的「黑盒子」,VIRTUALMAN革命性的可解釋人工智慧技術,讓客戶理解AI模型分析結果,以快速取得進展並降低60%錯誤率。透過精準易懂的預測結果,配合分子結構的修飾建議,替客戶減少不必要的實驗,節省時間成本。
📍奎景運算
提供FAST-AI-深度學習的加速工具,透過最佳化環境設定與自動化運用多台GPU伺服器,加速AI模型訓練工具並1鍵部署到大量的AI終端。FAST-AI為AI研發工具提供快速、簡單且支援不同的雲端硬體。透過簡單的工作坊,公司內的領域專家便可使用,節省開發時間比對手先一步取得先機。
📍智慧貼紙
為各行業提供工業4.0/機器無痛升級方案,以最低的學習成本和較高的投資回報率升級機器。Smart Tag為整體解決方案,由軟性電路板黏貼至機器表面,進行多點位資料蒐集,如震動、溫度及濕度等紀錄,再串接至客戶端系統或者上傳雲端數據中心,藉由機器學習及數據模型進行分析,並預測機器的運作模式,解決工廠產能及良率的問題。
📍極現科技 Earthbook
earthbook無人機任務及數據服務平台提供多種無人機影像、空拍直播與光達掃描等,為線上下單、即買即用的創新空拍商業服務,需求者毋須再煩惱無人機之購置、維護成本,並可將成果透過瀏覽器在平台中直接套疊其他資訊做加值利用與AI分析。從空拍到應用,earthbook以自有技術建立4D雲端DaaS平台,提供客戶完整服務。
📍玩咖旅行社 Tripresso 旅遊咖
專長資料串接與數據整合,提供B2C與B2B服務,建構多樣化的旅遊場景解決方案,從全球供應鏈串連、即時線上訂購、後端管理系統與企業所需的簽核、報支等管理功能等,提供消費者、企業客戶與旅遊同業一站式的系統,期待藉由數位轉型與技術開發,減少人力耗費,達成節省成本與增加效率的成果。
📍必揚實境科技 Veyond 必揚實境
本於期待科技創新可為人類生活帶來進步與改變的宗旨,相信教育與訓練的創新和科技化是值得耕耘又深具意義的領域。與各種具備專業知識的單位攜手合作,結合我們自身對於虛擬世界及網路應用的堅實基礎,共同建構各種教育、醫療護理、技能訓練等相關的創新解決方案。
📍米菲多媒體
以技術為核心,擁有多項發明專利及新型專利技術,致力提供XR核心技術開發及硬體整合服務,完善沉浸式體驗流程。2018年上線全台唯一的AR/VR/MR開發平台「MAKAR」。使用者不需學習程式,就能自由創建XR數位內容,發揮創意及想像力。米菲也與AR眼鏡、VR頭盔等設備商合作,進行軟硬體整合,提供SDK技術支援,並於2021年發佈可以直接在網頁觀看的「Web XR服務」。目前協助500家智慧工業、智慧教育、智慧醫療及商務客戶,達成操作培訓、產品演示、資訊管理以及數位轉型等創新XR應用。
📍圖題迷 TUTEEMI
由瓜地馬拉與台灣的創業家共同創立,是一家媒合外師家教與台灣人的平台。TUTEEMI解決語言與文化上的隔閡,提供台灣人與外師家教友善且安全的教學環境。依照每位學生不同的需求,與外師擬定課程,成為外師與學生的橋樑。目前平台上的外師家教來自17個不同的國家,提供的語言教學包含英語、法語、西班牙語與葡萄牙語。
📍凱匯金融科技 iEstate土斯債權
iEstate土斯債權為P2P借貸媒合平台,專注於解決中小企業、建商、不動產資金需求領域。運用P2P的特性,同時降低資金需求者資金成本,提高資金效率;降低債權人參與借貸門檻,提高借貸報酬,並合作區塊鏈圖靈證書,讓所有法律文件皆可上鏈存證。金流全面與銀行及第三方支付公司合作,確保iEstate不經手金流,搭配專業的案件審查團隊,創造P2P普惠金融的價值!
📍諾亞教育 諾亞教育 Know - Ya Edu.
由一群過去為補教老師、家教老師的成員所創辦,過去的教育體系並無法讓學生真正找到學習的意義以及熱忱,因此希望透過STEAM教育的模式打造一個全新的教育環境,讓學生們也能在快樂、有趣的創新環境中學習。最終願景是希望透過課程建立清楚的教學典範,再透過內容創作與電商,將諾亞教育的理念傳遞給更多的家長與學生。
不想錯過19家優秀新創的精彩分享❓
那怎麼還不報名Demo Day The Innovators 5⁉
立刻報名請點我👇
https://www.accupass.com/go/ntpcawsjic_demoday5
同時也有3部Youtube影片,追蹤數超過40萬的網紅糖餃子Sweet Dumpling,也在其Youtube影片中提到,Hello friends! Today we're going to share with you how to make classic meringue nuts dessert: French Dacquoise with coffee French buttercream. Dacquo...
「batch教學」的推薦目錄:
- 關於batch教學 在 新北創力坊 InnoSquare Facebook 的最讚貼文
- 關於batch教學 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於batch教學 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於batch教學 在 糖餃子Sweet Dumpling Youtube 的最佳解答
- 關於batch教學 在 Oh我的雙牛寶貝兒/Yvonne Youtube 的精選貼文
- 關於batch教學 在 EAT AT HOME 食・家 Youtube 的精選貼文
- 關於batch教學 在 win10介面批次檔bat製作 - YouTube 的評價
- 關於batch教學 在 教學課程- 使用Azure Batch 執行平行R 模擬 - GitHub 的評價
- 關於batch教學 在 批量重新命名文件(.bat) | 我的倉庫| ouoholly 的評價
- 關於batch教學 在 請問高手批次檔(.bat) 的寫法 - Mobile01 的評價
batch教學 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] Optimistic Rollup 就這樣用(2)
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
ERC721 的儲值、轉移與提領
TL;DR
本文會跳過 Optimistic Rollup 的介紹而直接實際演示,關於 Optimistic Rollup 的概念與設計原理筆者將在日後另撰文說明,有興趣的讀者可以先參考下列三篇文章(由淺入深):1. OVM Deep Dive 2. (Almost) Everything you need to know about Optimistic Rollup 3. How does Optimism’s Rollup really work?
本文將演示一個 Optimism Rollup 的 ERC721 範例,程式碼在這裡。
本演示大量參考了以下範例:Optimistic Rollup Example: ERC20。
本演示所使用的 ERC721 Gateway 合約來自這個提案,目前尚未成為官方標準。
環境設置
Git
Node.js
Yarn
Docker
Docker-compose
筆者沒有碰到環境相容問題,但是建議都升到最新版本, Node.js 使用 v16.1.0 或以上版本
Optimism 服務啟動
有關 Optimisim 的所有服務,都包裝在 Optimism 這個超大專案當中了,直接使用原始碼進行組建:
$ git clone git@github.com:ethereum-optimism/optimism.git$ cd optimism$ yarn$ yarn build
組建完成後,就可以在本機啟動服務了:
$ cd ops$ docker-compose build$ docker-compose up
這個指令會啟動數個服務,包括:
L1 Ethereum Node (EVM)
L2 Ethereum Node (OVM)
Batch Submitter
Data Transport Layer
Deployer
Relayer
Verifier
Deployer 服務中的一個參數要特別注意: FRAUD_PROOF_WINDOW_SECONDS,這個就是 OPtimistic Rollup 的挑戰期,代表使用者出金(Withdraw)需等候的時長。在本篇演示中預設為 0 秒。
如果有需要重啟,記得把整個 Docker Volume 也清乾淨,例如: docker-compose down -v
Optimism 整合測試
在繼續接下來的演示之前,我們需要先確認 Optimism 是否有順利啟動,特別是 Relayer 是否運作正常,因此我們需要先進行整合測試:
$ cd optimism/integration-tests$ yarn build:integration$ yarn test:integration
確保 L1 <--> L2 Communication 相關測試通過後再繼續執行接下來的演示內容。
啟動服務及部署合約需要花費一些時間,運行一段時間(約 120 秒)之後再執行測試,如果測試結果全部皆為 Fail,可能是 Optimism 尚未啟動完成,再等待一段時間即可。
ERC721 合約部署
Optimism 啟動成功並且完成整合測試後,接下來進行 ERC721 合約的部署。筆者已將合約及部署腳本放在 optimistic-rollup-example-erc721 這個專案中:
$ git clone git@github.com:ethereum-optimism/optimistic-rollup-example-erc721.git$ cd optimistic-rollup-example-erc721$ yarn install$ yarn compile
接下來我們需要部署以下合約:
ERC721,部署於 L1
L2DepositedEERC721,部署於 L2
OVM_L1ERC721Gateway,部署於 L1
OVM_L1ERC721Gateway 只部署在 L1 上,顧名思義它就是 L1 <=> L2 的「門戶」,提供 Deposit / Withdraw 兩個基本功能,使用者必須透過這個合約來進出 L2。
雖然 OVM_L1ERC20Gateway 是 Optimistic Rollup 官方提供的合約。但是開發者也可以依需求自行設計自己的「門戶」。
OVM_L1ERC20Gateway 目前沒有 Optimism 的官方實作,本演示所使用的 ERC721 Gateway 合約來自這個提案,目前尚未成為官方標準。
接下來,我們直接用腳本進行部署:
$ node ./deploy.jsDeploying L1 ERC721...L1 ERC2721 Contract Address: 0xFD471836031dc5108809D173A067e8486B9047A3Deploying L2 ERC721...L2 ERC721 Contract Address: 0x09635F643e140090A9A8Dcd712eD6285858ceBefDeploying L1 ERC721 Gateway...L1 ERC721 Gateway Contract Address: 0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547ccInitializing L2 ERC721...
ERC721 鑄造、儲值、轉移與提領
鑄造(L1)
初始狀態如下,所有帳戶皆尚未持有任何代幣:
接下來,我們將鑄造 2 個代幣以進行接下來的演示。首先,進入 ETH(L1) 的 Console:
$ npx hardhat console --network ethWelcome to Node.js v16.1.0.Type ".help" for more information.>
取得 Deployer / User 帳戶:
// In Hardhat ETH Console
> let accounts = await ethers.getSigners()
> let deployer = accounts[0]
> let user = accounts[1]
取得 ERC721 及 OVM_L1ERC721Gateway 合約物件,合約地址可以從部署訊息中取得:
// In Hardhat ETH Console
> let ERC721_abi = await artifacts.readArtifact("ExampleToken").then(c => c.abi)
> let ERC721 = new ethers.Contract("0xFD471836031dc5108809D173A067e8486B9047A3", ERC721_abi)
> let Gateway_abi = await artifacts.readArtifact("OVM_L1ERC721Gateway").then(c => c.abi)
> let Gateway = new ethers.Contract("0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc", Gateway_abi)
鑄造兩個 ERC721 代幣:
// In Hardhat ETH Console
> await ERC721.connect(deployer).mintToken(deployer.address, "foo")
{ hash: "...", ...}
> await ERC721.connect(deployer).mintToken(deployer.address, "bar")
{ hash: "...", ...}
只有合約的 Owner(deployer) 可以進行鑄造的操作。
確認 Deployer 餘額:
> await ERC721.connect(deployer).balanceOf(deployer.address)
BigNumber { _hex: '0x02', _isBigNumber: true } // 2
確認代幣的 TokenID 與 Owner:
> await ERC721.connect(deployer).ownerOf(1)
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' // deployer
> await ERC721.connect(deployer).ownerOf(2)
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' // deployer
儲值(L1 => L2)
完成以上步驟後,目前的狀態如下:
接下來,授權 OVM_L1ERC721Gateway使用 TokenID 為 2 的代幣:
// In Hardhat ETH Console
> await ERC721.connect(deployer).approve("0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc", 2)
{ hash: "...", ...}
在 OVM_L1ERC721Gateway 合約呼叫 Deposit,儲值 TokenID 為 2 的代幣:
// In Hardhat ETH Console
> await Gateway.connect(deployer).deposit(2)
{ hash: "...", ...}
我們可以到 Optimism (L2) 的 Console 確認入金是否成功:
$ npx hardhat console --network optimismWelcome to Node.js v16.1.0.Type ".help" for more information.>
取得 Deployer / User 帳戶:
// In Hardhat Optimism Console
> let accounts = await ethers.getSigners()
> let deployer = accounts[0]
> let user = accounts[1]
取得 L2DepositedERC721 合約物件,合約地址可以從部署訊息中取得:
// In Hardhat Optimism Console
> let L2ERC721_abi = await artifacts.readArtifact("OVM_L2DepositedERC721").then(c => c.abi)
> let L2DepositedERC721 = new ethers.Contract("0x09635F643e140090A9A8Dcd712eD6285858ceBef", L2ERC721_abi)
確認入金是否成功:
// In Hardhat Optimism Console
> await L2DepositedERC721.connect(deployer).balanceOf(deployer.address)
BigNumber { _hex: '0x01', _isBigNumber: true } // 1
> await L2DepositedERC721.connect(deployer).ownerOf(2)
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' // deployer
ERC721 轉移(L2 <=> L2)
完成以上步驟後,目前的狀態如下:
接下來,我們在 L2 從 Deployer 轉移代幣給 User:
// In Hardhat Optimism Console
> await L2DepositedERC721.connect(user).balanceOf(user.address)
BigNumber { _hex: '0x00', _isBigNumber: true } // 0
> await L2DepositedERC721.connect(deployer).transferFrom(depoyer.address, user.address, 2)
{ hash: "..." ...}
> await L2DepositedERC721.connect(user).balanceOf(user.address)
BigNumber { _hex: '0x01', _isBigNumber: true } // 1
> await L2DepositedERC721.connect(user).ownerOf(2)
'0x70997970C51812dc3A010C7d01b50e0d17dc79C8' // user
ERC721 提領(L2 => L1)
完成以上步驟後,目前的狀態如下:
接下來,我們用 User 帳戶提領資金,在 L2DepositedERC721 合約呼叫 Withdraw:
// In Hardhat Optimism Console
> await L2DepositedERC721.connect(user).withdraw(2)
{ hash: "..." ...}
> await L2DepositedERC721.connect(user).balanceOf(user.address)
BigNumber { _hex: '0x00', _isBigNumber: true }
最後,檢查在 L1 是否提領成功:
// In Hardhat ETH Console
> await ERC721.connect(user).balanceOf(user.address)
BigNumber { _hex: '0x01', _isBigNumber: true } // 1
> await ERC721.connect(deployer).balanceOf(deployer.address)
BigNumber { _hex: '0x01', _isBigNumber: true } // 1
> await ERC721.connect(user).ownerOf(2)
'0x70997970C51812dc3A010C7d01b50e0d17dc79C8' // user
由於挑戰期為 0 秒,因此提領幾乎無需等待時間,頂多只需數秒鐘
做完上述所有操作,最終狀態應該如下:
總結
本文演示了:
Optimistic Rollup 相關服務的本機部署
ERC721 L1 => L2 的儲值(Deposit)
ERC721 L2 帳戶之間轉移(Transfer)
ERC721 L2 => L1 的提領(Withdraw)
筆者未來將繼續擴充此系列的教學內容,例如支援其他標準的合約如 ERC1155,以及如何運行 Optimistic Rollup 生態系中最重要的驗證者(Verifier),敬請期待。
參考資料
OVM Deep Dive
(Almost) Everything you need to know about Optimistic Rollup
How does Optimism’s Rollup really work?
Optimistic Rollup Official Documentation
Ethers Documentation (v5)
Optimistic Rollup Example: ERC20(Github)
Optimism (Github)
optimism-tutorial (Github)
l1-l2-deposit-withdrawal (Github)
Proof-of-concept ERC721 Bridge Implementation (Github)
Optimistic Rollup 就這樣用(2) was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
batch教學 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] Optimistic Rollup 就這樣用(1)
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
ERC20 的入金、轉帳與出金
TL;DR
本文會跳過 Optimistic Rollup 的介紹而直接實際演示,關於 Optimistic Rollup 的概念與設計原理我將在日後另撰文說明,有興趣的讀者可以先參考下列三篇文章(由淺入深):1. OVM Deep Dive 2. (Almost) Everything you need to know about Optimistic Rollup 3. How does Optimism’s Rollup really work?
本文將演示一個 Optimism Rollup 範例,程式碼在這裡。
本演示大量參考了以下這兩個官方範例:optimism-tutorial、l1-l2-deposit-withdrawal。
環境設置
Git
Node.js
Yarn
Docker
Docker-compose
筆者沒有碰到環境相容問題,但是建議都升到最新版本, Node.js 使用 v16.1.0 或以上版本
Optimism 服務啟動
有關 Optimisim 的所有服務,都包裝在 Optimism 這個超大專案當中了,直接使用原始碼進行組建:
$ git clone git@github.com:ethereum-optimism/optimism.git$ cd optimism$ yarn$ yarn build
組建完成後,就可以在本機啟動服務了:
$ cd ops$ docker-compose build$ docker-compose up
這個指令會啟動數個服務,包括:
L1 Ethereum Node (EVM)
L2 Ethereum Node (OVM)
Batch Submitter
Data Transport Layer
Deployer
Relayer
Verifier
Deployer 服務中的一個參數要特別注意: FRAUD_PROOF_WINDOW_SECONDS,這個就是 Optimistic Rollup 的挑戰期,代表使用者出金(Withdraw)需等候的時長。在本篇演示中預設為 0 秒。
如果有需要重啟,記得把整個 Docker Volume 也清乾淨,例如: docker-compose down -v
Optimism 整合測試
在繼續接下來的演示之前,我們需要先確認 Optimism 是否有順利啟動,特別是 Relayer 是否運作正常,因此我們需要先進行整合測試:
$ cd optimism/integration-tests$ yarn build:integration$ yarn test:integration
確保 L1 <--> L2 Communication 相關測試通過後再繼續執行接下來的演示內容。
啟動服務及部署合約需要花費一些時間,運行一段時間(約 120 秒)之後再執行測試,如果測試結果全部皆為 Fail,可能是 Optimism 尚未啟動完成,再等待一段時間即可。
ERC20 合約部署
Optimism 啟動成功並且完成整合測試後,接下來進行 ERC20 合約的部署。筆者已將合約及部署腳本放在 optimistic-rollup-example-erc20 這個專案中:
$ git clone git@github.com:ethereum-optimism/optimistic-rollup-example-erc20.git$ cd optimistic-rollup-example-erc20$ yarn install$ yarn compile
接下來我們需要部署以下合約:
ERC20,部署於 L1
L2DepositedEERC20,部署於 L2
OVM_L1ERC20Gateway,部署於 L1
其中,ERC20 與 L2DepositedERC20 是由上面的範例專案編譯的,可以直接在範例專案中直接取得 ABI;而 OVM_L1ERC20Gateway 則是由 Optimism 編譯的,屬於 Optimistic Rollup 協定的一部分,無法直接在範例專案中取得 ABI。
因此在部署以上三個合約前,我們需先手動將 OVM_L1ERC20Gateway 編譯後的生成品 (Artifacts)——即 ABI,複製到此專案中:
$ cp -r ~/projects/optimism/packages/contracts/artifacts/contracts/optimistic-ethereum/OVM/bridge/tokens/OVM_L1ERC20Gateway.sol ~/projects/optimistic-rollup-example-erc20/artifacts/contracts/
OVM_L1ERC20Gateway 只部署在 L1 上,顧名思義它就是 L1 <=> L2 的「門戶」,提供 Deposit / Withdraw 兩個基本功能,使用者必須透過這個合約來進出 L2。
雖然 OVM_L1ERC20Gateway 是 Optimistic Rollup 官方提供的合約。但是開發者也可以依需求自行設計自己的「門戶」。
接下來,我們直接用腳本進行部署:
$ node ./deploy.jsDeploying L1 ERC20...Deploying L1 ERC20...L1 ERC20 Contract Address: 0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20fDeploying L2 ERC20...L2 ERC20 Contract Address: 0x67d269191c92Caf3cD7723F116c85e6E9bf55933Deploying L1 ERC20 Gateway...L1 ERC20 Gateway Contract Address: 0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07Initializing L2 ERC20...
ERC20 入金、轉帳與出金
ERC20 入金(L1 => L2)
目前餘額:
在合約部署完成後,Deployer 是目前唯一有資金的帳戶,接下來我們就進行入金(Deposit),將 Deployer 的資金從 L1 搬到 L2。
首先,進入 ETH(L1) 的 Console:
$ npx hardhat console --network ethWelcome to Node.js v16.1.0.Type ".help" for more information.>
取得 Deployer / User 帳戶:
// In Hardhat ETH Console
> let accounts = await ethers.getSigners()> let deployer = accounts[0]> let user = accounts[1]
取得 ERC20 及 OVM_L1ERC20Gateway 合約物件,合約地址可以從部署訊息中取得:
// In Hardhat ETH Console
> let ERC20_abi = await artifacts.readArtifact("ERC20").then(c => c.abi)> let ERC20 = new ethers.Contract("0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f", ERC20_abi)> let Gateway_abi = await artifacts.readArtifact("OVM_L1ERC20Gateway").then(c => c.abi)> let Gateway = new ethers.Contract("0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", Gateway_abi)
先授權 OVM_L1ERC20Gateway 花費 ERC20:
// In Hardhat ETH Console
> await ERC20.connect(deployer).approve("0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", 10000)> await ERC20.connect(user).approve("0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", 10000)
注意:Deployer 及 User 都需要對 OVM_L1ERC20Gateway 進行授權,否則在接下來的出金步驟時 Relayer 會出錯
接著,在 OVM_L1ERC20Gateway 合約呼叫 Deposit:
// In Hardhat ETH Console
> await Gateway.connect(deployer).deposit(1000)
我們可以到 Optimism (L2) 的 Console 確認入金是否成功:
$ npx hardhat console --network optimismWelcome to Node.js v16.1.0.Type ".help" for more information.>
取得 Deployer / User 帳戶:
// In Hardhat Optimism Console
> let accounts = await ethers.getSigners()> let deployer = accounts[0]> let user = accounts[1]
取得 L2DepositedERC20 合約物件,合約地址可以從部署訊息中取得:
// In Hardhat Optimism Console
> let L2ERC20_abi = await artifacts.readArtifact("L2DepositedERC20").then(c => c.abi)> let L2DepositedERC20 = new ethers.Contract("0x67d269191c92Caf3cD7723F116c85e6E9bf55933", L2ERC20_abi)
確認入金是否成功:
// In Hardhat Optimism Console
> await L2DepositedERC20.connect(deployer).balanceOf(deployer.address)BigNumber { _hex: '0x03E8', _isBigNumber: true } // 1000
ERC20 轉帳(L2 <=> L2)
完成以上步驟後,目前的餘額如下:
接下來,我們在 L2 從 Deployer 轉移一部分資金給 User:
// In Hardhat Optimism Console
> await L2DepositedERC20.connect(user).balanceOf(user.address)BigNumber { _hex: '0x00', _isBigNumber: true } // 0> await L2DepositedERC20.connect(deployer).transfer(user.address, 1000){ hash: "..." ...}> await L2DepositedERC20.connect(wallet_1).balanceOf(user.address)BigNumber { _hex: '0x03E8', _isBigNumber: true } // 1000
ERC20 出金(L2 => L1)
完成以上步驟後,目前的餘額如下:
接下來,我們用 User 帳戶提領資金,在 L2DepositedERC20 合約呼叫 Withdraw:
// In Hardhat Optimism Console
> await L2DepositedERC20.connect(user).withdraw(1000){ hash: "..." ...}> await L2DepositedERC20.connect(user).balanceOf(user.address)BigNumber { _hex: '0x00', _isBigNumber: true }
最後,檢查在 L1 是否提領成功:
// In Hardhat ETH Console
> await ERC20.connect(user).balanceOf(user.address)BigNumber { _hex: '0x03E8', _isBigNumber: true } // 1000
由於挑戰期為 0 秒,因此提領幾乎無需等待時間,頂多只需數秒鐘
做完上述所有操作,餘額應該如下:
總結
本文演示了:
Optimistic Rollup 相關服務的本機部署
ERC20 L1 => L2 的入金(Deposit)
ERC20 L2 帳戶之間轉帳(Transfer)
ERC20 L2 => L1 的出金(Withdraw)
筆者未來將繼續擴充此系列的教學內容,例如 ERC721 / ERC1155 的使用方式,敬請期待。
參考資料
OVM Deep Dive
(Almost) Everything you need to know about Optimistic Rollup
How does Optimism’s Rollup really work?
Optimistic Rollup Official Documentation
Ethers Documentation (v5)
Optimism (Github)
optimism-tutorial (Github)
l1-l2-deposit-withdrawal (Github)
Optimistic Rollup 就這樣用(1) was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
batch教學 在 糖餃子Sweet Dumpling Youtube 的最佳解答
Hello friends! Today we're going to share with you how to make classic meringue nuts dessert: French Dacquoise with coffee French buttercream.
Dacquoise means “ of Dax” in french, which is a small town in southwestern France. Classic dacquoise is used as a layer of a cake or sandwiched for two layers with a variety of filling. But it can also be a cookie sandwich with buttercream. This French dessert is a light meringue with a sponge texture, it’s meringue-like crisp on the outside, and moist and soft texture like cake on the inside. The flavor is amazing and delicious. It’s a must try French dessert. Hope you like this video.
This is an #ASMR ver, you can check out the other version that with BGM and Voices in Chinese if you like:
https://youtu.be/Z-F9f9WVwk4
---------------------------------------------------------------------------------------------
How to make French Dacquoise Recipe
French Dacquoise Recipe
☞ Dacquoise mold: 6 slots, 7x5x1cm for each slot, if you don’t have dacquoise mold, you can use baking rings.
☞ Yields: This recipe can make 3 sets of dacquoise sandwiches for one egg white, you can use two or three egg whites to make 6 or 9 sets as you wish.
✎ Ingredients
☞ For dacquoise
powdered sugar 10g
All purpose flour 8g
almond flour 30g
medium egg white 1, 35g
granulated sugar 20g
☞ For French coffee buttercream (Cream au beurre cafe)
instant coffee granules 1g
hot water 4g
medium egg yolk 2, 36g
granulated sugar 45g
water 20g
unsalted butter 80g, softened and cubed
✎ Instrcutions
☞ For dacquoise
1. Use a sieve to sift the almond flour, powdered sugar and all purpose flour.
2. Place the egg whites and a bit of pinch of salt in a clean and dry bowl, beat the egg white with an hand electric mixer on medium speed for 1 minute. Then add the sugar one-third at a time, beat 30 seconds before adding the next.
3. After adding the rest of sugar, continue beating for 2 more minutes, then switch to low speed to beat for 30 seconds or until stiff peaks.
4. Add one half of dry ingredients into the meringue, making sure not to mix too much. Then add the rest of dry ingredients and gently fold the mixture until just combined.
5. Attach a tip to a piping bag and transfer the dacquoise mixture to the piping bag.
6. Pipe out the batter into the dacquoise slot. Use a scraper or offset spatula to smooth the surface and remove excess batter, and then use a toothpick to dip the water and to smooth out the shape.
7. Remove the mold carefully. Lightly dust the powdered sugar over the dough for the first time, after the powdered sugar is just absorbed into the batter, dust more powdered sugar over it again. This will create a better crust on the surface.
8. Preheat the oven to 230°C, reduce to 180°C and bake for 9-10 minutes, when time’s up, leave it in the oven for 5 minutes. Remove from the oven, stay with the baking tray to cool completely.
☞ For French coffee buttercream
1. Dissolve the 1g of instant coffee in 4g of hot water. Set aside to cool.
2. Add two egg yolks into the mixing bowl and beat until thick and pale.
3. Combine 45g sugar and 20g water in a small saucepan, heat over on med-low heat, cook until the sugar has dissolved and the syrup reaches 117°C.
4. Then immediately remove from heat and slowly drizzle the hot syrup into the bowl with the yolks, keep whisking on high speed until all syrup is added. Switch to low speed to whisk until the mixture (pâte à bombe) is cooled down to room temperature.
5. Add in 80g of softened butter one third at a time, allowing each batch to incorporate before adding the next. Mix to smooth.
6. Add the dissolved coffee and mix well, then pipe in a piping bag.
☞ Assembly
1. Sandwich the dacquoise with the buttercream, and refrigerate until ready to serve
----------------------------------------------------------------------
#FrenchDessert
#dacquoise
#easyRecipes
batch教學 在 Oh我的雙牛寶貝兒/Yvonne Youtube 的精選貼文
這部影片是邀請Becky老師來工作室幫忙拍攝的,我試了好多次都渲不出像她做得那麼漂亮的石紋渲,有興趣想要去現場請老師手把手教學的朋友們,請加入我們的FB社團【手工皂見學園】跟老師聯繫。
壓克力渲染模 acrylic slab mold: https://shopee.tw/product/20306836/6303213772?smtt=0.0.9
I invited my good friend Becky to my workshop to make this batch of soap. Frankly speaking, I tried this technique several times, but none of the results are so beautiful as she made. If you are interested in more of her fantastic works, pls. join our FB group: https://pse.is/NL3EX
訂閱頻道/Subscribe👉https://goo.gl/chz3Dp
粉絲專頁/Facebook👉https://www.facebook.com/ohmycattles/
聯絡信箱/E-mail👉[email protected]
batch教學 在 EAT AT HOME 食・家 Youtube 的精選貼文
#巴斯克 #人氣烘焙 #網紅烘焙
巴斯克芝士蛋糕/巴斯克起司蛋糕比傳統的甜品是外型光滑工整,但卻是凹陷醜陋但有一種莫名其妙的吸引力,相比焗至全熟,這個蛋糕一開始就以高溫焗至表面燒焦,甚至有一點變黑的狀態,雖然外表燒焦但是蛋糕入面最理想是接近熟透而不會過熟。
.
所以有些報道便説這個名字起源於西班牙的蛋糕,顛覆了大眾對甜品的印象,甚至成了2019年的年度甜品,這個蛋糕不只在美國盛行,它傳到日本後更加擁有超大的人氣。
.
今年流行的這個蛋糕,意外地在家非常容易做到,只需要五種材料,拌勻後放入焗爐已高溫烤至表面燒焦便完成了,新鮮出爐的芝士蛋糕可以吃到表面燒焦的焦糖味道,放在雪櫃冷藏後食用也很好吃。我一向喜歡簡單的烘焙食譜,這個蛋糕正合我心意。
.
吃厭了紐約芝士蛋糕,不妨試做這個人氣的簡易芝士蛋糕吧。
「本年度最有人氣的甜品是燒焦的。」彭博飲食版在2019年2月是這樣介紹。
.
工具:5寸模具一個,牛油紙
材料
忌廉芝士235克
白砂糖60克
雞蛋一隻 (約54克)
忌廉85毫升
麵粉兩湯匙
做法
1. 焗爐預熱至220度攝氏度
2. 牛油紙鋪在蛋糕模內
3. 在一個大拌碗裏,將砂糖逐少放入忌廉芝士裏,用打蛋器以中速打至蓬鬆狀態
4. 慢慢加入忌廉,用打蛋器拌勻
5. 再加入雞蛋拌勻
6. 麵粉過篩,慢慢加入並以接疊的形式拌勻
7. 將麵糊倒入蛋糕模內,以220度焗35至45分鐘
8. 將焗爐調至上層最高溫度 (約260度),焗5-10分鐘,直至蛋糕面焗至深啡色
9. 撕開牛油紙,切件後便可享用
Basque Burnt Cheesecake
Tools:5 inch diameter cake pan and non-stick baking paper
Ingredients
235g cream cheese
60g white sugar
1 egg (54g)
85ml cream
2 Tbsp all purpose flour
Directions
1. Pre-heat the oven to 220 degree celsius.
2. Line the pan with the baking paper.
3. In the mixing bowl, add sugar in a serval batch to the cream cheese. Use the electronic eggbeater with medium speed to whip the cream until it becomes fluffy.
4. Add cream and mix well.
5. Add egg and mix well.
6. Sift all purpose flour. Add flour gradually and fold the cake mixture well.
7. Pour the batter into the pan. Bake the cake at 220 degree celsius for 35-45 minutes.
8. Turn the temperature up to 260 degree celsius. Bake the cake until it becomes dark brown on the top. It takes 5-10 minutes.
9. Peel alway the baking paper. Slice into wedges and serve.
#basque cheesecake
batch教學 在 教學課程- 使用Azure Batch 執行平行R 模擬 - GitHub 的推薦與評價
doAzureParallel 套件是以熱門的foreach R 套件作為建置基礎。 doAzureParallel 會採用foreach 迴圈的每次反覆運算,並將它提交為Azure Batch 工作。 本教學課程示範如何 ... ... <看更多>
batch教學 在 批量重新命名文件(.bat) | 我的倉庫| ouoholly 的推薦與評價
所有文件就會按 rename.bat 的內容重新命名了。 batch rename files - before, after. 如果您喜歡我的文章,歡迎幫我在下面按5下 ... ... <看更多>
batch教學 在 win10介面批次檔bat製作 - YouTube 的推薦與評價
簡單 bat 檔案製作類似執行檔大家可以試試看. ... 29K views 6 years ago win10&win11 教學. 簡單 bat 檔案製作類似執行檔大家可以試試看 … Show more. ... <看更多>