Unseeded Auction Thread

The third unseeded auction has closed.
Total Nbt Received: 23.9513
Total Nsr Received: 9212.0
Auction Closing Price: 0.00260001085541 NBT/NSR
Price: 0.0026 $/NSR

Auctions are now fully automatic and will close every 5,000 blocks starting with block 415,000. The server will wait for 10 confirmations before sending payment. Registration is still done manually, but need only occur once per address pair.

2 Likes

Ha! It worked, I didnā€™t think it would work. Iā€™m not at my comp but the auction went off. Hooray!

2 Likes

Tto be honest, i have not understood yet how your unseeded auction works and the concrete purpose of it.
I take time to understand things :smile:

Can you explain it in mere terms?

Send nbt and/or nsr to auction addresses. Get back nsr and nbt. How much you get back is determined by the average price of all participants. It is zero-sum, the only loss is the network fees.

It is transparent, efficient, easy, and robust. As it is now automatic, there is very little reason for us not to be making use of it. Iā€™m going to keep coming out with more bells and whistles for it, but it is already fully operational and if I wasnā€™t the only one using it people would understand by now why itā€™s so awesome.

1 Like

Pros of the seeded auction over blind auctions:

  1. Transparency (all tx on blockchain)
  2. Dual side (discovers price via competition)
  3. Provides a nbt and nsr use case
  4. Gameable (ends precisely on a block)
  5. Easy for auctioneer (registration only need happen once ever per user)
  6. Easy for participants (after registration, simply submit funds at will using standard wallet software)
  7. Less trust (auctioneer and reserve can be different people)
  8. No minimum bid (aside from network fees)
  9. All participants pay network fees.
  10. All participants are rewarded for participation (assuming >1 participants with different ideal price points)

Cons:

  1. New software could contain bugs
  2. People donā€™t trust what they donā€™t understand.
  3. All participants pay network fees. (Penalty for participation)
  4. Dual side (people can waste a lot of money to force nu to waste a little money. This risk can be decreased by increasing the seed.)
1 Like

I think a seeded auction using this setup is better than the current manual one.

4 Likes

Below some extreme examples to help shareholders understand the purpose of unseeded auction thread, including myself:

  • What should I do if I want to convert 1m NSR into 1m NBT? What is the chance of such a conversion attempt?
  • What should I do if I want to convert 1m NBT into 1m NSR? What is the chance of such a conversion attempt?

The main point Iā€™m going to make here is that ā€˜unseededā€™ auctions are not very useful for such a conversion. Rather, they help one keep oneā€™s personal finances in relative order with respect to nbt and nsr.

Are you Nu or are you a participant?

If you are Nu, you are able to use the auction to draw demand because you can guarentee submition on one side and not the other by writing the intention to do so on the block chain via motion. This is ā€œseedingā€ and is a unique property only accomplishable by Nu, not participants.

If you are a participant, you are only able to use the auction to do a flat conversion if there is established and dependable auction volume. The technicalities get somewhat in the way here, but ideally you will be able to read the transactions involving the auction addresses and predict a minimum level of involvement.

Letā€™s take your 1 million NSR question, but rephrase a little and say ā€œWhat is the minimum level of involvement to convert 1 million NSR into NBT at market prices?ā€ Furthermore, we must quantify ā€œat market pricesā€ as being within a certain % of the ideal market price, letā€™s say 1%.

Market involvement + 1 mil = 1.01 * Market involvement.
Market involvement = 100 million

As you can see, in order for you to be confident dropping funds on the auction, the dependable volume of the auction needs to be over an order of magnitude larger than your intended dump.

The vastly preferred thing for you as a user is to be a part of that ā€˜market involvementā€™ by submitting both nbt and nsr in your preferred ratio. That will allow you to find common prices amongst the other custodians and shareholders (and anyone else that registers) and balance your personal funds accordingly.

