110 lượt xem

Bảo vệ mình trong thế giới CryptoCurrency


Bạn được nhận được một tin nhắn của đàn anh “Hàng ngon này sắp ra, Game NFT ngon hơn Axie luôn, x5 tài khoản dễ dàng, chuẩn bị chơi đi!”. Bạn lướt qua thông tin nhận được, thử ngay “kỹ năng phân tích dự án blockchain”: click thử vào web: ồ đẹp, đầu tư cả trailer hoành tráng. Kiểm tra Twitter, wow hơn 100.000 followers! Group Telegram hơn 100.000 members đủ 7 nước cả VN, TQ…Kiểm tra dev team: hình toàn đồ hoạ nhưng thấy bảo toàn ex-CTO, ex-Founder công ty to. Download whitepaper về xem, nhìn nhiều hình ảnh, sơ đồ bắt mắt thật chứ toàn kỹ thuật gì chẳng hiểu nhưng có vẻ hoành tráng đây. Thôi chắc hàng ngon thật, lần trước hụt con Axie kỳ phải chơi tất tay thôi. Nhưng bạn cũng hơn run với tình hình cam quýt (scam) dạo này nghe nói cũng khó biết lắm, thôi chờ một thời gian đã. Nhưng ngày qua ngày, group Telegram trao dổi tấp nập, mod, admin… tận tình giải đáp đủ thứ câu hỏi như “em có bán được nhân vật như NFT token không ạ?”. Quỹ đầu tư liên kết XYZ Capital trên Twitter chia sẻ hashtag về dự án liên tục. Bản testnet đã live rồi, video game đã upload (nhưng bạn có được test đâu mà biết). Trước ngày mở bán token bạn và hàng ngàn người khác háo hức tham gia AMA (Ask Me Anything) live chat, nhóm phát triển game giải đáp đủ mọi thắc mắc, hứa hẹn một sản phẩm đỉnh cao. Và ngày mong chờ đã đến, thôi hàng ngon rồi không e dè gì nữa, bạn chuẩn bị ngay 10 BNB (hơn 4000 USD) sẵn sàng, hồi hộp chờ đến lúc trên Telegram group báo “We are live!” và click liên tục vào nút “Swap” trên PancakeSwap. May quá mua được rồi! Poocoin báo giá tăng liên tục 30%, 50%, x2 rồi, bạn thầm cảm ơn đã quyết định sáng suốt, cảm ơn ông anh cho kèo thơm. X3! 10 BNB đã thành 30 BNB, kiếm hơn 10.000 USD trong vài phút rồi, bạn quyết định bán lấy vốn lại 10 BNB cái đã, nhưng.. ở kìa sao lại báo lỗi gì nhỉ? Tăng gas, slip page lên xem nào, nhưng sao PancakeSwap cứ báo lỗi thế này??? Mồ hôi toát ra, bạn cuống cuồng vào group Telegram để hỏi nhưng thôi rồi group không tồn tại là sao??? Ôi 10 BNB của tôi ahhhh….😱!
Xin chia buồn, bạn đã là một nạn nhân nữa của một kế hoạch scam tinh vi, kéo dài hàng tháng trời. “Nhưng tại sao có thể mua mà lại không thể bán?” Bạn tự hỏi và không biết làm thế nào để có thể biết được token nào là lừa đảo đây? Chẳng lẽ cứ đánh bạc Binance Futures để làm giàu cho sàn sao? Làm sao để mua token ngày từ gốc lúc chưa lên sàn để có cơ hội đổi đời?
Bài viết này không dành cho những traders chỉ mua bán qua sàn Binance, Gate…cũng sẽ không nói về các thủ thuật phổ biến lừa đảo thiên về kỹ thuật social engineering như tạo fake group, fake web giả mạo, dụ gửi tiền vào địa chỉ ví giả, giả làm admin chat riêng, dụ bấm vào link cài đặt malware ..v..v.. mà sẽ đi sâu vào cách hoạt động của token, của smart contract để người xem dễ hình dung vì sao có thể bị scam chỉ thông qua vài lệnh lên blockchain. Mong rằng sau khi đọc, bạn dù không có kiến thức về lập trình Solidity vẫn có thể tìm hiểu được token mình sắp mua có khả năng bị scam hay không.

