Ai cũng biết rằng các hợp đồng thông minh có thể rất phức tạp. Những người không chuyên về kỹ thuật thường bị cám dỗ để mua mã thông báo ERC20 dựa trên mức độ cường điệu mà không có bất kỳ kiến ​​thức trước nào về chất lượng của mã thông báo và sự an toàn của mã thông báo họ đang mua.

Bitfinex, một trong những sàn giao dịch tiền điện tử lớn nhất trong ngành, đã phát hành một mã thông báo có tên LEO. Mã thông báo này cho phép thực thể kiểm soát nó in hoặc đúc mã thông báo mới không giới hạn, cũng cho phép họ xóa các đồng tiền của bất kỳ ai bao gồm nhưng không giới hạn đối với đồng tiền trên các sàn giao dịch tập trung hoặc phi tập trung, kho nóng hoặc lạnh, ví phần cứng hoặc phần mềm và / hoặc ví giấy hoặc não.

Đừng để bị lừa, mua ERC20 không có nghĩa là tài sản của bạn thực sự là của bạn! Đây không phải là lần đầu tiên tôi tiếp xúc với một hợp đồng thông minh như vậy. Mới tuần trước, chúng tôi đã xuất bản trên Cointelligence một báo cáo về một hợp đồng thông minh tương tự cho phép cùng một chức năng, hãy xem bài đánh giá của chúng tôi về KHI Hợp đồng thông minh.

Hợp đồng LEO ERC20 có cho phép lừa đảo và / hoặc gian lận hàng tỷ đô la không?

Chúng tôi để bạn quyết định, bây giờ hãy đi sâu vào Mã thông báo LEO.

Giới thiệu

LEO là một mã thông báo ERC20 được giới thiệu vào ngày 10 tháng 5 năm 2019 bởi iFinex Inc. trong thông báo của họ. Bạn có thể tìm thấy Báo cáo chính thức của LEO đây. Mặc dù chúng tôi không thể tìm thấy kho lưu trữ GitHub, nhưng mã hợp đồng mã thông báo của họ đã được xác minh trên Etherscan. Chúng tôi đã sử dụng mã Etherscan đã được xác minh cho LEO, LeoController và TokenFactory để kiểm tra và triển khai bản sao của mã thông báo này trong Ropsten testnet.

Mã thông báo LEO – Mã thông báo ERC20 được phát hành bởi Unus Sed Leo Limited, một công ty con của iFinex Inc.

Bộ điều khiển – Hợp đồng bộ điều khiển cho phép chủ sở hữu chuyển giao, phê duyệt, phát hành, ghi và thay đổi bộ điều khiển. Cũng xin lưu ý rằng mặc dù hợp đồng “0xf17ebb3a24dc6d6b56d38adf0df499c1cd9e5672” hiện “kiểm soát” hợp đồng LEO ERC20, nhưng “bộ điều khiển” có thể dễ dàng nâng cấp hoặc thay đổi thành bất kỳ địa chỉ nào vào bất kỳ lúc nào bởi chủ sở hữu, do đó cho phép họ làm được khá nhiều điều với mã thông báo LEO.

Hợp đồng kiểm soát viên LEO

Hợp đồng LEOController: Chủ sở hữu có thể thay đổi “Controller” của hợp đồng LEO ERC20Hợp đồng LEOController Chủ sở hữu có thể thay đổi Người điều khiển của hợp đồng LEO ERC20

Các LEOController chủ sở hữu hợp đồng có thể thay đổi “bộ điều khiển” bất kỳ lúc nào và đặt điều này thành bất kỳ địa chỉ ví nào mà họ kiểm soát.

  • Bằng cách gọi hàm “liftController” trên dòng 698 và nhập bất kỳ địa chỉ ví nào họ chọn.
  • Khi giao dịch trên được xác nhận, địa chỉ đã nhập sẽ trở thành “người kiểm soát” mới của Hợp đồng LEO ERC20.

Hợp đồng LEO: Chủ sở hữu có thể đốt mã thông báo của bạn và đúc mã thông báo mới không giới hạnHợp đồng LEO Chủ sở hữu có thể đốt mã thông báo của bạn và đúc mã thông báo mới không giới hạn

