Bitcoin Forum
December 15, 2024, 07:16:05 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 [1836] 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 ... 2557 »
  Print  
Author Topic: NXT :: descendant of Bitcoin - Updated Information  (Read 2761621 times)
msin
Legendary
*
Offline Offline

Activity: 1484
Merit: 1006


View Profile
February 23, 2014, 09:46:28 PM
 #36701

SWARM NEEDED

Here is the reddit post, please everyone sign up at Bittrex.

Hello NXT community,

I solicited feedback on another thread about which coins we should support on our exchange before our public launch. NXT was overwhelmingly recommended.

Before we make the final decision, we're providing a special invite code for NXT users to experience our site first hand. Go to https://bittrex.com/Account/Register and use SUPPORT_NXT as the invite code. This gets you past the invite code queue. Place some trades, enabled 2FA, or try any of our other features to help us stress the site before the final launch. If you find a bug, we're handing out bug bounties as well. Having a great exchange helps us but also helps the NXT community.

If we get 100 signs ups using that code and active on our site, we'll add NXT before our public launch.

Please let me know if you have any questions or feedback, Bill



Just a reminder for everyone who hasn't already to please sign up for Bittrex.  Will also update everyone on Atomic Trade soon.  Thank you
BitcoinForumator
Legendary
*
Offline Offline

Activity: 1120
Merit: 1000


View Profile
February 23, 2014, 09:48:08 PM
 #36702

Are there any insider news from the Cryptsy team?
chanc3r
Sr. Member
****
Offline Offline

Activity: 952
Merit: 253



View Profile
February 23, 2014, 09:48:17 PM
Last edit: February 23, 2014, 10:01:52 PM by chanc3r
 #36703

I would like to see an adaptive overall network speed. This would maximize the effective throughput, while minimizing the max throughput we need to handle. Similar to dynamically allocating only the RAM you need, instead of allocating the max RAM you will ever need. A cost savings of 2 to 10 is possible, depending on usage spikes.
If the network tells which nodes in advance that they will get work then..
You would put power management into the nodes so they would use less resources when not needed
If the network sees that forging would exceed the scope of a single node then it should split the work across more than one and we support more than one node forging in parallel in some way
If this were possible sooner rather than later that would be good because assuming NXT takes off it will place less pressure on us having lots of nodes of a minimum spec to keep up with the need to receive, forge and broadcast. This would be because we could move to parallel transparent forging or transparent parallel forging - not sure which it is or whether it matters what we call it.

Quote
Minimizing bandwidth by going to binary format, blockchain pruning or blockchain FIFO for non-hallmark nodes, etc, etc.

On bandwidth - binary will help but you could implement a simple compression protocol as a post process on the JSON rather than removing it - its not as efficient a pure binary but you can achieve 70%+ bandwidth reduction compressing text which is why network companies sell H/W to do this but you can do it in SW - just need to pick an inline compression algo.

Cheaper too because you don't have to change all your SW because you can test using text and then just layer on the compression in live operation or last testing stages.

Blockchain pruning - I think current/archive might be a better way of looking at it. These are financial transactions, maybe you never want to destroy them.

Why can't we define an archiving point for a node, or the max age that the node stores the block chain into. the intelligence that when you can't follow a reference in the chain you can query an archive node and maybe a node just has an age parameter and beyond this age it doesn't store the chain but knows a node which does and/or maybe nodes broadcast the age of the chain they store and maybe this gives them some forging benefit for storing it all and also nodes then know where to go for the data.

We just then need a few core nodes who store everything and then a standard age depending on the size and important of a node in the network.

Cant remember what FIFO is.

pinarello
Full Member
***
Offline Offline

Activity: 266
Merit: 100


NXT is the future


View Profile
February 23, 2014, 09:49:12 PM
 #36704

I heard from Lisa Yin (PHD MIT Crypto) about doing our Crypto audit, but she just wanted a specific overview of what we need.  Can someone PM me with the info please.  Thanks.


That would be great, she cracked SHA1 scheme.

rickyjames
Full Member
***
Offline Offline

Activity: 196
Merit: 100


View Profile
February 23, 2014, 09:52:40 PM
Last edit: February 24, 2014, 09:36:07 AM by rickyjames
 #36705

@ Salsacz: I would like to officially request 15K NXT from the conference support section of your marketing fund.   I intend to use these funds to print up handout materials for the Texas Bitcoin Conference, with leftover copies from Austin sent on to NXT reps for the San Francisco, New York and Toronto Bitcoin conventions in the next few weeks.  My NXT account for receiving these funds would be 16092180239932658439.  

I have previously posted the proposed text for this brochure here for review, and have incorporated suggested changes.  See https://bitcointalk.org/index.php?topic=345619.msg5245021#msg5245021.

