견고성

Solidity
견고성
Solidity 언어 로고
패러다임객체지향적
설계자 :개빈 우드
디벨로퍼크리스찬 리츠너,[1] 알렉스 베레그사스지 등 이더리움의 핵심 공헌자들.[2]
첫 등장2014년8월
안정적 해제
0.8.21 / 2023년 7월 19일; 2개월(2023-07-19)
구현언어C++[3]
면허증.GNU 일반 공중 사용 허가서 v3.0[4]
파일 확장명.sol
웹사이트soliditylang.org
영향을 받음
자바스크립트, C++, 파이썬

솔리드리티다양한 블록체인 플랫폼, 특히 이더리움에서 스마트 컨트랙트를 구현하기[5][6] 위한 객체 지향 프로그래밍 언어입니다.[7]Solidity는 GNU General Public License v3.0에 따라 라이센스가 부여됩니다.[8]Solidity는 Gavin Wood[9][non-primary source needed] 의해 설계되었고 Christian Reitwiesner, Alex Beregsaszi 및 여러 전 이더리움 핵심 기여자들에 의해 개발되었습니다.[10]Solidity의 프로그램은 Ethereum 가상 시스템 또는 호환되는 가상 시스템에서 실행됩니다.

역사

2014년 8월 개빈 우드(Gavin Wood[11][non-primary source needed])에 의해 제안되었습니다. 이 언어는 나중에 크리스티안 리츠너(Christian Reitwisener)가 이끄는 이더리움 프로젝트의 솔리드리티(Solidity) 팀에 의해 개발되었습니다.

솔리드는 이더리움뿐만 아니라 엔터프라이즈 지향 하이퍼레저 패브릭 블록체인과 같은 다른 프라이빗 블록체인의 주요 언어입니다.SWIFT는 Hyperledger Fabric에서 실행되는 Solidity를 사용하여 개념 증명을 구현했습니다.[12][13]

묘사

Solidity는 EVM(Ethereum Virtual Machine) 또는 호환되는 가상 머신에서 실행되는 스마트 계약을 개발하기 위해 설계된 정적 유형의 프로그래밍 언어입니다.[14]

Solidity는 기존 웹 개발자들에게 친숙한 ECMA스크립트와 같은 구문을 사용하지만 ECMA스크립트와는 달리 정적 타이핑과 가변 반환 형식을 가지고 있습니다.[15]견고성은 몇 가지 중요한 점에서 서펜트무탄과 같은 다른 EVM 대상 언어와 다릅니다.임의 계층 매핑 및 구조를 포함하여 스마트 계약을 위한 복잡한 구성원 변수를 지원합니다.Solidity 스마트 계약은 C3 선형화를 통한 다중 상속을 포함한 상속을 지원합니다.Solidity는 단일 스마트 계약 내에서 여러 종류의 안전한 기능을 지원하는 ABI(Application Binary Interface)를 도입합니다(이것은 나중에 Serpent에서도 지원됨).Solidity 제안서에는 메소드 호출의 영향에 대한 사용자 중심의 설명을 명시하기 위한 문서 시스템인 "자연어 사양"도 포함되어 있습니다.[16][17][non-primary source needed]

Solidity 프로그램의 예:[18][19]

//SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; contract Coin { // "public"이라는 키워드는 변수 // 다른 계약에서 액세스할있도록 public minter 주소를 지정합니다. 매핑(address => uint) public balance; // Events통해 클라이언트event Sent(address from, address to, unint count); // 생성자 코드는 계약 // 생성자 () {minter = msg생성때만 실행됩니다.sender; } // 새로 생성된 코인의 양을 주소보냅니다 // 계약 작성자 함수 mint(주소 수신자, unint 금액) public { required(msg. sender == minter); balance[receiver] += 금액; } // 오류를 통해 // 작업이 실패한 이유대한 정보를 제공할 수 있습니다. 함수의 호출자에게 // 반환됩니다. errorInsufficientBalance(unint requested, unint usable); // 발신자로부터 주소 함수 전송(주소 수신자, unint 금액) public {(금액 > balance[msg.sender]) revertInsufficientBalance({요청: 금액, 사용 가능: balance[msg.sender]}); balance[msg.sender] -= 금액; balance[수신]ver] += 금액; emission Sent(msg.sender, receiver, 금액); }

개발IDE

편집기 확장명

블록체인 플랫폼

솔리드는 다음에 제공됩니다.

비평

스마트 계약의 많은 보안 속성은 본질적으로 직접 추론하기 어렵고, 솔리드리티의 튜링-완전성은 임의 속성의 검증을 결정적으로 자동화할 수 없음을 의미합니다.스마트 계약 보안 분석을 위한 현재의 자동화된 솔루션은 중대한 위반 사항을 놓치고, 잘못된 긍정 사항을 생성하며, 현실적인 계약에 대한 충분한 코드 적용을 달성하지 못할 수 있습니다.[27]Solidity는 직관에 어긋나는 특성, 블록체인 도메인별 측면을 처리할 구성 요소 부족, 알려진 취약성에 대한 중앙 집중식 문서 부족 등으로 인해 이더리움 스마트 계약의 오류 발생 가능성이 높다는 지적을 받아 왔습니다.[28]

2016년 코넬 대학의 한 연구원은 솔리디티가 그 해 발생한 DAO 해킹에 부분적으로 책임이 있다고 말했습니다.그는 다음과 같이 진술했습니다."이는 실제로 DAO 계약 자체의 결함이나 악용이 아니었습니다. 기술적으로는 EVM(Ethereum Virtual Machine)이 의도한 대로 운영되고 있었지만 Solidity는 커뮤니티에서 놓쳤을 뿐만 아니라 언어 설계자들이 놓친 계약에 보안 결함을 도입하고 있었습니다."[29]

