(대문은 @carrotcake 님께 의뢰하였습니다)
예로부터 스마트 컨트렉트는 안전하다고 알려져 있습니다
블록체인의 꽃인 스마트 컨트렉트는
그 혁명적 방식에 취한 뽕쟁이들이 엄청 띄웠습니다
블록체인상에선 불변, 블록체인은 투명한 백옥피부
누구나 볼 수 있고 함부로 조작하지 못하므로
체인상에 올라간 컨트랙트는 안심할 수 있다..
라는 선전을 대대적으로 했기에
많은 초보들은 스마트 컨트랙트라하면
그냥 좋은거.. 조작 불능.. 오메 좋은거
뭐 이런식으로 막연하게 알고 있습니다.
특히나 '믿을 수 있다' 라고
잘못 알고 있는 경우가 많죠.
하지만 그것은 스마트 컨트랙트의 특성이라기보다
이더리움의 특성이었습니다.
이더리움은 스마트 컨트렉트를 만들면서 따로 새로운
언어를 창조했습니다. solidity 라는 것을 말이죠
그리고 그것은 매우 강력한 투명성을 가집니다.
코드를 숨기고 싶어도 전부 노출되게 만든 것이죠
https://www.stateofthedapps.com/
위의 사이튼 이더리움의 각종뎁의 포탈 같은 곳입니다
많은 앱들의 정보와 링크를 소개되어 있습니다
하나 선택해서 클릭해보면
사용량부터 시작해서 주인장이랑 시작 날짜,
개발활동 현황, 라이센스 등등이 좌악 나옵니다
그리고 아래쪽에 보면
가장 중요한 컨트랙트 주소가 나오죠
그곳으로 가면 코드가 적나라하게 나옵니다.
https://etherscan.io/address/0xD1CEeeefA68a6aF0A5f6046132D986066c7f9426?utm_source=StateOfTheDApps#code
일반인은 몰라도 어느정도 프로그래밍을 할 줄 아는
사람이면 코드에 장난질이 쳐져 있는지 아닌지
알아볼 수 있습니다
만약 장난질을 쳐놨으면
세상엔 전문가가 발에 채일만큼 널렸으므로
누군가 한명쯤 알아볼테고 해당 코드는 스캠이라는게
바로 밝혀지게 되어 있습니다
그래서 이더리움이 주도하는 시대에
스마트 컨트랙트는 투명함의 상징이었죠.
그러나 다시 말하지만
그런 상징이 될 수 있었던 것은 어디까지나
이더리움 코드의 특성 때문이었습니다.
블록체인에 적혀있는 것을 다운받아서 원본으로
바로 복원할 수 있는... 그런 특성이
사실은 이더리움의 고유언어 때문에 생긴 것이었습니다.
즉, 이더리움의 코드가 아니라면
그런 특성이 사라진다는 것을 뜻합니다.
그리고 이오스는 거기에 부합됩니다.
이오스가 사용하는 것은 wasm 이라는 것으로
웹어셈블리라는 언어입니다.
이걸로 만든 코드는 강력한 성능을 지니게 되지만
반대로 코드가 드러나질 않습니다.
에디터로 열면 이렇게 보이게 되죠.
그러므로 소스코드가 뭐였는지 알수가 없습니다.
즉, 이오스에 올라간 스마트 컨트랙트는
개발자가 직접 소스코드를 공개하지 않는 이상
검증이 불가능합니다.
그 대표적인 것이 이오스 다이스입니다.
'블록체인에 올려진 카지노, 스마트 컨트렉트를 사용하여
투명성을 확보하다..'
라는 카피는 적어도 이오스 다이스엔 해당되지 않습니다
이오스 다이스는 전혀 소스코드를 공개하지 않고
있으므로 전적으로 상대방을 믿어야하는
일반적 도박사이트랑 신뢰성면에서 하등의 차이가 없다는거죠
딱 하나 다른 점은 즉시 코드에 의해
배팅 당첨금이 바로바로 전달된다는 것 정도.
조작이라는 면에서 절대로 자유롭지 않죠.
얘네들이 올려놓은 코드가 있긴한데
https://github.com/EOSBetCasino/EOSBet.IO
이런게 있습니다.
이걸보고 사람들이 공개되었느니 마느니 하지만
저건 홈페이지 소스코드입니다.
컨트랙트 코드가 전혀 아니죠.
그럼 이오스의 스마트 컨트랙트는 믿을 구석이 하나도
없는가..
하면 그렇진 않습니다.
eospark 사이트에 가보면
이오스의 컨트랙트를 검증하는 메뉴가 있습니다.
https://eospark.com/MainNet/contract/gameworldcom
블록체인에 올려진 코드는 비록 소스코드로 복원할 순 없지만
원 소스코드를 블록체인에 올릴 코드로 만든 것은
변함이 없습니다.
예를들어 사과로 사과파이를 만들었으면
귤로 만들때는 사과파이가 만들어질 수 없다는 것입니다.
그래서 블록체인상에 사과파이가 올려져 있고
뭘 사용해서 만들었을지 사람들이 궁금해할때
개발자가 직접나서서 사과로 사과파이를 만드는 것을
보여주는 겁니다.
개발자가 공개한 원 소스코드를 변환해서 나온 결과물과
블록체인상에 올려진 것을 비교해서
한자도 틀리지 않는다면 그것은 동일한 코드라는 것을
증명할 수 있다는 것이죠.
이오스 파크는 그것을 더욱 간편하게 지원합니다.
아무나 소스코드를 가져와서 올리면
직접 요리해서 그 결과물이 블록체인상에 올려져 있는거랑
같은지 알려주는 것입니다.
그리고 같으면 이런식으로 표시됩니다.
가져온 코드가 블록체인상의 앱과 똑같은 소스코드라는 것이
인증되었으므로 이제 가져온 코드를 검증해서
올바르다면 올라간 앱도 올바르다는 것을 바로
알 수 있게 되는 것입니다.
반면 개발자가 공개하지 않는다면
해당 컨트랙트에 무슨 짓을 해놨을지
아무도 알 수 없습니다.
다만 개발자 입장에선 소스코드 완전 공개라는 것은
누구나 그대로 베껴서 비슷한 서비스를 할 수 있다는 것을
의미하므로 공개를 안하는 것도
딱히 허물이 되는 것은 아닙니다.
이오스 나이츠 같은 경우라면 역시나 소스코드를
공개하진 않았지만 이건 소스의 투명성에 대해서
그다지 알 이유가 없으므로 상관없습죠.
공개되어 있습니다..;ㅁ; 죄송합니다
https://github.com/bada-studio/knights_contract/blob/master/knights/knights.cpp
그러나 카지노류라면?
역시 좀 믿음이 안가는게 사실이긴합니다.
그래서 추구하는 것이
소스코드 공개 여부라거나 해당 앱의 신뢰도 같은 것을
쉽게 볼 수 있게 해줄..
스캐터의 새로운 기능이 될 예정인 ID 검증 시스템입니다.
RIDL 토큰 같은 것 말이죠.
얼마 안있어 이제 거래창에서
상대앱의 신뢰도, 공개여부등을 한눈에 알 수 있게 될겁니다
인증의 불확실성 또한 하나의 서비스가 될 수 있으니
이오스의 재밌는 점이죠
여튼 요약하면
스마트 컨트랙트라고 다 믿을 수 있는 건 아니라는 것과
이오스 파크쪽에서 공개여부를 알 수 있는 것
그리고 앞으로 서비스로도 나오게 될 것
이 되겠습니다 +_+