COIN VÀ TOKEN

Đã có rất nhiều bài viết blockchain là gì, nguyên lý hoạt động … nên bài này sẽ không nhắc lại mà chỉ tóm tắt lịch sử lại một chút: như chúng ta đã biết, blockchain đầu tiên và giá trị nhất hiện nay là Bitcoin. Một blockchain muốn hoạt động thì phải có rất nhiều node (server, miner…) chạy để xác nhận giao dịch, nếu vì lý do gì đó các node này ngưng hoạt động thì blockchain coi như chết vì có mỗi vài node của chủ blockchain. Thời gian đầu để ra mắt một blockchain, một loại coin mới, ví dụ như Litecoin được copy từ Bitcoin với một ít hiệu chỉnh, thì Litecoin cần kêu gọi nhiều người tham gia đào Litecoin (coi như chạy một node) để blockchain có thể hoạt động. Do đó việc ra mắt một coin mới khá khó khăn vì số lượng miner đào coin có hạn, nếu có coin mới ra đời đào có lợi hơn thì các miner sẽ chuyển qua tham gia blockchain mới ngay. Chính vì việc ra mắt một coin mới không hề dễ dàng vì ngoài việc phải cung cấp chương trình mining cho miner, explorer để xem giao dịch cho user… còn phải làm sao để có nhiều miner tham gia blockchain thì coin mới có khả năng tồn tại. Mỗi một blockchain chỉ có thể có một loại đơn vị tiền tệ duy nhất dùng trong giao dịch, chuyển từ ví này sang ví khác, như BTC trên Bitcoin, LTC trên Litecoin… ta có thể gọi đó là coin để phân biệt với token.
Sự ra đời của smart contract trên blockchain Ethereum (năm 2014) đã mang lại một khả năng vô cùng to lớn là ngoài việc giao dịch coin ETH, bây giờ các nhà phát triển có thể lập trình trên blockchain, và nhờ vậy họ có thể giúp việc tạo ra token, với tính năng còn hay hơn coin thông thường, một cách rất dễ đàng.

TOKEN THỰC CHẤT LÀ GÌ?

Trên thực tế, khác với coin, không hề có token nào tồn tại cả, token chỉ là một smart contract được lập trình theo một tiêu chuẩn, ví dụ ERC20 hay ERC721… nghe có vẻ lùng bùng lỗ tai một chút. Để hiểu được token, trước hết bạn cần biết smart contract là gì. Để có thể nhận coin trên blockchain Ethereum, bạn cần có một vi (wallet), ví sẽ có một địa chỉ ví dụ như 0xab5801a7d398351b8be11c439e05c5b3259aec9b. Khi người khác gửi coin cho bạn, một giao dịch (transaction) sẽ được gửi lên blockchain, báo rằng ví A gửi một số coin là X cho vi B, và coin sẽ chuyển từ ví này sang ví khác. Ví bình thường thì chỉ có nhận, gửi coin ngoài ra không thể làm gì khác và không chứa thông tin gì nữa ngoài số coin trong ví. Smart contract cũng có địa chỉ y hệt ví thông thường, chỉ có khác thêm là chứa một đoạn mã bytecode để mỗi khi có một transaction gửi tới ví thì đoạn code đó được chạy.
Token bản chất là một smart contract thực hiện các lệnh theo chuẩn để đáp ứng được nhu cầu của một đồng tiền, ví dụ như chuyển từ ví này sang ví kia, trả về tổng số tiền đang lưu hành là bao nhiêu, tên của đồng tiền là gì? Bạn có thể tưởng tượng như thế này: bạn muốn ra mắt 1 token tên là VNDT chẳng hạn, số lượng lưu hành là 1 tỷ đồng. Như vậy trong smart contract của bạn sẽ cần có chức năng trả về tên của token, name = “VNDT”, trả về tổng số tiền phát hành totalSupply = 1 tỷ. Còn những phần khác như làm sao chuyển tiền từ ví này sang ví kia (transfer) thì bạn có thể mượn từ đoạn code có sẵn của tiêu chuẩn ERC20, đơn giản hơn với việc tạo ra cả một blockchain mới rất nhiều!
Ủa nếu vậy khi tôi mua một 100 token Axie chẳng hạn, có token nào gửi vô ví của tôi không, bạn tư hỏi. Thực tế là ví bạn không hề chứa một thông tin gì về token cả, không có token nào chuyển vào ví của bạn. Cái thay đổi khi bạn mua token là smart contract của token (trong trường hợp này lag token Axie) sẽ chạy 1 đoạn code tên transfer, và thay đổi dữ liệu nằm trong smart contract để ghi nhận ví của ông A tăng thêm số token và B bị trừ đi số token. Vậy làm sao để biết ông A có bao nhiêu token nếu ví của ông A không hề lưu dữ liệu gì của token? Lại phải gọi lệnh vào smart contract của token đó để kiểm tra xem ví A có bao nhiêu tiền. Vậy nếu tôi không có tiền mà gọi transfer cho người khác thì sao? Smart contract phải tự kiểm tra xem người gọi transfer có tiền không trước khi thực hiện việc chuyển tiền, nếu smart contract không kiểm tra hoặc có lỗi gì đó trong việc kiểm tra? bạn có thể chuyển thoải mái không giới hạn!
Đến đây bạn có thể từ từ hiểu được vì sao có thể mua token mà lại không bán đượcngười tạo ra token hoàn toàn có thể làm bất kỳ điều gì họ muốn với token thông qua việc lập trình lại smart contract. Ví dụ một token được bán trên sàn PancakeSwap, trong hàm transfer kẻ gian có thể đưa một đoạn kiểm tra nếu địa chỉ tới là pair của token trên PancakeSwap thì sẽ không cho phép, ngoài trừ người chủ của token mà thôi. Và thế là do mua mà không ai bán được, giá của token lên ào ào làm những người khác càng đổ xô vào mua, người mua không thể báo với nhau là không bán được vì group Telegram đã bị mute, với lý do chống spam. Kẻ gian sau vài phút có thể dễ dàng cuỗm đi số tiền trị giá hàng trăm ngàn USD!

