Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - alexkravets

Pages: 1 [2] 3 4 5 6
16
General Discussion / Re: Ripple goes from adjacent-possible to REAL.
« on: December 21, 2014, 06:44:17 pm »
More detailed specifications and English explanations of path finding weather client-specified or server-provided is here https://wiki.ripple.com/Payment_paths

Thanks. So reading that I conclude the path finding is actually what I would call "client-determined", which of course is what makes the most sense. To me server-determined would be the Ripple nodes trying to solve the problem between ledger closes, which would be a computationally demanding process. It makes far more sense for the entity interested in such a transaction (or another entity helping them out) to solve the path finding problem with the most recent state of the ledger, then crafting the transaction (with appropriate limits on conversion costs) to submit to the network. I still call it "client-determined" even when the light client delegates that task to one or more servers with full access to the most recent database and then chooses the best result.


Indeed it is a computationally demanding process, but it IS currently performed by rippled instances when the clients (in Ripple this means currently web-based ripple-lib clients that signed the transaction and then relayed it to one of the servers (rippled instances)) which is a default when the transaction is a payment that attempts to pay using USD to a recipient who prefers, say, BTC or JPY.  THIS used to be the major advertized feature of Ripple, i.e. its "babel-fish of money" instant cross currency payments which would allow you to pay in, say Peso's to a merchant that wanted Yen. 

Quote
Within a single ledger context the transactions are ordered by impossible-to-know-ahead-of-time-yet-fully-deterministic algorithm:
lexicographic ordering based on the transaction hash.

To me this isn't quite good enough to satisfy the "impossible-to-know-ahead-of-time". A Ripple node has the opportunity to front run an order it has in its queue by adjusting a small insignificant parameter in the transaction such that its transaction hash lexicographically precedes the hash of the target transaction. It shouldn't be too hard to iterate this nonce to achieve this result before the ledger closes (in 50% of cases, there is a 50% chance or better of success for each iteration, meaning that for these 50% of cases after only 7 iterations there is a greater than 99% chance of obtaining the desired front running transaction).