I have designed a full color NXT trifold brochure that I would like to have printed in Austin and pickup there on Tuesday evening March 4.   I have priced it with CC West Printing Office (http://ccwestprinting.com) in Austin and their price is 2000 for $526 or 5000 for $723.  Their price is so good for 5000 that I want to order that many.  Turn time is 3 days, so I have to get the final copy to them Thursday Feb 27.   I will post a PDF receipt for this marketing expenditure on the site here as part of an audit trail.

I will post a link to a PDF here on the site of the final trifold brochure copy I send CC West before I go to Austin so anybody can download it and use it locally.

My intention is to put one of these trifold brochures on every chair in the three speaker areas at the Texas Bitcoin Conference early in the morning on March 6, then go around at the end of the day and pick up any leftovers.   I will then mail unused NXT brochures to whoever is going to the San Francisco conference for their use.  They can keep mailing these brochures forward to each NXT rep at each upcoming conference until they are gone.    Then maybe we can print more, we'll see.

Thanks, Salsa!
klee
Legendary
*
Offline Offline

Activity: 1498
Merit: 1000



View Profile
February 23, 2014, 09:53:48 PM
 #36706

Updated text and images: http://www.mynxt.org/beta/features.html

Still beta, would like to get feedback!

Nice.

From your site:
Quote
Zerocoin Functionality
Three words: Gonna be huge!
Simply speaking, you will be able to send and receive NXT with complete anonymity. Sometimes called "Mixing Service", this allows people all over the world to freely exchange goods & services without the fear of policital or other persecution because of backtracing transactions.

Just a nit-pick: a mixing service and zerocoin, while they have the same goal of achieving anonymity in trasactions, are conceptually different.

A mixing service is like if someone is following you and you try to lose them by running into a large crowd.

Zerocoin is like losing them by teleporting to a new destination.


Perfect way of describing zerocoin! NXTcash team has made an internal release and waiting for zeronet (testnet for NXTcash) to be setup. Hopefully, by next week we can experiment with teleportation.

Even with a small number of users, as the transaction counts go up, there should be no more than random statistical chance of determining the correct path. Havent done the calculations, but I think it rapidly becomes impractical to do any sort of meaningful correlation.

James
Did you speak with Edward?

Muchas gracias, amigo 7017504655955743955.

στην υγειά σας Smiley
Ellinas re??
The ball is in his court. I havent heard back any complaints, so I am assuming it is just a matter of getting everything setup. Maybe the problem is that there is a new simplified genesis block and we are using old source as base. He might have to merge the original genesis block into our release, or our release into more recent version.

Not sure. I am assuming no news is good news. Just waiting for msg from him that zeronet is ready to test.

James
I doubt he has time to see this atm - he gives 2 interviews this week...
msin
Legendary
*
Offline Offline

Activity: 1484
Merit: 1006


View Profile
February 23, 2014, 09:56:16 PM
 #36707

I heard from Lisa Yin (PHD MIT Crypto) about doing our Crypto audit, but she just wanted a specific overview of what we need.  Can someone PM me with the info please.  Thanks.


That would be great, she cracked SHA1 scheme.

Yeah, just need someone to send me a detailed description (with links) to what we need for the audit. I've actually been waiting for someone to send me that for about 3 weeks, but no one has yet.
mikesbmw
Sr. Member
****
Offline Offline

Activity: 338
Merit: 250


View Profile
February 23, 2014, 09:56:34 PM
 #36708

Talked to my brother yesterday about the clothing for promotion and he commented: "like the logo", the text not so much (bit corny).

Coming from him, that's a HUGE compliment  Grin

Now we have to select some nice stuff that's not to expensive. We will see how this pans out.

NXT: Next Generation of Cryptocurrency http://nxtcrypto.org
NEM:New Economy Movement http://www.ournem.com/
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1134


View Profile WWW
February 23, 2014, 10:00:04 PM
 #36709

I need 10 volunteers to at least do some basic testing of automated gateway deposits.
All you need is a DOGE wallet, PM me your DOGE address and I will send you 1000 DOGE.
Then run my gateway_client program to post AM with your DOGE withdrawal address, it will give you the DOGE deposit address to use.

After that, all deposits to the deposit address ** should ** end up as a NXT AE asset called "DOGE". Estimated time from sending to appearing in NXT AE is 10 minutes. Please do not do withdraws yet, servers not ready. Working on that today.

James

gateway_client.c:
Code:

//  Created by jl777, Feb 2014
//  MIT License
//
// gcc -o gateway_client gateway_client.c -lcurl
// ./gateway_client <NXT addr> <NXT passkey> <DOGE withdraw addr>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <memory.h>
#include <math.h>
#include <curl/curl.h>
#include <curl/easy.h>


#define MAX_TOKEN_LEN 4096

//#define MANUAL_THRESHOLD  100000  // any transactions over this size require manual confirmation, by all gateways
#define COINID 1
#define COINNAME "DOGE"
#define DAEMON "dogecoind"  // for most bitcoin forks, changing TXFEE and gateway specific defines should be enough
#define TXFEE 1.0           // don't forget to match txfee with coin
#define MAX_VOUTS 100       // it stops after no output, so no harm to make it big
#define MIN_CONFIRMS 3
#define DEPOSIT_FREQUENCY 10
#define POLL_SECONDS 1
#define WALLETBACKUP "wallet.DOGE"
#define COINASSET "10234957171844414560"

// defines
#define MULTISIGACCT "9rufqRXAekAx4gnGuKf5SL8YzViMfryLMY"    // this and redeem are deterministic based on signers
#define REDEEMSCRIPT "52210287300d3f7447c84c0ec6052440285d99f2211aba6eb17b9d6baa9b62cd16f8d52102b6b6aa9320c60d47b795748ae5291e94f56267411096f8ea42d6f7202ba0819c2102daa52056d79777afa25001b957d9e4cc2eba1e3639bd390681db149f1cd174fb53ae"

// generate publickeys using validateaddress on the address getaccountaddress generates
#define SERVER_NAMEA "209.126.71.170"
#define DOGEADDRA "DQaHT9CaHnAcqHvNui7V6j8fAh3CD21wpx"
#define PUBLICA "0287300d3f7447c84c0ec6052440285d99f2211aba6eb17b9d6baa9b62cd16f8d5"

#define SERVER_NAMEB "209.126.73.176"
#define DOGEADDRB "DURjNgaqPUEjY3Nk2CMqkRccNoouWXm6mx"
#define PUBLICB "02b6b6aa9320c60d47b795748ae5291e94f56267411096f8ea42d6f7202ba0819c"

#define SERVER_NAMEC "209.126.73.158"
#define DOGEADDRC "DUJxdKGYrThiuWMyuw3oGkfVnydAM5hG46"
#define PUBLICC "02daa52056d79777afa25001b957d9e4cc2eba1e3639bd390681db149f1cd174fb"

#ifdef MAINNET
#define NXTISSUERACCT "10154506025773104943"
#define NXTACCTA "10154506025773104943"
#define NXTACCTB "10154506025773104943"
#define NXTACCTC "10154506025773104943"
#define NXTSERVER "http://localhost:7874/nxt?requestType"
#else
#define NXTISSUERACCT "18232225178877143084"
#define NXTACCTA "18232225178877143084"
#define NXTACCTB "18232225178877143084"
#define NXTACCTC "18232225178877143084"
#define NXTSERVER "https://holms.cloudapp.net:6875/nxt?requestType"
#endif

#ifndef GATEWAYID
#define GATEWAYID 0
#endif

#define GET_COINDEPOSIT_ADDRESS 'g'
#define SET_COINWITHDRAW_ADDRESS 'w'
#define BIND_DEPOSIT_ADDRESS 'b'

typedef void *(*funcp)(char *field,char *arg,char *keyname);
typedef char *(*blockiterator)(char *blockidstr);

#define NUM_GATEWAYS 3
#if GATEWAYID == 0
#define NXTACCT NXTACCTA
#define SERVER_NAME SERVER_NAMEA
#elif GATEWAYID == 1
#define NXTACCT NXTACCTB
#define SERVER_NAME SERVER_NAMEB
#elif GATEWAYID == 2
#define NXTACCT NXTACCTC
#define SERVER_NAME SERVER_NAMEC
#else
illegal GATEWAYID, must define GATEWAYID to 0, 1 or 2
#endif

char *Gateway_NXTaddrs[NUM_GATEWAYS] = { NXTACCTA, NXTACCTB, NXTACCTC };

#define WAIT_BROADCASTSTR "wait for broadcast"

#define GATEWAY_SIG 0xdadafeed
#define NODE_SERVER 0

#define SATOSHIDEN 100000000
#define NXTOSHIDEN 1000000
#define MIN_NXTFEE 1

struct gateway_info
{
    int64_t  balance,deposits,withdrawals,tbd __attribute__ ((packed));
    int32_t bind_requests,broadcasted_binds,addresses_bound;
    int32_t deposit_txids,pending_sweeps,broadcasted_sweeps,verified_deposits __attribute__ ((packed));
    int32_t pending_transfers,broadcasted_transfers,verified_transfers __attribute__ ((packed));
    int32_t set_withdrawaddrs,withdraw_requests,moneysent,pending_withdraws,failed_withdraws __attribute__ ((packed));
    int32_t rawbroadcasts,pending_redemptions __attribute__ ((packed));
};

struct gateway_AM
{
    int32_t sig __attribute__ ((packed));
    int32_t funcid __attribute__ ((packed));
    int32_t gatewayid __attribute__ ((packed));
    int32_t coinid __attribute__ ((packed));
    int32_t timestamp __attribute__ ((packed));   // used as nonce
    int32_t counter __attribute__ ((packed));
    int64_t  amount __attribute__ ((packed));
    int64_t  unspent __attribute__ ((packed));
    int64_t  change __attribute__ ((packed));
    char NXTaddr[32],coinaddr[64];
    char token[160];
    union { char txid[128]; char rawtransaction[288]; };
    union { char txid2[128]; char inputs[256]; };
    struct gateway_info info;
};

struct gateway_specific
{
    char depositaddr[64];
    char deposit_txid[128],sweep_txid[128],transfer_txid[128];
    char redeem_txid[128],withdraw_txid[128];
};

struct active_NXTacct
{
    int32_t counter,numdeposits,numsweeps,numtransfers,numredemptions,numwithdraws;
    int64_t total_deposits,total_transfers,total_assets_redeemed,total_withdraws;
    int64_t pending_sweepamount,pending_transfer,pending_redeem,pending_withdraw;
    char NXTaddr[32],withdrawaddr[64],issue_txid[128],redeem_txid[128];
    struct gateway_specific txids[NUM_GATEWAYS];
};

// globals
struct gateway_info GATEWAYS[NUM_GATEWAYS];
struct active_NXTacct **NXTaccts; int Numactive,Maxactive;
int Forged_minutes,Numtransactions,RTflag;
struct MemoryStruct { char *memory; size_t size; };
char NXTACCTSECRET[512];
char Sender[MAX_TOKEN_LEN],Block[MAX_TOKEN_LEN],Timestamp[MAX_TOKEN_LEN],Deadline[MAX_TOKEN_LEN];
char Quantity[MAX_TOKEN_LEN],Asset[MAX_TOKEN_LEN],Recipient[MAX_TOKEN_LEN],Amount[MAX_TOKEN_LEN];
char Fee[MAX_TOKEN_LEN],Confirmations[MAX_TOKEN_LEN],Signature[MAX_TOKEN_LEN],Bytes[MAX_TOKEN_LEN];
char Transaction[MAX_TOKEN_LEN],ReferencedTransaction[MAX_TOKEN_LEN],Subtype[MAX_TOKEN_LEN];
char Message[MAX_TOKEN_LEN],SenderPublicKey[MAX_TOKEN_LEN],Type[MAX_TOKEN_LEN],Description[MAX_TOKEN_LEN];

char *strip_tohexcodes(char *ptr)
{
    int n;
    if ( *ptr == '"' )
        ptr++;
    n = (int)strlen(ptr);
    while ( n>2 && (ptr[n-1] == ',' || ptr[n-1] == '"' || ptr[n-1] == ' ' || ptr[n-1] == '\r' || ptr[n-1] == '\n') )
        n--;
    ptr[n] = 0;
    return(ptr);
}

char *clonestr(char *str)
{
    char *clone = malloc(strlen(str)+1);
    strcpy(clone,str);
    return(clone);
}

int unhex(char c)
{
    if ( c >= '0' && c <= '9' )
        return(c - '0');
    else if ( c >= 'a' && c <= 'f' )
        return(c - 'a' + 10);
    else return(0);
}

unsigned char _decode_hex(char *hex)
{
    return((unhex(hex[0])<<4) | unhex(hex[1]));
}

void decode_hex(unsigned char *bytes,int n,char *hex)
{
    int i;
    for (i=0; i<n; i++)
        bytes[i] = _decode_hex(&hex[i*2]);
}

char hexbyte(int c)
{
    if ( c < 10 )
        return('0'+c);
    else return('a'+c-10);
}

int init_hexbytes(char *hexbytes,unsigned char *message,long len)
{
    int i,lastnonz = -1;
    for (i=0; i<len; i++)
    {
        if ( message[i] != 0 )
        {
            lastnonz = i;
            hexbytes[i*2] = hexbyte((message[i]>>4) & 0xf);
            hexbytes[i*2 + 1] = hexbyte(message[i] & 0xf);
        }
        else hexbytes[i*2] = hexbytes[i*2+1] = '0';
        //printf("i.%d (%02x) [%c%c] last.%d\n",i,message[i],hexbytes[i*2],hexbytes[i*2+1],lastnonz);
    }
    lastnonz++;
    hexbytes[lastnonz*2] = 0;
    return(lastnonz*2+1);
}

void reset_strings()
{
    Sender[0] = Block[0] = Timestamp[0] = Deadline[0] = Quantity[0] = Asset[0] = Description[0] =
    Recipient[0] = Amount[0] = Fee[0] = Confirmations[0] = Signature[0] = Bytes[0] = Transaction[0] = 0;
    ReferencedTransaction[0] = Subtype[0] = Message[0] = SenderPublicKey[0] = Type[0] = 0;
}

static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
    size_t realsize = size * nmemb;
    struct MemoryStruct *mem = (struct MemoryStruct *)data;
    
    mem->memory = realloc(mem->memory, mem->size + realsize + 1);
    if (mem->memory) {
        memcpy(&(mem->memory[mem->size]), ptr, realsize);
        mem->size += realsize;
        mem->memory[mem->size] = 0;
    }
    return realsize;
}