LÀM SAO ĐỂ PHÒNG CHỐNG?

Nếu vậy người muốn mua token có công cụ gì để biết được token nào có khả năng lừa tiền không? Có một số dịch vụ như RugScreen hay RugDoc (hình) có thể scan smart contract và cho ra một số đánh giá khả năng token có scam hay không tuy nhiên sẽ tốn phí và không bảo đảm 100% khi rất nhiều cách để lách.
Ưu điểm của blockchain là hầu như mọi thứ đều công khai có thể xem được thông qua công cụ explorer của blockchain đó, ví dụ Ethereum có etherscan.io, Binance Smart Chain có bscscan.com… nên bạn hoàn toàn có thể tự mình kiểm tra bằng cách xem trong smart contract của token. Ví dụ lấy một scam token gần đây là CryptoHero (hình) trên Binance Smart Chain. Dùng bscscan.com để xem source code của token này (xem hình), tìm “_transfer” là hàm các token sẽ phải gọi mỗi khỉ chuyển token giữa các địa chỉ ví. Như trong hình bạn sẽ thấy CryptoHero có một đoạn bất thường:
BP.protect(sender, recipient, amount);
Ngay đoạn code phái trên ta có thể thấy BP (chắc là Bot Protect?) là một contract khác được chủ token có thể thay đổi bất kỳ lúc nào bằng cách gọi vào hàm function setBpAddress(address _bp), tức là mỗi khi token thực hiện việc transfer khi mua, bán, contract BP này sẽ được gọi. Dùng bscscan kiểm tra lại lịch sử, ta có thể thấy chủ token gọi hàm này để set contract với địa chỉ 0x9257dc8059ca9e6b2a7f4ae6f70fac9be0186035 (hình BPSetaddress). Nếu tiếp tục dùng bscscan kiểm tra contract này thi ta thấy source code bị dấu (hình BPContract), không biết ở trong làm gì cả!
Như vậy để scam không cho bán, chủ token chỉ cần kiểm tra trong hàm protect của contract BP dấu source này, nếu địa chỉ nhận là địa chỉ pair của sàn PancakeSwap thì không cho bán, người mua chỉ biết vò đầu bứt tai vì ôm một đống token vô dụng.

CÁC DẤU HIỆU ĐÁNG NGỜ