Indeed, it possible to tweak some things within the binary representation to achieve a high or low lexicographic hash
(see https://ripple.com/build/transactions/#offercreate for possible fields to tweak) and such kind of jumping-the-queue might be viable except there is still uncertainty of propagation delays which might defer the transaction into the subsequent ledger, i.e. a rippled instance doesn't solve or sign a block, it basically shouts in a crowded room hoping that next validated ledger would included it but w/o a guarantee of such.

I would also like to direct your attention to the following upcoming big change to Ripple, It's called Offer Auto-bridging
https://ripple.com/introducing-offer-autobridging/  This change has been a maturing pull-request that's been reviewed for a while and it might make it into the next version real-soon-now https://github.com/ripple/rippled/pull/689

Auto-bridging extends Ripple's promise of payments or trading "at best available rates" it's quite a powerful mechanism.




17
General Discussion / Re: Ripple goes from adjacent-possible to REAL.
« on: December 21, 2014, 06:53:51 am »
I haven't gone into depth with Ripple. I looked through this (https://ripple.com/files/ripple_mm.pdf).
Section 7 briefly discusses the path finding algorithm. I haven't yet been able to find more details about it. Bitsapphire, you seem to know something about this. Can you point me to resources to read that discuss what Ripple is doing exactly?

More detailed specifications and English explanations of path finding weather client-specified or server-provided is here https://wiki.ripple.com/Payment_paths

Quote
By the way Rune, section 11 talks about the order queue. Based on my reading, it appears that it does have limit orders and doesn't really do anything to prevent front running. Someone please correct my if I am wrong. Section 10 tries to argue that because the servers are distributed it is actually a fairer situation than with traditional exchanges.
And I agree with this. But I wouldn't quite call it a "level playing field for all market participants" since I imagine there will still be some better connected servers that can get user's submitted transactions and quickly respond to it by crafting a transaction to front run the order.

This is correct.  All offers are limit offers and lack of a single solver or singer node is probably good enough to prevent vast majority of front running attacks, it's a bit like Nasdaq market makers, they can all see each others' Level 2 & 3 quotes but ultimately nobody really has the global view of the incoming client-supplied order flows so nobody really has the privileged position of a NYSE market maker

Quote
I don't know the details of how Ripple orders transactions in the same ledger (same timestamp), but I imagine it would require the front running server to quickly adjust some nonce in the transaction to ensure it comes ahead of the transaction it is trying to front run based on the deterministic ordering algorithm.

Within a single ledger context the transactions are ordered by impossible-to-know-ahead-of-time-yet-fully-deterministic algorithm:
lexicographic ordering based on the transaction hash.

Quote
Why hard code it? Let the client determine it. The client (not the blockchain) should determine the most efficient path to convert asset A into asset E. Maybe it chooses A -> B -> E or maybe A -> C -> D -> E is more efficient. Now at the time the order is actually being executed by the blockchain the chosen path may not be the most efficient one, but this is a good enough approximation that takes computational work off the validation servers. The client chooses the path based on the current order books then creates a transaction indicating the path to take, the E/A price limit it is willing to accept for the overall conversion process, and either a max quantity of asset A to convert from or a max quantity of asset E to convert to. The blockchain then receives this transaction and tries to carry out any fraction of it atomically (meaning it could do half of the order if it fits the price limit restriction and leave the other half for later when it can without violating the price limit restriction). Alternatively, the transaction could specify all-or-nothing, so that all of the transaction quantity needs to be fulfilled or the entire transaction does not go through. This could be useful if an extra operation is appended to the atomic transaction to then transfer the asset E to another party. That feature could then allow for example atomically paying someone 10 BitEUR by withdrawing as much as necessary from their balance of >0.0102 BitGold with a specified price limit of 980 BitEUR/BitGold, and using BitUSD as the intermediate asset (transaction crafted to atomically trade X BitGold of user A -> BitUSD -> 10 BitEUR of user B with a restriction that X <= 0.0102).

Ripple allows both client-specified and server solved path finding, see above link for details.

18
General Discussion / Re: Ripple goes from adjacent-possible to REAL.
« on: December 20, 2014, 08:34:02 pm »
As XRP liquidity increases it ends up becoming cheaper to go through XRP than trading anything directly. XRP is valuable because it's needed to earn these high volume low spreads. BitUSD will have even lower spreads in the long run because it has lower volatility.

Rune,

That sounds plausible and amen to that, however the SUFFICIENT condition for this to happen is the depth and liquidity of BitUSD trading vs BTS and other Bit* pairs

19
General Discussion / Re: ripple rally
« on: December 20, 2014, 08:19:30 pm »
Major new symbolic development today
https://bitsharestalk.org/index.php?topic=12496.0

People are waking up and realizing how absurd it is.  The price is already starting to correct.  Where do you think it'll bottom out ?

I find discussions about price tiresome, but if you have to know, IMHO, XRP price is far from its "current-bubble-cycle" top yet ... this is just a pull back.  Keep in mind 0.1 USD price peak that was reached a year ago, we are still 75% below that even tho actual fundamentals are 10x stronger ... also those Chinese speculators can pump anything to the moon before the bubble cycle ends

20
General Discussion / Re: ripple rally
« on: December 20, 2014, 02:44:07 am »
Major new symbolic development today
https://bitsharestalk.org/index.php?topic=12496.0

21
General Discussion / Re: Ripple goes from adjacent-possible to REAL.
« on: December 20, 2014, 01:35:27 am »
Full of IOUs that will need bailouts at some point.

Ledger-recorded debts are older as a form of money than coins or other tangibles, it used to be kept by the tribal chiefs.

Ripple adds nothing new, if an existing bank issues IOUs into ripple and then goes bust, Ripple adds nothing new there either.

22
General Discussion / Ripple goes from adjacent-possible to REAL.
« on: December 20, 2014, 01:03:05 am »
Fidor bank transaction just hit Ripple ledger and funds were transferred from Germany to a US recipient.

https://xrptalk.org/topic/3781-fidor-bank-testing-the-auslands%C3%BCberweisung-%C3%BCber-ripple/page-4

Transaction details are here

http://ripplebot.com/4F88B09740DC70A8CA7658ADD183903D47BC1A503273A9899BB216AA229BDA11/


Gentlemen,

Today December 19th, 2014 is the birthday of the new global Monetary / Settlement system.


P.S. This is a calendar of upcoming Ripple events https://ripple.com/events/

This thing is going mainstream .... fast

23
General Discussion / Re: Stellar
« on: December 19, 2014, 04:28:00 am »
I think it's the same as LTC. Stellar is being bought my people who missed the Ripple train.

Agreed, expect numerous other forks of Ripple to appear and attempt to be new Ripple-like "coins"

Whereas Litecoin was arguably a slight improvement on Bitcoin when it came out, Stellar started damaging Ripples code base from the moment it got forked and never looked back.

Remember that the person behind Stellar was also responsible for the "original sin" of Ripple and has a track record of abandoned projects ...

Stellar is basically an attempt to bootstrap a crypto monetary system bottom up as opposed to top down approach taken by Ripple.

Stellar only has 1.5% of all possible STRs floating and is currently enjoying Ripples halo effect.

This likely btc38 pump and dump will crash and crash hard ... Get some popcorn

24
General Discussion / Re: ripple rally
« on: December 19, 2014, 03:19:53 am »
https://wiki.ripple.com/How_to_Build_a_Gateway#Building_a_Gateway_in_Phases
We could fill this entire matrix for anyone to use BTS as the bank. BTS exchanges can become both BTS gateways and Ripple gateways. I think integrating with Ripple helps accelerate the vision of BTS holders becoming a self-selected trust/capital/credit group that can outperform the market.

Now we're taking ...

Bravo !

25
General Discussion / Re: ripple rally
« on: December 19, 2014, 01:13:06 am »
Are we going to be overtaken by Stellar too?

IMHO, Stellar is really a pump and dump on a single btc38 exchange of the extremely low float otherwise thinly traded and sterile pseudo asset.

STR will crash and will crash hard, as soon as the btc38 pumping crews are done with it

26
General Discussion / Re: ripple rally
« on: December 18, 2014, 11:43:34 pm »
This WILL however likely to create a cartel-like YET DECENTRALIZED spider-web similar to the spider web of routing autonomous domains.

(CENSORING Transactions or failing to sign valid transaction to stifle consensus are really THE ONLY two avenues of attack open to arbitrary conspiracy of attackers, i.e. the worst possible damage is to PAUSE the network, i.e. ledgers will close but they'll be empty at which point nodes responsible for this are easily detected and commented out of the UNL lists)

Let's say all clients share the same UNL at first. Now let us say 5% of the nodes are censoring transactions and therefore not reaching the same updated state of the ledger as the other 95% nodes. This shouldn't be a problem in terms of allowing the network to continue since the ledge will still close (more than 80% still agree with the new ledger). However, if this grows this can eventually lead to more than 20% of the UNL not complying, in which case consensus stops.

This is correct.

Quote
Trying to fix the problem at that point would be difficult. Everyone would need to update their UNL to remove the problematic nodes, but it is important to do it in a way that is consistent with everyone else so that people don't end up on different forks. However, since the consensus engine has paused, they have no convenient way to reach a consensus on the new UNL. This is similar to the case in DPOS where more than 50% of the delegates do not include any vote changing transactions and so clients cannot vote out delegates and have to use some alternative way (hard fork) to change the delegates.

This argument WOULD be valid, however its hidden assumptions are not true, so it's not.  Let me explain.
Your hidden assumption is that the UNL list is somehow large or quasi-random, it's far from either !
It has taken over a year of reliable operation and 99%+ availability for *some* of the nodes to begin adding it to their UNL lists.
It's an inherently slow social process of REPUTATION BUILDING. 

Now, what you describe above would be completely analogous to some global backbones just NOT routing packets that come from their peer backbones, in this kind of scenario, their long sought and fought for reputation would be instantly destroyed and their would be removed from ACL lists in the routing tables thereby wasting the entire investment.


Quote
To avoid this, the problematic nodes (or delegates in DPOS) need to be continuously removed from their privileged position before the problem grows out of hand. I understand how this is done in DPOS. The transactions that change the approval voting of delegates are included in the consensus blockchain itself. The same consensus technology that keeps track of who has what funds also determines the changes in the set of active delegates (block producers). But how are these desirable (in the sense that it is beneficial for the future reliability of the network) changes to UNL decided in the case of Ripple and how do they get propagated to all Ripple clients? As far as I see in the whitepaper, there is no mechanism to propagate these changes as part of the consensus algorithm or allow the UNL to dynamically change without user intervention.

This is because there is no need for such, again you assume a pseudo-random initial UNL list, it's far far from it.
It's a very slowly curated and carefully controlled list similar to backbone-to-backbone peering agreements between huge networks.

Quote
I worry that this means users are forced to rely on the default node list that comes with their client, which just centralizes power to the developers of the client. Or even if there is some procedure for updating the UNL, it will likely only be accepted by the public if it is approved by more than 80% of the current members of the UNL (the ones who would not be removed by the changes to the UNL). Users want to be sure that there is agreement in the network (no forks) and that ledgers continue closing. If an update to the UNL doesn't have the support of 80% of the current UNL, some users may end up on different forks. So because the Ripple consensus algorithm doesn't include (as far as I can tell) a mechanism for updating the UNL consistently across all users, users will likely have to just go with whatever updates are approved by the vast majority of current UNL members.

Indeed, if you've decided to participate in Ripple consensus, you will not find yourself unsynced and unable to advance only if you include a default curated list as shipped by RL possibly adding a few other well known sites.

But do not confuse USERS with node operators, users simply want to issue digitally signed transactions and have assurance that only such transactions will be reflected in the ledger and those users who ACCEPT payment want finality and irreversibility of such payments.  This is similar to web sites and surfers just wanting to exchange some TCP/IP packets while the transport is provided by backbone operators.

Quote
This is basically equivalent to DPOS where the only people who get to vote on the delegate candidates are the top 101 active delegates (who each get one vote).  Even if a good non-colluding set of of initial members was chosen, can we guarantee that they remain that way over time when the only entities who get to vote for changes to the set are the members in the set themselves? My intuition says that this group can slowly become corrupted over time, and when it does, it becomes very difficult to replace them. In this case corruption would mean that they end up becoming a colluding group that selectively censors transactions to serve the interests of themselves (or the more powerful forces that control them). The check on their power needs to come from outside the set. I think the way to do that is by considering the votes of masses that depend on and use the system. But to avoid Sybil attacks, the only sensible voting power to consider is that of stake in the system. Otherwise, Ripple is only as decentralized as the number of individuals who control the 1000 or so nodes in the UNL. But with delegation of stake, the decentralization can expand to all of the individuals who own the stake (such as BTS). This could eventually become millions or even billions of individuals, whereas we can pretty much guarantee that millions of nodes are not going to be in the UNL because scaling out the validators to that many servers makes the consensus algorithm very inefficient.

Ripple Consensus does not use ownership of XRP or any IOU for voting to arrive at consensus, it simply considers every VALID and digitally signed transaction signed by the supermajority of validators "retired" or admitted into the history inside a particular ledger.

In this regard it's very different from DPOS, the assumption underlying Ripple is that it's relatively inexpensive to run a full rippled node and there will be enough sites doing it simply for the benefit of having lower level latency access to the consensus ledger stream and indeed, it's never been a burden to run such a node ... even though there's been over 10 millino ledgers and total storage is already well over 100 Gigabytes ... after scanning the chain of ledgers once (in memory even) every node can prove the legitimacy of the latest ledger and never need to store the entire ledger chain, although some archival nodes, i.e. the once run by RL will always store the entire chain.

27
General Discussion / Re: ripple rally
« on: December 18, 2014, 07:24:54 pm »
But you can't just have every node with their own completely different list of validating nodes. How could you possible get a consistent view of the shared database otherwise? I imagine there needs to be enough overlap for everyone's view to be consistent (to not fork). The dynamics of how the shared UNL can evolve while avoiding forks isn't clear to me. It seems like it requires nearly all of the nodes currently in charge of validating the database to approve of any additions to the UNL for things to work well. And if that is true, that is what leads to issues for me...

Indeed, you can create your own UNL island (think about nodes on Mars on behind the Great Firewall of China) and they will be on a fork. 

Keep in mind key difference between CONNECTIVITY of the network vs. authoritative set of signers to achieve consensus.
For simplicity's sake let us assume that the network is fully connected, then consensus will occur if there is agreement from a sufficiently interconnected UNL-wise (NOT network connection wise) set of nodes.

The issues are subtle and I refer you to the Ripple Consensus white paper: https://ripple.com/consensus-whitepaper/

Quote
This is the problem. The people in power (the ones in the UNL already) are the ones who need to add Joe Schmo for him to have any participation in the database modification process. If he and others like him do get added, perhaps then they can slowly exclude some of the other incumbents and gradually change the set of members in UNL across different nodes. But what if they are kept out of the process to begin with because the old guard doesn't welcome the change they bring?

The ones who get to control whether Joe Schmo gets any power to begin with to bring about change in the system are the ones already in power. If they are not following the desires of the masses, the masses have no mechanism to take power away from them other than giving up on the entire system and switching to another system which is not compatible with contracts/debts/IOUs of the previous system and whose tokens are nonfungible with that of the previous system (a significant barrier which might keep them complacent with the old flawed system). With DPOS, changing the set of entities who control the database modifications that get through (or control what hard forks are accepted) is as easy as changing the delegates you vote for and pressing the vote button.

This is correct, one must DESERVE to be taken seriously enough and be considered a well-connected stable node enough for others to be added to others UNL list, but this is NOT necessarily a bad thing.

This WILL however likely to create a cartel-like YET DECENTRALIZED spider-web similar to the spider web of routing autonomous domains.

Ideally in the long run, "the average UNL" list should contain KGB, Chinese Intelligence, CIA, NSA, Bank of Whatever, etc ... it doesn't actually matter how malevolent the entries are on the list as long as THEY DON'T COLLUDE to CENSOR transactions

(CENSORING Transactions or failing to sign valid transaction to stifle consensus are really THE ONLY two avenues of attack open to arbitrary conspiracy of attackers, i.e. the worst possible damage is to PAUSE the network, i.e. ledgers will close but they'll be empty at which point nodes responsible for this are easily detected and commented out of the UNL lists)

i.e. the perfect two entries would be form Itchy & Scratchy Simpson's characters :-)

 

28
General Discussion / Re: ripple rally
« on: December 18, 2014, 06:41:48 pm »
Such txs do indeed exist in the "open but unvalidated ledger" however, only next validated ledger becomes "authoritative" and in Blockchain like systems, the block solving or singing central node can decide to INSERT last moment transactions that allow it to "have a final say" on what becomes authoritative. Such transactions allow it to front-run or do other kinds of manipulation.

This is not possible in Ripple since no transaction that has not already gathered the signatures of the 80%+ of the validators network can be included, such transactions are deferred in Ripple, ie punted for possible inclusion into subsequent ledgers

This discussion about distinctions between Ripple consensus and other blockchain systems is interesting to me. To me the major important difference between the consensus systems is not the particular mechanics of how official changes to the distributed database are authorized. The most important difference to me is what determines the entities who get to authorize these changes.

In Ripple, this is controlled by the UNL. In DPOS, this is controlled by set of active delegates. The problem I have with Ripple is that the control of UNL is not decentralized to masses. I have serious concerns with an oligarchy that would naturally form due to the structure of the UNL. But if they fixed the number of nodes in the UNL to 101 and used a mechanism within the consensus technology to let XRP holders vote on the members in UNL, it could essentially recreate the most important parts of DPOS. Similarly, DPOS could be modified to allow the delegates to coordinate on their own private network for each block, and a block would only be considered valid if it had at least 81 of the 101 active delegate signatures, which would make it more similar to Ripple consensus.


Another common misconception about Ripple's UNL.  Although, when building / downloading the server, it does come with a DEFAULT list of nodes in the UNL (a.k.a ar RL1 through RL 6), each node operator can do WHATEVER they want with their own LOCAL UNL list ...

You can think of Ripple Labs running 6 clusters across major continents as SEEDING the network, but each Gateway usually adds itself and others to their own UNL list ...

That being said, nobody stops Joe Schmo from both running a rippled node AND from TRYING to get others to add HIS node's public key to THEIR UNL list ...

So far the common practice has been to add long-running reliable non-RL nodes such as Bitstamp or SnapSwap to custom UNL lists ...

To see some UNL lists look at "well known" ripple.txt files atop of web sites of running node domains, i.e.

https://snapswap.us/ripple.txt
https://www.ripplecn.com/ripple.txt

Some, like Bitstamp, choose NOT to publish their UNL lists but only their own public key, i.e.
https://www.bitstamp.net/ripple.txt


29
General Discussion / Re: ripple rally
« on: December 18, 2014, 06:01:19 pm »
Such txs do indeed exist in the "open but unvalidated ledger" however, only next validated ledger becomes "authoritative" and in Blockchain like systems, the block solving or singing central node can decide to INSERT last moment transactions that allow it to "have a final say" on what becomes authoritative. Such transactions allow it to front-run or do other kinds of manipulation.

This is not possible in Ripple since no transaction that has not already gathered the signatures of the 80%+ of the validators network can be included, such transactions are deferred in Ripple, ie punted for possible inclusion into subsequent ledgers

You don't need to be the block producer to front run:

*) Observe incoming marketable order as unconfirmed transaction A
*) Insert your own better priced unconfirmed transaction to buy up/sell up all the orders in the book which A would have bought/sold
*) Insert a new, opposite order to sell up/buy up at the full price of A
*) Profit by giving A exactly what he asked for, instead of the best price which he would have got