char *issue_curl(char *arg)
{
    CURL *curl_handle;
    CURLcode res;
    // from http://curl.haxx.se/libcurl/c/getinmemory.html
    struct MemoryStruct chunk;
    chunk.memory = malloc(4096);  // will be grown as needed by the realloc above
    chunk.size = 0;    // no data at this point
    curl_global_init(CURL_GLOBAL_ALL); //init the curl session
    curl_handle = curl_easy_init();
    curl_easy_setopt(curl_handle,CURLOPT_SSL_VERIFYHOST,0);
    curl_easy_setopt(curl_handle,CURLOPT_SSL_VERIFYPEER,0);
    curl_easy_setopt(curl_handle, CURLOPT_URL, arg); // specify URL to get
    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); // send all data to this function
    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); // we pass our 'chunk' struct to the callback function
    curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); // some servers don't like requests that are made without a user-agent field, so we provide one
    res = curl_easy_perform(curl_handle);
    if ( res != CURLE_OK )
        fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
    else
    {
        // printf("%lu bytes retrieved [%s]\n", (int64_t )chunk.size,chunk.memory);
    }
    curl_easy_cleanup(curl_handle);
    return(chunk.memory);
}

int64_t  stripstr(char *buf,int64_t  len)
{
    int i,j;
    for (i=j=0; i<len; i++)
    {
        buf[j] = buf[i];
        if ( buf[j] != ' ' && buf[j] != '\n' && buf[j] != '\r' && buf[j] != '\t' )
            j++;
    }
    buf[j] = 0;
    return(j);
}