Những tín hiệu dưới đây cho thấy một token có nguy cơ scam:
  • Thiếu Contract Source Code Verified trên Etherscan, Polygonscan, Bscscan…: nếu không có source code, nguy cơ scam rất cao.
  • Có cảnh báo “This contract contains unverified libraries”: chủ token chỉ công bố môt phần source code và dấu một phần.
  • Trong source code smart contract có kiểm tra Uniswap Pair (uniswapV2Pair) khi _transfer(): nếu có đoạn kiểm tra này, token hoàn toàn có thể chỉ cho bạn mua mà không cho bạn bán, hoặc chủ token có thể nói dùng để chống bot… khi đó thì tuỳ vào bạn tin vào chủ token hay không.
  • Smart contract gọi tới một smart contract khác không có source code: giống như trường hợp BP.protect đã nói ở trên. Cũng có thể token kiểm tra chống bot thật, nhưng để yên tâm bạn cũng nên tránh xa.
Vậy chỉ cần xem source code của token là ta có thể biết được token nào scam? Không đơn giản như vậy khi kỹ thuật scam càng ngày càng tinh vi hơn, kẻ gian có thể dấu những đoạn code nguy hiểm bên trong hàm thư viện, bên trong các hàm tưởng chừng vô hại như approve(), chỉ công bố contract address ngay trước giờ mở bán để bạn không có thời gian kiểm tra source code… Ngoài ra còn các thủ thuật lấy fee thật cao khi bán lại, đang mở bán bình thường thì ngưng, rút hết tiền trong pool (RemoveLiquidity)… Do đó, để tránh rủi ro khi đầu tư vào các dự án IDO, nếu không đủ khả tự đánh giá smart contract của token, bạn nên:
  • Chỉ mua nếu smart contract của token hoàn toàn không có chỗ nào đáng ngờ, tương tự các token ERC20 chuẩn. Tuy nhiên hiện nay trừ các token rất uy tín, đa số token đều có chỉnh sửa trừ để trừ fee, chống bot… nên hiếm khi gặp token chuẩn.
  • Mua qua các sàn dạng launchpad có uy tín như PolkaStarter, BSCStarter, BSCPad, launchX… Các sàn này sẽ kiểm tra dự án dùm bạn để bảo đảm không có lừa đảo.
  • Sử dụng các dịch vụ, bot… kiểm tra dùm bạn theo thời gian thực, tức là ngay lúc mua token. Có bot có thể báo ngay token mua xong có bán được không, bán thì bị mất bao nhiêu phí… trước khi bạn mua.
  • Uỷ quyền cho cho nhóm, quỹ có kinh nghiệm và khả năng thẩm tra để đầu tư dùm bạn, ví dụ RADA.
Mong rằng bạn sẽ có thêm một chút kiến thức qua bài viết này để có thể tránh được các thủ đoạn lừa đảo thông qua smart contract. Vì yếu tố kỹ thuật khá nhiều nên nếu có câu hỏi nào các bạn có thể đưa vào trong phần comment nhé.
Ngày 10/8/2021, vụ hack trị giá 600 triệu USD lớn nhất trong lịch sử cryptocurency đã được thực hiện thành công nhắm vào Poly Network. Vụ hack được thực hiện hoàn toàn thông qua smart contract (khác với những vụ đánh cắp mật khẩu hay đột nhập vào máy của nhân viên) mặc dù trước đó smart contracts của Poly Network đã được audit, kiểm tra về bảo mật bởi công ty Certik, một cái tên nổi tiếng trong giới bảo mật chuyên cho blockchain với hơn 1300 khách hàng. Làm thế nào chỉ cần gửi một vài lệnh lên blockchain lại có thể rút một lượng token trị giá hơn 600 triệu USD? Vì sao trong rất nhiều vụ, hacker có thể vay hàng trăm triệu USD để thực hiện việc hack thông qua tính năng flash loan của các sàn DeFI? Bảo mật của blockchain như thế nào, tiền của chúng ta có thể có nguy cơ mất sạch nếu bỏ vào một sàn giao dịch, một DAO hay một yield farm… không? Chúng ta sẽ quay sau với những bài viết mới trong chuyên đề bảo mật trên blockchain.
(Theo Fb Quang Hong Dang)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *