nguyenkha / kcoin-blockchain

KCoin blockchain reference implementation
https://api.kcoin.club/
MIT License
60 stars 8 forks source link

Chuyển tiền và nhận tiền thối #1

Open nthanhhai2909 opened 6 years ago

nthanhhai2909 commented 6 years ago

Chào thầy! Cho em hỏi, khi người dùng đăng ký tài khoản sẽ được tạo một bộ (publicKey, privateKey, Address). Khi người dùng dùng chuyển tiền một số tiền nhỏ hơn ví hiện có thì cần 1 phát sinh thêm một address mới để nhận tiền thối. vậy địa chỉ mới này được phát sinh theo cách nào ạ?Em sẽ gọi đến api của thầy cấp để phát sinh thêm một bộ (publicKey, privateKey, Address), hay đơn thuần là tạo thêm một address(64 ký tự hex) và address này thuộc sở hữu của người gửi tiền. Em cám ơn.

nguyenkha commented 6 years ago

Chào bạn,

Địa chỉ chẳng là qua sha256(publicKey), kèm theo privateKey để sử dụng sau này. Bạn không cần gọi đến API của api.kcoin.club để phát sinh, thay vào đó có thể sử dụng hàm generateAddress và lưu lại kết quả lại, vì cần key pair để chi trả sau này. Dĩ nhiên dùng một chuỗi ngẫu nhiên không xuất phát từ key pair đồng nghĩa với việc... mất tiền bạn nhé.

nthanhhai2909 commented 6 years ago

Dạ. Thầy cho em hỏi thêm là yêu cầu thứ 2 của đồ án là quản lý ví: phát sinh thêm địa chỉ nhận tiền. Tức là một người dùng sẽ có nhiều địa chỉ nhận tiền (bao gồm private key, public key và địa chỉ). Vậy mình sẽ quản lý tất cả các địa chỉ đó cho người dùng thông qua tài khoản mà người dùng đăng ký (email, password). Và khi thực hiện chuyển tiền người dùng sẽ chọn một trong số các địa chỉ nhận tiền của mình để chuyển phải không ạ.

nguyenkha commented 6 years ago

Chính xác, một người dùng có thể có nhiều địa chỉ khác nhau, bạn quản lý tất các các thông tin địa chỉ đó (blockchain không hề biết ai sở hữu địa chỉ nào). Khi người dùng thực hiện giao dịch thì bạn có thể cho người dùng chọn các địa chỉ dùng để chuyển tiền đi hoặc thông minh hơn tự xác định số lượng địa chỉ hoặc chính xác hơn là các reference output cần dùng (theo số dư đang có) theo số lượng tối thiếu nhất (không bắt buộc) và confirm lại với người dùng (thực chất với người dùng bình thường họ không quan tâm lắm).

vukhoa30 commented 6 years ago

Thưa thầy cho em hỏi thêm, trong đồ án này người dùng tương ứng với ví trong blockchain.info phải ko ạ?

nguyenkha commented 6 years ago

@vukhoa30: Bạn vui lòng tạo issue mới.

haingod commented 6 years ago

Thưa thầy cho em hỏi là khi chuyển tiền, app sẽ lấy private key của các address ở đâu ạ, có phải là yêu cầu người dùng nhập từng private key ứng với những address được chọn hay chương trình lưu private key vào database lúc khởi tạo address và sẽ lấy ra dùng khi giao dịch ạ?

nguyenkha commented 6 years ago

Cảm ơn bạn @haingod. Mình đã cập nhật lại yêu cầu cho hợp lý hơn. Toàn bộ private key và public key sẽ do hệ thống của bạn quản lý, người dùng không được biết và cũng không được thêm vào. Mọi giao dịch phải thông qua địa chỉ của hệ thống (của bạn) cho người dùng. Khi người dùng rút tiền thì tiền bị trừ trên tài khoản người dùng sau đó hệ thống sẽ dùng số dư của hệ thống để thực hiện giao dịch cho người dùng.