int normal_parse(double *amountp,char *buf,int j)
{
    int i,isfloat = 0;
    char *token,str[4096];
    if ( buf[j] >= '0' && buf[j] <= '9' )
    {
        for (i=0; i<1000; i++)
        {
            str[i] = buf[j+i];
            if ( buf[j+i] == '.' )
            {
                isfloat = 1;
                continue;
            }
            if ( buf[j+i] < '0' || buf[j+i] > '9' )
                break;
        }
        str[i] = 0;
        //if ( isfloat != 0 )
        *amountp = atof(str);
        if ( buf[i+j] == '}' )
            j++;
        //else *amountp = atol(str);
        //printf("naked number (%f) <- (%s).%d i.%d j.%d\n",*amountp,str,isfloat,i,j);
        return(i+j);
    }
    if ( strncmp(buf+j,"{\"asset\":",9) == 0 )
        j += 9;
    if ( buf[j] != '"' )
    {
        printf("missing open double quote (%c) at j.%d (%s)\n",buf[j],j,buf);
        return(-1);
    }
    j++;
    token = buf+j;
    for (i=0; i<4000; i++)
        if ( buf[j+i] == '"' )
            break;
    if ( buf[j+i] != '"' )
    {
        token[100] = 0;
        printf("missing terminating double quote at j.%d [%s]\n",j,token);
        return(-1);
    }
    else
    {
        buf[j+i] = 0;
        j += i + 1;
        *amountp = atof(token);
    }
    return(j);
}

char *decode_json(char **tokenp,char *buf)  // returns ptr to "value"
{
    int j;
    double amount;
    j = 0;
    *tokenp = 0;
    if ( buf[j] == '{' )
    {
        j++;
        if ( buf[j] == '}' )
            return(0);
        else if ( buf[j] == '"' )
        {
            (*tokenp) = buf+j+1;
            j = normal_parse(&amount,buf,j);
            if ( j <= 0 )
            {
                printf("decode_json error (%s)\n",buf);
                return(0);
            }
            return(buf + j);
        }
    }
    else if ( buf[j] == '"' )
    {
        *tokenp = buf+j+1;
        j = normal_parse(&amount,buf,j);
        if ( j <= 0 )
        {
            printf("decode_json error2 (%s)\n",buf);
            return(0);
        }
        return(buf + j);
    }
    return(0);
}

