garavel

Established Members
  • Content Count

    13
  • Joined

  • Last visited

  • Days Won

    5

garavel last won the day on June 4

garavel had the most liked content!

Community Reputation

24 Excellent

2 Followers

About garavel

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @techster Isn't it time to finaly share some news with us ? Please share some updates regarding the payment system and when the dev team planning to bring it back online. It's getting annoying to play hide and seek with refresh button , checking if there is some changes in wallet. It's been a lot of time that you didnt show up and share, so please give some information.
  2. Hello all ! I'am literaly reposting some cool dude material " Posted by u/lpxxfaintxx " Here is what really happening behind the scene. New information! Anyways, let's dive right in. On May 12th, the BTT Speed wallet exchange went down. The announcement was that it was going to be a 2 hour maintenance, but it actually ended up being... more than 2 weeks now. The exchange is still down. On May 12th, the day of the announced maintenance downtime, a new codebase used to facilitate the uTorrent and BT Client's Web API with the BTT exchange protocol was pushed out to all uTorrent 3.5.5 and BT 7.10.5 clients, regardless of whether you used BTT Speed or not. We stumbled across this by accident as we were attempting to reverse engineer some of their code to improve the back-end ourselves out of frustration. All the evidence and code can still be found and examined yourself in the webUI helper update that was pushed out (located in /AppData/Roaming/uTorrent/ folder) The BTT Speed wallet uses VueJS so it's not really code you can hide. You can obfuscate, but it seems that they didn't even attempt that. The Findings: New API Endpoints (lines 2423 - 2456): // GET REQUESTS email: { get: {}, post: {} }, "binance/binance_info": { get: {}, post: { body: String } }, "binance/quote_info": { get: {}, post: { params: { crypto_currency: String, base_currency: String, fiat_currency: String, requested_amount: String, pay_type: String, quote_id: String } } }, "binance/create_transaction": { post: { params: { order_id: String, quote_id: String } } }, "binance/recent_transactions": { get: {} } New VueJS Functions: fetchEmailInfo: { type: Function, default: function () {} }, emailInfo: { type: Object, default: function () { return { email: String, isVerified: Boolean } } }, createAndApproveQuote: { type: Function, default: function () {} }, checkBinanceUserStatus: { type: Function, default: function () {} }, preCheckRedirectUrl: { type: String, default: "" }, bindRedirectUrl: { type: String, default: "" }, fetchBinanceTransactions: { type: Function, default: function () {} }, binanceTransactions: { type: Object, default: function () { return { total: 0, rows: [] } } }, New Vue Data, Compute, and Misc Methods: data: function () { return { cryptoCurrencyStr: "", baseCurrencyStr: "", isValidatorEnabled: !1, step: 1, email: "", emailMessage: "Please check your email inbox to verify.", isEmailInvalid: !1, isLoading: !1, binancePoolInterval: null, redirectTimeout: 5, showTransferSuccessModal: !1, alert: { alertFirstMessage: "", alertSecondMessage: "", type: "", isShow: !1 } } }, computed: { currentBalance: function () { return c.default.formatMicroTokenToLocale(this.inAppBalance, { minimumFractionDigits: 0 }) }, maxTransactionAmount: function () { return this.transactionLimits.max }, minTransactionAmount: function () { return this.transactionLimits.min }, cryptoCurrencyAmount: function () { return c.default.isValidToken(this.cryptoCurrencyStr, "token") ? c.default.convertToMicroToken(this.cryptoCurrencyStr) : 0 }, baseCurrencyAmount: function () { return c.default.isValidToken(this.baseCurrencyStr, "token") ? c.default.convertToMicroToken(this.baseCurrencyStr) : 0 }, localeExchangeRate: function () { return c.default.formatMicroTokenToLocale(1 / this.exchangeRate, { minimumFractionDigits: 0 }) }, ........ } }, created: (l = v(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { for (;;) switch (e.prev = e.next) { case 0: this.getInitialData(), this.startPoolBinance(), this.handleGAEvent("QuotePageScreen"); case 3: case "end": return e.stop() } }), e, this) }))), function () { return l.apply(this, arguments) }), destroyed: function () { clearInterval(this.binancePoolInterval) }, methods: { getInitialData: (s = v(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { for (;;) switch (e.prev = e.next) { case 0: return this.handleLoading(!0), e.prev = 1, e.next = 4, Promise.all([this.fetchEmailInfo(), this.fetchExchangeRate()]); case 4: return e.next = 6, this.handleFetchBinanceTransactions(); case 6: e.next = 11; break; case 8: e.prev = 8, e.t0 = e.catch(1), this.handleLoading(!1); case 11: this.handleLoading(!1); case 12: case "end": return e.stop() } }), e, this, [ [1, 8] ]) }))), function () { return s.apply(this, arguments) }), startPoolBinance: function () { var e = this; this.binancePoolInterval = setInterval((function () { 1 === e.step && e.fetchExchangeRate() }), 1e4) }, ........ }, goNext: (o = v(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { for (;;) switch (e.prev = e.next) { case 0: if (this.thiscryptoCurrencyStr || this.baseCurrencyStr || (this.isValidatorEnabled = !0), !this.isInvalidBaseCurrency) { e.next = 3; break } return e.abrupt("return"); case 3: if (this.handleGAEvent("QuotePageBuyClick"), this.emailInfo.isVerified && this.emailInfo.email) { e.next = 7; break } return this.handleStepChange(2), e.abrupt("return"); case 7: return this.handleLoading(!0), e.next = 10, this.handleCheckBinanceUserStatus(); case 10: if (!this.bindRedirectUrl) { e.next = 13; break } return this.handleLoading(!1), e.abrupt("return"); case 13: return e.next = 15, this.handleCreateAndApproveQuote(3); case 15: case "end": return e.stop() } }), e, this) }))), function () { return o.apply(this, arguments) }), handleStepChange: function (e) { e !== this.step && (this.step = e) }, handleCheckBinanceUserStatus: (i = v(regeneratorRuntime.mark((function e(t) { return regeneratorRuntime.wrap((function (e) { for (;;) switch (e.prev = e.next) { case 0: return e.next = 2, this.checkBinanceUserStatus(this.emailInfo.email, this.isBackendProd); ............... }, handleLoading: function (e) { this.isLoading = e }, handleFetchBinanceTransactions: (r = v(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { for (;;) switch (e.prev = e.next) { case 0: if (!this.emailInfo.email) { e.next = 5; break } return this.handleLoading(!0), e.next = 4, this.fetchBinanceTransactions(this.emailInfo.email, this.isBackendProd); } }), e, this) }))), function () { return r.apply(this, arguments) }), closeTransferSuccessModal: function () { this.showTransferSuccessModal = !1 }, New Vue Front-End Components and Helpers: columns: function () { return [{ label: this.$t("Date & Time"), field: "created_time", width: "160px" }, { label: "Pay", field: "requested_amount", type: "number", thClass: "binance-table-th-content-center", tdClass: "binance-table-td-content-center" }, { label: "Receive", field: "obtain_amount", type: "number", formatFn: this.formatAmount, thClass: "binance-table-th-content-center", tdClass: "binance-table-td-content-center" }, { label: "Status", field: "status", width: "100px", thClass: "binance-table-th-content-center", tdClass: "binance-table-td-content-center" }] }, filterCheckedArr: function () { return this.filterArr.filter((function (e) { return e.isChecked })).map((function (e) { return e.name })) } ............................ created: function () { this.checkPreCheckRedirectUrl(), this.handleGAEvent("PaymentPageScreen") }, mounted: function () { this.waitUntillIframeLoaded() }, methods: { checkPreCheckRedirectUrl: function () { this.preCheckRedirectUrl.length }, waitUntillIframeLoaded: function () { var e = this; document.getElementById("binance-iframe").addEventListener("load", (function () { e.handleLoading(!1) })) } } ........................ [e._v("\n You will be redirected to Binance to complete the verification process after " + e._s(e.redirectTimeout) + " sec\n ")])]) : e._e(), e._v(" "), e._e(), e._v(" "), e.showTransferSuccessModal ? n("wallet-buy-success-modal", { attrs: { handleModalCancelClick: e.closeTransferSuccessModal } }) : e._e(), e._v(" "), 1 === e.step ? [n("div", { staticClass: "wallet-buy-step-1" }, [n("bt-card", { staticClass: "exchange-sell-card" }, [n("div", { staticClass: "card-item-grid" }, [n("div", { staticClass: "sub-card" }, [n("div", { staticClass: "title" }, [e._v("PAY")]), e._v(" "), n("div", { staticClass: "balance center" }, [n("bt-select", { attrs: { options: { first: { nativeName: "USD", value: "USD" } } } }, [n("div", { staticClass: "option-selected", attrs: { slot: "option-selected" }, slot: "option-selected" }, [n("div", { staticClass: "text" }, [e._v("\n USD\n ")])])]), e._v(" "), n("bt-input-box", { staticClass: "amount", attrs: { inputType: "crypto", "data-testid": "sell", placeholder: "0.00", message: e.baseCurrencyMessage, showMessage: e.isInvalidBaseCurrency, isInvalid: e.isInvalidBaseCurrency }, on: { input: e.updateCryptoCurrencyStr }, model: { value: e.baseCurrencyStr, callback: function (t) { e.baseCurrencyStr = t }, expression: "baseCurrencyStr" } })], 1)])])]), e._v(" "), n("svg-icon", { staticClass: "arrow-forward-icon", attrs: { icon: "arrow-forward" } }), e._v(" "), n("bt-card", { staticClass: "exchange-buy-card" }, [n("div", { staticClass: "card-item-grid" }, [n("div", { staticClass: "sub-card" }, [n("div", { staticClass: "title" }, [e._v("Estimated Receive")]), e._v(" "), n("div", { staticClass: "balance center" }, [n("div", { staticClass: "buy-btt-box" }, [n("div", { staticClass: "buy-btt-box-top" }, [n("svg-icon", { staticClass: "speed-icon", attrs: { icon: "speed" } }), e._v(" "), n("span", [e._v("BTT in-app")])], 1), e._v(" "), n("div", { staticClass: "buy-btt-box-bottom" }, [n("span", [e._v(e._s(e.currentBalance))])])]), e._v(" "), n("bt-input-box", { staticClass: "amount", attrs: { inputType: "crypto", "data-testid": "buy", placeholder: "0.00" }, on: { input: e.updateBaseCurrencyStr }, model: { value: e.cryptoCurrencyStr, callback: function (t) { e.cryptoCurrencyStr = t }, expression: "cryptoCurrencyStr" } .................. a = [function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "top" }, [n("span", { staticClass: "top-title" }, [e._v("Email Verification")]), e._v(" "), n("span", { staticClass: "content-text" }, [n("p", [e._v("\n To continue, please provide a valid email address. If you already have a Binance account, please use\n the same one.\n ")]), e._v(" "), n("p", [e._v("\n This service is provided in collaboration with\n "), n("a", { attrs: { href: "https://www.binance.com/", target: "_blank" } }, [e._v("Binance")]), e._v(" in accordance with our\n "), n("a", { attrs: { href: "https://www.bittorrent.com/legal/privacy-policy/", target: "_blank" } }, [e._v("Privacy Policy")]), e._v(".\n ")])])]) }] ... and it goes on, with 70 more mentions of "Binance" in the following 60,000 lines of code that follows. Okay, fast forward to more than 2 weeks later. The uTorrent forum, and BTT Speed communities are furious and getting very impatient about the exchange downtime. To understand a bit more, we'll get into how we are able to transfer BTT from uTorrent/BTorrent into our actual wallets. An API request is sent to the Tron network using your wallet and private key (this is done automatically when you make a withdrawal request) The exchange wallet (TA1EHWb1PymZ1qpBNfNj9uTaxd18ubrC7a) then processes the request, and sends real BTT to your wallet on-chain. Since May 12th, the exchange wallet has mostly been empty of BTT, frustrating seeders and not allowing people to withdraw. Yesterday, the exchange wallet was refilled with a considerable amount of BTT, more than the little amounts they filled here and there. If my memory serves correctly, it was around the ballpark of 50-200 million tokens (too lazy to go check atm, but it was enough for the exchange to come back online for a few hours). Of course, I began analysis right away, especially w/ monitoring the API calls being made and network traffic. And sure enough, there was plenty of chatter going back and forth that mentioned Binance. The temporary opening of the exchange was most likely devs doing more testing. I'm not the type to spread baseless FUD or pump-designed news, but I think there's evidence beyond reasonable doubt that an official BTT Speed wallet <> Binance exchange partnership or integration is coming soon. I know there's both a buy and sell function, but I can't speculate further on the exact nature of this direct integration, nor the official announcement date, but all the code and evidence is there. Yesterday's API activity was confirmation that there is indeed an API server out there that is responding to the newly added API calls and functions. So it's not just BTT dev(s) writing non-sense Binance related code into the BTT Speed backend. People also noticed that huge amounts of BTT were being moved to a few wallets, which was highly suspicious. However, it appears that those wallets actually belong to Binance. What's concerning: the initial code was pushed out on the 12th, but the exchange is yet to be back online, not a SINGLE dev has come out and explained why, PR is absolutely silent about the matter and posting memes on Twitter. They posted job listings for BTT Speed devs AFTER the failure to launch within the 2 hour timeframe that they initially announced, and it is clear that they are seriously lacking power in the JS dev department whether in SF or Asia. Something has either 1) gone horribly wrong to the point that they couldn't fix it in almost 3 weeks now, 2) the Binance integration isn't going as planned, and they are re-thinking the exchange protocol; 3) I don't fucking know. What's promising: although it seems that there is no activity going on in the world of BTT Speed, it is clear that they are up to something, though normal every day people don't get to see it because it's hidden in (a bit shitty) code. Nonetheless, a direct uTorrent/BitTorrent client <> Binance integration would be definitely be something that would propel the BTT ecosystem in the long-term. Closing thoughts: I'm sorry for waiting all this time to share this with you guys, but I thought everyone could use a little bit of good news. Tron is in so many projects right now I don't blame Justin for not making BTT a priority, but it would be an insult to all the OG uTorrent and BT protocol developers that worked tirelessly on what we can call one of the first "decentralized" networks if he just let it die out. They had two years to make improvements to the BT clients, as well as the BTT protocol, but there was been literally almost no changes, improvements, or upgrades in nearly 3 years since BitTorrent was acquired by Tron. Integration with Binance is great, but I want to see the protocol improve, because right now it's a mess. Hopefully this extremely prolonged downtime and the thousands of complaints pouring in is a wake up call to them. Let's keep pushing the team to work hard. Both on BTT Speed and BTFS.
  3. @techster We are going to appreciate some clear information on the update of Exchange system. Would be nice to also know how long we have to wait to see it live. Please provide some information for all the members that waiting to hear from you!
  4. The exchange is not up / they just putted some money that we can withdraw so they can gather more data to analyze! When 25 , 000, 000 are withdrawn there will be again few days off.
  5. It's been some days already! Will you log in and provide us with some information? It looking not serious from your side. I think that will be fair to tell us a real date that the payment system will work finaly!
  6. Hey @techster how long will be to analyze that data before they re-launch it ? It's kind of frustrating already ! Any news will be appreciated.
  7. So here it is a bit of light in the tunnel. Thnaks @techster for the info. We hope your workmates do that job a bit faster. It's been too much waiting for us already.
  8. There is nothing we can do about right now. Even @techster can not assist anyhow so just wait for the wallet to be refilled. It's not cool to have some earns and can't move them but it is what it is. Hope today or tomorrow will be refilled ( when they stop doing whatever its on right now) . The wallet is getting drained every time there is some minor or major updates of payment system or some network problem. It's a fact that the statment of what's happening is cooming days later so....
  9. Refresh the links for wallet few tmes and move them again,
  10. Hi all , again the wallet it's empty , so if you cannot move your coins to On chain just wait for the wallet to be refilled with BTT.
  11. Right now you can withdraw your earnings. The wallet paying to BTT SPEED is recharged with 50 000 00 ( already 35 000 000 ) and all transactions are good to go ! I want to truly thanks to @techster for the information given about implementation if new exchange soon and solving our doubts in system ( network ) problems. Also wanna thank him for beeing active and respond to messages. Great work. Keep the same spirti. Cheers ! In case anyone coins goes to pending again just wait the system to reject the transaction and birng them back to your IN APP Balance.
  12. Same problems here , even i start almoust the same topic as you. Looks like global problem. I hope anyone will clear it out soon for us.
  13. Hello ! Since last 72 hours we have withdraw problems. When we move our earnings from IN APP Balance to On Chain Balance coins go to pending. After we stop utorrent / bittorrent client or just kill the process from taks manager and then we start it again the same coins that goes to pending are going back to our IN APP Balance. It's happening to me and all my friends to each of our computes / accouts / wallets. We have earnings more than enough on each client but they are all going on pending and in best scenarion after that are going back to IN APP balance and worst scenario just get stuck on pending. Is anything happening with the network at the moment ? ( any updates or something that may be the problem ) Should we wait for this to be fixed or ? ? Please provide some information about this problem. Its kinda frustrating because gathering works fine / wallet loads fine , but we can not move from in app to on chain !!! Thanks in advance.