[爆卦]Args是什麼?優點缺點精華區懶人包

雖然這篇Args鄉民發文沒有被收入到精華區:在Args這個話題中,我們另外找到其它相關的精選爆讚文章

在 args產品中有62篇Facebook貼文,粉絲數超過10萬的網紅BorntoDev,也在其Facebook貼文中提到, 💡 สวัสดีจ้าเพื่อน ๆ วันนี้แอดจะพาเพื่อน ๆ มารู้จักกับ Operator จาก JavaScript ที่จะช่วยให้เพื่อน ๆ เข้าถึงข้อมูลใน Object ได้ง่ายมากขึ้น !! . 🌈 และเจ้...

 同時也有8部Youtube影片,追蹤數超過1,260的網紅世美晚安,也在其Youtube影片中提到,這集影片為大家介紹,號稱「平成最恐怖的網路都市傳說」,連NHK都不敢報導,日本最禁忌的話題 — 「鮫島事件」。 CATCHPLAY+ 「真・鮫島事件」電影連結:https://bit.ly/3ycqd38 CATCHPLAY+「一個人不敢看片單」連結:https://www.catchplay.c...

  • args 在 BorntoDev Facebook 的最佳解答

    2021-08-17 07:33:31
    有 192 人按讚

    💡 สวัสดีจ้าเพื่อน ๆ วันนี้แอดจะพาเพื่อน ๆ มารู้จักกับ Operator จาก JavaScript ที่จะช่วยให้เพื่อน ๆ เข้าถึงข้อมูลใน Object ได้ง่ายมากขึ้น !!
    .
    🌈 และเจ้านี่คือ...Optional chaining (?.) นั่นเองจ้า จะเป็นยังไง มีรายละเอียด และวิธีการใช้งานยังไง ไปติดตามกันได้ในโพสต์นี้เลยจ้า ~~
    .
    ✨ Optional chaining (?.) - เป็นตัวดำเนินการที่ทำให้เราสามารถอ่านค่าใน Object ที่ซ้อนกันหลาย ๆ ชั้นได้ง่ายมากขึ้น เขียนง่าย และทำให้โค้ดสั้นลงนั่นเอง
    .
    จริง ๆ แล้วมันก็เหมือนเราใช้ เครื่องหมายจุด (.) นั่นแหละ แต่ความพิเศษของมันก็คือถ้าในกรณีไม่มีค่าใน Object หรือ Function มันจะ Return เป็น Undefined แทน Error
    .
    👨‍💻 Syntax
    .
    obj.val?.prop
    obj.val?.[expr]
    obj.arr?.[index]
    obj.func?.(args)
    .
    📑 วิธีการใช้งาน
    .
    ❤️ ตัวอย่าง 1 : ใช้เข้าถึงข้อมูลใน Object

    let customer = {
    name: "Mew",
    details: {
    age: 19,
    location: "Ladprao",
    city: "bangkok"
    }
    };
    let customerCity = customer.details?.city;
    console.log(customerCity);
    //output => bangkok
    .
    ❤️ ตัวอย่าง 2 : ใช้กับ Nullish Coalescing

    let customer = {
    name: "Mew",
    details: {
    age: 19,
    location: "Ladprao",
    city: "bangkok"
    }
    };
    const customerName = customer?.name ?? "Unknown customer name";
    console.log(customerName); //output => Mew
    .
    ❤️ ตัวอย่าง 3 : ใช้กับ Array

    const obj1 = {
    arr1:[45,25,14,7,1],
    obj2: {
    arr2:[15,112,9,10,11]
    }
    }
    console.log(obj1?.obj2?.arr2[1]); // output => 112
    console.log(obj1?.arr1[5]); // output => undefined
    .
    📑 Source : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
    .
    borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
    #javascript #optionalchaining #BorntoDev

  • args 在 白袍試酒師-White Coat Wine Taster Facebook 的最讚貼文

    2021-07-19 08:44:18
    有 10 人按讚

    最近都喝好市多

    Prieure Saint Come Chablis Premier Cru Vaucoupin 2018
    以網頁資料豐富度及實用性來評分
    0顆星

    酒商:Prieure Saint Come。
    產區:Chablis,勃根地,法國。
    等級:一級園。Vaucoupin是葡萄園。
    葡萄:100% Chardonnay。
    13%

    品飲心得:淡金黃色。檸檬、柑橘、微礦石。酸度中上。裝小瓶放冰箱到第二天,持續性還不錯。

    資料來源:酒標;https://www.bourgogne-wines.com/our-wines-our-terroir/the-bourgogne-winegrowing-region-and-its-appellations/chablis-and-chablis-premier-cru,2458,9253.html?&args=Y29tcF9pZD0yMjc4JmFjdGlvbj12aWV3RmljaGUmaWQ9MjU5Jnw%3D

    #PrieureSaintComeChablisPremierCruVaucoupin2018
    #PrieureSaintCome
    #Chablis
    #PremierCru
    #Vaucoupin
    #葡萄酒

  • args 在 Taipei Ethereum Meetup Facebook 的最佳解答

    2021-04-23 16:57:11
    有 9 人按讚

    📜 [專欄新文章] EIP-1014 產生可控的智能合約地址

    ✍️ 飛天的狸貓

    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    先前在 Solidity Taiwan 讀書會 群中看到一個討論,裡面應該是一個套利機器人,打開他的合約會發現 Contract 標記著 Reinit,大致上意思是在相同地址上曾經 Self Destruct 後又佈署新的 Byte Code。這其中就用到了 Vitalik 提出的 EIP-1014,來達成在固定的地址上佈署。

    合約地址是怎麼產生的

    如果對於以太坊智能合約佈署不陌生,應該會知道合約地址是依據佈署者的地址和他的 Nonce 來決定的。假如地址 0xa1 在 Nonce 為 1 的交易中建立了合約,合約地址是 0x01,則當他到了其他鏈而再次使用 Nonce 1 建立合約時,就也會得到相同的合約地址 0x01。

    而在以太坊中,Nonce 是嚴格遞增的,這主要是為了避免雙花攻擊,因此很顯然的,再次佈署到同一個地址是不可行的。而在 EIP-1014 以前,在合約中建立的子合約也是透過這個方式達成。

    EIP-1014 做了什麼

    前面說到合約中可以建立子合約,通常使用的指令是 create,這個指令便會根據主合約的地址與合約本身的 Nonce 來算出子合約的地址。在 EIP-1014 中,提出了另外一個指令 create2,接受的參數是一個 salt 和 init code(建立合約的 Byte Code)。這個指令會透過 keccak256 雜湊,混和參數和主合約的地址來算出子合約地址。

    可以留意到,salt 和 init code 都是可控的,主合約地址是固定的,因此就讓子合約地址是可控制的(當然不是說想要產生在哪裡就在哪裡)。在 create 中,Nonce 是漸次增加的,所以無法重複,並且若要控制到特定 Nonce 需要發起多筆交易。

    但是當再次佈署到相同地址時,EIP-684 說明若該地址 Nonce 不為零或者存在 Byte Code 時將直接拋出錯誤,因此若要佈署到同一個位置,就必須利用 Self Destruct 來抹去 Nonce 和 Byte Code。

    為什麼要 EIP-1014

    EIP-1014 在起初是基於 State Channel 的需求,主要是因為某些狀況下可能還沒有要和合約做互動,但需要先知道合約地址。因此只要是需要先知道地址,但沒有要立即使用的合約就十分適合通過這個指令來建立。

    例如對於交易所來說,替所有要入金的人建立私鑰有管理上的問題,若透過智能合約則相對有彈性,但卻不是所有申請地址的人都真的會入金,此時就適合利用這個指令先行取得地址,當真的有入金時再佈署合約。

    如何使用 EIP-1014

    除了直接寫 Opcode 以外,Solidity 0.6.2 加入了利用 create2 建立合約的語法。使用方式是 new Contract{salt: someByte}(...args),其中 new Contract(...args) 就是傳統的佈署方式,而 someByte 是一個 bytes32。

    資安疑慮

    回到開頭,Etherscan 之所以會標記 Reinit 則是因為可能有資安的疑慮。回顧地址產生的過程,兩個參數都沒有限制條件,因此碰撞的可能也是存在的。如果不肖人士先佈署一個正常的合約,接著通過 Self Destruct 刪除後再佈署假的合約,就可能讓沒注意到的使用者上當。

    但或許因為碰撞的機會太低,所以並不太構成問題。而若真的要從使用者的角度防範,可以通過檢查合約有沒有 Self Destruct、Delegate Call、Call Code 指令(如果沒有的話無法刪除合約,再次 create2 時就會被 revert)來避免。

    2021/4/23 補充

    後來看了幾個討論,也想了一下,資安的疑慮應該遠不只上面這麼簡單。
    例如一個宣稱鎖定 ERC-20 代幣的合約,雖然使用者可以檢閱程式碼,並確認其中解鎖 function unlock() 必須在 uint256 block 之後才能執行,並且 block 是無法變更的,但攻擊者可能透過上述方法來消除 block 狀態,進而提前執行 unlock。

    參考資料

    https://consensys.net/diligence/blog/2019/02/smart-contract-security-newsletter-16-create2-faq/

    https://www.chainnews.com/zh-hant/articles/803272341363.htm

    如有錯誤敬請指正,原文載於:https://limaois.me/archives/265

    EIP-1014 產生可控的智能合約地址 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌

你可能也想看看

搜尋相關網站