void *results_processor(char *field,char *arg,char *keyname)
{
    static int successflag,amount;
    static char *resultstr;
    int i,isforging;
    char *retstr = 0;
    char argstr[4096];
    if ( arg != 0 )
    {
        for (i=0; i<4096; i++)
        {
            if ( arg[i] == 0 )
                break;
            if ( (argstr[i]= arg[i]) == ',' || arg[i] == '"' )
                break;
        }
    } else i = 0;
    argstr[i] = 0;
    if ( field != 0 )
    {
        if ( strcmp("signature",field) == 0 )
            strcpy(Signature,argstr);
        else if ( strcmp("asset",field) == 0 )
            strcpy(Asset,argstr);
        else if ( strcmp("quantity",field) == 0 )
            strcpy(Quantity,argstr);
        else if ( strcmp("fee",field) == 0 )
            strcpy(Fee,argstr);
        else if ( strcmp("confirmations",field) == 0 )
            strcpy(Confirmations,argstr);
        else if ( strcmp("block",field) == 0 )
            strcpy(Block,argstr);
        else if ( strcmp("timestamp",field) == 0 )
            strcpy(Timestamp,argstr);
        else if ( strcmp("referencedTransaction",field) == 0 )
            strcpy(ReferencedTransaction,argstr);
        else if ( strcmp("subtype",field) == 0 )
            strcpy(Subtype,argstr);
        else if ( strcmp("message",field) == 0 )
            strcpy(Message,argstr);
        else if ( strcmp("senderPublicKey",field) == 0 )
            strcpy(SenderPublicKey,argstr);
        else if ( strcmp("type",field) == 0 )
            strcpy(Type,argstr);
        else if ( strcmp("deadline",field) == 0 )
            strcpy(Deadline,argstr);
        else if ( strcmp("sender",field) == 0 )
            strcpy(Sender,argstr);
        else if ( strcmp("recipient",field) == 0 )
            strcpy(Recipient,argstr);
        else if ( strcmp("amount",field) == 0 )
            strcpy(Amount,argstr);
        else if ( strcmp("bytes",field) == 0 )
            strcpy(Bytes,argstr);
        else if ( strcmp("transaction",field) == 0 )
            strcpy(Transaction,argstr);
    }
    if ( field == 0 )
    {
        //printf("successflag.%d amount.%d resultstr.%s\n",successflag,amount,resultstr);
        if ( successflag > 0 )// || (successflag == 1 && amount != 0) )
            retstr = resultstr;
        resultstr = 0;
        amount = 0;
        successflag = 0;
        return(retstr);
    }
    else if ( strcmp(keyname,field) == 0 )
    {
        resultstr = arg;
        successflag = 1;
    }
    else
    {
#if NODESERVER == 0
        if ( strcmp("numberOfUnlockedAccounts",field) == 0 )
        {
            isforging = atoi(argstr);
            if ( isforging > 0 )
            {
                //Forged_minutes++;
                //printf("FORGING.%d ",Forged_minutes);
            }
        }
        //printf("[%s %s] success.%d\n",field,argstr,successflag);
#endif
    }
    return(retstr);
}

char *finalize_processor(funcp processor)
{
    int n;
    char *resultstr,*token;
    resultstr = (*processor)(0,0,0);
    if ( resultstr != 0 )
    {
        n = (int)strlen(resultstr);
        if ( n > 0 )
        {
            token = malloc(n+1);
            memcpy(token,resultstr,n);
            token[n] = 0;
            //printf("return (%s)\n",token);
        }
        else token = 0;
        return(token);
    }
    else return(0);
}

char *parse_NXTresults(blockiterator iterator,char *keyname,char *arrayfield,funcp processor,char *results,long len)
{
    int j,n;
    double amount;
    char *token,*valuestr,*field,*fieldvalue,*blockidstr;
    if ( results == 0 )
        return(0);
    reset_strings();
    (*processor)(0,0,0);
    len = stripstr(results,len);
    if ( len == 0 )
        return(0);
    else if ( results[0] == '{' )
        valuestr = results+1;
    else valuestr = results;
    n = 0;
    fieldvalue = valuestr;
    while ( valuestr[0] != 0 && valuestr[0] != '}' )
    {
        fieldvalue = decode_json(&field,valuestr);
        if ( fieldvalue == 0 || field == 0 )
        {
            printf("field error.%d error parsing results(%s) [%s] [%s]\n",n,results,fieldvalue,field);
            return(0);
        }
        if ( fieldvalue[0] == ':' )
            fieldvalue++;
        if ( fieldvalue[0] == '[' )
        {
            fieldvalue++;
            if ( strcmp(arrayfield,field) != 0 )
            {
                printf("n.%d unexpected nested fieldvalue0 %s for field %s\n",n,fieldvalue,field);
                return(0);
            }
            while ( fieldvalue[0] != ']' )
            {
                j = normal_parse(&amount,fieldvalue,0);
                if ( j <= 0 )
                {
                    printf("decode_json error (%s)\n",fieldvalue);
                    return(0);
                }
                if ( iterator != 0 )
                {
                    char argstr[64],i,j;
                    i = 0;
                    if ( fieldvalue[i] == '"' )
                        i++;
                    for (j=0; i<64; i++)
                        if ( (argstr[j++]= fieldvalue[i]) == ',' || fieldvalue[i] == '"' )
                            break;
                    argstr[j] = 0;
                    blockidstr = fieldvalue + (fieldvalue[0]=='"'?1:0);
                    (*iterator)(blockidstr);
                    //printf("(%s.%d %s)\n",field,n,blockidstr);
                }
                fieldvalue += j;
                if ( fieldvalue[0] == ',' )
                    fieldvalue++;
                n++;
            }
            valuestr = ++fieldvalue;
            if ( valuestr[0] == ',' )
                valuestr++;
            //printf("<%s> ",valuestr);
        }
        else
        {
            if ( strcmp(field,"attachment") == 0 )
            {
                if ( strncmp(fieldvalue,"{\"asset\":\"",strlen("{\"asset\":\"")) == 0 )
                {
                    field = "asset";
                    fieldvalue += strlen(field)+4;
                }
                else if ( strncmp(fieldvalue,"{\"message\":\"",strlen("{\"message\":\"")) == 0 )
                {
                    field = "message";
                    fieldvalue += strlen(field)+4;
                }
                else if ( strncmp(fieldvalue,"{\"description\":\"",strlen("{\"description\":\"")) == 0 )
                {
                    field = "description";
                    fieldvalue += strlen(field)+4;
                    printf("FIELD++.(%s) -> fieldvalue.(%s)\n",field,fieldvalue);
                }
            }
            if ( (j= normal_parse(&amount,fieldvalue,0)) < 0 )
            {
                printf("n.%d error processing field %s value %s j.%d\n",n,field,fieldvalue,j);
                return(0);
            }
            if ( fieldvalue[0] == '"' )
                token = fieldvalue+1;
            else token = fieldvalue;
            //printf("field.(%s) token.(%s) key.(%s)\n",field,token,keyname);
            (*processor)(field,token,keyname);
            valuestr = &fieldvalue[j];
            if ( valuestr[0] == '}' )
                valuestr++;
            if ( valuestr[0] != 0 )
                valuestr++;
            //printf("NEW VALUESTR(%s)\n",valuestr);
        }
        n++;
    }
    return(finalize_processor(processor));
}