개발자 커뮤니티에서는 대부분의 타사 인터페이스와 API가 필요한 Solidity와 중요한 정보 집약적인 스마트 계약을 만들 수 없다는 점을 자주 언급합니다.

참고문헌

  1. ^ "Contributors to ethereum/solidity". GitHub. Retrieved 30 March 2023.
  2. ^ "Contributors to ethereum/solidity". GitHub. Retrieved 30 March 2023.
  3. ^ "Build software better, together". GitHub. Retrieved 30 March 2023.
  4. ^ The Solidity Contract-Oriented Programming Language, ethereum, 30 March 2023, retrieved 30 March 2023
  5. ^ Afshar, Vala (17 July 2017). "Ethereum Is The Second Most Valuable Digital Currency, Behind Bitcoin". HuffPost. Retrieved 10 April 2019.
  6. ^ "SOFE Berlin: Swift unveils blockchain proof-of-concept". Finextra (News). 24 November 2016. Retrieved 24 November 2016.
  7. ^ Finley, Klint. "Someone Just Stole $50 Million from the Biggest Crowdfunded Project Ever. (Humans Can't Be Trusted)". Wired.
  8. ^ The Solidity Contract-Oriented Programming Language, ethereum, 30 March 2023, retrieved 30 March 2023
  9. ^ "Gavin Wood". gavwood.com. Retrieved 30 March 2023.
  10. ^ "List of contributors". GitHub.
  11. ^ "Gavin Wood". gavwood.com. Retrieved 30 March 2023.
  12. ^ Nikolic, Ivica; Kolluri, Aashish; Sergey, Ilya; Saxena, Prateek; Hobor, Aquinas (14 March 2018). "Finding The Greedy, Prodigal, and Suicidal Contracts at Scale". arXiv:1802.06038 [cs.CR]. Different source languages compile to the EVM semantics, the predominant of them being Solidity
  13. ^ "Westpac joins SWIFT's blockchain proof of concept". ZDNet. Retrieved 13 July 2022.
  14. ^ "Hyperledger Fabric Tutorial - Create a blockchain app for loyalty points". IBM Developer. Retrieved 10 April 2019.
  15. ^ "Language Influences — Solidity 0.8.17 documentation". docs.soliditylang.org. Retrieved 30 March 2023.
  16. ^ Kapetanios-2008-06-27, p. 309.(
  17. ^ ethereum. "Ethereum Natural Specification Format". GitHub.
  18. ^ "Introduction to Smart Contracts — Solidity 0.8.19 documentation". docs.soliditylang.org. Retrieved 30 March 2023.
  19. ^ Schneier, Karthikeyan; Schneier, Antoine; Bhargavan, Cedric; Delignat-Lavaud, Anitha; Fournet, Gollamudi; Schneier, Bruce; Rastogi, Nadim; Sibut-Pinote, Aseem; Rastogi1, Thomas; Swamy, Nikhil; Zanella-Beguelin, Santiago (27 August 2016). "Short Paper: Formal Verification of Smart Contracts" (PDF). Microsoft Research, French Institute for Research in Computer Science and Automation, Harvard University. Archived (PDF) from the original on 27 August 2016.
  20. ^ "Remix - Ethereum IDE". remix.ethereum.org. Retrieved 30 March 2023.
  21. ^ "EthFiddle - Solidity in the Browser. Powered By Loom Network". ethfiddle.com. Retrieved 30 March 2023.
  22. ^ "solidity - Visual Studio Marketplace". marketplace.visualstudio.com. Retrieved 30 March 2023.
  23. ^ "Solidity - IntelliJ IDEs Plugin Marketplace". JetBrains Marketplace. Retrieved 30 March 2023.
  24. ^ "Binance Smart Chain". GitHub. 26 October 2021.
  25. ^ Vigna, Michael J. Casey and Paul (12 November 2014). "BitBeat: Bitcoin 2.0 Firm Counterparty Adopts Ethereum's Software". Wall Street Journal. ISSN 0099-9660. Retrieved 16 April 2021.
  26. ^ Swan, Melanie (2015). Blockchain : blueprint for a new economy (1st. ed.). [Sebastopol, Calif.] ISBN 978-1-4919-2047-3. OCLC 900781291.{{cite book}}: CS1 유지 관리: 위치 누락 게시자(링크)
  27. ^ Tsankov, Petar; Dan, Andrei; Drachsler-Cohen, Dana; Gervais, Arthur; Bünzli, Florian; Vechev, Martin (15 October 2018). "Securify: Practical Security Analysis of Smart Contracts". Association for Computing Machinery: 67–82. arXiv:1806.01143. doi:10.1145/3243734.3243780. hdl:10044/1/87935. S2CID 46936025. {{cite journal}}:저널 요구사항 인용 journal=(도움말)
  28. ^ Atzei, Nicola; Bartoletti, M.; Cimoli, Tiziana (2017). "A Survey of Attacks on Ethereum Smart Contracts (SoK)". Principles of Security and Trust. pp. 164–186. doi:10.1007/978-3-662-54455-6_8. ISBN 978-3-662-54454-9. S2CID 15494854. {{cite book}}: journal=무시됨(도움말)
  29. ^ Finley, Klint (18 June 2016). "A $50 Million Hack Just Showed That the DAO Was All Too Human". Wired (News). Retrieved 18 February 2017.