📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有73部Youtube影片,追蹤數超過8萬的網紅Ngô Thành Dương Official,也在其Youtube影片中提到,'bao tiền một mớ bình yên?' - 14 Casper & Bon Cover: Dig DiDzay #baotienmotmobinhyen #14Casper #DigDiDzay ------------------------ MV gốc: https://w...
「network bridge」的推薦目錄:
- 關於network bridge 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於network bridge 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於network bridge 在 หนังโปรดของข้าพเจ้า Facebook 的精選貼文
- 關於network bridge 在 Ngô Thành Dương Official Youtube 的最佳貼文
- 關於network bridge 在 Minh Hằng Official Youtube 的最佳貼文
- 關於network bridge 在 Mars Hartdegen Youtube 的最佳貼文
network bridge 在 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.
👏 歡迎轉載分享鼓掌
network bridge 在 หนังโปรดของข้าพเจ้า Facebook 的精選貼文
== Top 250 หนังโปรดตลอดกาลของข้าพเจ้า ==
หลายคนอาจยังไม่เคยรู้ว่าที่มาของเพจคือมาจากการตั้งกระทู้ Top 250 หนังโปรดในพันทิป แล้วค่อยมาสร้างเพจไว้เก็บโพสต์ถึงหนัง แต่ช่วงหลัง ๆ ไม่ได้อัพเดทอันดับหนังในดวงใจ วันนี้เลยถือโอกาสอัพเดทสักเล็กน้อย ซึ่งอันดับต้น ๆ จะเรียงลำดับอยู่ แต่อันดับหลังกลางถึงหลังไม่ได้เรียงลำดับแบบมีนัยยะมากนัก ลองไล่ดูกันได้เลยครับ อาจมีตกหล่นไว้อัพเดทใหม่อีกรอบครับ
1 | The Dark Knight (2008)
2 | The Godfather (1972)
3 | Schindler's List (1993)
4 | Vertigo (1958)
5 | 12 Angry Men (1957)
6 | L.A. Confidential (1997)
7 | Casablanca (1942)
8 | Seven Samurai (1954)
9 | The Shawshank Redemption (1994)
10 | Chinatown (1974)
11 | Rebecca (1940)
12 | M (1931)
13 | Rear Window (1954)
14 | To Kill a Mockingbird (1962)
15 | The Sting (1973)
16 | Sunset Blvd. (1950)
17 | Les diaboliques (1955)
18 | The Cameraman (1928)
19 | On the Waterfront (1954)
20 | Casino Royale (2006)
21 | Harakiri (1962)
22 | Rashomon (1950)
23 | Ace in the Hole (1951)
24 | A Separation (2011)
25 | The Apartment (1960)
26 | Rififi (1955)
27 | In the Mood for Love (2000)
28 | The General (1926)
29 | High and Low (1963)
30 | Paths of Glory (1957)
31 | North by Northwest (1959)
32 | Portrait of a Lady on Fire (2019)
33 | Once Upon a Time in America (1984)
34 | All About Eve (1950)
35 | Amadeus (1984)
36 | Double Indemnity (1944)
37 | The Godfather: Part II (1974)
38 | Witness for the Prosecution (1957)
39 | The Social Network (2010)
40 | Metropolis (1927)
41 | Laura (1944)
42 | The Lost Weekend (1945)
43 | The Silence of the Lambs (1991)
44 | Das Boot (1981)
45 | Some Like It Hot (1959)
46 | Anatomy of a Murder (1959)
47 | Dial M for Murder (1954)
48 | Psycho (1960)
49 | High Noon (1952)
50 | Blade Runner (1982)
51 | Heat (1995)
52 | The Matrix (1999)
53 | Tokyo Story (1953)
54 | Shadow of a Doubt (1943)
55 | Sweet Smell of Success (1957)
56 | The Lives of Others (2006)
57 | Patton (1970)
58 | 2001: A Space Odyssey (1968)
59 | Lawrence of Arabia (1962)
60 | The Battle of Algiers (1966)
61 | Indiana Jones and the Raiders of the Lost Ark (1981)
62 | Letter from an Unknown Woman (1948)
63 | Night Train to Munich (1940)
64 | The French Connection (1971)
65 | Chicago (2002)
66 | The Departed (2006)
67 | Spione (1928)
68 | Touch of Evil (1958)
69 | Jaws (1975)
70 | Parasite (2019)
71 | Once Upon a Time in the West (1968)
72 | King Kong (1933)
73 | La La Land (2016)
74 | The Triplets of Belleville (2003)
75 | One Cut of the Dead (2017)
76 | Inside Out (2015)
77 | Singin' in the Rain (1952)
78 | The Killing (1956)
79 | Steve Jobs (2015)
80 | Rio Bravo (1959)
81 | Perfect Blue (1997)
82 | Million Dollar Baby (2004)
83 | White Heat (1949)
84 | West Side Story (1961)
85 | Amy (2015)
86 | Eternal Sunshine of the Spotless Mind (2004)
87 | Red River (1948)
88 | Kramer vs. Kramer (1979)
89 | The Great Escape (1963)
90 | The Maltese Falcon (1941)
91 | The Man Who Shot Liberty Valance (1962)
92 | Ben-Hur (1959)
93 | Gladiator (2000)
94 | The Bad Sleep Well (1960)
95 | Birdman (2014)
96 | The Hustler (1961)
97 | Mother (2009)
98 | Munich (2005)
99 | Mildred Pierce (1945)
100 | Frost/Nixon (2008)
101 | Papurika (2006)
102 | Rebel Without a Cause (1955)
103 | Predator (1987)
104 | Stalag 17 (1953)
105 | Drive (2011)
106 | The Hurt Locker (2008)
107 | Bicycle Thieves (1948)
108 | Se7en (1995)
109 | The Sixth Sense (1999)
110 | The Big Heat (1953)
111 | Two Days, One Night (2014)
112 | American Beauty (1999)
113 | A Streetcar Named Desire (1951)
114 | Arrival (2016)
115 | In Cold Blood (1967)
116 | The Treasure of the Sierra Madre (1948)
117 | The Third Man (1949)
118 | The Prestige (2006)
119 | Twelve Monkeys (1995)
120 | Tomorrow I Will Date With Yesterday's You (2016)
121 | The Bridge on the River Kwai (1957)
122 | Pan's Labyrinth (2006)
123 | It Happened One Night (1934)
124 | Planet of the Apes (1968)
125 | Dog Day Afternoon (1975)
126 | Shane (1953)
127 | Leaving Las Vegas (1995)
128 | Brute Force (1947)
129 | The Usual Suspects (1995)
130 | Unforgiven (1992)
131 | Nightcrawler (2014)
132 | Jurassic Park (1993)
133 | Goodfellas (1990)
134 | The Player (1992)
135 | From Russia with Love (1963)
136 | Mr. Smith Goes to Washington (1939)
137 | It's a Wonderful Life (1946)
138 | The Adventures of Robin Hood (1938)
139 | Clueless (1995)
140 | Blue Valentine (2010)
141 | Shakespeare in Love (1998)
142 | Raise the Red Lantern (1991)
143 | House of Flying Daggers (2004)
144 | City of Life and Death (2009)
145 | And Then There Were None (1945)
146 | Blancanieves (2012)
147 | Take Shelter (2011)
148 | The Bridges of Madison County (1995)
149 | Her (2013)
150 | Inception (2010)
151 | The Spiral Staircase (1946)
152 | Godzilla (1954)
153 | Children of Men (2006)
154 | The Artist (2011)
155 | Watchmen (2009)
156 | Charade (1963)
157 | The Fall (2006)
158 | 4 Months, 3 Weeks and 2 Days (2007)
159 | Crouching Tiger, Hidden Dragon (2000)
160 | Saving Private Ryan (1998)
161 | The Fugitive (1993)
162 | Memento (2000)
163 | Up in the Air (2009)
164 | Slumdog Millionaire (2008)
165 | United 93 (2006)
166 | Foreign Correspondent (1940)
167 | The Queen (2006)
168 | Out of the Past (1947)
169 | The Asphalt Jungle (1950)
170 | The Ides of March (2011)
171 | The Bourne Ultimatum (2007)
172 | Avengers: Endgame (2019)
173 | X-Men: First Class (2011)
174 | Captain America: Civil War (2016)
175 | Match Point (2005)
176 | Inglourious Basterds (2009)
177 | City of God (2002)
178 | Atonement (2007)
179 | Little Miss Sunshine (2006)
180 | The Wages of Fear (1953)
181 | JFK (1991)
182 | Paper Moon (1973)
183 | Ikiru (1952)
184 | There Will Be Blood (2007)
185 | The Descendants (2011)
186 | Letters from Iwo Jima (2006)
187 | Taxi Driver (1976)
188 | Capote (2005)
189 | The Hidden Fortress (1958)
190 | Wait Until Dark (1967)
191 | Superman (1978)
192 | Midnight in Paris (2011)
193 | Full Metal Jacket (1987)
194 | Gone with the Wind (1939)
195 | The Man Who Would Be King (1975)
196 | Master and Commander: The Far Side of the World (2003)
197 | Night and the City (1950)
198 | The Remains of the Day (1993)
199 | Sansho the Bailiff (1954)
200 | Uncut Gems (2019)
201 | Good Night, and Good Luck. (2005)
202 | Apocalypse Now (1979)
203 | The Conversation (1974)
204 | Le Trou (1960)
205 | 1917 (2019)
206 | The Handmaiden (2016)
207 | The Twilight Samurai (2002)
208 | Black Swan (2010)
209 | Phoenix (2014)
210 | Strange Days (1995)
211 | The Incredibles (2004)
212 | WALL-E (2008)
213 | Fantastic Mr. Fox (2009)
214 | Toy Story (1995)
215 | Ex Machina (2014)
216 | Star Trek II: The Wrath of Khan (1982)
217 | Solaris (1972)
218 | City Lights (1931)
219 | Andhadhun (2018)
220 | The Window (1949)
221 | Russian Ark (2002)
222 | Gaslight (1944)
223 | Eyes Without a Face (1960)
224 | The Favourite (2018)
225 | Shutter Island (2010)
226 | The Truman Show (1998)
227 | Before Sunrise (1995)
228 | Architecture 101 (2012)
229 | Minority Report (2002)
230 | Scream (1996)
231 | A Hard Day (2014)
232 | What We Do in the Shadows (2014)
233 | Melancholia (2011)
234 | The Birds (1963)
235 | 300 (2006)
236 | Cabaret (1972)
237 | Shadow (2018)
238 | The Hunt (2012)
239 | Safety Last! (1923)
240 | The Stranger (1946)
241 | Memories of Murder (2003)
242 | The Day of the Jackal (1973)
243 | The Princess Bride (1987)
244 | Glengarry Glen Ross (1992)
245 | Roman Holiday (1953)
246 | Justice League: Gods and Monsters (2015)
247 | A Fantastic Woman (2017)
248 | The Rocketeer (1991)
249 | The Constant Gardener (2005)
250 | My Sassy Girl (2001)
#หนังโปรดของข้าพเจ้า
network bridge 在 Ngô Thành Dương Official Youtube 的最佳貼文
'bao tiền một mớ bình yên?' - 14 Casper & Bon
Cover: Dig DiDzay
#baotienmotmobinhyen #14Casper #DigDiDzay
------------------------
MV gốc: https://www.youtube.com/watch?v=vVhKA9Av6vA&list=RDvVhKA9Av6vA&start_radio=1
Mp3 gốc: https://zingmp3.vn/album/Bao-Tien-Mot-Mo-Binh-Yen-Single-14-Casper-Bon/66F9I6CI.html
Kara: https://www.youtube.com/watch?v=Oh19aOhA3eU
------------------------
✪ Lyrics :
Mười giờ, văn phòng vẫn sáng đèn
Lại một hôm làm thâu suốt đêm
Bàn chân đau mỏi nhức
Tựa lưng em chợp mắt
Dặn lòng: “Vì cuộc sống êm đẹp”
Hạnh phúc không đâu cách xa
Mà ta cứ đi tìm
Vậy xin em một lần
Tự yêu thương lấy mình
Một ngày em được mấy bữa cơm?
Đợt này công việc có tốt hơn?
Còn ai hay gièm pha?
Còn ai luôn rầy la mà xót xa, oà lên khóc vô vọng?
Cành lá đông qua sẽ rơi
Khổ đau sẽ vơi, đời buồn sẽ qua
Mưa tạnh, may tan, trời quang
Xin đừng buông xuôi dễ dàng
[Chorus 1]
Dù có lắm phút chốc em lạc lối
Hãy cho mình hồn nhiên một chút thôi
Mặc cho những âu lo ghìm chặt đôi vai
Mặc cho tiếng thở dài đập vào hư không
Dù có những lúc chỉ muốn gục ngã
Má em hồng, cười lên để thấy ta thật may mắn khi em như một bông hoa
mọc lên giữa nơi sa mạc cằn cỗi
Chỉ cần vậy thôi
[Verse 2]
Mua gì em còn phải đắn đo
Cho mình, em đừng nên lắng lo
Dù ai có gièm pha
Đừng quan tâm vài ba lời nói xa mà vấp ngã, yếu lòng.
Chẳng ai thu phí ước mơ
Thì hãy cứ mơ từng giây, phút, giờ
Em là mây cho, trời ban
Xin đừng buông xuôi dễ dàng
[Chorus 2]
Dù có lắm phút chốc em lạc lối
Hãy cho mình hồn nhiên một chút thôi
Mặc cho những âu lo ghìm chặt đôi vai
Mặc cho tiếng thở dài đập vào hư không
Dù có những lúc chỉ muốn gục ngã
Má em hồng, cười lên để thấy ta thật may mắn khi em như một bông hoa
mọc lên giữa nơi sa mạc cằn cỗi
Chỉ cần vậy thôi
[Bridge]
Đã có ngày, tháng, năm kia vụn vỡ
Nhưng hãy nhớ: tỉnh giấc mơ ngày mai rồi sẽ tốt hơn
Chẳng còn những lúc buốt giá
Dày vò tâm can yếu đuối ngày qua
[Chorus 3]
Cần bao nhiêu lâu để em tìm kiếm?
Cần bao nhiêu tiền đổi một mớ bình yên?
Chẳng ai bán, ai mua, ai mần, ai mang
Bình yên chứa chan nơi trong lòng nhân gian
Dù có những lúc chỉ muốn gục ngã
Má em hồng, cười lên để thấy ta thật may mắn khi em như một bông hoa
mọc lên giữa nơi sa mạc cằn cỗi
Chỉ cần vậy thôi
More information about Dig DiDzay:
► Youtube: https://metub.net/NgoThanhDuong
► Facebook: https://www.facebook.com/didzay.dig/
► Fanpage: https://www.facebook.com/Dig-DiDzay-1
...
► Soundcloud: https://soundcloud.com/igizay
Mọi vấn đề về Hợp tác, Quảng cáo, Khiếu nại các vấn đề về bản quyền:
? Hotline: 097 1234 124
? Email: digdidzay@gmail.com
--------------------------------------------
© Bản quyền thuộc về 14 Casper và METUB Network
© Copyright by 14 Casper and METUB Network ☞ DO NOT RE-UP
network bridge 在 Minh Hằng Official Youtube 的最佳貼文
Mọi người thích hình ảnh quyền lực dưới ánh đèn sân khấu hay hình ảnh thuần khiết đời thường của Hằng hơn? Comment chia sẻ với Minh Hằng ngay nha!
#MINHHANG #HIEUTHUHAI#VYMG
CREDIT:
Sáng tác | Composer: Hứa Kim Tuyền
Ý tưởng | Creative Agency: Chuo Senko Việt Nam
Sản xuất | Produced by: Soulie House
Đạo diễn | Director: Vũ Hồng Thắng
Đạo diễn hình ảnh | D.O.P: Hoàng Chaizee
Cảm ơn nhãn hàng Lip Pure, công ty Rohto-Mentholathum Việt Nam, Đối tác của YouTube tại Việt Nam – METUB Network đã đồng hành cùng Minh Hằng trong dự án “Vì Yêu Mà Giấu”.
LYRIC:
(Verse)
Luôn đẹp, luôn ngầu, luôn cười tươi rất tươi
Mắt này, môi này, chân này phải perfect!
Hát này, diễn này, kinh doanh này cần cân bằng
It's my life, yeah It's my life
Không được ăn vặt, la cà anywhere!
Không được đăng này, share nọ trên Facebook
Không được nói nhiều, nói dài On da show
I'm a star, cuz I'm a star.
(Pre)
Khi đêm về lắng nghe tim mình
Xem như cả thế gian vô hình
Bên em là anh
Hôn em bằng đôi môi anh.
(Chorus)
Yêu anh, một tình yêu chỉ có thêm
Cho em những cảm xúc rất êm đềm
Yêu yêu yêu
Em càng yêu yêu yêu
Em càng nhớ-ơ-ờ
Đêm về cứ mong chờ.
Hands up! And look at to da left
Hands up! And look at to da right
Quay quay quay
Ta cùng xoay xoay xoay
Ta cùng hey hey hey
Ta cùng nhảy nhay nhày.
(Hook)
Là anh đó, chỉ mình anh có
Vì anh chẳng là "một ai đó"
Pure pure pure
I'm so pure pure pure
You're so pure pure pure
Love's so pure pure pure (x2)
(Rap)
Anh đang có ở trong con tim là một tình yêu thuần khiết yà
Ở bên anh luôn an toàn, thêm an tâm em cũng biết mà
Cảm xúc này luôn tự nhiên, êm như thơ anh viết ra
Chăm sóc cho em nhiều hơn, trăm phần trăm I love ya.
Nói em đang ở đâu (em không nói cho anh thì sao)
Anh sẽ đến ôm ngay từ sau (hình như là em chiều anh quá)
Và mình sẽ trao nhau nụ hôn (nên anh hư đúng hông nà)
Say đắm hơn phim "tình-ngôn"
Baby all I do cuz you are my all.
(Pre)
(Chorus)
(Hook)
(Bridge)
Đôi khi mệt quá em chỉ muốn đi thật xa
Đi những nơi chẳng ai nhận ra
Đi nhưng nơi chẳng ai tìm đến ta...
Cho em được bên cạnh anh mãi thôi
Một tình yêu đẹp rất trong lành
Một tình yêu chỉ có chân thành babe...
(Chorus)
(Hook)
#MINHHANG #HIEUTHUHAI #VYMG
-------------------
Các bạn đăng ký kênh và bấm chuông để nhận thông báo video mới nhất của Hằng nhé.
Theo dõi Minh Hằng:
☞ YouTube: http://metub.net/minhhang
☞ Fanpage: https://www.facebook.com/csdv.minhhang/
☞ Facebook: https://facebook.com/heoratmap
☞ Instagram: https://instagram.com/minhhang2206
----
☆ Vui lòng không reupload video của Minh Hằng
☆ Mọi vấn đề liên quan đến bản quyền vui lòng email tới support@metub.net
network bridge 在 Mars Hartdegen Youtube 的最佳貼文
??