void set_standard_AM(struct gateway_AM *ap,int funcid,char *nxtaddr,int timestamp)
{
    memset(ap,0,sizeof(*ap));
    ap->sig = GATEWAY_SIG;
    ap->funcid = funcid;
    ap->coinid = COINID;
    ap->timestamp = timestamp;
    ap->info = GATEWAYS[GATEWAYID];
    strcpy(ap->NXTaddr,nxtaddr);
}

char *submit_AM(struct gateway_AM *ap)
{
    int len,deadline = 1440;
    char hexbytes[4096],cmd[5120],*jsonstr,*reftxid = 0,*retstr = 0;
    len = (int)sizeof(*ap);
    if ( len > 1000 || len < 1 )
    {
        printf("issue_sendMessage illegal len %d\n",len);
        return(0);
    }
    // jl777: here is where the entire message should be signed;
    memset(hexbytes,0,sizeof(hexbytes));
    len = init_hexbytes(hexbytes,(void *)ap,len);
    sprintf(cmd,"%s=sendMessage&secretPhrase=%s&recipient=%s&message=%s&deadline=%u%s&fee=1",NXTSERVER,NXTACCTSECRET,NXTISSUERACCT,hexbytes,deadline,reftxid!=0?reftxid:"");
    jsonstr = issue_curl(cmd);
    if ( jsonstr != 0 )
    {
        retstr = parse_NXTresults(0,"transaction","",results_processor,jsonstr,strlen(jsonstr));
        free(jsonstr);
    }
    return(retstr);
}

char *AM_get_coindeposit_address(int timestamp,char *nxtaddr)
{
    struct gateway_AM AM;
    set_standard_AM(&AM,GET_COINDEPOSIT_ADDRESS,nxtaddr,timestamp);
    
    return(submit_AM(&AM));
}

char *AM_set_coinwithdraw_address(int timestamp,char *nxtaddr,char *withdrawaddr)
{
    struct gateway_AM AM;
    set_standard_AM(&AM,SET_COINWITHDRAW_ADDRESS,nxtaddr,timestamp);
    strcpy(AM.coinaddr,withdrawaddr);
    return(submit_AM(&AM));
}

int is_gateway_related(struct gateway_AM *gp)
{
    if ( gp->sig == GATEWAY_SIG )
        return(1);
    else return(0);
}

char WITHDRAWADDR[64],DEPOSITADDR[64],NXTADDR[64];

void update_gateway(int timestamp,struct gateway_AM *ap)
{
    char *depositaddr;
    if ( ap != 0 && ap->coinid == COINID && strcmp(NXTADDR,ap->NXTaddr) == 0 )
    {
        printf("timestamp.%d RTflag.%d got funcid.(%c) gateway.%d\n",timestamp,RTflag,ap->funcid,ap->gatewayid);
        switch ( ap->funcid )
        {
            case SET_COINWITHDRAW_ADDRESS:
                printf("set %s withdraw address to %s\n",ap->NXTaddr,ap->coinaddr);
                strcpy(WITHDRAWADDR,ap->coinaddr);
                break;
            case BIND_DEPOSIT_ADDRESS: // from binding gateway's AM broadcast
                printf("deposit address for %s is %s\n",ap->NXTaddr,ap->coinaddr);
                strcpy(DEPOSITADDR,ap->coinaddr);
                break;
        }
    }
}

int process_NXTtransaction(char *nxt_txid)
{
    static int timestamp;
    struct gateway_AM AM;
    char cmd[4096],*jsonstr,*retstr;
    int gatewayid,n,tmp,flag = 0;
    sprintf(cmd,"%s=getTransaction&transaction=%s",NXTSERVER,nxt_txid);
    jsonstr = issue_curl(cmd);
    if ( jsonstr != 0 )
    {
        //printf("getTransaction.%s %s\n",nxt_txid,jsonstr);
        retstr = parse_NXTresults(0,"message","",results_processor,jsonstr,strlen(jsonstr));
        if ( retstr != 0 )
        {
            tmp = atoi(Timestamp);
            if ( tmp > timestamp )
                timestamp = tmp;
            
            n = (int)strlen(Message) / 2;
            memset(&AM,0,sizeof(AM));
            decode_hex((void *)&AM,n,Message);
            //for (int j=0; j<n; j++)
            //    printf("%02x",((char *)&AM)[j]&0xff);
            //printf("timestamp.%s %d\n",Timestamp,timestamp);
            if ( is_gateway_related(&AM) != 0 )
            {
                flag++;
                update_gateway(timestamp,&AM);
            }
            free(retstr);
        }
        free(jsonstr);
    }
    return(timestamp);
}

char *issue_getState()
{
    char cmd[4096],*jsonstr,*retstr = 0;
    sprintf(cmd,"%s=getState",NXTSERVER);
    jsonstr = issue_curl(cmd);
    if ( jsonstr != 0 )
    {
        //printf("\ngetState.(%s)\n\n",jsonstr);
        retstr = parse_NXTresults(0,"lastBlock","",results_processor,jsonstr,strlen(jsonstr));
        free(jsonstr);
    }
    return(retstr);
}