I performed a full auction simulation last night. There are several interesting points to be made.

  1. The biggest volume transaction pulls the price to its chosen point. It is the market maker.

  2. The pair with a price point far away from the market maker swapped the biggest % of its funds, but made the swap at the same rate as everyone else.

  3. It is impossible to know if it was 4 different people with different price points, or just 1 person trying to make it appear to be 4 people. This is why you cannot be sure of the fairness of these kind of auctions without submitting some funds yourself. If you donā€™t participate, you have no way of knowing if more than 1 person participated.

I will not be submitting funds for this next auction to celebrate the fork. The bot still runs if you want to use it personally, but without >1 participants all the auction does is burn fees.

1 Like

If I submit 1m NSR and 1m NBT that means that I think 1 NSR should be priced 1 NBT.
Now let us assume that most other participants have submitted 1m NSR and 0.5m NBT.
What happens in that case?

It depends how many other participants, but letā€™s assume infinite. That means the closing price will be 0.5m nbt / 1m nsr = $0.5 per NSR.
That means you would trade your 1 mil NBT for 2 mil NSR and you 1 mil NSR for 0.5m NBT. If we look for the difference between submitted funds and received funds, you just traded 0.5 mil NBT for 1 mil NSR and kept the other 0.5 mil NBT and 1 mil NSR.

Submitted: 1 mil NSR, 1 mil NBT
Received: 2 mil NSR, 0.5 mil NBT

Note that in the case of infinite market participation you could also have just submitted 0.5 NBT and received 1 mil NSR, I.e. it would have the same effect. Submitting both NBT and NSR is done because you donā€™t know what the market involvement will be and because it is impossible for it to be infinite.

Letā€™s do it again with 3 other participants (labeled b) and label the main participant of interest ā€˜aā€™.

Total nbt submitted = 2.5 mil
Total nsr submitted = 4 mil
Total price = 2.5/4 = 0.625

A nbt lost = 0.375 mil
A nsr received = 0.6 mil

B nbt received = 0.125 mil
B nsr lost = 0.2 mil
For each of the three ā€˜bā€™ participants.

ā€˜Aā€™ pushed the price up to convert 0.375 mil nbt into 0.6 mil nsr. The other participants held the price down and converted 0.3 mil nsr into 0.125 mil nbt each.

Edit: I got confused, should be good now. Note that this is complicated and difficult to calculate by hand, but to a computer this is really really simple math.

The y-axis is NBT converted into NSR by participant A at the auction price. The x-axis is number of B participants. This uses the numbers @cryptog gave of 1:1 NBT:NSR for A and 0.5:1 for each B. This chart is also representative of the resulting auction price, as it is linearly related to what is plotted on the y-axis.

1 Like

Iā€™ve run into a roadblock here. I am having a very hard time getting RPC to work on windows. I point to the nu.conf (in AppData/Roaming/Nu/) but it still canā€™t start the daemon.

I want to have the auction participants submit funds automatically. I know there are risks involved with this, but I have considered ways of dealing with them. Making actual code run on windows, however, seems to be difficult.

Thank you for your continued efforts to improve Nu!
I have access to a Windows 7 machine on which I can try that later.
Allow me the question: why would you want to run such an automated trading on Windows?

It is crucial that we have participation in the auction if we want to seed it. If I am just giving away money and there is only one person in the room, that person will take the money and walk away. If there are many people in the room, those people will compete for the money. Participation is absolutely crucial for the auction prices to reflect market prices.

I am trying to make participation via a windows machine as easy as double clicking on an icon. There are many concerns, such as wallet encryption, but I will address those concerns in time. For now, I am just trying to get the simple automation working for an unlocked wallet on a windows machine.

Getting it working on a linux machine is trivial, Creon already did it with server.py and I have basically just copied the implementation from there.

My plans for updates for the Auction are as follows:

  1. Automated participation
  2. Automated auction announcements using html
  3. Automated registration
2 Likes