Làm thế nào mà chủ sở hữu LEO có thể tiếp tục đúc các mã thông báo mãi mãi?

Như đã giải thích trước đây, khi địa chỉ bộ điều khiển được thay đổi thành địa chỉ ví (hoặc thậm chí là một hợp đồng thông minh mới), họ có thể chỉ cần gọi hàm “createTokens” trên dòng 460.

Thông số

  • _owner → Ví sẽ nhận được mã thông báo LEO mới được đúc.
  • _amount → Số lượng mã thông báo để “in” sẽ chuyển đến địa chỉ trên.

Ghi chú – Sách trắng của LEO không đề cập đến nguồn cung cấp mã thông báo tối đa là bao nhiêu và hợp đồng này cho phép họ tiếp tục đào mã thông báo LEO vì chúng tôi có thể “in” một triệu tỷ mã thông báo LEO trên một mạng thử nghiệm bằng cách sử dụng mã của họ.

Làm cách nào mà chủ sở hữu LEO lại có thể xóa mã thông báo của người khác?

Chức năng “killTokens” trên 477 cho phép ví điều khiển LEO ghi mã thông báo LEO của bất kỳ ai bao gồm nhưng không giới hạn ở những mã có trong sàn giao dịch tập trung hoặc phi tập trung, ví phần cứng hoặc phần mềm, kho nóng hoặc lạnh và / hoặc giấy hoặc não ví tiền. Không quan trọng tiền của bạn ở đâu, họ có thể xóa tiền của bạn nếu họ muốn. Đơn giản vậy thôi.

Thông số

  • _owner → Ví mà từ đó các token LEO hiện có sẽ bị đốt cháy.
  • _amount → Số lượng token cần “xóa” khỏi địa chỉ ví nêu trên.

Bằng chứng thêm

Chúng tôi đã sao chép cùng một mã chính xác cho mã thông báo LEO ERC20, bộ điều khiển và nhà máy để triển khai hợp đồng sau trên Ropsten testnet.

Ví / Địa chỉ

  • Địa chỉ người gửi: 0x58FA58089956c5cba21d9f61434B1902F8121b32
  • Địa chỉ được tạo ngẫu nhiên: 0xada183F6Ff6E7805EE5bDA701d40958858FeE548

Đầu tiên, chúng tôi đã thay đổi bộ điều khiển từ địa chỉ Người gửi thành bản sao của “LEOController” để xem liệu chúng tôi có thể thay đổi bộ điều khiển trở lại địa chỉ Người gửi một lần nữa hay không bằng cách sử dụng chức năng “liftController”.

Các bước

  • Nhà máy mã thông báo Đã triển khai
  • Mã thông báo LEO Đã triển khai
  • LEOController Đã triển khai
  • Đã kiểm tra xem ai thực sự là “người kiểm soát” trên hợp đồng mã thông báo LEO: 0x58FA58089956c5cba21d9f61434B1902F8121b32.
  • Đã thay đổi bộ điều khiển bằng cách sử dụng chức năng “changeController” trên hợp đồng LEO thành đã triển khai trước đó Hợp đồng “LEOController”
  • Đã xác nhận rằng bộ điều khiển đã thực sự được thay đổi thành địa chỉ hợp đồng thông minh.

Tại thời điểm này, hợp đồng LEO testnet của chúng tôi hoàn toàn giống với hợp đồng LEO ERC20 theo những cách sau

  • Người điều khiển hợp đồng LEO là một hợp đồng thông minh.
  • Mã điều khiển trong testnet khớp chính xác với một trong mainnet.

Bây giờ, chúng tôi đang cố gắng xác định:

  • Nếu chúng tôi có thể đốt hoặc phá hủy mã thông báo LEO của người khác bằng cách thay đổi bộ điều khiển trước.
  • Nếu chúng tôi có thể phát hành một số lượng cực lớn mã thông báo LEO để xem liệu có giới hạn hay không.