char *issue_getBlock(blockiterator arrayfunc,char *blockidstr)
{
    //int i,num;
    char cmd[4096],*jsonstr,*retstr = 0;
    sprintf(cmd,"%s=getBlock&block=%s",NXTSERVER,blockidstr);
    jsonstr = issue_curl(cmd);
    if ( jsonstr != 0 )
    {
        //printf("\ngetBlock.%s %s\n",blockidstr,jsonstr);
        retstr = parse_NXTresults(arrayfunc,"numberOfTransactions","transactions",results_processor,jsonstr,strlen(jsonstr));
        free(jsonstr);
    }
    return(retstr);
}

void gateway_client(char *nxtaddr,char *withdrawaddr)
{
    static char lastblock[256] = "";
    int timestamp = 0;
    char *blockidstr,*depositaddr = 0;
    printf("Get deposit address for %s and set withdraw address to %s\n",nxtaddr,withdrawaddr);
    AM_get_coindeposit_address(timestamp,nxtaddr);
    AM_set_coinwithdraw_address(timestamp,nxtaddr,withdrawaddr);
    while ( depositaddr == 0 )
    {
        blockidstr = issue_getState();
        //printf("block.(%s) vs lastblock.(%s)\n",blockidstr,lastblock);
        if ( blockidstr != 0 && strcmp(blockidstr,lastblock) != 0 )
        {
            issue_getBlock((blockiterator)process_NXTtransaction,blockidstr);
            printf("NEW block.(%s) vs lastblock.(%s)\n",blockidstr,lastblock);
            strcpy(lastblock,blockidstr);
        }
        if ( WITHDRAWADDR[0] != 0 && DEPOSITADDR[0] != 0 )
            break;
        sleep(POLL_SECONDS);
    }
}

int main(int argc, const char * argv[])
{
    if ( argc < 4 )
    {
        printf("usage: %s <NXT addr> <NXT acct passkey> <coin withdraw addr>\n",argv[0]);
        return(-1);
    }
    strcpy(NXTADDR,argv[1]);
    strcpy(NXTACCTSECRET,argv[2]);
    strcpy(WITHDRAWADDR,argv[3]);
    gateway_client(NXTADDR,WITHDRAWADDR);
    printf("\n\n>>>>> deposit address for %s is %s and withdraw address is %s\n",NXTADDR,DEPOSITADDR,WITHDRAWADDR);
    return(0);
}


http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
jl777
Legendary
*
Offline Offline

Activity: 1176
Merit: 1134


View Profile WWW
February 23, 2014, 10:04:40 PM
 #36710

Updated text and images: http://www.mynxt.org/beta/features.html

Still beta, would like to get feedback!

Nice.

From your site:
Quote
Zerocoin Functionality
Three words: Gonna be huge!
Simply speaking, you will be able to send and receive NXT with complete anonymity. Sometimes called "Mixing Service", this allows people all over the world to freely exchange goods & services without the fear of policital or other persecution because of backtracing transactions.

Just a nit-pick: a mixing service and zerocoin, while they have the same goal of achieving anonymity in trasactions, are conceptually different.

A mixing service is like if someone is following you and you try to lose them by running into a large crowd.

Zerocoin is like losing them by teleporting to a new destination.


Perfect way of describing zerocoin! NXTcash team has made an internal release and waiting for zeronet (testnet for NXTcash) to be setup. Hopefully, by next week we can experiment with teleportation.

Even with a small number of users, as the transaction counts go up, there should be no more than random statistical chance of determining the correct path. Havent done the calculations, but I think it rapidly becomes impractical to do any sort of meaningful correlation.

James
Did you speak with Edward?

Muchas gracias, amigo 7017504655955743955.

στην υγειά σας Smiley
Ellinas re??
The ball is in his court. I havent heard back any complaints, so I am assuming it is just a matter of getting everything setup. Maybe the problem is that there is a new simplified genesis block and we are using old source as base. He might have to merge the original genesis block into our release, or our release into more recent version.

Not sure. I am assuming no news is good news. Just waiting for msg from him that zeronet is ready to test.

James
I doubt he has time to see this atm - he gives 2 interviews this week...
If he cant get it done by Wed, I will figure out how to set one up on a few of my servers

http://www.digitalcatallaxy.com/report2015.html
100+ page annual report for SuperNET
pinarello
Full Member
***
Offline Offline

Activity: 266
Merit: 100


NXT is the future


View Profile
February 23, 2014, 10:05:31 PM
 #36711

I heard from Lisa Yin (PHD MIT Crypto) about doing our Crypto audit, but she just wanted a specific overview of what we need.  Can someone PM me with the info please.  Thanks.


That would be great, she cracked SHA1 scheme.

Yeah, just need someone to send me a detailed description (with links) to what we need for the audit. I've actually been waiting for someone to send me that for about 3 weeks, but no one has yet.

CfB,and or BCNext

can you please give this top priority?

POPPP
Jr. Member
*
Offline Offline

Activity: 54
Merit: 10


View Profile
February 23, 2014, 10:05:46 PM
 #36712

RESUME

•   Everyone , NEW VOTE plz about fees reconsider these last pages
I change my vote 0.1 to 0.01 like  jl777.

•   Plz make possible to allow multisend features as buybitcoinscanada request for easy donation by whales

It would be nice if there was a multisend feature in the client. If I could line up all the addresses of hard working nxt'ers and one-click send a given amount, say 1000nxt (as in each would get 1000) I'd be very inclined to give more regular donations in just this way. Sitting at the computer and putting in 50 or how ever many transactions is a PITA.

grex
Full Member
***
Offline Offline

Activity: 179
Merit: 100


View Profile
February 23, 2014, 10:12:03 PM
 #36713

Anyone tried 0.8.0e on the RasPi?
Come-from-Beyond
Legendary
*
Offline Offline

Activity: 2142
Merit: 1010

Newbie


View Profile
February 23, 2014, 10:24:32 PM
 #36714

CfB,and or BCNext

can you please give this top priority?