Looking forward to the automated tool.

With this nu.conf in %appdata%\roaming\nu (in fact it was a different directory because I used -datadir=pathToNuAppdata) - anyway; with this nu.conf:

rpcpassword=rpcpassword
rpcuser=rpcuser
rpcport=9950
server=1

I was able to start

nud --daemon

in one command prompt and was able to execute rpc commands in a second command prompt, e.g.

Z:\Programs\Nu\1.2.0\32>nud -datadir=..\..\appdata getinfo
{
    "version" : "v1.2.0-beta",
    "protocolversion" : 50000,
    "walletversion" : 1,
    "walletunit" : "S",
    "balance" : 0.0,
    "newmint" : 0.0,
    "stake" : 0.0,
    "parked" : 0.0,
    "blocks" : 185220,
    "moneysupply" : 1007362878.01,
    "connections" : 8,
    "proxy" : "",
    "ip" : obfuscated",
    "difficulty" : 0.00030548,
    "testnet" : false,
    "keypoololdest" : 1410815213,
    "keypoolsize" : 101,
    "paytxfee" : 1.0,
    "unlocked_until" : 0,
    "errors" : "Info: Minting suspended due to locked portfolio."
}

Obviously this node is not fully syncedā€¦ I stopped using Windoes for that :smile:
I had problems without the server and the rpcport line. It generated errors.

2 Likes

Thanks for your help MoD, youā€™re super helpful. What Iā€™m trying to get to work are the participant programs in this repo:

participant_linux.py works fine, but participant_windows.py doesnā€™t. It seems to load up the nu.conf file fine, but the rpc command just doesnā€™t work out. Iā€™m wondering if itā€™s specific to my windows system and would appreciate others trying. Please note that you have to manually enter your username into the participant_windows.py file.

Sorry for the delay. Access to a Windows machine can more complicated than access to Linux :wink:
Hereā€™s a report:

Iā€™ve downloaded
Python 3.4.3 for Windows from https://www.python.org/downloads/release/python-343/ (donā€™t try this at home; you can read later in this post why :wink: ) and
the SeededNuAuction code from https://github.com/Nagalim/SeededNuAuction/archive/master.zip
I adjusted participant_windows.py: replaced, line 8

"C:\Users\**INSERTUSERNAMEHERE**\AppData\Roaming\Nu\nucoin.conf" with 
"C:\Users\myUserNameHere\AppData\Roaming\Nu\nu.conf"

because my Nu configuration file is named nu.conf instead of nucoin.conf.

[ā€¦]which should save users from entering their username as %appdata% is a variable for the current userā€™s appdata location - should work on most Windows versions; Using the %appdata% variable hat didnā€™t work. When using

%appdata%\Roaming\Nu\nu.conf

in participant_windows.py: line 8 the program didnā€™t run.
Looks like each user has to adjust that path individually.

Trying to run auctioneer.py created an error message:

SyntaxError: Missing parentheses in call to 'print'

Resolved that by uninstalling Python 3.4.3 and installing Python 2.7.10 from https://www.python.org/downloads/release/python-2710/

After installing Python 2.7.10 auctioneer.py created a new error message:

[...]auctioneer.py", line 14, in <module>
opts = dict(tuple(line.strip().replace(' ','').split('=')) for line in open(NUCONFIG).readlines())
IOError: [Errno 2] No such file or directory: 'None/.nu/nu.conf'

I adjusted line 13 of auctioneer.py from

NUCONFIG='%s/.nu/nu.conf'%os.getenv("HOME") to
NUCONFIG=r'C:\Users\myUserNameHere\AppData\Roaming\Nu\nu.conf'

After that running auctioneer.py resulted in this output:

Enter Block Height of Auction Close:

Running participant_windows.py produced

Successfully loaded Nu RPC and found block count as: 218866

Yeah, the blockchain is still syncing :wink:

I hope that helps.

2 Likes