This is prevented from being possible in bitshares because the blockchain matching engine only gives the buyer/seller what they asked for, never the best price. In NXT it is possible to front-run.

What you say is also true ! However, you can NEVER observe those transactions which the singing node decides to insert at the very last moment before signing and broadcasting the block


30
General Discussion / Re: ripple rally
« on: December 18, 2014, 05:28:14 pm »
Ripple consensus has no temporary leader node which signs a new ledger and therefore there is not even a temporary centralization where the updates to the global state are visible to a single node.

Compare this to PoW or [D]PoS blockchains, where the block solver or signer "knows the future" ahead of other nodes on the network

You don't have mempool type unconfirmed transactions?

FYI unconfirmed transactions are visible to everyone, not just the block producing nI odes in PoW/[D]PoS blockchains.

Such txs do indeed exist in the "open but unvalidated ledger" however, only next validated ledger becomes "authoritative" and in Blockchain like systems, the block solving or singing central node can decide to INSERT last moment transactions that allow it to "have a final say" on what becomes authoritative. Such transactions allow it to front-run or do other kinds of manipulation.

This is not possible in Ripple since no transaction that has not already gathered the signatures of the 80%+ of the validators network can be included, such transactions are deferred in Ripple, ie punted for possible inclusion into subsequent ledgers

Pages: 1 [2] 3 4 5 6