We need someone to say if Crypto and Curve25519 code doesn't have bugs/flaws.
chanc3r
Sr. Member
****
Offline Offline

Activity: 952
Merit: 253



View Profile
February 23, 2014, 10:26:08 PM
 #36715

Just received...



On them adding NXT..
Thanks for finding the time to help them whoever the 'dev' was...Smiley

ZeroTheGreat
Hero Member
*****
Offline Offline

Activity: 644
Merit: 500


View Profile
February 23, 2014, 10:27:05 PM
 #36716

Problem accessing /admin.html.
- use http://localhost:7876/admin.html

we can find answers for almost all questions by reviewing the last Jean-Luck's posts.
Thx, may be I missed it yesterday.
ZeroTheGreat
Hero Member
*****
Offline Offline

Activity: 644
Merit: 500


View Profile
February 23, 2014, 10:46:02 PM
 #36717

Can you please ask BCNext his opinion on implementing a social credit system?  Such a system would allow Nxt to be used as a platform for LETSystems.

Explain the system here.

A social credit system allows users to establish credit lines between each other for a certain asset.  Debt can be transfered down a chain of credit lines.

For example, Alice trusts Bob for $10 and Bob trust Charlie for $10.  Neither Charlie or Bob have $10, but Alice does have $10.  Even though Charlie doesn't have $10, he does have a credit line Bob gave him for $10.  Charlie spends $10 and now has a -$10 balance with Bob.  Bob didn't have the $10 to give to Charlie, but Bob did have a credit line for $10 that Alice granted him.  Bob's balance still $0, because he owes Alice $10 but Charlie owes him $10.  Alice now has  a $0 balance, because Bob took her $10.

LETSystems are interest free local credit systems.  Each local credit network has a central bookkeeper who establishes new credit lines and keeps track of users' balances.  When a new member joins, they establish a credit line to the bookkeeper and the bookkeeper grants them a credit line.  The credit line the bookkeeper establishes with them is the amount of credit they have with the community.  This is the amount the new member is allowed to owe the other members of the network.  The credit line the new member grants the bookkeeper is the amount the community is allowed to owe him.  Members of the network trade goods or services for credits.  The net credit on the network is always zero.

For example, Bob, Charlie and Alice are members of the local LETSystem.  Bob needs to go on a job interview, but he can't because he has to watch his children.  Bob is broke, but he needs a babysitter.  Bob knows Alice babysits and is part of his LETSystem.  Alice babysits for Bob and he pays her $10 credit.  Alice now has a +$10 community credit and Bob now has a -$10 community credit.  Charlie's car is broken and he doesn't have any money to repair it.  Bob repairs Charlie's car for $40.  Bob now has a community credit of +$30 and Charlie now owes the community $40.  Bob gets paid even though Charlie didn't have the money.

These credit systems allow communities with unused labor to revitalize themselves without external capital.
It can be new, non-anonymous blockchain, where everone allowed to input own line (can be multicurrency) to existing acc/accs (make a "deposit") and to create broadcasting debt. Each new acc'd be quilified to participate by some form of quorum of existing accs. And forgers here (accs, willing to forge) will independently check zero-sum of system and non-overflowing of each opened line, generating blocks with 1/nodes chances. M? Cos it's trustful system, it'll look much more like Ripple than Nxt.
EvilDave
Hero Member
*****
Offline Offline

Activity: 854
Merit: 1001



View Profile
February 23, 2014, 10:50:05 PM
 #36718

@ Salsacz: I would like to officially request 15K NXT from the conference support section of your marketing fund.   I intend to use these funds to print up handout materials for the Texas Bitcoin Conference, with leftover copies from Austin sent on to NXT reps for the San Francisco, New York and Toronto Bitcoin conventions in the next few weeks.  My NXT account for receiving these funds would be 16092180239932658439. 

I have previously posted the proposed text for this brochure here for review, and have incorporated suggested changes.  See https://bitcointalk.org/index.php?topic=345619.msg5245021#msg5245021.

I have designed a full color NXT trifold brochure that I would like to have printed in Austin and pickup there on Tuesday evening March 4.   I have priced it with CC West Printing Office (http://ccwestprinting.com) in Austin and their price is 2000 for $526 or 5000 for $723.  Their price is so good for 5000 that I want to order that many.  Turn time is 3 days, so I have to get the final copy to them Thursday Feb 13.?  que?   I will post a PDF receipt for this marketing expenditure on the site here as part of an audit trail.

I will post a link to a PDF here on the site of the final trifold brochure copy I send CC West before I go to Austin so anybody can download it and use it locally.

My intention is to put one of these trifold brochures on every chair in the three speaker areas at the Texas Bitcoin Conference early in the morning on March 6, then go around at the end of the day and pick up any leftovers.   I will then mail unused NXT brochures to whoever is going to the San Francisco conference for their use.  They can keep mailing these brochures forward to each NXT rep at each upcoming conference until they are gone.    Then maybe we can print more, we'll see.

Thanks, Salsa!

rickyness....did a quick proof read of your brochure text and PM'ed it to ya.
I'm on board for any more proof reading u might need....but, if you intend to use these brochures for a while, we need to be sure that they are fairly future-proof, so more proofreaders would also be a good idea.

Nulli Dei, nulli Reges, solum NXT
Love your money: www.nxt.org  www.ardorplatform.org
www.nxter.org  www.nxtfoundation.org
S3MKi
Legendary
*
Offline Offline

Activity: 1540
Merit: 1016



View Profile
February 23, 2014, 10:54:21 PM
 #36719

Nxt is 3 months
ZeroTheGreat
Hero Member
*****
Offline Offline

Activity: 644
Merit: 500


View Profile
February 23, 2014, 10:54:39 PM
 #36720

Sorry for being critical, but I'm not really convinced this system improves the situation of poor people.
Yeah, it often looks fishy at first look, but the key is: there're people in the world who can open private credit lines for "1-hand"-trusted. Those p2p lines can be combined into worldwide system of helping.
Pages: « 1 ... 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 [1836] 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 ... 2557 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!