📜 [專欄新文章] 類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
有鑒於個人近期關注的 Uniswap 及 Curve 皆用 Vyper 實作,索性瀏覽了官方文件並嘗試一些開發工具,希望此文能減少一些讀者初嘗 Vyper 會遇到的麻煩!
Vyper and Solidity
Outline
一. Vyper 極簡介二. 與 Solidity 語法差異三. 開發、開發環境設置 1. 語法高亮 2. 本地 Vyper compiler 安裝 3. 使用 Truffle 操作 ERC20 - 安裝 Truffle - 發幣 - 寫個簡易賣幣合約四. 已知 Remix 問題 五. 結語
一. Vyper 極簡介
Vyper 是除 Solidity 外,以太坊上的另一智能合約 (Smart contract) 語言。其語法和 Python 相近,但畢竟也是寫合約的語言,邏輯差異不大,所以若熟悉 Solidity 應該不難理解用 Vyper 寫出的合約!
Vyper 主要被設計和 Solidity 的區別是安全性及可讀性,這部分會在下一段落及後方的實作中舉例說明。
二. 與 Solidity 語法差異
Vyper 與 Solidity 的差異有許多,在本段只就個人認為感受較深的三點進行說明,其他差異只進行翻譯,有興趣的讀者可以到官方文件詳細了解:https://vyper.readthedocs.io/en/latest/index.html
1. 沒有 modifier
Solidity 常見的 onlyOwner() modifier; 由於 gist 沒有 Solidity 的語法高亮,故截圖
在 Vyper 中單純用 assert 及 assert_modifiable 來進行條件檢查,兩者差別為若要檢查函數執行後的返還值,要用後者,如下圖:
Vyper 寫法
2. 沒有 Class inheritance 繼承
繼承是物件導向程式設計 (OOP) 的核心概念,但各種繼承關係有時候確實很複雜。Vyper 沒有繼承,這無疑大幅地增加了程式可讀性及安全性,以及降低審計程式碼的難度。在此提供一個例子供不熟悉 OOP 複雜之處的讀者有個概念:
source: https://consensys.github.io/smart-contract-best-practices/recommendations/#multiple-inheritance-caution
在上例中,contract A 的 fee 值 (因繼承自 contract B 和 C,故有 fee 一值) 是 5、a 值也是 5 (因繼承自 contract Final,故有 a 一值)。原因是 A 先繼承 B 再繼承 C,因此 contract A 中的 setFee() 是使用了 contract C 的 setFee(),而 a 值是由於 C(5),這代表 contract C 的 constructor (舊版本中即 function C(),函式名稱同 contract 名稱) 被傳入的值為 5。
稍微延伸一下以上概念,將 contract A 改成:contract A is C, B。如此一來,a 值還有 fee 值都會是 3,因為這次 A 先繼承 C 再繼承 B,因此最終吃到的值是 contract B 的。
以上就是 OOP 繼承的複雜之處的簡單範例說明,應該能稍微感受到爲什麼除去繼承後會大幅提高可讀性及安全性,畢竟即使是熟悉 OOP 的人有時頭腦一混亂也會開始懷疑自己寫的程式碼繼承結構是否正確 …
3. 沒有 dynamic array 動態陣列
這應該是目前 Vyper 設計中爭議最大的部分。沒有動態陣列代表在宣告陣列時需要宣告其長度,也就是說 Solidity 中的寫法 uint[], bool[] 等等,這些是不會出現在 Vyper 的。在 Vyper 中只能出現諸如:
# Vyper 的變數宣告方式為 變數名稱: 存取範圍(變數型態(若為陣列給長度))
values: uint256[10]participants: public(address[20])
可以看到上方的 uint256 及 address 兩陣列皆需要宣告長度,不能不宣告而使其動態地配置空間。
沒有動態陣列固然可以確保執行運算的範圍、次數,但一來動態陣列真的很方便、二來在 Solidity 有此功能而 Vyper 卻沒有的情況下可能會造成麻煩,詳見此一討論串:點我。
4. 沒有 inline assembly,程式碼中不會有組合語言
5. 沒有 function overloading,函式不會因傳入的參數數目不同而結果不同
6. 沒有 operator overloading,運算符號不會有不同於預設的自定義功能
7. 沒有無限迴圈,可免於 gas limit attack
8. 十進位定點數 decimal fixed point 而非二進位 (binary) 定點數,詳見:點我
三. 開發、開發環境設置
結論先講
開發 Vyper 的最佳姿勢目前個人認為是在本地裝上 Vyper compiler、用 Truffle 部署,並在撰寫時將檔名後加上 .py 就能有 Python 的語法高亮👌
1. 語法高亮 (syntax highlighting)
有語法高亮絕對是舒服地寫程式的第一步。
Remix 有 Vyper 的語法高亮,但一來個人目前不推薦使用 Remix 來撰寫 Vyper,原因詳見下方 4. 已知 Remix 問題;二來 Remix 的語法高亮其實也沒有很清楚,因此個人推薦:在本地開發,將檔名後加上 .py 就會有 Python 的語法高亮。
2. 本地 Vyper compiler 安裝
照官方說明使用 Python 的虛擬環境 virtualenv:
source: https://vyper.readthedocs.io/en/latest/installing-vyper.html#installing-vyper
簡單兩點提醒:
如果中間那行報錯但確實已經有 Python,則可能是版本問題。依照自己電腦上的版本改成相應的即可,ex: python3.6 改成 python3
進入虛擬環境後(檔案路徑前方應有 vyper-venv 的提示),使用此指令: vyper {檔案名稱}.vy,即可編譯 .vy 檔;使用完畢後輸入 deactivate 即可退出
3. 使用 Truffle 操作 ERC20
安裝 Truffle
Truffle 雖有冗餘的 migration 但也別無他法,畢竟 Remix 目前仍不完善 :(
下載流程可以照官方文件,使用 vyper-example:
source: https://github.com/truffle-box/vyper-example-box
由於我們會接上測試網 Ropsten,因此還要下載 truffle-hdwallet-provider:
source: https://github.com/trufflesuite/truffle-hdwallet-provider
接者就可以開始使用 Vyper 寫合約了!
發幣
由於 Vyper 的官方文件中已經有許多優質範例,因此本文希望來點不一樣但大家卻又很熟悉的…以 ERC20 為例(這千篇一律的主題xD):
用 Curve 的 ERC20 程式碼為範本,發一個幣(又要發…)
寫一個簡易賣幣合約
選擇這個主題一方面畢竟 ERC20 是以太坊的最大宗應用之一,二來有興趣的讀者可以透過讀 ERC20 的程式碼來熟悉 Vyper,並在看過本文的流程後對於用 Vyper+Truffle 來操作 ERC20 有完整的概念!
好的,首先複製一份 Curve 的 ERC20 程式碼(看到就順手拿來用),並複製到 Truffle 所在路徑的 contracts 資料夾中:https://github.com/curvefi/curve-contract/blob/pool_compound/vyper/ERC20.vy
由於第一點希望著重在跑一次流程,因此不改動合約的程式碼。
將 ERC20.vy 複製到 contracts 資料夾中後,到 migrations 資料夾開啟 2_deploy_contracts.js,首先將 require() 中的參數改為 ERC20.vy 的檔名 ERC20,再來依照自己喜好決定幣的名稱、代號、小數點位數及發行總量,輸入於 deployer.deploy() 中。
接著,為了和測試網 Ropsten 互動,需要將以下程式碼寫入 truffle-config.js。
第二行的 privateKeys 是帳號的私鑰。以下實作需要兩個帳號來操作,因此請從錢包匯入兩組私鑰(並非助憶詞)。
在第 13 行中 HDWalletProvider 此函式的第三個參數代表要用第幾個帳號最為預設帳號(部署合約等),第四個函數代表總共匯入幾組帳號。而第二個參數則是需要至 Infura 申請一個 project 來得到串接 Ropsten 的連結。這兩步驟並非本文重點,因此不詳細解說步驟,Google 搜尋關鍵字應該就會找到方法!
接著,就可以輸入以下指令來將代幣發佈到 Ropsten:
truffle deploy --network ropsten
有進入虛擬環境才可以編譯 .vy 檔,若忘記就會收到如下的錯誤訊息:
記得打開虛擬環境才能編譯 .vy 檔
成功後就可以在 contract address 中看到代幣發佈的位置,加入到 Metamask 中就可以看到。本文的例子是維尼代幣 Winnie the Coin, WTC ;)
contract address 便是 ERC20 的所在
Winnie the Coin, WTC
好了,到此測試網上又多了一個測試用的垃圾廢幣。
寫個簡易賣幣合約
賣幣合約中我想要簡單有兩個功能就好:付錢買幣 、結束銷售,以下就是程式碼。買幣的部分就不寫太詳細,固定價格為 0.01 Ether 可以買 500 代幣。
簡單說明幾點:
Solidity 的 constructor() 在 Vyper 中為 Python 風的 __init__():
函式的屬性(public, private, payable 等等)放在函式上方,與 Python 的修飾器位置相同
總之寫法跟 Python 很像,次方也一樣是用兩次乘法代表:**
變數前加上 self 代表是當前合約的變數/全域變數,因此非常容易與函式中的變數/區域變數做區隔
由於已經在第一行匯入了 ERC20 那份合約,因此透過將地址傳入合約當參數,就可以呼叫在該地址的合約:ERC20(self.tokenAddress) 。並且,可以將部署的合約存成一個變數 erc20 較方便
寫完合約後一樣要更改 migrations 資料夾中的 2_deploy_contracts.js 如下,將代幣所在的地址作為參數輸入。
由於先前已經部署過一次了,因此要重置才能再部署第二次,輸入以下指令:
truffle deploy --reset --network ropsten
部署成功之後就要來試著買幣啦!輸入以下來進入 console:
truffle console --network ropsten
成功進入後應該會看到 truffle(ropsten)> 的字樣。接著,首先取得部署的兩合約,並查看是否有返回合約資訊:
# ERC20 及 SellToken 是先前在 2_deploy_contracts.js 中的變數名稱,代表被部署的合約
let instance1 = await ERC20.deployed()instance1 # 印出 instance1 的資訊
let instance2 = await SellToken.deployed()instance2 # 印出 instance2 的資訊
再來,為了讓 SellToken 可以賣幣,要先用 ERC20 的合約匯幣到 SellToken 的合約。因此,輸入以下指令:
instance1.transfer(instance2.address, 10000)
# 這裡數字只要設為 > 500 就可以
接著,我們要利用第二個帳號去買幣(第一個帳號為預設帳號,因此就是代幣擁有者)。將帳號的資訊存入變數 accounts 中,再指定送出交易的帳號是第二個帳號。由於我個人匯入私鑰的順序是將第一個帳號存在 truffle-config.js 的 privateKeys[0]、第二個帳號存在 privateKeys[1],因此第二個帳號的地址就會在 accounts[1] 的位置:
let accounts = await web3.eth.getAccounts()
instance2.buyToken({from: accounts[1], value: 10000000000000000})
# value 為 10^16 是因為在 SellToken 的 buyToken 函式中買一次要 0.01 Ether, 即為 10^16 wei
然後應該就會在自己的第二個帳號中看到匯入的幣了~
最後,由於合約中結束銷售就是一個自殺 selfdestruct 函式,因此可以呼叫看看,第一個帳戶錢包中的錢應該會增加,因為第二個帳戶有付款買幣;並且,可以到 Ropsten 上瀏覽,應該能看到相關提示:
中間 contract 的右上角有 Self Destruct 的樣式
四. 已知 Remix 問題
Remix 目前有兩個版本,只有新版有 Vyper 的編譯器。在此整理目前遇到的問題,如果有人也遇到可以對照一下本處,可以省去很多自我懷疑xD
不會報錯
Remix 的編譯結果有時會是錯的、和本地端編譯出來的結果不同
舉上方的 SellToken 合約為例,將其複製到 Remix 中使用左邊的 Remote Compiler 有錯,但又不報錯 q_q (ERC20 的合約有在同檔案目錄)
左方有紅色三角形,代表編譯失敗,但沒有報錯訊息可以看…
getter function 竟然要花錢
用 Solidity 寫的合約,查詢 public 變數的值應該是不用消耗 gas 的,但不知何故查詢 Vyper 寫的合約的 public 變數卻要消耗 gas,如下圖…
可以看到中下方有 22026 gas 的消耗
Local compiler 無法使用
圖中的 Local Compiler 此選項,個人雖照官方文件執行 vyper-serve 但卻失敗,因此若有讀者成功希望能留個言不吝分享!
五. 結語
Vyper 作為一個比 Solidity 更新的合約語言,在寫程式碼的方面沒什麼問題,但相關的開發工具、學習資源等都遠不及 Solidity。
Vyper 主打的兩個特色:可讀性的部分相信看完上面的讀者應該已經有些感覺;安全性…小白如作者我倒是沒有感受到顯著的不同。況且 Solidity 已經發展許久,很多錯誤的寫法、知名的安全漏洞大家應該也很熟悉了,還有 Openzeppelin 提供安全合約寫法的範本,因此有待以後高人解說安全性是否真的是 Vyper 較好。
有興趣者可以查看 Vyper 的安全報告:點我,大意是目前 Vyper 的編譯器仍有許多問題待改進! (感謝 Chih-Cheng Liang 的提供)
本文對 Vyper 的介紹及其與 Solidity 的差異只講了個大概,欲知更詳細的介紹還是要麻煩讀者前往官方文件了:https://vyper.readthedocs.io/en/latest/index.html
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過26萬的網紅Potv,也在其Youtube影片中提到,[開箱]Pokemon go plus開箱,寶可夢手環,抓寶實測-開箱評論-孵蛋能用-apple watch比你會想用哪個呢?抓寶神器,抓寶利器 pokemon go plus 開箱,幫助你孵蛋,是由Reddit上的消息製成。 「Pokemon GO Plus」是一個讓玩家不需要一直盯著螢幕,也可...
c 發行 免 安裝 在 蔡正元 Facebook 的最佳貼文
服貿開放清單(ㄧ)
反對的人到底看懂多少?
附件一 服務貿易特定承諾表
臺灣方面非金融服務部門的開放承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
一、商業服務業
B.電腦及其相關服務業
(a)與電腦硬體安裝有關之諮詢服務(CPC841)(b)軟體執行服務(CPC842)(c)資料處理服務(CPC843)(d)資料庫服務(CPC844)(e)其他(CPC845+849)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供電腦及其相關服務。(4)除有關下列各類自然人之進入臺灣及短期停留措施外,不予承諾:
i.商業訪客進入臺灣停留期間不得超過三個月。(商業訪客係指為參加商務會議、商務談判、籌建商業據點或其他類似活動,而在臺灣停留的自然人,且停留期間未接受來自臺灣方面支付的酬勞,亦未對大眾從事直接銷售的活動。)
ii.跨國企業內部調動人員進入臺灣初次停留期間為三年,惟可申請展延,每次不得逾三年,且展延次數無限制。(跨國企業內部調動人員係指被其他世界貿易組織會員的法人僱用滿一年,透過在臺灣設立的分公司、子公司或分支機構,以負責人、高級經理人員或專家身分,短期進入臺灣以提供服務的自然人。
「負責人」係指董事、總經理、分公司經理或經董事會授權得代表公司的部門負責人。
「高級經理人員」係指有權任免或推薦公司人員,且對日常業務有決策權的部門負責人或管理人員。
「專家」係指組織內擁有先進的專業技術,且對該組織的服務、研發設備、技術或管理擁有專門知識的人員。專家包括,但不限於,取得專門職業證照者。)
iii.在臺灣無商業據點的大陸企業所僱用的人員得依下列條件進入臺灣及停留:
(i)該大陸企業已與在臺灣從事商業活動的企業簽訂驗貨、售後服務、技術指導等,及其他與左列服務相關的服務契約。
(ii)此類人員應符合前述「專家」的定義。
(iii)此類人員在臺灣期間不得從事其他與服務契約無關的服務活動。
(iv)本項承諾僅限於契約所定的服務行為。並未給予此類人員以取得專業證照的身分,在臺灣廣泛執業的資格。
每次停留的期間不得超過三個月或契約期間,以較短者為準。此類進入許可的有效期間自核發的翌日起算為三個月至三年。符合條件者可在許可有效期間內多次進入臺灣。
其他承諾
E.未附操作員之租賃服務業
(b)航空器租賃(涉及航空權者除外) (CPC83104**)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供航空器租賃服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(c)自用小客車租賃(CPC83101**)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供自用小客車租賃服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(d)其它機器與設備租賃(CPC83106-83109)(電信設備及電力設備租賃除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供其它機器與設備租賃服務。(4)同「電腦及其相關服務業」的承諾
其他承諾
F.其他商業服務業
(a)廣告服務業(CPC871**)(廣播電視廣告業除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供廣告服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(b)市場研究服務業(CPC86401**,限於市場分析、消費者態度和偏好的分析)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣設立合資、合夥企業,提供市場研究服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(c)管理顧問服務業(CPC865)
市場開放承諾(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供管理顧問服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(e)技術檢測與分析服務業(CPC8676)—車輛、機械、電機、電子、化工、度量衡、酒類產品及環境檢測的技術檢測及分析服務
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)i.允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供技術檢測與分析服務。ii.在互信互利的基礎上,允許在大陸的檢測驗證機構與臺灣檢測驗證機構展開檢測數據(結果)的接受合作。具體合作安排另行商定。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(e)技術檢測與分析服務業(CPC8676)—醫療器材的非臨床試驗檢驗的技術檢測及分析服務
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供非強制性檢驗的技術檢測與分析服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾(f)附帶於畜牧業之顧問服務業(非涉及家禽孵育及家畜禽配種者) (CPC88120**)
市場開放承諾(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供附帶於畜牧業之顧問服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(h)附帶於礦業之服務業(CPC883、5115)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供附帶於礦業之服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(m)與科學技術有關之顧問服務業—限地質、礦物及其他科學勘察服務(CPC86751)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,且允許大陸服務提供者擁有多數股權,提供與科學技術有關之顧問服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(n)設備維修服務業(CPC633、8861-8866)(海運船隻、航空器及其他運輸設備除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供設備維修服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(o)建築物清理服務業(CPC874)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供建築物清理服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(p)攝影服務業(CPC875)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供攝影服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(q)包裝服務業(CPC876)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供包裝服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(r)印刷及其輔助服務業(CPC88442**)
市場開放承諾
(1)不予承諾。(2)沒有限制。(3)允許大陸服務提供者在臺灣設立合資企業,提供印刷及其輔助服務。大陸服務提供者限投資臺灣現有事業。大陸服務提供者總股權比例不超過50%。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(s)展覽服務業(CPC87909**)
市場開放承諾
(1)不予承諾,但與「海峽兩岸經濟合作架構協議」附件四的開放承諾有關者除外。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,與臺灣會展產業的企業或公會、商會、協會等團體合辦展覽。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(t)其他
ii.複製服務業(CPC87904)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供複製服務。(4)同「電腦及其相關服務業」的承諾
其他承諾
iii.翻譯及傳譯服務業(CPC87905)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供翻譯及傳譯服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
iv.郵寄名單編輯服務業(CPC87906**)
市場開放承諾(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供郵寄名單編輯服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
二、通訊服務業
B.快遞服務陸地運送部分(現行由臺灣郵政主管部門依規定保留之服務除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供包裹等物品的快遞服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
C.電信服務業第二類電信事業特殊業務(1)存轉網路服務(2)存取網路服務(3)數據交換通信服務
市場開放承諾
(1)見模式(3)。(2)沒有限制。(3)允許大陸服務提供者在臺灣投資左列業務。大陸服務提供者須為在海外或大陸上市之電信業者;大陸服務提供者總持股比例不超過50%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
D.視聽服務業(a)電影或錄影帶之行銷服務業—進口大陸電影片(CPC96113)
市場開放承諾
(1)除與「其他承諾」有關者外,不予承諾。(2)沒有限制。(3)除與「其他承諾」有關者外,不予承諾。(4)除與「其他承諾」有關者外,不予承諾。
其他承諾
根據大陸有關規定設立的製片單位所拍攝、符合臺灣相關規定所定義之大陸電影片,經臺灣主管機關審查通過後,每年以15部為限,可在臺灣商業發行映演,並應符合大陸電影片進入臺灣發行映演之相關規定。
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
三、營造及相關工程服務業
A.建築物的一般建築工作(CPC512)B.土木工程的一般建築工作(CPC513)C.安裝和組裝工作(CPC514+516)D.建築物竣工和最後修整工作(CPC517)E.其他(CPC511+515+518)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供營造及相關工程服務。大陸服務提供者總持股比例不超過12%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
四、配銷服務業
B.批發交易服務業(CPC622,武器警械及軍事用品、農產品市場交易法所稱之農產品批發市場除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供批發交易服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
C.零售服務業(CPC631、632、6111、6113、6121,武器警械、軍事用品、藥局及藥房除外)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供零售交易服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
D.經銷(CPC8929)
市場開放承諾(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供經銷服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
六、環境服務業
A.污水處理服務業(CPC9401)B.廢棄物處理服務業(CPC9402)D.其他—廢氣清理服務業(CPC9404)—噪音與振動防制服務業(CPC9405)—土壤及地下水污染整治服務業(CPC9409**)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供環境服務。 (4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
八、健康與社會服務業A.醫院服務業(CPC9311)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式捐助設立非營利的醫療財團法人醫院,提供醫院服務。此外:(i)未持有臺灣方面身分證明文件的自然人擔任董事會董事合計不得超過全體董事的三分之一;(ii)全體董事的三分之一以上必須具有臺灣醫事人員資格。(4)除模式(3)所列內容外,不予承諾。
其他承諾
其他—無操作員醫療設備之出租或租賃服務業
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供無操作員醫療設備租賃服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
C.社會服務業—老人及身心障礙者福利機構
市場開放承諾(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合夥形式設立小型老人及身心障礙福利機構。大陸服務提供者出資比例須低於50%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
九、觀光及旅遊服務業A.旅館及餐廳(a)旅館(限於觀光旅館) (CPC64110**)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供觀光旅館服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(c)提供食物服務(CPC642) (包括提供相關飲料服務)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供餐館服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
B.旅行社及旅遊服務業(CPC7471)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供旅行社及旅遊服務。大陸服務提供者在臺灣設立的商業據點總計以3家為限。經營範圍限居住於臺灣的自然人在臺灣的旅遊活動。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
十、娛樂、文化及運動服務業(視聽服務業除外)A.娛樂服務業—演出場所經營
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資、合夥形式設立劇場、音樂廳演出場所的經營單位。大陸服務提供者總持股比例須低於50%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
D.運動及其他娛樂服務業—運動場館營運(CPC96413)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供運動場館營運服務(高爾夫球場除外)。(4)同「電腦及其相關服務業」的承諾。
其他承諾
E.其他—遊樂園及主題樂園(非屬森林遊樂區者)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供遊樂園及主題樂園服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
十一、運輸服務業A.海運服務業(f)海運輔助性服務業(CPC745)—港埠業—其他水上運輸輔助業(船舶貨物裝卸承攬業、拖駁船業)—貨櫃集散站經營業—船舶理貨業—船舶小修業
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供海運輔助性服務 。大陸服務提供者總持股比例須低於50%。(4)同「電腦及其相關服務業」的承諾。
其他承諾
C.空運服務業(b)空運服務之銷售及行銷
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許經雙方民航主管機關核准營運之大陸民用航空運輸業者,在臺灣設立商業據點銷售及行銷其空運服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
航空貨物集散站經營業
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供航空貨物集散站經營服務。大陸服務提供者總持股比例不超過10%。(4)同「電腦及其相關服務業」的承諾。
其他承諾
F.公路運輸服務業(a)旅客運輸(限於小客車租賃業)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供旅客運輸服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(b)貨物運輸
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供貨物運輸服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(d)公路運輸設備維修(CPC6112+8867)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供公路運輸設備維修服務 。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(e)公路運輸支援服務業(CPC7441)—限公路客運的轉運站、車站、調度站
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供公路客運的轉運站、車站、調度站服務 。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(e)公路運輸支援服務業(CPC7442)—限公路橋樑及隧道管理
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供公路橋樑及隧道管理服務 。大陸服務提供者總持股比例須低於50%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(e)公路運輸支援服務業(CPC7443)—限停車場業
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供停車場服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
空中纜車運輸服務(CPC71219**)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供空中纜車運輸服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
H.各類運輸之輔助性服務業(b)倉儲服務業(CPC742)
市場開放承諾(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供倉儲服務 。大陸服務提供者總持股比例須低於50%,不具控制力。其中屬保稅倉儲者僅限位於港區內。(4)同「電腦及其相關服務業」的承諾。
其他承諾
(c)貨運承攬服務業(CPC7480)
市場開放承諾
(1)沒有限制。(2)沒有限制。(3)允許大陸服務提供者在臺灣以合資形式設立商業據點,提供貨運承攬服務,投資航空、海運貨運承攬業總持股比例須低於50%,不具控制力。(4)同「電腦及其相關服務業」的承諾。
其他承諾
服務提供模式:(1)跨境提供服務(2)境外消費(3)商業據點呈現(4)自然人呈現
部門或次部門
十二、其他洗衣及染色服務業(CPC9701)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供洗衣及染色服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
美髮和其他美容服務業(CPC9702)
市場開放承諾
(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供美髮和其他美容服務。(4)同「電腦及其相關服務業」的承諾。
其他承諾
殯儀館及火化場
市場開放承諾(1)技術上不可行。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資及合資形式設立殯儀館及火化場。(4)同「電腦及其相關服務業」的承諾。
其他承諾
線上遊戲業—限製作與研發服務
市場開放承諾
(1)不予承諾。(2)沒有限制。(3)允許大陸服務提供者在臺灣以獨資、合資、合夥及設立分公司等形式設立商業據點,提供線上遊戲製作與研發服務。(4)同「電腦及其相關服務業」的承諾。
臺灣方面金融服務部門的開放承諾
部門名稱
保險及其相關服務
具體承諾
積極審慎修正有關大陸保險業在臺灣設立代表處及參股評等之規定。
銀行及其他金融服務(不包括證券期貨和保險)
具體承諾
1.儘速取消大陸的銀行來臺灣設立分支機構及參股投資的OECD條件。
2.已在臺灣設有分行的大陸的銀行符合條件者,可申請增設分行。
3.單一大陸的銀行得申請投資臺灣上市(櫃)銀行、金控公司的持股比率提高至10%(如加計大陸合格境內機構投資者為15%);投資未上市(櫃)銀行、金控公司的持股比率提高至15%;參股投資金控公司子銀行的持股比率可達20%。參股投資金控公司或其子銀行,維持現行二者擇一規定。
4.大陸的銀聯公司得申請來臺灣設立分支機構。
證券、期貨及其相關服務
具體承諾
1.大陸證券期貨機構按照臺灣有關規定申請在臺灣設立代表人辦事處須具備的海外證券、期貨業務經驗為2年以上,且包括香港及澳門。
2.循序放寬大陸合格境內機構投資者投資臺灣證券之限額,初期可考慮由5億美元提高至10億美元。
3.積極研議放寬大陸證券期貨機構參股投資臺灣證券期貨機構的有關限制。
4.積極研議大陸合格境內個人投資者投資臺灣資本市場。
c 發行 免 安裝 在 Potv Youtube 的精選貼文
[開箱]Pokemon go plus開箱,寶可夢手環,抓寶實測-開箱評論-孵蛋能用-apple watch比你會想用哪個呢?抓寶神器,抓寶利器
pokemon go plus 開箱,幫助你孵蛋,是由Reddit上的消息製成。
「Pokemon GO Plus」是一個讓玩家不需要一直盯著螢幕,也可以捕捉寶可夢,在 PokeStops 中獲得道具的裝置。
pokemon go plus即將於9/16上市,售價約40美金/1200新台幣
在上市之前,大家有很多的猜測,也會拿他和APPLE WATCH比較
來看,pokemon go plus 開箱,
而令人開心的我在REDDIT看到的資料顯示,
這個
1.行走時能夠把里程累積到孵蛋/夥伴系統裡
2.抓怪時是使用一般的寶貝球,
不一定每次都成功
(成功/失敗有各自不同閃爍的LED)
3.即使手機螢幕關著也能使用/
這樣就解決了pokemon go 本身耗電的問題
出門也不用帶行動電源了
看完,pokemon go plus 開箱,
和apple watch比你會想用哪個呢?
Reddit 原作者c-a-m-i討論測試文http://sh.st/NMtuu
裝置名稱:Pokemon GO Plus
發售日期:2016 年 9 月 16 日
裝置價格:3500 日圓(未稅)
pokemon go 美金35元
商品內容:「Pokemon GO Plus」本體,「Pokemon GO Plus」專用手環,鈕扣電池 CR2032,說明書
發行:Pokemon
販售:任天堂
對應環境:
「iOS」對應 OS 版本:iOS 8~9,對應裝置:iPhone 5/5c/5s/SE/6/6s/6 Plus/6s Plus
「Android」對應 OS 版本:Android 4.4~6.0,對應裝置:Android 4.4 以上,Bluetooth Smart(Bluetooth v4.0 以上),搭載 RAM 2GB 以上的裝置
訂閱Potv看精彩影片: https://goo.gl/Gfvdi7
Potv的 人氣影片*
-----------------
★神奇寶貝都市傳說,超夢現身?
https://goo.gl/Ukr9DE
★精靈寶可夢雷達[pokemesh] 最準確安卓雷達教學,讓你找怪免迷路
https://goo.gl/A3N7ct
★YouTuber 學校,幫你成為人氣頻道主:https://goo.gl/hdzvjZ
----------------------------
推薦影片
【Pokémon Go】10顆10公里蛋分五次孵,竟然...
https://youtu.be/gG5MBtgbBQo
Pokemon go Plus開箱安裝實測!/Pokemon go Plus setup and review/ポケモンGO Plusを使ってポケモンをGETしてみた[NyoNyoTV 妞妞TV]
https://youtu.be/NV_aQ3aGFIY
Pokemon Go Plus實測 (中文字幕):「不用開手機」也可孵蛋捉POKEMON? #31
https://youtu.be/I92IXNqr1BY
關於Potv*
-----------------
★ 臉書 FACEBOOK https://goo.gl/Yy3CQZ
★ 商務聯繫 EMAIL aahpsno1@gmail.com
影片將挑戰每日七點更新 =D
Potv的keyword*
【神奇寶貝】,【寶可夢】,【寶可夢雷達】,【pokemon go 超夢】,【Pokemon go私服】,【挑戰】,【寶寶】,【親子】,pokemon go plus 開箱,寶可夢,Pokemon go plus,開箱,apple watch,Pokemon go台灣,Potv,Pokemon go,apple watch,apple watch 2,省電,行動電源,神奇寶貝,