$CASH Thật sự cảm thấy phía dự án này là lương tâm nhất. Thế mà còn có trợ cấp khi gặp khó khăn, để những người như chúng tôi bị lỗ trong giao dịch cũng có thể được bồi thường. Thật tuyệt vời. Đây đúng là dự án tốt nhất mấy ngày nay tôi nghĩ vậy. Có những dự án khác thậm chí còn không phát thưởng. Bây giờ tham gia cũng rất dễ dàng: chỉ cần trong ví của bạn có một là được. Ngoài ra, có 7 fan của Bích Dương quan tài cũng có thể nhận được phần thưởng. Mọi người cùng tham gia đi nhé. #cash SR-BC5B463E003E3D029D9FD5C3
Cơ hội đều như nhau khi tăng tốc Gần đây mình thấy một giao thức hạ tầng rất thú vị mang tên @BNPaid. Đang kết nối trực tiếp ngân sách marketing của các dự án đa chuỗi vào Binance Square—để những người sáng tạo nội dung chất lượng có thể thực sự nhận được các ưu đãi thanh toán trên chuỗi.
Kết nối ngân sách đa chuỗi và Binance Square, để lưu lượng truy cập được chuyển hóa thực sự thành tính thanh khoản của hệ sinh thái. Đó mới là dáng vẻ của “nền kinh tế người sáng tạo”.
Hợp đồng giao thức: 0x11dC0Fd5e2C9A4407fdb15aA6871501Ba9307777 Nhận on-chain (chuỗi Creator): 0x7adbe78a997bdd20cfab7a1f9c4133ce19957be6
“Chứng minh rồi, tại sao vẫn chưa được vào?”🤪🤪🤪 Khi mình đọc quy trình Citadel 2 của Dusk, mình đã nghĩ đến câu hỏi này: Người dùng lấy license từ License Provider, rồi tạo ra bằng chứng; sau khi hợp đồng Citadel xác minh, nó chỉ ghi lại session công khai, còn việc cho phép vào hay không vẫn do Service Provider quyết định. Điều này khiến mình hiểu lại tầng danh tính của @Dusk. Bằng chứng Citadel “xác nhận lần này chứng thư có hiệu lực về mặt mật mã”, nhưng không thay phía dịch vụ trả lời “hôm nay có chấp nhận nó không”. Quy trình chính thức nêu rõ: Service Provider tự chọn tin tưởng những LP nào, chấp nhận những thuộc tính nào, đánh giá session có hết hạn hay bị thu hồi, và quyết định cookie có được tái sử dụng hay không. Nói cách khác, tầng bằng chứng đưa ra sự thật, còn tầng quyền hạn giữ quyền quyết định. Khi hai tầng này được đặt trên cùng một trang, người dùng rất dễ coi chúng là một kết quả duy nhất. Tình huống áp lực thì rất cụ thể: nhà đầu tư đã chứng minh mình đáp ứng một điều kiện nào đó, nhưng chuyển sang ứng dụng khác lại bị từ chối. Vấn đề có thể không phải do chứng thư mất hiệu lực, mà do sự khác nhau về danh sách trắng LP, thời hạn hết hạn hoặc quy tắc tái sử dụng giữa hai bên Service Provider. Người dùng sẽ bắt đầu nghi ngờ @Dusk , trong khi nhà phát triển và bộ phận chăm sóc khách hàng lại phải giải thích sự khác biệt chính sách quyền hạn; khi quy tắc không được công khai, cơ chế bảo vệ quyền riêng tư lại vô tình che đi ranh giới trách nhiệm.👻 Vì vậy khi đánh giá Citadel, mình không chỉ xem zero-knowledge proof che giấu được bao nhiêu thông tin, mà còn xem Service Provider có công khai danh sách tin cậy, điều kiện thu hồi và quy tắc tái sử dụng session hay không. Nó giữ các thuộc tính ở ngoài chuỗi, nhưng không thay ứng dụng thống nhất chính sách quyền hạn. Với $DUSK , sự trưởng thành không nằm ở việc xác minh thành công một lần, mà ở chỗ khi chứng thư bị vô hiệu, người dùng có thể biết ai đã từ chối mình, dựa trên quy tắc nào.#dusk 😖
Trong cộng đồng, câu dễ bị nói quá đà nhất về @Dusk không phải “nó coi trọng quyền riêng tư”, mà là biến “có thể xây dựng” thành “đã ra mắt”. Khi tôi xem lại trang Overview và Market Infrastructure chính thức, tôi nhận thấy ngay trước đoạn nói về use case (tình huống sử dụng) đã chủ ý viết “Some example use cases Dusk was designed for”, rồi sau đó lại bổ sung: các ứng dụng khác nhau có thể được triển khai theo những cách khác nhau, còn Dusk cung cấp các khối giao thức và lộ trình thực thi. Giới hạn này thực ra đang vẽ ranh giới cho việc lan truyền trong cộng đồng. Khi ai đó mang “chứng khoán được token hóa, DeFi theo hướng tổ chức, thanh toán riêng tư” đi chuyển tiếp như một sản phẩm sẵn có, người dùng phổ thông sẽ trộn lẫn năng lực kiến trúc, việc triển khai ứng dụng và mức độ chấp nhận thực tế thành một thứ. Bên phát hành có thể vẫn đang thiết kế quy tắc tư cách; nhà phát triển có thể chỉ mới hoàn tất hợp đồng; nhưng người dùng lại đã hiểu theo kiểu “thị trường có thể sử dụng được” cho $DUSK . Một khi khoảng cách thông tin đi vào các cuộc thảo luận giao dịch, những kỳ vọng sai lệch sẽ không còn chỉ là vấn đề nội dung quảng cáo. Tình huống phiền phức nhất là: phần giới thiệu dự án bị rút gọn thành một câu “Dusk hỗ trợ một số bối cảnh tài chính”, rồi sau đó có người hỏi tiếp cụ thể cổng vào nào, tài sản có thể giao dịch nào và bên chịu trách nhiệm là ai; cộng đồng chỉ có thể tiếp tục dùng nội dung tuyên truyền để vá lỗ hổng. Càng về sau, tiến độ sản phẩm thực sự và những tưởng tượng chưa được kiểm chứng sẽ bị trộn lẫn với nhau. Vì vậy, tôi đánh giá chất lượng giáo dục cộng đồng của @Dusk : không xem ai viết use case hoành tráng nhất, mà xem ai biết phân biệt “giao thức có thể cung cấp gì”, “ứng dụng nào đã được hiện thực”, và “những mức độ áp dụng nào vẫn cần bằng chứng”. Lần tới khi nhìn thấy những cụm từ lớn như của #dusk , tôi sẽ tìm tên triển khai, quy trình công khai và các bản ghi có thể kiểm chứng; làm rõ ranh giới còn giúp bảo vệ dự án tốt hơn việc viết trước tương lai thành hiện tại.
Nếu một tổ chức công khai mọi vị thế theo từng lệnh, thị trường sẽ minh bạch hơn hay trước hết sẽ làm “kẻ mua thực sự” sợ chạy mất? Khi suy nghĩ về vấn đề này, điều tôi thực sự quan tâm là ranh giới mà nhà tạo lập thị trường và tổ chức phát hành phải giữ: tín hiệu nào đủ để hình thành giá và những chi tiết nào, nếu bị lộ ra, sẽ làm rò rỉ vị thế. Khi tôi xem phần mô tả về hạ tầng thị trường của @Dusk , tôi thấy nó tách thị trường được quản lý thành hai phần nhu cầu: điều phối công khai và dữ liệu được bảo vệ; tài liệu cũng viết rất thẳng thắn mục tiêu của DeFi mang tính tổ chức—các tín hiệu thị trường được công khai và bảo vệ các vị thế cá nhân. Ánh xạ vào lớp giao thức, Moonlight cung cấp tài khoản công khai và dữ liệu on-chain công khai, còn Phoenix sử dụng cơ chế xử lý chuyển khoản bí mật bằng chứng không tri thức. Cách bố trí này khiến tôi đổi cách đánh giá: quyền riêng tư không chỉ là sở thích của người dùng mà là thiết kế cấu trúc thị trường. Báo giá, trạng thái thanh toán và quy tắc tài sản cần được nhìn thấy; còn vị thế của tổ chức, đối tác và lộ trình vốn thì không nên tự động bị phát tán.
Áp lực xuất hiện khi thanh khoản bị mỏng đi. Giả sử một tổ chức vừa hoàn tất một lần phân bổ/đặt mua quy mô lớn và địa chỉ lẫn số tiền đều có thể truy vết, thì nhà kinh doanh chênh lệch giá có thể điều chỉnh giá trước, khiến bên mua sau lựa chọn đứng ngoài. Nhưng nếu một ứng dụng giấu luôn giá, khả năng thực hiện giao dịch và cả trạng thái thanh toán, thì nhà tạo lập thị trường cũng không thể đánh giá rủi ro; thị trường khi đó có vẻ yên ắng nhưng có thể sẽ mất dần năng lực giao dịch. Vì vậy khi tôi đánh giá @Dusk , tôi không chỉ hỏi liệu nó có thể ẩn một lệnh chuyển hay không—việc ẩn giao dịch không đồng nghĩa với vấn đề thanh khoản đã được giải quyết. Tôi sẽ xem ứng dụng tài chính $DUSK có thể công khai đủ tín hiệu thị trường để quá trình phát hiện giá tiếp tục diễn ra hay không, đồng thời không biến vị thế của tổ chức thành tin phát trực tiếp.
Bài kiểm tra của Dusk không phải là “quyền riêng tư sâu đến đâu”, mà là: khi có quyền riêng tư, thị trường còn có thể giữ được khả năng giao dịch hay không. #dusk
Cross-chain rất dễ bị viết thành “thêm một lối ra thì có thêm một phần thanh khoản”, nhưng khi tôi xem lại @Dusk và phần mô tả hợp tác với NPEX, Chainlink, tôi lại dừng ở ranh giới kiểm soát của CCIP. Hai bên coi đó là lớp tương tác cross-chain cho các tài sản chịu sự quản lý, đồng thời vẫn giữ quyền sở hữu của hợp đồng token, giới hạn tốc độ và quyền kiểm soát nâng cấp. Chi tiết này đã làm thay đổi đánh giá của tôi: điều mà các tổ chức muốn không phải là sao chép chứng khoán sang nhiều mạng hơn, mà là khi mở rộng phạm vi tiếp cận vẫn biết rõ ai có thể sửa quy tắc, ai có thể tạm dừng thanh khoản và ai chịu trách nhiệm về trạng thái tài sản. Với token thông thường, thất bại cross-chain có thể chỉ là một lần chậm trễ chuyển khoản, nhưng với chứng khoán chịu quản lý, một khi quyền kiểm soát và ranh giới tuân thủ không được làm rõ thì càng nhiều chuỗi được kết nối, chi phí giải thích lại càng cao.
Tình huống rắc rối thực sự là khi tài sản đã được phát hành trên DuskEVM, và nhà đầu tư muốn sử dụng trên một mạng khác, nhưng quy trình cross-chain lại gặp sự cố bất thường hoặc kích hoạt giới hạn tốc độ. Bên phát hành phải quyết định có nên tạm dừng chuyển giao mới, chờ xác nhận trạng thái hay khởi động quy trình sửa lỗi—mỗi lựa chọn đều ảnh hưởng đến cách nhà đầu tư sắp xếp vốn và tính liên tục của thị trường. Nếu quyền kiểm soát bị phân tán trong nhiều bên tham gia cầu nối, nhà đầu tư không biết nên tin vào bản ghi nào; còn nếu bên phát hành nắm toàn bộ các công tắc, thì thị trường lại phải đối mặt với một sự phụ thuộc trung tâm mới. Giá trị của CCIP vì vậy không chỉ nằm ở việc kết nối mạng, mà còn ở chỗ đưa trách nhiệm kiểm soát ra ánh sáng.
Thông báo chính thức có thể chứng minh @Dusk và NPEX đang áp dụng bộ tiêu chuẩn này, nhưng không thể chứng minh rằng mọi loại chứng khoán đều đã đạt được cross-chain không ma sát. Với $DUSK , điều đáng để theo dõi phía sau là liệu quyền giới hạn tốc độ, tạm dừng và nâng cấp có được công khai ghi vào quy tắc của từng tài sản hay không. @Dusk muốn đưa thị trường tài chính đến nhiều mạng hơn, trước hết phải để thị trường biết rằng sau khi bước ra ngoài thì ai vẫn còn chịu trách nhiệm.#dusk
#dusk $DUSK @Dusk Tôi trước đây cứ nghĩ rằng khi hợp đồng triển khai lên chuỗi rồi, phía ứng dụng chỉ cần tích hợp để gọi hàm là xong. Nhưng khi tôi đọc <t-2/> Dusk của DuskVM Quickstart, tôi phát hiện một chi tiết rất dễ bị bỏ sót: cùng một mã nguồn Rust có thể tạo ra hai bản WASM—một bản là hợp đồng thực sự được thực thi trên chuỗi, và bản còn lại là “bộ điều khiển dữ liệu” để phía ứng dụng mã hoá và giải mã. Việc này không đơn giản chỉ là biên dịch thêm một lần file. Bản trên chuỗi quyết định trạng thái sẽ thay đổi như thế nào; còn bản dưới chuỗi quyết định việc giao diện (front-end) sẽ dịch cụ thể “đổi con số thành 42” thành các tham số mà giao thức có thể đọc được, đồng thời cũng quyết định liệu kết quả trả về có được khôi phục lại thành dữ liệu mà con người có thể xem hay không.@Dusk Ngoài ra còn đặt hai sản phẩm đầu ra ở những đường dẫn khác nhau và cung cấp bước verify để kiểm tra xem chúng có khớp và liệu contract hash có nhất quán không. Thứ mà người phát triển thực sự phải bảo trì là một cặp giao diện bắt buộc phải đồng bộ. Trường hợp rắc rối nhất là khi hợp đồng đã được triển khai, giao dịch cũng thực thi được, nhưng ứng dụng lại sử dụng “bộ điều khiển dữ liệu” cũ để gửi yêu cầu. Người dùng có thể thấy lỗi do mã hoá tham số thất bại, hoặc có thể là gọi thành công nhưng trang web lại diễn giải sai kết quả. Khi không có lỗi rõ ràng trên chuỗi, nhà phát triển sẽ phải quay lại kiểm tra từ mã nguồn, phiên bản đã build và cả lịch sử triển khai. Phần thời gian tiết kiệm được lúc đầu sẽ cuối cùng biến thành chi phí định vị sự cố mà bên tích hợp và người dùng cùng phải gánh. Vì vậy, khi tôi đánh giá trải nghiệm phát triển của DUSK, tôi sẽ không chỉ hỏi “liệu có chạy được hợp đồng Rust hay không”. Thiết kế hai sản phẩm của DuskVM giúp ranh giới giữa việc thực thi trên chuỗi và cách ứng dụng hiểu dữ liệu trở nên rõ ràng hơn, đồng thời cũng nhắc nhở nhóm rằng “triển khai thành công” không đồng nghĩa với “tích hợp đã hoàn tất”. Ở các bước tiếp theo, tôi sẽ xem dự án có để lại các hạng mục có thể kiểm tra như phiên bản bộ điều khiển dữ liệu, contract hash và cả quy trình phát hành hay không—đó mới là bước then chốt để Dusk từ “chạy được” đi tới “có thể bảo trì được”.
#dusk $DUSK @Dusk Tôi trước đây khi làm thanh toán trên chuỗi thường có thói quen nhét mã đơn hàng vào memo cho tiện, nhưng sau khi đọc tài liệu Transaction Lifecycle của @Dusk thì tôi mới phát hiện rằng thói quen này không thể bê nguyên sang được. Vì dữ liệu giao dịch của Dusk có quan hệ chọn một trong các mục: memo, lời gọi hợp đồng, triển khai hợp đồng và blob—memo không thể mặc định đi kèm cùng các payload khác. Sự khác biệt này sẽ trực tiếp làm thay đổi cách đấu nối hệ thống thanh toán. Nếu một thương gia vừa cần nhận tiền vừa cần gọi hợp đồng để hoàn tất tác vụ, thì không thể cứ cho rằng có thể tiếp tục nhét mã đơn hàng vào memo của cùng một giao dịch như trước. Ứng dụng khách cần quyết định trước nhiệm vụ chính của giao dịch đó, rồi thiết kế một bản ghi đáng tin cậy khác để liên kết đơn hàng. Tình huống chịu tải thực ra rất cụ thể: khi người dùng gửi một khoản thanh toán kèm hành động hợp đồng, giao diện phía trước hiển thị “đã gửi”, nhưng phía backend lại đối chiếu đơn hàng theo memo. Kết quả là số tiền đã vào, nhưng mã đơn hàng không xuất hiện như mong đợi, vì vậy bộ phận chăm sóc khách hàng chỉ có thể tra cứu thủ công giao dịch. Điều này không nhất thiết là Dusk bị mất dữ liệu; nhiều khả năng bên tích hợp đã áp đặt thói quen giao dịch của một chain khác vào. Vì vậy, khi tôi xem phần tích hợp thanh toán của DUSK, tôi sẽ không chỉ hỏi chuyển khoản có thành công hay không, mà sẽ xác nhận giao dịch rốt cuộc đang được “chở” bằng memo hay bằng lời gọi hợp đồng, rồi kiểm tra xem việc liên kết đơn hàng có thể được đối chiếu độc lập hay không. @Dusk đã vạch rõ ranh giới payload, nhưng liệu các ví dụ có giúp nhà phát triển tránh sớm kiểu dùng sai này hay không mới là điều đáng được xác thực hơn khi Dusk đi vào bối cảnh thanh toán thực tế.
#termmax @TermMax Trong một Vault rõ ràng có tiền, nhưng các lệnh lại không tiếp tục được phân bổ thêm (放量). Trước đây tôi thường quy hiện tượng này cho việc nhu cầu vay thiếu. Tuy nhiên, khi xem tài liệu TermMax Curator, đặc biệt là mục “maximum supply limits for orders”, tôi mới nhận ra rằng bản thân các lệnh cũng có một “trần” do con người đặt ra. Giới hạn này được thiết lập trên từng lệnh, không phải là tổng số dư của Vault. Curator có thể giới hạn lượng cung cấp tối đa của một lending order cụ thể, nên dù tiền vẫn nhàn rỗi trong Vault thì cũng chưa chắc đã có thể tiếp tục đi vào cùng một thị trường. Thấy số dư vẫn còn không thể suy ra rằng chiến lược chỉ đang chờ người vay—cũng có thể vì lệnh đã bị đóng trần (đạt hạn mức). Thiết kế này có tính hợp lý: khi thị trường đột nhiên trở nên nóng, Curator không nhất thiết phải dồn toàn bộ vốn vào một mức giá/đường cung duy nhất, nhưng nếu hạn mức quá thấp sẽ khiến vốn bị treo và người gửi tiền bỏ lỡ cơ hội khớp lệnh; còn nếu hạn mức quá cao thì mức tập trung rủi ro vào một thị trường đơn lẻ lại bị khuếch đại. Curator đang điều chỉnh rủi ro, nhưng người gửi tiền thì có thể không biết cái núm điều chỉnh đó đang được vặn đến đâu. Tình huống áp lực là khi nhu cầu vay tăng đột ngột: lệnh có thể đã chạm trần trước, trong khi Vault vẫn còn số dư. Người dùng có thể nhầm rằng thị trường không có nhu cầu. Khi giới hạn được nâng lên, vốn lại có thể tập trung chảy vào đúng thời điểm đông đúc nhất, và rủi ro mà các bên gánh chịu ở hai giai đoạn trước-sau không giống nhau. Vì vậy, khi nhìn Vault của @TermMax , tôi sẽ không chỉ xem tổng tài sản và đường cong lợi nhuận; tôi sẽ kiểm tra maximum supply limit của từng lệnh, phần vốn nhàn rỗi và cả lịch sử thay đổi của hạn mức. Với các Vault liên quan đến TMX, hiệu quả sử dụng vốn cốt lõi không nằm ở việc tiền có vào Vault hay không, mà nằm ở việc tại sao nó lại dừng ở đó. #TermMax
#dusk $DUSK @Dusk Tôi trước đây vẫn quen nghĩ rằng việc tạo tài khoản là bước cuối cùng trước khi gửi đi. Nhưng khi đọc phần “Signing transactions directly” trong tài liệu @Dusk , tôi mới nhận ra nhận định đó cần phải điều chỉnh. W3sper cung cấp một trình tạo giao dịch, nhưng nó không phải là một ví hoàn chỉnh. Vì vậy, Profile vừa được tạo ra chưa có Bookkeeper được đồng bộ, và các trạng thái như số dư cần thiết và nonce mà sàn (hoặc bên nhận) yêu cầu cũng chưa sẵn sàng. Khi xem ví dụ ký giao dịch trực tiếp của W3sper, phản ứng đầu tiên của tôi là: Profile đã được tạo rồi, vậy tại sao không thể gửi ngay giao dịch $DUSK ? Sau đó tôi mới chú ý đến ranh giới (boundary) dễ bị bỏ sót này trong tài liệu.
Đối với nhà phát triển, điều này có nghĩa là giữa việc “có thể tạo tài khoản” và “đã có thể gửi giao dịch” vẫn còn một khoảng công việc mà họ cần tự hoàn thành, bao gồm việc lưu trữ khóa có thể khôi phục, đồng bộ trạng thái Treasury và bảo trì Bookkeeper. Nếu thiếu bất kỳ lớp nào trong số đó, mã nguồn có thể sẽ không đưa ra thông báo lỗi dễ hiểu. Hãy hình dung một nhóm khởi động dịch vụ thanh toán tự động rồi ngay lập tức chuyển tiền bằng Profile mới. Khi thử nghiệm, có thể chỉ thấy các lỗi như “không đọc được số dư” hoặc “nonce không tồn tại”. Nhưng khi lên production, người phụ trách kiểm tra sự cố có thể sẽ bắt đầu nghi ngờ node hay mạng gặp lỗi, trong khi người dùng chờ thanh toán lại là người phải chịu sự chậm trễ về thời gian.
Vì vậy, khi đánh giá W3sper hiện tại, tôi sẽ không chỉ hỏi rằng nó có thể ghép lại để tạo ra một giao dịch hay không. Tôi sẽ xem trước ví dụ có tách bạch rõ ràng các giai đoạn như tạo tài khoản, đồng bộ trạng thái và giao dịch có thể gửi được hay không. W3sper không phải là “giấu” năng lực của ví đi, mà là chuyển một phần trách nhiệm quản lý trạng thái sang phía bên tích hợp. Với hệ sinh thái dành cho nhà phát triển của @Dusk , vấn đề cần xác thực thật sự là: trước khi một đội nhóm mới thử gửi giao dịch lần đầu, liệu họ có thể chủ động phát hiện ra rằng Bookkeeper của mình chưa sẵn sàng hay không.#dusk
#termmax @TermMax Trong số đó, điều dễ bị đánh giá thấp nhất không phải là cách viết lãi suất, mà là việc ngày đáo hạn đã “khóa” vốn trong khoảng thời gian nào. Khi xem định nghĩa thị trường lãi suất cố định, tôi nhận thấy một chi tiết rất mộc mạc: ngoài “debt token” (token nợ) và tài sản thế chấp, còn phải có Maturity Date (ngày đáo hạn) rõ ràng. FT có thể được đổi lấy debt token theo mệnh giá khi đáo hạn, nhờ đó điểm kết thúc cho lợi nhuận của bên cho vay được xác định; còn trước ngày đó, FT mà họ nắm giữ vẫn là một tài sản thị trường có thời hạn còn lại. “Cố định” không có nghĩa là việc thoát ra giữa chừng sẽ trở thành một mức giá cố định. Điều này làm thay đổi cách bên cho vay đánh giá. Giả sử lãi suất thị trường đột ngột tăng lên, vốn mới sẽ sẵn sàng chấp nhận mức lợi nhuận cao hơn để cho vay lại, trong khi mệnh giá của FT cũ không thay đổi, nhưng thời hạn còn lại lại khiến nó kém hấp dẫn hơn trên thị trường. Người nắm giữ nếu kiên trì chờ đến đáo hạn thì nhận được đúng mệnh giá đã thỏa thuận trước; còn nếu tạm thời cần tiền mặt thì chỉ có thể chấp nhận việc thị trường “định giá lại” theo thời gian còn lại. Thứ thực sự được định giá ở đây không chỉ là debt token, mà còn là chính khoảng thời gian chờ đợi. Người đi vay cũng bị ảnh hưởng. Những FT gần đáo hạn có thể bám sát mệnh giá hơn, còn FT kỳ hạn xa hơn thì cần chiết khấu lớn hơn để bù đắp cho việc phải chờ đợi và những biến động của lãi suất. Thị trường nhìn thì đều gọi là lãi suất cố định, nhưng trên thực tế, các khoản vốn có các kỳ hạn khác nhau hoàn toàn có thể mang lại những trải nghiệm thanh khoản khác nhau. Bên cho vay chịu chi phí thời gian, còn bên đi vay chịu sự khác biệt về chi phí tài trợ do lựa chọn kỳ hạn. Vì vậy, khi tôi xem thiết kế đáo hạn của @TermMax , tôi không cho rằng Maturity Date chỉ đơn thuần là ngày thanh toán. Nó giống như một đường ranh giới tách bạch tính chắc chắn của lợi nhuận và tính thanh khoản của dòng vốn. Phía sau các thị trường liên quan TMX, điều đáng kiểm tra thêm là giá giao dịch thực sự và độ sâu giao dịch của FT đối với các mức thời hạn còn lại khác nhau; chỉ khi cả hai điều này được nhìn rõ, lãi suất cố định mới không phải là một lời hứa đẹp chỉ được chi trả vào đúng ngày đáo hạn.#TermMax
“Giao dịch đã hoàn tất, mà trang vẫn chưa thay đổi?”——Câu này đặt trong phần quản trị ví hoặc sàn giao dịch thì thường không phải do người dùng, mà là hệ thống đã bỏ lỡ sự kiện.
HTTP API của @Dusk đặt phần đăng ký sự kiện hợp đồng ở đường dẫn /on/contracts:<contract_id>/<method> . Đăng ký và hủy đăng ký lần lượt dùng GET, DELETE, và còn cần dựa vào Rusk-Session-Id để duy trì phiên. Nhìn như chi tiết của API, nhưng tôi nghĩ nó thực ra đang nhắc một điều: bản thân thông báo thời thực không phải là sổ cái.
Khi kết nối hoạt động bình thường, ví cập nhật số dư nhờ sự kiện, còn sàn thì đẩy quá trình gom lệnh hoặc trạng thái đơn hàng nhờ sự kiện. Nhưng khi kết nối bị ngắt, session chỉ giúp bạn khôi phục quan hệ đăng ký, không thể chứng minh rằng trong thời gian đó không bị bỏ sót gì. Phần bị bỏ sót vẫn phải quay lại để đối chiếu lại từ khối, giao dịch và trạng thái hợp đồng.
Tôi hình dung một tình huống cụ thể. Người dùng chuyển DUSK đã được ghi lên chuỗi, nhưng kết nối lắng nghe của sàn vừa khớp thời điểm bị ngắt vài phút. Bản ghi trên chuỗi không có vấn đề, số dư không được cập nhật. Người dùng nộp lại một lần nữa, và hậu trường có thể đồng thời xuất hiện hai bản ghi đang chờ xử lý. CS nhìn thấy là “chưa nhận được tiền”, còn nhóm vận hành phải đối mặt với việc bù sự kiện và đối chiếu thủ công.
Điều này khiến tôi đặt ra thêm một yêu cầu đối với giao diện sự kiện của @Dusk . Tài liệu viết nơi để đăng ký chỉ là bước đầu tiên; thứ thực sự quyết định chất lượng tích hợp là việc ví và sàn có thể, sau khi kết nối lại, khôi phục được ngữ cảnh theo session hay không, rồi dùng trạng thái trên chuỗi để lấp đầy phần còn thiếu. $DUSK phải phản ánh luồng tài sản thực, sự kiện thời thực có nhiệm vụ nhắc nhở, và cuối cùng trạng thái phải có một con đường khác để có thể đối chiếu lại.#dusk
#termmax @TermMax Tôi thấy trong Vault có đồng thời ghi Curator Fee và Protocol Fee. Tôi sẽ hỏi một câu trước: hai khoản tiền này được trừ vào gốc của tôi, hay là vẫn chưa kịp nhận được lợi nhuận thì đã bị tách ra trước? Khác biệt nghe có vẻ rất nhỏ, nhưng đưa vào trang gửi tiền thì nó lại ảnh hưởng trực tiếp đến việc tôi có dám đưa tài sản của mình vào hay không. Người gửi tiền của TermMax giải thích rằng phạm vi được viết khá hẹp: hai khoản phí này chỉ áp dụng cho lợi nhuận thụ động phát sinh từ tài sản nhàn rỗi, không trực tiếp trừ vào số tiền gửi vào (vốn gốc). Hơn nữa, phí đã được phản ánh trong share price, vì vậy người dùng không cần nhận thêm hoặc thanh toán riêng. Nói cách khác, giá phần (trên trang) chính là kết quả sau khi đã trừ phí. Người dùng không phải bấm thêm để xác nhận lần nữa, nhưng cũng không thể lấy “lợi nhuận thô” để trộn lẫn với phần giá trị thực sự mà mình tăng thêm các đơn vị (shares). Tôi nghĩ điểm hay của thiết kế này là: phí không bị ẩn trong một lần rút đột ngột và bất ngờ trừ vào. Rắc rối cũng nằm ở đó. Nếu phần lớn tài sản trong Vault phần lớn thời gian không được chiến lược sử dụng, lợi nhuận sẽ trông như đang tăng dần dần. Trong khi đó, Curator và giao thức vẫn sẽ lấy phí từ phần lợi nhuận thụ động này. Khi hiệu suất chiến lược suy yếu, giá trị của share có thể dừng lại hoặc thậm chí giảm. Khi đó người dùng sẽ nhận ra rằng “chỉ thu phí trên lợi nhuận” không có nghĩa là “vốn không có cơ hội bị thu hẹp”. Vì vậy, khi xem quy tắc phí của @TermMax , tôi không cho rằng nó sẽ trở thành một khoản lợi nhuận rẻ chỉ vì “chỉ thu phí trên lợi nhuận”. Nó nói rõ đối tượng thu phí, nhưng lại không đứng ra đảm bảo/đỡ kết quả từ phía chiến lược. Điều Vault liên quan đến termmax cần công bố nhiều nhất sau này là: sự thay đổi của lợi nhuận thô, hai khoản phí và cuối cùng là share price, để người gửi tiền có thể tự tính xem số tiền đó rốt cuộc đã đi đâu.#TermMax
Tôi suýt lấy APR của khoản vay @TermMax làm chi phí cuối cùng. Khi mở phần giải thích phí chính thức, thứ khiến tôi dừng lại lại là đoạn “days to maturity / 365” trong công thức: số tiền vay giống như trong báo giá, nhưng thời hạn khác nhau thì phí giao dịch cũng thay đổi theo.
Trang thị trường thường đặt APR ở vị trí dễ thấy nhất, trong khi thời hạn lại bị giấu ở một góc khác. Một người đem so 1 sản phẩm với 1 sản phẩm khác thì chỉ nhìn thấy cùng một mức lãi suất nên tưởng chi phí gần như nhau; thực tế còn cần tính thêm khoản tiền này bị chiếm dụng trong bao lâu. Thời hạn càng dài thì hạng mục theo thời gian càng khó tránh.
Khi dòng tiền gấp, thứ “khác nhau” không chỉ nằm ở vài chữ số sau dấu phẩy, mà là ngay bản thân lịch trả nợ.
Tôi não bổ một tình huống vận hành bình thường. Người dùng gấp cần vay một khoản tiền, thấy hai báo giá chênh nhau không nhiều thì chọn luôn bên có thời hạn dài hơn. Đến khi xác nhận giao dịch mới phát hiện lãi suất không đổi, nhưng khoản phí cuối cùng bị trừ lại khác. Không phải là tính sai—chỉ là khi so sánh, họ chỉ xem con số theo năm, không đưa ngày đáo hạn vào sổ tính. Tiền đã được giải ngân thì cơ hội để so sánh không thể quay lại.
Bây giờ tôi mở báo giá của @TermMax , xem tổng phí và ngày đáo hạn trước, rồi mới để ý APR ở cuối. Nếu TMX muốn giúp người dùng tránh kiểu so sánh “trông thì tính được nhưng thực tế lại thiếu tính”, gợi ý hữu ích nhất không phải là phóng đại lãi suất thêm nữa, mà là trước khi xác nhận hãy đặt số tiền vay, thời hạn và tổng phí giao dịch cuối cùng cùng xuất hiện trên một hàng.#TermMax
Giao dịch thất bại rồi thì số DUSK trong ví bị trừ đi, tính như vậy có phải là “trắng tay” không vậy hả 👻?
Mình lục trang Tokenomics của Dusk và thấy một quy tắc rất dễ bị bỏ sót: nếu giao dịch bị tiêu hao hết gas, nó sẽ bị rollback, nhưng phần gas đã tiêu tốn thì vẫn tính phí không hoàn lại. Trong miệng người dùng, “thất bại” có thể dẫn đến ít nhất hai kết quả khác nhau trên chuỗi.
Gas limit là lượng công việc tối đa cuộc gọi này có thể thực hiện được, còn gas price là giá cho mỗi đơn vị công việc. Phí được tính theo lượng gas thực sự tiêu hao; phần chưa dùng thì không bị trừ. Bộ quy tắc này vốn không có gì sai cả. Vấn đề là ví thường chỉ cho bạn một dòng “Failed” nền đỏ chữ trắng.
Trước đây chắc mình sẽ đổ lỗi cho người dùng không để đủ phí gas. Nhưng giờ nhìn lại thì mình thấy sản phẩm có giải thích rõ nguyên nhân thất bại không, vì điều đó trực tiếp quyết định người dùng có còn muốn bấm thêm lần nữa hay không. Thiếu tài nguyên (workload) hay là do quyền, tham số hoặc trạng thái mạng? Cách xử lý hoàn toàn khác nhau.
Nói một tình huống. Có người dùng một lượng DUSK nhỏ để gọi hợp đồng, nhưng lại đặt gas limit quá thấp. Giao dịch thất bại, số dư bị trừ đi, còn trạng thái trên chuỗi thì không đổi. Người đó lại thử lần nữa và lại trả thêm một khoản. Nếu gốc rễ là do viết sai tham số, thì phí sẽ tiếp tục bị đốt.
Vì vậy mình thật sự không nghĩ cơ chế gas của Dusk có thể chỉ gói gọn trong câu “thất bại cũng phải trả phí”. Giao thức đã ghi rõ ranh giới giữa phần gas chưa dùng thì được hoàn lại và phần bị tiêu hao thì bị tính phí. Vấn đề là sản phẩm phải diễn giải ranh giới đó thành ngôn ngữ dễ hiểu.@Dusk Nếu có thể hiển thị đồng thời gas limit, mức gas thực tế đã tiêu hao và nguyên nhân thất bại trong lịch sử thất bại thì$DUSK ngưỡng sử dụng sẽ giảm được một lớp hiểu lầm.#dusk
@TermMax Ở cái range order đó, có một công tắc nhỏ xíu không mấy nổi bật, càng nhìn tôi càng thấy phải cẩn thận. Ban đầu tôi tưởng đường cong đó chính là báo giá công khai trên sàn, ai cũng có thể xem, ai cũng có thể mượn. Xem tài liệu thì thấy một câu: người tạo lệnh có thể dùng toggle để tạm dừng, đợi khi thị trường phù hợp rồi mới bật lại. Tôi lúc đó đứng hình—đường cong này không phải lời hứa vay có hiệu lực lúc nào cũng được.
Thiết kế như vậy vốn không sai. Ai đi vay tiền lại không được quyền sợ rủi ro? Thị trường không đúng thì rút đầu vào là chuyện bình thường. Nhưng vấn đề mắc đúng ở đây: lãi suất và hạn mức có thể vay mà người vay nhìn thấy, cùng với thanh khoản thực sự có thể khớp lệnh, có thể chỉ trùng nhau đúng trong khoảnh khắc bạn đang xem. Người tạo lệnh có khoảng không gian để quản lý chủ động, còn người vay thì phải gánh rủi ro kế hoạch tài trợ có thể bị ngắt quãng tạm thời.
Tôi hình dung một cảnh thế này. Có người xem trên trang cái đường cong đó, tính toán xong tài sản thế chấp, nạp đủ tiền vào ví, đợi tới khi xác nhận giao dịch xong rồi mới quay lại để mượn—nhưng lệnh đã bị tạm dừng. Không có thanh lý, không phải lỗi hợp đồng, thậm chí cũng chẳng ai cố tình làm gì xấu. Chỉ là bạn tưởng mình thấy báo giá, nhưng thực ra đó là ý muốn của bên kia có thể rút lại bất cứ lúc nào.
Vì vậy bây giờ khi tôi mở range order, tôi không vội nhìn đường cong được vẽ đẹp cỡ nào. Tôi tìm trước: hiện tại đang có bao nhiêu dung lượng? khi nào nó được cập nhật? công tắc tạm dừng có sáng không? Thành thật mà nói, $TMX phải khiến người vay có thể tin vào bốn chữ “bây giờ có thể vay”. Nếu người dùng vẫn xem các đường cong lịch sử như là quỹ đang chờ anh ta, thì độ minh bạch vẫn còn thiếu một hơi nữa.
Tối qua tôi mở máy tính trong phòng làm việc lần đầu tiên và thấy trong ví dụ của Dusk Connect có xuất hiện availableProviders[0]. Tôi giật mình, tay chợt chững lại. Khi phát hiện đồng thời nhiều ví tương thích, nhưng không có providerId, mã có thể chọn ra ví đầu tiên; tuy nhiên, với những gợi ý gửi cho bên sản phẩm, vẫn là để người dùng tự chọn ví. Trước đây tôi coi việc “provider discovery” như một lợi ích kỹ thuật để giảm bớt công việc phải tích hợp. Bây giờ tôi nghĩ nó còn đang phân chia một quyền lực rất cụ thể: dApp sẽ quyết định người dùng bắt đầu từ ví nào, hay để việc lựa chọn đó nằm ở trước khi ký. Đối với team ví, việc mở khám phá giúp tránh việc một extension nào đó bị “đóng cứng” thành điểm vào; còn với người dùng, điều quan trọng là liệu họ có nhìn thấy được ví, mạng và tài khoản đang được chọn hay không. Kịch bản xấu không hề phóng đại. Trong trình duyệt có hai ví tương thích: một ví cho tài sản trên mainnet, một ví cho testing hoặc tài khoản của team. Có một ứng dụng vì muốn bớt một bước tự động chọn cái đầu tiên; người dùng cứ bấm theo tới trang ký mới phát hiện tài khoản không đúng. Từ chối giao dịch thì coi như vẫn may; tệ hơn là người dùng hoàn thành một ủy quyền không nên làm trong môi trường sai, sau đó chỉ nhớ “Ví Dusk kết nối nhầm”. Chi phí do người dùng và bộ phận hỗ trợ gánh chịu, nhưng người đã thực hiện tự động chọn lại thường không có mặt tại chỗ. Vì vậy hiện tại tôi không coi việc Dusk Connect phát hiện nhiều ví chỉ là năng lực thuần túy ở API.@Dusk Thứ thực sự cần được bảo vệ, là sau khi khám phá xong, quyền lựa chọn có còn nằm trong tay người dùng hay không.$DUSK Ứng dụng càng nhiều, tôi càng muốn nhìn thấy giao diện kết nối hiển thị rõ provider, mạng và tài khoản, đồng thời khi có tự động chọn thì phải cung cấp một cơ hội để người dùng đổi lựa chọn một cách nhìn thấy được.#dusk
Cũng gọi là DUSK, nhưng rất có thể dấu thập phân đã không còn khớp nữa 🤔🤔 Trước đây tôi thường coi decimals là một trường chỉ dành cho nhà phát triển, không cần người dùng bận tâm.
Cho đến khi đọc lại trang Tokenomics của @Dusk , tôi mới phát hiện ra rằng, dù vẫn gọi là DUSK, nhưng khi chuyển sang các mạng khác nhau thì dấu thập phân có thể đã không còn là cùng một dấu thập phân nữa.
DUSK trên mainnet là 9 chữ số thập phân, trong khi DUSK dạng ERC20 và BEP20 lại là 18 chữ số.
Mainnet dùng LUX để ghi sổ: 1 DUSK = 1,000,000,000 LUX; còn các phiên bản trên Ethereum và BSC thì tuân theo chuẩn 18 chữ số. Chênh lệch này nhìn như chỉ chiếm một dòng trong tài liệu, nhưng lại ảnh hưởng trực tiếp đến việc di chuyển, nạp, rút và hiển thị số dư. Người dùng chỉ nhận ra cùng một thẻ $DUSK , trong khi ví và hệ thống giao dịch lại buộc phải xác định trước nó thuộc mạng nào, chuẩn nào.
Tình huống xấu là: một bên tích hợp coi tài sản cross-chain như thể chúng được xử lý bằng cùng một bộ số nguyên. Kết quả là số dư trên trang có vẻ bình thường, nhưng khi gửi hoặc đổi thì lại bị lệch số lượng. Người dùng có thể nghĩ rằng mình bị thiếu tiền, còn nhân sự vận hành thì phải quay lại kiểm tra đơn vị gốc, mạng và hợp đồng. Tài liệu đã hướng dẫn người nắm giữ ERC20/BEP20 sang hướng dẫn di chuyển lên mainnet, và cũng đã nói rõ đây không phải là chuyện có thể che đi bằng cách làm tròn trên giao diện.
Nó không thể chứng minh rằng mọi bên tích hợp đều sẽ làm sai, nhưng nó nhắc nhở hệ sinh thái $DUSK rằng phải đảm bảo mạng, chuẩn và decimals được hiển thị để người dùng xác nhận trước. Nếu @Dusk có thể khiến các trường này luôn hiển thị cùng với tài sản, thì trải nghiệm cross-chain của #dusk sẽ không phải để người dùng tự đoán về khác biệt đơn vị. 💰💰
Bạn nghĩ rằng phí dịch vụ đều thuộc về thợ đào? Cơ chế phần thưởng của Dusk có thể khiến bạn tính toán sai hết công cốc Trước đây tôi thấy câu “phí dịch vụ đi vào phần thưởng khối” kiểu như vậy, cơ bản là lướt qua cho xong. Dù sao cũng là cho thợ đào mà, liên quan gì đến tôi?
Cho đến khi tôi đọc nghiêm túc trang Tokenomics của @Dusk, tôi mới phát hiện mình nghĩ đơn giản quá.
Một giao dịch trả ra #dusk không chỉ rơi vào túi của người đóng gói.
Tài liệu ghi rõ: phần thưởng của mỗi khối = DUSK phát hành mới + phí giao dịch. Người tạo khối trước tiên nhận 70%, sau đó tối đa có thể nhận thêm 10% — nhưng 10% này không phải tự nhiên mà có, mà còn phụ thuộc việc credits trong chứng chỉ có đạt ngưỡng hay không. Nếu không đạt? Phần đó sẽ bị hủy trực tiếp, không ai nhận được.
Vì vậy, phí dịch vụ chưa bao giờ là “lương cố định tự động nhận được”; nó giống như một khoản thưởng theo hiệu suất kèm điều kiện.
Đối với người vận hành node, đây không phải kiểu làm ăn nằm hưởng Bạn tưởng chỉ cần tham gia đồng thuận là đủ sao? Ngây thơ quá rồi. Credits trong chứng chỉ có thỏa điều kiện hay không sẽ quyết định bạn được cộng thêm mấy điểm, hay trắng tay.
Đối với người dùng, gas bạn trả không chảy thẳng vào một nhân vật duy nhất, mà bị cắt nhỏ, phân bổ, thậm chí bị hủy — ai nhận được bao nhiêu phụ thuộc vào ván cờ giữa việc tạo, xác minh và xây dựng dài hạn.
Tình huống khó xử nhất là gì?🥶 Người vận hành node lập ngân sách theo “có thể nhận đủ tối đa 10%”, thuê máy xong, tiền điện đã trả, cuối cùng chứng chỉ lại không đạt ngưỡng.
Mạng vẫn chạy bình thường, giao dịch của người dùng vẫn hoàn tất, nhưng kỳ vọng thu nhập của bạn lại hụt. Phần 10% bổ sung đó bị hệ thống đốt sạch trong nháy mắt. Vậy là của ai?
Hãy nhớ: phần trăm và hiểu đúng cơ chế khuyến khích thực sự là hai chuyện hoàn toàn khác nhau.
Nói thẳng ra $DUSK thiết kế phần thưởng khối không thể chứng minh mạng nhất định sẽ phồn thịnh, nhưng ít nhất cho thấy một điều: họ không đóng gói phần thưởng thành khoản lợi tức cố định để bạn nhìn vào rồi tin.
Không phải tin xấu, nhưng tin xấu là: bây giờ bạn đi hỏi mười người vận hành node “credits được tính thế nào, bị hủy bao nhiêu” thì có thể chín người không trả lời nổi.
@Dusk Nếu về sau có thể làm được một việc, tôi sẽ nhìn nhận họ tốt hơn: công khai tình trạng đạt credits của phần thưởng khối và dữ liệu bị hủy để bất cứ ai cũng có thể tra cứu ngay lúc nào.
Người tham gia chỉ sẵn sàng tiếp tục cung cấp dịch vụ khi họ biết chính xác mình đang cung cấp vì điều gì.
Nếu không, càng tính càng kỹ thì càng thất vọng lớn.🤔
Khoảnh khắc khiến người dùng bị ảnh hưởng nặng nhất bởi tài sản chịu sự quản lý 😅—không phải vì giao dịch bị từ chối, mà vì sau khi bị từ chối thì chẳng ai giải thích rõ ràng rốt cuộc sai ở đâu. Tôi thấy trên trang Assets & Regulations của @Dusk rằng việc kiểm tra chuyển nhượng được liệt kê riêng thành một yêu cầu: khi thất bại phải nêu rõ lý do, và tốt nhất là mô phỏng hoặc kiểm tra trước khi nộp. Chi tiết này biến “điều kiện tham gia” từ một tấm vé vào một lần, thành quy tắc tác động liên tục lên từng lần chuyển nhượng. Các tiêu chí trong tài liệu không hề mơ hồ: ai được nắm giữ, ai được nhận, những lần chuyển nhượng nào bắt buộc phải thất bại—tất cả sẽ thay đổi theo loại tài sản, địa điểm hoặc thẩm quyền pháp lý. Đối với bên phát hành, quy định giúp giảm rủi ro không khớp; còn đối với nhà đầu tư, điều thực sự quan trọng là trước khi xác nhận thì biết chắc mình có bị chặn hay không, và bị hạn chế cụ thể vì lý do gì. Các tình huống chịu áp lực thường xảy ra khi người dùng tưởng rằng mình đã hoàn tất toàn bộ quy trình: tài khoản đã vượt qua các bước kiểm tra đủ điều kiện trước đó, nhưng khi chuyển nhượng tới một địa chỉ khác thì lại nhận được thông báo thất bại mơ hồ. Tài sản chưa chắc đã mất, chuỗi cũng chưa chắc có vấn đề, nhưng người dùng sẽ trước tiên đổ lỗi cho nền tảng; còn bộ phận hỗ trợ thì phải dựa vào giải thích thủ công cho một hạn chế lẽ ra đã được hiển thị từ trước. Ưu điểm của $DUSK không nằm ở việc làm cho mọi chuyển nhượng đều được thông qua, mà ở chỗ để những lần bị từ chối cần thiết có thể dự đoán và giải thích được ngay từ trước khi ký. @Dusk phần tiếp theo cần được kiểm tra thực sự là liệu ứng dụng có thể hiển thị trước—trước khi ký—các quy tắc, kết quả mô phỏng và lý do thất bại hay không, thay vì để đến sau khi đã gửi giao dịch. #dusk