Các bước

  • Mặc dù tại thời điểm này, chúng tôi biết rằng chủ sở hữu không thể thay đổi bộ điều khiển trên hợp đồng “LEO” bằng cách sử dụng chức năng “changeController”, chúng tôi vẫn cố tình gửi giao dịch đó để nó hoàn nguyên hoặc không thành công. Thất bại
  • Chúng tôi đã đi tới hợp đồng “LEOController” và sử dụng chức năng “liftController” để thay đổi bộ điều khiển của hợp đồng thông minh được kiểm soát, tức là LEO, thành địa chỉ Người gửi một lần nữa. Thành công

Ghi chú – rằng chúng tôi đã thay đổi bộ điều khiển từ Người gửi thành hợp đồng thông minh và sau đó quay lại Người gửi vì chúng tôi muốn cho bạn thấy rằng việc thay đổi bộ điều khiển trong testnet (và đối với chúng trong mạng chính) là khá dễ dàng.

Phát hành mã thông báo

Vì bây giờ Người gửi là người kiểm soát hợp đồng LEO một lần nữa, nó có thể truy cập các chức năng của hợp đồng LEO “createTokens” và “killTokens”. Chúng tôi đã tạo một địa chỉ ví ngẫu nhiên “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” để gửi một số số lượng lớn mã thông báo LEO 1.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000 (một tỷ) LEO đã chuyển.

Đốt mã thông báo

Chúng tôi muốn xác định xem chúng tôi (Người gửi) có thể xóa hoặc hủy mã thông báo khỏi địa chỉ ngẫu nhiên hay không 0xada183F6Ff6E7805EE5bDA701d40958858FeE548 mà chúng tôi đã tạo trước đây.

Trong giao dịch trên, chúng tôi đã đốt / xóa / hủy thành công 10.000.000.000 (mười tỷ) mã thông báo từ ví của người khác hoặc địa chỉ mà chúng tôi không sở hữu.

Bạn có thể thấy rằng địa chỉ “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” hiện có số dư là 999.999.999.999.999.999.999.999.990.000.000.000 (chín trăm chín mươi chín tỷ, chín trăm chín mươi chín tỷ, chín trăm chín mươi chín tỷ chín mươi chín chín mươi chín tỷ , chín trăm chín mươi chín tạ tỷ, chín trăm chín mươi chín phần tư, chín trăm chín mươi chín nghìn tỷ, chín trăm chín mươi tỷ) chỉ mã thông báo testnet LEO.

So sánh hợp đồng

SƯ TỬ Nguyên Testnet Khác biệt
MiniMeTokenFactory Nguyên Testnet Khác biệt
LEOController Nguyên Testnet Khác biệt

TLDR: Điều này ảnh hưởng đến tôi như thế nào?

Paolo Ardoino, CTO của Bitfinex, đã trả lời tweet của chúng tôi trong đó nêu ra vấn đề này, nêu rõ:

“Vì lý do bảo mật và bằng chứng trong tương lai, chúng tôi đã bỏ khả năng nâng cấp Hợp đồng mã thông báo. Đó thực sự là một tính năng chính cho một hợp đồng có thể kéo dài nhiều năm. Việc đúc nhiều mã thông báo hơn sẽ không có ý nghĩa đối với Finex … giống như bắn vào chân chúng tôi. “

Chúng tôi không chỉ yêu thích tweet của anh ấy mà còn muốn công khai cảm ơn anh ấy vì đã trả lời, bởi vì chúng tôi tin rằng đây là cách chúng tôi có thể tự chịu trách nhiệm và giúp định hướng ngành công nghiệp này hướng tới một tương lai tốt đẹp hơn.

Bây giờ chúng ta hãy quay trở lại công việc kinh doanh! Hãy lưu ý rằng các hợp đồng thông minh được thiết kế để không đáng tin cậy. Bitfinex phá vỡ lòng tin ở đây bằng cách đặt một cửa hậu ở đây, điều này mang lại cho họ một tấm vé để gian lận bất cứ khi nào họ cần, với một lợi thế không công bằng so với những người như bạn và tôi. Lặp đi lặp lại trong toàn bộ bài viết này, sự thật duy nhất mà chúng tôi đã chỉ ra là khả năng đúc bất kỳ số lượng (hoặc không giới hạn) nào của đồng LEO theo quyết định của họ và xóa bất kỳ đồng tiền nào của ví, bây giờ hoặc trong tương lai.

Để tóm tắt và đơn giản hóa mọi thứ cho những độc giả không chuyên về kỹ thuật, chúng tôi không phủ nhận hoặc đặt câu hỏi về khả năng có thể nâng cấp của hợp đồng thông minh. Vấn đề ở đây không phải là kỹ thuật mà là triết học. Nếu bạn đồng ý với việc Bitfinex có thể làm những gì họ có thể làm với LEO, chúng tôi cũng hiểu điều đó và tôn trọng quan điểm của bạn. Nhưng đối với chúng tôi, LEO không phù hợp với tinh thần và triết lý của blockchain vì chúng có thể ra lệnh cho các điều khoản. Ngoài ra, dựa trên sự hiểu biết còn thiếu sót và khiêm tốn của chúng tôi, một loại tiền điện tử:

  • Nên cởi mở cho tất cả mọi người. Bạn có thể đến và đi tùy ý. ✓
  • Nên công bằng. Không ai nên có bất kỳ lợi thế không công bằng nào hơn bất kỳ ai khác. ✘
  • Nên được bao gồm. Nó không nên bị giới hạn đối với bất kỳ ai bất kể họ đã nói hay làm gì hoặc họ đến từ đâu, thay vào đó là hoàn toàn thờ ơ với "WHO" họ là hoặc "gì" họ có thể trở thành. ✘
  • Nên có khả năng chống kiểm duyệt nếu không muốn nói là miễn kiểm duyệt. Không ai được ngừng sử dụng hoặc truy cập bất kỳ tính năng nào tại bất kỳ thời điểm nào. Khi nói đến mạng blockchain (hợp đồng thông minh trong trường hợp này), ngay cả những kẻ xấu như kẻ lừa đảo, tin tặc và kẻ lừa đảo cũng phải được đối xử theo cách không bị kiểm duyệt – bao gồm, bình đẳng, công khai và công bằng. Nếu bạn không thể kiểm duyệt các tác nhân xấu trong Bitcoin, tại sao bạn có thể làm điều đó trong LEO? “Khả năng nâng cấp” không biện minh cho “khả năng” của các thuật ngữ chính tả. ✘
  • Nên bất di bất dịch. Bất cứ điều gì đã xảy ra nên ở đó mãi mãi để bất cứ ai và mọi người xác nhận, đồng ý hoặc không đồng ý. ✓
  • Mạng nên được phân cấp. Không nên có bất kỳ thực thể trung tâm nào có thể ra lệnh cho các điều khoản về những gì sẽ xảy ra. Mặc dù mạng Ethereum là phi tập trung, nhưng hợp đồng mã thông báo LEO không phải vì chúng có thể ra lệnh cho các điều khoản. ✘
  • Nên được phân phối. Mọi người sẽ có thể tự lấy lịch sử của mạng và xác nhận tính xác thực của dữ liệu. ✓

Mọi người tin tưởng blockchain bởi vì nó không đáng tin cậy. Bản chất không tin cậy đáng tin cậy của blockchain đã khiến những người như bạn và tôi quan tâm đến công nghệ tuyệt vời này.

Chúng tôi không thù ghét Bitfinex ở mức độ cá nhân, nhưng không ngại chỉ tay vào họ khi chúng tôi cảm thấy họ sai và họ cần phải làm điều đúng đắn. Chúng tôi cung cấp một giải pháp cho Bitfinex, để tạo một mã thông báo mới không có các tính năng như vậy và trao đổi chúng với các nhà đầu tư. Chỉ riêng hành động này đã có thể tăng cường niềm tin của nhà đầu tư vào mã thông báo LEO.

Cuối cùng, cuộc tranh luận này có thể diễn ra vòng tròn vì Bitfinex sẽ cho rằng họ cần “khả năng nâng cấp” (có thực sự không?) Và chúng tôi sẽ không chấp nhận thực tế rằng đồng xu của người khác có thể bị xóa ngay cả khi những đồng tiền đó không phải của chúng tôi. Chúng tôi xin gửi trường hợp của chúng tôi cho bạn, độc giả tuyệt vời của chúng tôi, tự quyết định và xem liệu bạn có muốn tin tưởng vào hợp đồng LEO ERC20 hay không.