Giới thiệu
Là một nhà phát triển dày dạn kinh nghiệm với nhiều năm kinh nghiệm, tôi có thể tự tin nói rằng việc làm theo các bước này để xây dựng một ứng dụng blockchain bằng cách sử dụng Simplicity vừa thú vị vừa bổ ích. Tôi nhớ lần đầu tiên bước chân vào thế giới phát triển blockchain, nó giống như tìm thấy một rương kho báu chứa đầy những khả năng vô tận!
Với tư cách là một nhà đầu tư tiền điện tử, tôi không thể không ngạc nhiên trước hành trình phi thường mà công nghệ blockchain đã trải qua. Từ một ý tưởng tương đối mơ hồ đến một lực lượng biến đổi đang định hình lại nhiều lĩnh vực trên toàn thế giới, việc nhắm mắt làm ngơ trước ảnh hưởng của nó ngày càng trở nên khó khăn hơn!
Công nghệ chuỗi khối và sổ cái phân tán của nó đã cách mạng hóa các giao dịch cho phép người tiêu dùng thực hiện theo cách không cần tin cậy khi không có cơ quan trung ương. Blockchain có các nguyên tắc khác nhau để bảo vệ tiền tệ như khóa công khai và khóa chính, chữ ký số và cơ chế đồng thuận.
Với sự sôi động xung quanh công nghệ blockchain, hãy cùng làm rõ – Blockchain thực sự có ý nghĩa gì?
Với tư cách là một nhà nghiên cứu, tôi thấy blockchain là một khái niệm hấp dẫn kết nối các khối riêng lẻ, mỗi khối chứa dữ liệu giao dịch và thông tin cần thiết. Hệ thống phi tập trung này hoạt động như một sổ cái kỹ thuật số mạnh mẽ và an toàn, đảm bảo độ tin cậy trong mọi giao dịch.
Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn tạo ứng dụng blockchain từ đầu bằng cách sử dụng ngôn ngữ lập trình Đơn giản theo từng bước.
Tính đơn giản trong chuỗi khối:
Chúng ta hãy xem ngôn ngữ lập trình mới này.
Trong lĩnh vực blockchain, đặc biệt là hợp đồng thông minh, một ngôn ngữ lập trình mới có tên “Đơn giản” đã được giới thiệu, nhằm giải quyết các thách thức hiện tại trong các ngôn ngữ như tập lệnh Bitcoin và EVM của Ethereum. Đơn giản là một ngôn ngữ sử dụng cách tiếp cận dựa trên tổ hợp và gõ.
Ngôn ngữ đánh máy là gì?
Nói một cách đơn giản hơn, ngôn ngữ được nhập sẽ đặt ra các nguyên tắc về loại dữ liệu (như biến, biểu thức hoặc hàm) mà bạn có thể sử dụng trong các hoạt động khác nhau. Về cơ bản, mỗi thành phần dữ liệu có loại riêng và hệ thống sẽ kiểm tra để đảm bảo rằng các loại được sử dụng kết hợp đều tương thích.
Ngôn ngữ dựa trên tổ hợp là gì?
Trong ngôn ngữ tổ hợp, các ký hiệu đơn giản, được xác định trước (hoặc các hàm gọi là tổ hợp) được sử dụng để thực hiện các phép tính bằng cách liên kết các thành phần khác nhau với nhau để mang lại kết quả.
Sự đơn giản khác với các ngôn ngữ lập trình thông thường như thế nào?
Về bản chất, hầu hết các ngôn ngữ lập trình chủ yếu tập trung vào việc đảm bảo mã hoạt động chính xác về mặt hành vi vận hành (ngữ nghĩa vận hành). Tuy nhiên, Tính đơn giản là duy nhất vì nó không chỉ xem xét khía cạnh vận hành mà còn xem xét biểu diễn toán học cơ bản của mã (ngữ nghĩa biểu thị). Để làm rõ thêm:
Ngữ nghĩa biểu thị một cách đơn giản
Nói một cách đơn giản hơn, Simplicity tuân theo các nguyên tắc nghiêm ngặt để diễn giải nó, được thiết lập bằng hệ thống được gọi là Coq. Hệ thống này tập trung vào bản chất toán học đằng sau ngôn ngữ hơn là chỉ cách nó hoạt động ở cấp độ thực tế. Về cơ bản, Coq hỗ trợ phát triển các bằng chứng chính thức xác định hành động và hành vi của Sự đơn giản trong cả toán học và khoa học máy tính.
Ngữ nghĩa hoạt động đơn giản
Là một nhà nghiên cứu, tôi nhận thấy rằng sự đơn giản không chỉ có nghĩa là thẳng thắn; nó cũng bao gồm ngữ nghĩa hoạt động, được xác định bằng cách sử dụng một công cụ được gọi là Máy Bit. Công cụ này giúp đánh giá không gian tính toán, thời gian và tài nguyên cần thiết để thực hiện các chương trình Đơn giản, đảm bảo chúng vẫn hoạt động hiệu quả và thân thiện với tài nguyên.
Nói một cách đơn giản hơn, Simplicity phát triển dựa trên các nguyên tắc toán học mạnh mẽ, đảm bảo các hành động của nó không chỉ đơn thuần là thực thi mã; chúng có thể dự đoán được. Viết bằng sự Đơn giản có nghĩa là mỗi dòng có một nền tảng logic, khiến nó trở nên đặc biệt đáng tin cậy khi sử dụng blockchain.
Tại sao chọn sự đơn giản?
- Ngôn ngữ biểu cảm: Cung cấp các công cụ cần thiết để tạo hợp đồng thông minh.
- Phân tích tĩnh: Giúp xác định giới hạn trên và độ phức tạp tính toán.
- Sử dụng hiệu quả tài nguyên: Giảm yêu cầu về băng thông và bộ nhớ.
- Bảo mật nâng cao: Cải thiện quyền riêng tư của người dùng bằng cách xóa mã không sử dụng.
- Thiết kế an toàn: Duy trì các nguyên tắc thiết kế của Bitcoin để bảo vệ thông tin.
- Ngữ nghĩa hình thức: Làm cho việc suy luận về mã dễ dàng hơn.
Thiết lập môi trường phát triển
Giai đoạn này đóng vai trò là cơ sở cho mọi tiến triển trong tương lai. Mặc dù việc thực hiện thủ công có vẻ buồn tẻ nhưng chỉ cần tuân thủ các hướng dẫn được đưa ra và bạn sẽ được chuẩn bị tốt!
Cài đặt đơn giản
- Truy cập kho lưu trữ chính thức và tải xuống phiên bản mới nhất của Simplicity hoặc
- bản sao git https://github.com/ElementsProject/simplicity.git
- sự đơn giản của cd (bạn cần nhập nội dung này vào thiết bị đầu cuối của mình)
- Cài đặt các phần phụ thuộc: sudo apt-get install build-essential libtool autoconf
- Cài đặt Simplicity dựa trên hướng dẫn và phiên bản tương thích với hệ thống của bạn và Build. Nhập các lệnh dưới đây vào dấu nhắc cmd hoặc thiết bị đầu cuối:
- ./autogen.sh
- ./configure
- thực hiện
- sudo thực hiện cài đặt
- Xác minh cài đặt bằng cách sử dụng:
simplity -version
Hoan hô! Bạn đã cài đặt và cấu hình hiệu quả ngôn ngữ lập trình trên hệ thống của mình.
Chọn IDE
Bước đi đúng đắn ở đây là rất quan trọng vì việc chọn Môi trường phát triển tích hợp (IDE) thích hợp mà không có bất kỳ sự mâu thuẫn nào trong thiết lập sẽ đặt nền tảng cho tất cả các dự án kinh doanh sắp tới của bạn.
Visual Studio Code (VScode) của Microsoft: Đây là nền tảng phát triển nguồn mở, miễn phí đã trở nên phổ biến trong giới lập trình viên. VScode nổi bật là Môi trường phát triển tích hợp (IDE) đáng tin cậy nhờ các tính năng hỗ trợ mã hóa thông minh như tự động hoàn thành và đề xuất mã, được gọi là IntelliSense.
- Cài đặt và thiết lập tiện ích mở rộng cho Đơn giản:
- Vào website chính thức của Vscode
- Tải xuống trình cài đặt và làm theo hướng dẫn trong lời nhắc
- Mở Vscode và điều hướng đến Tiện ích mở rộng trong Thanh hoạt động hoặc sử dụng phím tắt: Ctrl+Shift+X
- Sau đó đặt tiện ích mở rộng như
- Sự đơn giản- về ngôn ngữ
- IntelliSense-để hoàn thiện mã và đưa ra đề xuất
- Code Runner- để chạy các đoạn mã một cách dễ dàng
- Ống kính Git- cho trải nghiệm git liền mạch
Công cụ thiết yếu cho nhiệm vụ phát triển – CLI đơn giản: Giao diện dòng lệnh đơn giản (CLI) rất quan trọng vì nó cho phép thực hiện các tác vụ như biên dịch và thực thi mã Đơn giản trong quá trình phát triển.
- Mở terminal hoặc dấu nhắc lệnh
- Sử dụng trình quản lý gói như brew, npm hoặc apt-get (tùy thuộc vào hệ điều hành của bạn) và cài đặt SImplicity CLI.
- Dành cho macOS/Linux: brew install simple-cli
- Dành cho Windows: npm install -g simple-cli
- Bạn cũng có thể truy cập kho CLI chính thức và làm theo hướng dẫn được cung cấp trong readme
Cài đặt thư viện cần thiết
Để cài đặt các thư viện cần thiết dễ dàng hơn, bạn có thể sử dụng trình quản lý gói để có trải nghiệm cài đặt mượt mà hơn.
Nếu Đơn giản có trình quản lý gói thì hãy sử dụng nó như: cài đặt đơn giản
Hiểu các khái niệm chuỗi khối một cách đơn giản
Đã đến lúc nghỉ viết mã! Thay vào đó, hãy tìm hiểu sâu hơn về các ý tưởng và kiến trúc cơ bản hỗ trợ công nghệ chuỗi khối.
Cơ bản về Blockchain một cách đơn giản
Trong phần này, chúng ta hãy tìm hiểu sâu hơn về cấu trúc phức tạp của chuỗi khối, bao gồm ba yếu tố cơ bản: khối, giao dịch và chuỗi. Ở đây, chúng ta sẽ khám phá vai trò và sự tương tác của họ.
- Khối: Khối là các tế bào cơ bản và nguyên thủy của hệ sinh thái chuỗi khối này. Đây là đơn vị cơ bản lưu trữ danh sách các giao dịch cụ thể. Các khối có thể được tạo hoặc được khai thác rộng rãi bằng cách sử dụng các cơ chế đồng thuận khác nhau. Mỗi khối sẽ có bộ định danh riêng mà có lẽ cần phải là duy nhất được gọi là hàm băm.
- Giao dịch: Giao dịch là việc vận chuyển dữ liệu, giá trị hoặc tiền tệ trong mạng blockchain dọc theo các nút khác nhau. Chi tiết giao dịch được lưu trữ trong một khối đồng thời với một số bộ giao thức.
- Chuỗi: Blockchain có thể được so sánh với một danh sách được liên kết về mặt cấu trúc dữ liệu. Giống như các phần tử danh sách liên kết được kết nối thông qua các liên kết, các khối blockchain được kết nối thông qua các hàm băm. Chuỗi đảm bảo tính toàn vẹn và bảo mật dữ liệu bằng cách liên kết từng khối với hàm băm của khối trước đó.
Các tính năng chính của Blockchain: Cơ chế phân cấp, bất biến và đồng thuận
- Phân cấp: Không có thực thể đơn lẻ nào kiểm soát cơ sở dữ liệu blockchain, giảm nguy cơ lỗi hệ thống hoặc sai lệch. Mỗi người tham gia (nút) duy trì một bản sao của blockchain, đảm bảo tính minh bạch.
- Tính bất biến: Dữ liệu được nhập vào chuỗi khối không thể thay đổi mà không làm thay đổi tất cả các khối tiếp theo, nhờ vào hàm băm mật mã.
- Cơ chế đồng thuận: Các giao thức đảm bảo tất cả các nút trong mạng đồng ý về các giao dịch và duy trì trạng thái nhất quán. Điều này rất quan trọng đối với tính bảo mật và tính toàn vẹn của blockchain.
Mỗi tính năng thiết yếu được nêu đều đóng một vai trò quan trọng vì chúng tạo thành nền tảng của các trụ cột bảo mật và tính toàn vẹn trong hệ thống blockchain.
Các thành phần của ứng dụng Blockchain
Cấu trúc khối:
- Chỉ mục: Chỉ mục là một số nguyên biểu thị vị trí của khối trong chuỗi khối. Lập chỉ mục giúp xác định thứ tự của blockchain. Khối Genesis có chỉ số là 0.
- Dấu thời gian: Dấu thời gian lưu trữ phiên bản mà khối được tạo ở dạng chuỗi. Điều này giúp duy trì bản ghi của khối như khi khối được khai thác hoặc được thêm vào chuỗi khối. Mục đích chính là duy trì thứ tự thời gian của các khối và giao dịch.
- Giao dịch: Các giao dịch này được biểu thị dưới dạng vectơ của đối tượng Giao dịch, trong đó mỗi Giao dịch thể hiện việc chuyển dữ liệu hoặc giá trị giữa những người tham gia. Lưu trữ tất cả các giao dịch có trong khối. Giao dịch là dữ liệu cốt lõi của blockchain và mỗi khối chứa một loạt giao dịch cần được xử lý và xác minh.
- Băm trước và băm: Băm trước lưu trữ hàm băm mật mã của khối trước đó trong khi hàm băm là một chuỗi thông tin mật mã nhưng theo cách lộn xộn.
Tạo và xác minh giao dịch:
Nói một cách đơn giản, giao dịch chỉ là trao đổi dữ liệu giữa hai bên.
Để thực hiện giao dịch, cần có một số thông tin cần thiết: người khởi tạo (người gửi), người nhận và tiền hoặc dữ liệu đang được di chuyển. Trước khi một giao dịch có thể được khắc vào một khối trong chuỗi khối, nó sẽ trải qua quá trình xác minh để xác nhận tính xác thực của nó bằng chữ ký số chính xác và vượt qua các đánh giá bảo mật nghiêm ngặt. Sau khi được phê duyệt, giao dịch được gói thành một khối và sau đó được gắn vào blockchain.
Xây dựng một chuỗi khối đơn giản một cách đơn giản
Vậy còn việc chúng ta đi sâu vào việc sử dụng các khối, cùng với các đặc điểm (thuộc tính) và chức năng (phương thức) của chúng, bằng cách sử dụng cách tiếp cận thân thiện với người dùng có tên là Đơn giản thì sao?
Tạo lớp khối
Bây giờ chúng ta hãy áp dụng những gì chúng ta đã học về cấu trúc của một khối trong bối cảnh thế giới thực:
Trong đoạn mã trên, chúng tôi đã xác định:
- Chỉ mục của khối đại diện cho vị trí
- Dấu thời gian ghi lại thời điểm khối được tạo
- Dữ liệu có tất cả thông tin giao dịch
- Một băm trước lưu trữ hàm băm của khối tiến hành
- Băm là mã định danh duy nhất còn được gọi là hàm băm mật mã
Ngoài ra, phương thức “tính toán_hash” chấp nhận đầu vào, kết hợp nó với nội dung của nó và sau đó áp dụng thuật toán băm SHA-256 để tạo ra hàm băm duy nhất của khối.
Tạo lớp Blockchain
Sau khi thiết lập cấu trúc khối cơ bản, đã đến lúc chúng ta chuyển sang xác định các lớp và phương thức khối khác nhau cho phép chúng ta tạo các khối mới.
n đoạn mã trên:
- Khối Genesis là blockchain đầu tiên và có chỉ số bằng 0. Khối Genesis là nền tảng của tất cả các khối khác
- Nhận khối mới nhất tìm nạp khối gần đây nhất- phương pháp này là cần thiết để thêm khối mới
- Thêm khối nối khối mới vào chuỗi khối, nó tính toán hàm băm trước đó và hàm băm của khối hiện tại.
Thực hiện cơ chế đồng thuận một cách đơn giản
Thuật toán đồng thuận là các quy tắc mà những người tham gia mạng blockchain tuân theo để thống nhất về việc khối nào sẽ được thêm vào và cách tạo khối mới. Dưới đây là một số cơ chế phổ biến:
- Bằng chứng về cổ phần: Người xác thực được chọn dựa trên số lượng xu cao nhất mà họ sở hữu và số cổ phần họ sẵn sàng cung cấp để đổi lấy việc thêm hoặc xác thực một khối mới.
- Bằng chứng công việc: Trong cơ chế này, những người khai thác cần giải một vấn đề hoặc câu đố về mật mã và họ cạnh tranh về các thông số về thời gian, người đầu tiên giải được sẽ được thêm khối mới.
- Khác: Ngoài ra còn có các thuật toán khác như Bằng chứng cổ phần được ủy quyền (DPoS), trong đó những người tham gia mạng bỏ phiếu cho các đại biểu xác thực giao dịch và Dung sai lỗi Byzantine thực tế (PBFT), được thiết kế để hoạt động ngay cả khi một số người tham gia hành động độc hại hoặc thất bại.
Bằng chứng công việc
Trong lĩnh vực công nghệ blockchain, Proof of Work (PoW) nổi bật là một trong những phương pháp được công nhận nhất để duy trì an ninh mạng. Cơ chế này nhằm bảo vệ tính xác thực của dữ liệu, xác minh các khối mới được tạo và xác nhận sự bổ sung an toàn của chúng vào chuỗi.
Về cơ bản, những người khai thác cố gắng giải một câu đố toán học đầy thách thức trong thế giới mật mã và người chiến thắng có quyền nối khối tiếp theo vào chuỗi mà chúng ta gọi là blockchain. Bạn có thể ví cuộc thi này giống như một cuộc đua: người khai thác nào giải được câu đố nhanh nhất sẽ nhận được phần thưởng!
Câu đố này về cơ bản liên quan đến việc giải một câu hỏi hóc búa về toán học trong đó chúng tôi hướng tới việc khám phá nonce và hash lý tưởng, đồng thời xác minh nó nhanh hơn những câu hỏi khác. Quá trình giải quyết vấn đề này yêu cầu tạo mã băm riêng biệt ở mỗi lần thử, đánh giá mức độ khó của nó và kiên trì cho đến khi chúng tôi tìm thấy kết quả phù hợp tối ưu.
Thêm thuộc tính proof và phương thức proof_of_work trong lớp Block bằng cú pháp Simplicity.
Trong đoạn mã trên:
- Chúng tôi đã thêm thuộc tính proof để lưu trữ giá trị nonce cho PoW
- Trong phần thứ hai, chúng tôi đã triển khai bằng chứng công việc bằng cách
- Khởi tạo nonce và tăng nó sau mỗi lần lặp
- Tính toán hàm băm của khối hiện tại
- Kiểm tra độ khó của phương pháp chặn và liệu nó có phù hợp với tiêu chí không
- Tiếp tục lặp đi lặp lại cho đến khi bạn tìm ra nonce chính xác.
- xác thực bằng chứng bằng cách kiểm tra xem hàm băm có đáp ứng tiêu chí độ khó hay không và trả về kết quả
Cập nhật lớp Blockchain để xác thực bằng chứng trước khi thêm khối mới.
- Trong đoạn mã trên, phương thức add_block được cập nhật để bao gồm bước xác thực bằng chứng trước khi thêm khối vào chuỗi khối.
- Điều kiện if else kiểm tra xác thực và sau đó khối được thêm vào.
Tạo API Blockchain đơn giản một cách đơn giản
Sau khi kết thúc các tính năng cơ bản của khối, tôi khuyên bạn nên chuyển sang giai đoạn tạo API. Bước này rất quan trọng vì nó hoạt động như một phương tiện giữa hệ thống của chúng tôi và người dùng, cho phép họ tạo các khối mới, kiểm tra trạng thái hiện tại và kiểm tra các thuộc tính tương ứng của chúng.
Thiết lập môi trường API
Cài đặt và định cấu hình các công cụ cần thiết để tạo API bằng Simplicity:
- Trước tiên, bạn cần phải có các khung để cài đặt các thư viện máy chủ HTTP như trong đoạn mã trên
- Bây giờ hãy thiết lập môi trường và định cấu hình máy chủ để xử lý tất cả các yêu cầu đến.
- Sau khi hoàn tất quá trình thiết lập, hãy kiểm tra môi trường để đảm bảo máy chủ của bạn hoạt động trơn tru
Xây dựng API
Tạo API để xác định điểm cuối nhằm thêm khối và xem chuỗi khối bằng cách sử dụng Đơn giản.
Hãy bắt đầu xây dựng API của chúng ta ngay bây giờ:
- ./add_block: ĐĂNG yêu cầu này để thêm khối mới
- ./get_chain: NHẬN yêu cầu tìm nạp trạng thái hiện tại của khối
- Điểm cuối /add_block sẽ chấp nhận tải trọng JSON chứa dữ liệu cho khối mới và sẽ thêm khối này vào chuỗi khối.
- Trong phần thứ hai, chúng ta thực hiện việc viết hoa yêu cầu bằng trình xử lý khối thêm
- Thêm các khối mới và tính toán lại giá trị băm
- Đang tìm nạp phản hồi trên máy chủ
- Khi bạn đã hoàn tất việc xây dựng API, hãy thiết lập các tuyến cho cấu hình máy chủ:
- /add_block và /get_chain được sử dụng để thêm tuyến đường
- Bây giờ hãy khởi động máy chủ và kiểm tra các yêu cầu đến.
Chạy và kiểm tra ứng dụng
Hoan hô! Bạn đã đến mô-đun cuối cùng, nơi bạn có thể khởi động máy chủ của mình và kết nối với chuỗi khối thông qua API. Bây giờ là cơ hội hoàn hảo để kiểm tra thiết lập của bạn – hãy thử bằng cách gửi giao dịch, tìm nạp dữ liệu và đảm bảo mọi thứ hoạt động chính xác. Hãy theo dõi mọi lỗi hoặc trường hợp đặc biệt để đảm bảo rằng ứng dụng blockchain của bạn hoạt động trơn tru!
Chạy ứng dụng
- Biên dịch chương trình và chạy ứng dụng chuỗi khối Đơn giản:
- ./start-server # Lệnh khởi động máy chủ của bạn
Thử nghiệm với Người đưa thư
- Cài đặt Người đưa thư
- Ra mắt người đưa thư
- Kiểm tra các điểm cuối:
- curl -X POST -H “Content-Type: application/json” -d ‘{“data”: “Dữ liệu khối mới”}’ http://localhost:PORT/add_block
Sau khi được thực thi, lệnh này sẽ hiển thị thông tin blockchain đã sửa đổi, xác nhận rằng khối mới đã được kết hợp thành công.
- Thêm một khối và xem chuỗi khối bằng API được tạo bằng Đơn giản:
- curl -X POST -H “Content-Type: application/json” -d ‘{“data”: “Dữ liệu mẫu cho một khối mới”}’ http://localhost:PORT/add_block
Ví dụ trực tiếp về việc xây dựng ứng dụng Blockchain một cách đơn giản
Thực hiện từng bước
- Bước 1: Tạo lớp Block với các thuộc tính chính của nó (như chỉ mục, dấu thời gian, dữ liệu và hàm băm trước đó).
- Bước 2: Triển khai phương pháp tính toán hàm băm cho mỗi khối, đảm bảo tính duy nhất của khối đó.
- Bước 3: Xác định lớp Blockchain và khởi tạo nó bằng khối đầu tiên, được gọi là khối gốc.
- Bước 4: Thêm phương thức vào lớp Blockchain để thêm khối mới và tìm nạp khối mới nhất bằng cách sử dụng Simplicity.
- Bước 5: Giới thiệu cơ chế Proof of Work cho lớp Block và cập nhật lớp Blockchain tương ứng.
- Bước 6: Thiết lập môi trường API để xử lý các yêu cầu đến bằng cách sử dụng Simplicity.
- Bước 7: Kiểm tra ứng dụng của bạn bằng cách khai thác một khối mới và xác thực chuỗi khối thông qua các công cụ như Postman hoặc Curl.
- Meredith Gaudreau nói mùa khúc côn cầu thật ‘khó khăn’ sau cái chết của Johnny
- Taylor Swift và Travis Kelce tạo nên một cặp đôi đầy phong cách khi họ nắm tay nhau khi đến Electric Lady Studios ở thành phố New York
- Bachelorette Jenn Tran ‘Rất bối rối’ khi gặp Ex Matt ở New Zealand
- Angelina Jolie khoe vóc dáng sang trọng trong chiếc áo khoác màu da khi rời Liên hoan phim Venice chỉ vài giờ sau khi nhận được sự hoan nghênh nhiệt liệt kéo dài 8 phút cho bộ phim tiểu sử về Maria Callas
- Ngày trả lương đáng kinh ngạc cho ngôi sao Cơn sốt vàng Tyler Mahoney sau khi bán món đồ ‘một lần trong đời’
- Những cặp đôi nổi tiếng đã ở bên nhau 50 năm (hoặc lâu hơn!)
- Thẩm phán Tamra của RHOC, 57 tuổi, tiết lộ nỗi đau do nâng chân mày ‘tàn bạo’ và điều trị bằng laser CO2 – khi cô ấy thề sẽ phẫu thuật thẩm mỹ nhiều hơn
- Kid Laroi kỷ niệm sinh nhật lần thứ 21 ở Las Vegas
- Ngôi sao của Pretty Little Liars Tammin Sursok tiết lộ trải nghiệm thảm họa trong buổi hẹn hò đầu tiên khiến cô ‘ick’
- DWTS pro Artem Chigvintsev tuyên bố vợ Nikki Garcia ‘ném giày vào anh ta’ trong cuộc gọi 911 trong vụ cáo buộc bạo lực gia đình
2024-08-30 14:40