📜 [專欄新文章] 類 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.
👏 歡迎轉載分享鼓掌
同時也有4部Youtube影片,追蹤數超過1,140的網紅icyball 冰球樂團,也在其Youtube影片中提到,《 #三杯 》EP 全數位平台收聽: https://icyballband.lnk.to/SayWhen 粉色的念頭在心中不停盤旋,身邊有個誰讓你隔日宿醉也甘願,一杯一杯再一杯,今晚已經不打算節制也不在乎後果了。火箭會如期升空嗎?天邊稀疏的雲朵會帶來滋潤嗎?高高舉起的期待,是否又要重重地受傷害?...
c 字 串 轉 數字 小數點 在 icyball 冰球樂團 Youtube 的最佳貼文
《 #三杯 》EP 全數位平台收聽:
https://icyballband.lnk.to/SayWhen
粉色的念頭在心中不停盤旋,身邊有個誰讓你隔日宿醉也甘願,一杯一杯再一杯,今晚已經不打算節制也不在乎後果了。火箭會如期升空嗎?天邊稀疏的雲朵會帶來滋潤嗎?高高舉起的期待,是否又要重重地受傷害?講出來不好意思的無奈,最後只能自己看著辦......
#冰球宇宙三部曲 ︴︴︴第三杯 ︴︴︴#結局揭曉
►第三杯下去明天肯定會炸裂,但有沒有six就看這一杯!
►三部曲收官之作,男子的失落日常,飄出淡淡的哀愁
第三首歌,第三杯酒。Friday night的酒吧,復古浪漫的音樂流瀉,微醺的氛圍和陌生的她,第一杯是這樣開始的。接著第二杯是試探,透過彼此的酒精濃度推測今晚續集的內容。我們都知道的,第一杯、第二杯都不算數,點到第三杯才是劇情發展的關鍵。兩人間物理與非物理的距離都越來越近,於是內心開始拉扯搖擺… 想著兩個人都喝三杯,不就是six嗎?醒來後再度迎來熟悉的失落感,那曾炙熱的期待已癱軟,而好事沒有發生的夜晚,沒關係,我早就習慣。
與冰球宇宙三部曲《三杯》EP同步釋出的收官之作-第三波單曲《No Six》,是無奈的諧音,也是男子的失落日常。icyball 再次以歌詞中滿滿的禮貌暗喻生動描寫男性們都明白的共同心聲,也完整了冰球宇宙三部曲跌宕起伏、帶有淡淡哀傷的故事線。歌曲開頭將火箭發射的倒數反轉,並刻意拿掉6這個數字,暗示火箭並沒有成功發射。《No Six》音樂風格延續了首波單曲《醉後喜歡我》的復古氛圍,讓EP首尾呼應,並請到擅長復古風格的The Weeknd 御用母帶處理工程師為歌曲進行最後潤飾。節奏組以合成器貝斯的跳動旋律、簡單有力拳拳到肉的鼓節奏,創造出復古的電子舞曲律動,加上前奏與間奏重複洗腦的合成器旋律,引領聽者進入腦洞大開的宅男宇宙。編曲使用濾波器自動化(filter automation),讓歌曲行進畫面豐富地轉換。尾段大量和聲及各種樂器的樂句互相交織、堆疊出千軍萬馬氣勢澎湃的交響舞曲,最後結尾嘎然而止,只留下故事中失意男子的孤獨。
►The Weeknd 御用母帶處理工程師加持 復古律動再升級
►《No Six》、《搖啊搖》MV 同一夜晚、雙重詮釋
《No Six》MV再度由掀起熱烈討論的第二波單曲《搖啊搖》MV導演賴禹諾執導,兩支影像作品有著同樣的場景、人物,卻有截然不同的解讀、風格。影像籌備初始,icyball、影像團隊、企劃團隊花了許多時間思考,並嘗試站在不同角度激烈辯論這較為敏感的內容,甚至找來周遭親友一同加入討論與提供意見。經過數月討論後,最終決定以兩支MV、兩種不同敘事來呈現男女視角的互相吸引、攻防拉鋸,以詼諧浪漫的方式描述這搭配三杯好酒,健康中帶點小性感的夜晚。
►三杯酒堆砌而成的故事,結局不是你想的那樣
►icyball 式的色澀小幽默,《三杯》EP現正純釀中♡
創作大多自酒精中淬鍊,熱愛微醺氛圍的icyball ,歷經兩年休團再出發,作品即以酒作為核心開展。冰球宇宙三部曲《三杯》EP以三首歌曲串聯成一個跌宕起伏的one night小短篇,微醺的第一杯是《醉後喜歡我》,復古浪漫的單曲在網路平台造成一波嚴重暈船潮,也讓聽眾更加期待icyball的回歸;開始搖擺的第二杯來到男女對唱的《搖啊搖 feat. Limi》,充滿衝突感的歌詞搭配洗腦的旋律,加上「母湯」的影像助攻,讓更多人陷入icyball的宇宙中,而關鍵的第三杯-今晚沒打算要節制才會點上的第三杯,歌名《No Six》的諧音暗示了最後的結局。高高舉起的炙熱,輕輕放下的哀愁,情色中帶著苦澀的故事可能會讓許多人感到共鳴,笑著笑著就哭了。icyball 的歌曲中總是始終如一地帶著些許不正經,恰恰體現了「男人不管到幾歲,只要聚在一起就會變回男孩」這個跨越時空不變的真理,也正是icyball 式的風格。
《No Six》
戴上面具蜷曲著身體 就是不想出門
有個問題佔據著思緒 來自每個他們
Why
每段故事 美麗的開始 眼神在加溫
交換的信任慢慢衝動
梭哈的黑桃二 攤牌了跟不跟
妳說 今天也沒有六
1 2 3 4 5 7 8 9 10 No Six Oh No
1 2 3 4 5 7 8 9 10 沒有六 Wow
各種天氣同樣的結局 一點都不陌生
望著天邊稀疏的浮雲 奢求一點可能
生在晴天的雨衣 不能就這麽輕易放棄
就算全新的包裝裡 沒有六
Dancing with you nanana
Just dancing with you nanana
沒有六
[ 音樂製作名單 ]
詞 Lyricist|王昭權 Chuan Wang
曲 Composer|謝達孝 Siao.H、王昭權 Chuan Wang
製作人 Producer|謝達孝 Siao.H
編曲 Music Arrangement|icyball 冰球樂團
配唱製作人 Vocal Producer|王昭權 Chuan Wang、謝達孝 Siao.H
主唱 Vocal|王昭權 Chuan Wang
吉他 Guitar|謝達孝 Siao.H
貝斯 Bass|吳冠男 Nelson Wu
鼓 Drum|林士捷 J. Lin
鍵盤 Keyboard|蒙捷文 J.Meng
合成器 Synthesizer|蒙捷文 J.Meng、謝達孝 Siao.H
和聲編寫 Backing Vocal Arrangement|李雅微 Shivia Lee、王昭權 Chuan Wang
和聲 Backing Vocal|李雅微 Shivia Lee、王昭權 Chuan Wang
人聲錄音師 Vocal Recording Engineer|謝達孝 Siao.H
人聲錄音室 Vocal Recording Studio|白金錄音室 Platinum Studio
混音工程師 Mixing Engineer|賴世凱 NiceGuy
混音錄音室 Mixing Studio|硬搞錄音室 INGO Studio
母帶後期處理工程師 Mastering Engineer|Dave Kutch
母帶後期處理錄音室 Mastering Studio|The Mastering Palace
[ 影像製作名單 ]
監製 Executive Producer|鳥兒映像 Birdy Prod.
導演 Director|賴禹諾 Yukno @鳥兒映像
副導 A.D.|周昀佑 Lgthree
製片 Producer|藍皓倫 Yooooalan
製片助理 P.A.|吳苡瑄 Yi Hsuan Wu
攝影 D.O.P.|左治 Jorch Ma
攝影助理 Assistant Camera|馬崇智 Chris Ma
攝影器材 Camera Equipment|鏡頭銀行 LensBank
燈光師 Gaffer|粘峻嘉 Chun Chia Nien
燈光助理 Best Boy|林晏均 Yan Chun Lin
酒吧燈光師 Gaffer|蘇志博(安東)So chi pok
燈光器材 Lighting Equipment|妄想機影音 Mirager Prod.
主演 Starring|吳敬恆 Jing Wu、林千煦 Qianxu,Lin、小飛 Fly Liao、潘信叡 Repan、某某某 and more…
造型 Stylist|張佳媛 Beryl Chang @我沒空有限公司、 鄭婷 Ting、 林毓秀 Ashley Lin
妝髮 Hair & Make-up|林瑀萱 yuma lin、張允 Yun Chang
美術 Art Director|張芳綾 funny、周昀佑 Lgthree
剪接 Editor / 調光 Colorist / 特效 VFX|賴禹諾 Yukno
標準字及歌詞設計 Graphic Designer|張芳綾 funny
平面側拍 BTS Photo.|吳宗哲 WuWuZZ
動態側拍 Video D.|王柏林 Berlin Wang
企劃 Marketing|顏靜萱 Ka Ka Yen @VH
特別感謝 Special Thanks|Jumi Tavern - Gyoza & Champagne Bar、洗衣店
出品 Presented by 何樂音樂 Pourquoi Pas Music
關於 ⓘⓒⓨⓑⓐⓛⓛ
騷到內心的勾人音色、氣味挑逗的字字句句、恰到好處的搖擺groovin‘ ,這是一個進可攻退可守的邀約:來我家…聽音樂嗎?數位的皮裝著類比的心,icyball的歌曲就像現代化的愛情,演化得精美但本質仍然單純直覺。想說的還有很多,我們輕輕帶過,別有壓力,音樂裡飄飄醉著就行。
icyball 將自身熱愛的七零、八零年代具有 Groovy 精神的Funk / Disco / Acid-jazz / R&B /Regga /Swing 等經典風格,融合新時代電子元素與表現方式,詮釋出令人耳目一新的模樣—— 屬於當代的、屬於icyball 的華語流行歌曲。
主唱昭權,善於詮釋歌曲情感故事,嗓音精緻、充滿渲染力
吉他手達孝,擅長彈奏放克、R&B等曲風,主導編曲製作
鍵盤手蒙,精於音色使用,技巧穩健,亦主導編曲製作
貝斯手Nelson,貝斯音色質樸細膩,不可或缺的溫暖存在
鼓手士捷,涉獵曲風多元,轉化成獨特的個人表現風格
除了持續共同創作,五名團員也各自在音樂圈耕耘,累積能量。2020年底,他們將團名由舊有的「Icy Ball」更改為更加俐落的獨有單字「icyball」,睽違數年再度推出新作的他們,不論是音樂、視覺、內容,都以更精緻成熟的面貌和聽眾見面!
Find icyball!
・Facebook: https://www.facebook.com/icyballBand/
・Instagram: https://www.instagram.com/icyballband/
・YouTube: https://youtube.com/c/IcyBall
・StreetVoice: https://streetvoice.com/Icyballband/
c 字 串 轉 數字 小數點 在 范琪斐 Youtube 的最讚貼文
上一次美國大選,大家應該還記得吧,選完沒多久,美國就有很多人跳出來說,美國大選被鹹豬手揩油了。那隻鹹豬手就是俄羅斯。有很多人相信,俄羅斯總統普丁發動網軍用假新聞分化美國社會,讓川普當選。美國為此還成立了特別檢察官調查,調查的結果也證實了俄羅斯的確伸出了鹹豬手,只是川普沒有跟鹹豬手串謀。時光飛逝,美國馬上又要舉行大選,只剩下三個月不到,美國情報單位在8/7又出面警告,這次大選還是有鹹豬手,而且從一隻變成了三隻。
那這三隻鹹豬手要幹嘛呢?NCSC也有說噢,俄羅斯想盡辦法要讓川普再度連任,但中國跟伊朗則是想盡辦法要讓川普選不上。所以外國如果也可以投票的話,選票看起來就是這樣,俄國會投給川普,中國跟伊朗就會投給民主黨的拜登
俄羅斯的普丁為什麼那麼喜歡我們川貴人呢?專家分析,普丁看準川普和他有著相同理念,就是討厭全球化,因此積極向川普招手,想和美國重修舊好。NCSC的聲明就說,一些與克里姆林宮關係密切的人物,現在正利用社群網站與電視媒體,積極為川普助選,同時打擊向來對俄羅斯立場強硬的拜登;甚至連烏克蘭的親俄勢力也來參一咖。其實在NCSC這次的警告之前,美國情報單位就已經掌握情資,指出俄羅斯在2016年大選時,曾經試圖駭進全美50州的選務系統,還入侵了兩黨的全國委員會,偷人家的電子郵件和通訊軟體的資料,但這可不是俄國最擅長的,克里姆林宮的慣用技倆就是派出大批網軍,模仿或假冒美國候選人的競選標誌發文,藉此挑起族群對立、製造憤怒與恐懼,最終目的就是要煽動美國分裂、引發社會混亂、破壞美國人對政府的信心,這些是主要目的,接下來才是「順便」支持一下他們偏好的候選人,也就是川普。
再看到中國。中國不想要川普當選的原因,應該不用情報人員來告訴你吧?過去三年多,只要不是住在月球的,大概都知道川普反中。但是人家俄羅斯又用駭客又買廣告,中國用什麼方法呢?根據NCSC中國目前主要的做法是,不斷利用疫情抨擊華府,我想大概就是像一直說川普的防疫做這麼爛,千萬不能讓他選上之類的,或是對阻撓中國利益的政治人物施壓、轉移與反駁中國受到的批評。像是對中國批評很多的美國聯邦參議員盧比歐 (Marco Rubio)、克魯茲 (Ted Cruz)就都登上了中對美的制裁名單。
至於伊朗也是很不希望撕毀了核協議,又對伊朗進行經濟制裁的川普選上。因此積極發動網路攻擊手段,在社群網站上散播假消息以及反美內容,見縫插針分化美國社會,目的就是要顛覆美國的民主制度。
這三隻鹹豬手哪隻比較厲害呢?《紐約時報》引述一位情報官員的說法指出,在「干預美國大選」這件事上,俄羅斯與中國完全是不同的等級。俄國有如龍捲風一樣,快又猛,會對美國民主體制造成立即的損害;中國比較像氣候變遷,緩慢但非常廣,但威脅程度恐怕更嚴重。至於伊朗呢?不重要。美國情報官員還說目前中國和伊朗似乎還在評估介入程度,而俄羅斯則是已經做出實際行動的積極干預了。也就是俄羅斯的鹹豬手已經伸出來了,但中國跟伊朗還在想,我到底要不要伸出去?伸出去可以摸到什麼呢?
但是在全球化的環境中,平常錢流來流去,人也跑來跑去,一個開放社會如何在選舉的時候,可以杜絕外國的影響呢?這就好像漂亮女生你把她關在家裡,誰都不見,當然不怕鹹豬手。但就是要能讓妹子,打扮得漂漂亮亮出門,鹹豬手還沒辨法攻擊,這才是高招嘛!這個事困難度很高,但不是不可能,美國政治評論雜誌《Mother Jones》專欄,整理了歐洲各國都是怎麼對付俄羅斯鹹豬手,像歐洲老大哥德國採用紙張選票,駭客就不能駭進來改改數字就好,還制定了「反駭」策略,包括使用網路攻擊行動來對付駭客,同時為政黨提供援助,加強他們的網路安全,外加梅克爾政府三不五時就會提醒公眾,注意俄羅斯的干預行動,而且在政府鼓勵下,所有政黨都承諾不使用假帳號來打選戰。
法國的各種媒體和Google都實施了「事實查核」,來對抗假新聞,選戰最後幾天會實施媒體禁令,防止駭客或假消息在最後關頭左右選情,政府也同樣會向民眾示警,小心外國干預行動。瑞典政府會定期公布選舉計畫的最新資訊,同時會教育選民提防外國干預,瑞典媒體也發展出一套事實查核的聯合行動,揪出來自國外的假新聞。結論就是政府帶頭祭出反制措施,才能有效抵抗「外侮」。但回到美國,川貴人自己都捲進勾結外國勢力的醜聞裡,好像也不太能指望他採取什麼行動。那國安專家們怎麼建議呢?我們歸納出幾點辦法。
首先是要從法規上做出限制,美國參議院情報委員會先前就發布了一份報告,建議針對社群媒體立法,要這些平台向用戶說明,他們為什麼會看到某些政治廣告,這些內容又是誰付錢刊登的,就類似廣播電視管理法之類的規範,好確保俄羅斯等外力將不能付費干預選情。
根據統計,美國大選「黑錢」規模近年不斷暴增(2008年6900萬美元→2012年3.1億美元),美國國會2010年就提出一項《披露法》(DISCLOSE Act),規定候選人和各勞工團體、稅務編碼為501(c)(4)的公共慈善機構、Super PACs超級政治行動委員會等,必須公開競選活動支出明細和捐款來源,藉此打擊不當的政治獻金。
美國總統大選民主黨的黨內初選,就在愛荷華州出了大包,原本為了防止駭客攻擊計票系統,所以遲遲不願讓系統曝光,結果沒想到在正式開票的時候,計票App整個大當機,導致黨部最後只能尷尬地用手動計票,這件事情被川普笑了好久,還糗到登上國際媒體版面,現在一堆專家就呼籲,拜託好好加強票務基礎設施。錢要花下去,維護電力和網路設備,以及電子選票系統,最重要的是,萬一出現爭議,應該要使用紙本選票來查核選舉結果。
尤其這一次因為疫情的關係,很多地方可能必需要投票站與郵寄投票兩個系統一起做,複雜度更高,出錯的可能性也更高,也給駭客更多可趁之機,最可怕的是,萬一選舉有些什麼瑕疵,選輸的人一定不服氣,選舉的公平性不被接受,那美國的民主制度真的就玩完了。
今天琪斐大放送的關鍵字是:
#通俄門再起
#三隻鹹豬手
--------------------------------------
《#范琪斐的寰宇漫遊》每周四晚間8點55分在 #寰宇新聞台 播出,沒跟上的也沒關係,歡迎訂閱我們的 YouTube 頻道 🔔#范琪斐的寰宇漫遊 🔔https://reurl.cc/ZvKM3 1000pm準時上傳完整版!
c 字 串 轉 數字 小數點 在 風傳媒 The Storm Media Youtube 的最佳貼文
在2018年初,人民幣突然貶值時,台灣的機構投資者和散戶投資人,因所謂的TRF 產品瞬間損失了數千億台幣。由於在突發事件之前,台灣處在「中國經濟崛起,人民幣只會升不會降」的虛幻假象中,包括央行在內的各金融機構,都看多人民幣,銀行的銷售部也猛推「鎖死性」的人民幣產品,導致散戶蜂擁而入。四月份發生的突貶,造成TRF產品屍橫遍野,銀行的客訴案件高達數千宗,立法委員則忙於「為民請願喬賠償」。台灣的央行、金管會、證期交所的「不知中」,台灣投資人的「願賭不服輸」心態,在此事件中透露無遺。
人民幣不是個正常貨幣,而是個「政治怪幣」;中國的經濟不是「市場經濟」,而是舉世無雙的「黨場經濟」(請見本影音專欄上集)。雖然北京近日來試圖採取一連串臨時措施以挽救中國經濟,但是用鱷魚皮是熬不出雞湯的。接下來的中國經濟以及人民幣匯率的風暴,中共預留給各界的應變時間,不會超過幾個月,到時不要感到意外。
【腦力犯中】系列,每週三在風傳媒播出,帶你認識卸妝後的真實中國。
范疇 Kenneth C. Fan
跨界思考者。終身創業者。小政府信奉者。平民精神推行者。「無印良國」倡議者。
1.人民幣何時破七、破八?
2.用鱷魚皮熬得出雞湯嗎?
1.When will the renminbi break against the dollar and evenbreak the eight? Discourse by Kenneth Fan. Powered by Joey Kuo 2018 @ Sum-Coo.com
2.Can you get chicken soup with crocodile skin? Discourse by Kenneth Fan. Powered by Joey Kuo 2018 @ Sum-Coo.co
✓ 點我加入《風傳媒》Line 好友(ID:@dyp8323m) http://bit.ly/2hETgWE
✓ 點我訂閱《風傳媒》YouTube 頻道 http://bit.ly/2grkAJ6
【Facebook粉絲團】
風傳媒►► https://www.facebook.com/stormmedia
風生活►► https://www.facebook.com/SMediaLife