GithubHelp home page GithubHelp logo

outlierventures / buycopoc Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 1.0 9.69 MB

BuyCo.io Proof of Concept on an Ethereum blockchain

License: Apache License 2.0

JavaScript 64.69% HTML 5.26% TypeScript 28.22% Shell 0.26% CoffeeScript 0.14% CSS 1.27% Dockerfile 0.17%

buycopoc's People

Contributors

aronvanammers avatar bartvanderwal avatar zinchenko avatar

Watchers

 avatar  avatar  avatar

Forkers

cleancoindev

buycopoc's Issues

Proposal cache: updating cache stalls

Configuration of @bartvanderwal:

POST /api/data/cache/update starts, but stalls with output like this:

Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0x7fa5cf6626047f083649eb67bb6f7972b990e6f3
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0x99c0ef82fd557903e9535981abe8cf52c8ca69f6
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0x33dedf368961d6a891406eae04a894859d7d66be
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0xdd00e421c8f26bf3ec52925a3c447293e62b61ec
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0x55e99087091033e32c96462f324f6f93944ba530
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0xac078a50d22f48f93289aef4256ecfb71d8d759c
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0x2b77bebbfc8d16c1fafb108ddb94971d15252376
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0xd0177e53f868ba2afc216ae520968154c30678f9
Mon Feb 01 2016 17:31:30 GMT+0100 (W. Europe Standard Time) Got contract object at 0xda7915faa5ccd1fd0a17ba6b9ead04d74df6a037

Add favicon

Please add a favicon just like for the website.

Filtering: max price should be less than, not equals

Filtering for max price works, but it only finds proposals with exactly that price. The parameters are passed to Mongo as {maxPrice: n} which makes it an "equals" filter. Should be "less or equal than" (see Mongoose shorthands for those kinds of queries).

Docker blockchain node: error, embark/install.sh corrupted

Aron@SuryaNamaskar MINGW64 /p/BuyCo/BuyCo/docker (development)
$ bash ./build-blockchain.sh
Sending build context to Docker daemon 26.11 kB
Step 1 : FROM ubuntu:14.04
 ---> e9ae3c220b23
Step 2 : MAINTAINER Aron van Ammers
 ---> Using cache
 ---> f78695e1864b
Step 3 : RUN apt-get update
 ---> Using cache
 ---> 19e168643a5b
Step 4 : RUN apt-get install -y curl git build-essential python screen
 ---> Using cache
 ---> dc827b0c4c5b
Step 5 : RUN curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
 ---> Using cache
 ---> 77d86cfc6b10
Step 6 : RUN apt-get install -y nodejs
 ---> Using cache
 ---> ece5a49199b5
Step 7 : RUN npm install -g embark-framework grunt-cli bower tsd typescript
 ---> Using cache
 ---> fb95c899c71a
Step 8 : RUN curl https://install-geth.ethereum.org -L | sed 's/\twait_for_user/\techo "Skipping user confirmation"\n#wait_for_user/g' > installer_geth.sh && bash installer_geth.sh
 ---> Using cache
 ---> 40bd6641f4e0
Step 9 : RUN apt-get install -y solc
 ---> Using cache
 ---> d7a65fcf3db2
Step 10 : RUN mkdir /root/.ethash
 ---> Using cache
 ---> 9daf40f2b119
Step 11 : RUN geth makedag 0 /root/.ethash
 ---> Using cache
 ---> ed771f0bb6f6
Step 12 : COPY embark /embark
 ---> 3c1a99f860d8
Removing intermediate container 5ab77e502dff
Step 13 : WORKDIR /embark
 ---> Running in 6dcd44b71c2d
 ---> 285ade23f09b
Removing intermediate container 6dcd44b71c2d
Step 14 : RUN sh ./install.sh
 ---> Running in 974309c6a5ed
: not foundh: 2: ./install.sh:
: not foundh: 5: ./install.sh:

Usage: npm <command>

where <command> is one of:
    access, add-user, adduser, apihelp, author, bin, bugs, c,
    cache, completion, config, ddp, dedupe, deprecate, dist-tag,
    dist-tags, docs, edit, explore, faq, find, find-dupes, get,
    help, help-search, home, i, info, init, install, issues, la,
    link, list, ll, ln, login, logout, ls, outdated, owner,
    pack, ping, prefix, prune, publish, r, rb, rebuild, remove,
    repo, restart, rm, root, run-script, s, se, search, set,
    show, shrinkwrap, star, stars, start, stop, t, tag, team,
    test, tst, un, uninstall, unlink, unpublish, unstar, up,
    update, upgrade, v, verison, version, view, whoami

npm <cmd> -h     quick help on <cmd>
npm -l           display full usage info
npm faq          commonly asked questions
npm help <term>  search for help on <term>
npm help npm     involved overview

Specify configs in the ini-formatted file:
    /root/.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config

[email protected] /usr/lib/node_modules/npm
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended
 to double check and reset permissions for sensitive files and directories.
The command '/bin/sh -c sh ./install.sh' returned a non-zero code: 1

When seller offers price < 50% of max price, payments can't complete

Steps:

  1. Create a BuyCo with a max product price price N, say N = 10 GBP
  2. Make an offer with a price of < 0.5N, say 4 GBP, minimum 1 product
  3. Back the BuyCo for 1 product
  4. Close the BuyCo
  5. Report successful delivery
  6. Process payments several times

Expected result: buyer paid 0.50 pledge payment, 4.50 start payment, is refunded 0.50 at end payment for a total payment of 4 GBP. Seller receives start payment of 2.00 GBP and end payment of 2.00 GBP.

Result: buyer paid 0.50 pledge payment, 4.50 start payment. End payment is not refunded because there's no functionality for this. Seller receives start payment of 2.00 GBP, but no end payment, because this is dependent on the buyer payments being complete (and they're not because of no end payment refund).

Strategy to solve: the negative end payment is already computed correctly, but not handled. It should be handled in fulfilmentService. Likely no further changes necessary.

Status 416 RangeNotSatisfiableError in logs (non-critical)

Saw this on the console of the live dev version:

    GET / 416 1.704 ms - 380
    RangeNotSatisfiableError: Range Not Satisfiable
        at SendStream.error (/app/node_modules/express/node_modules/send/index.js:245:31)
        at SendStream.send (/app/node_modules/express/node_modules/send/index.js:564:19)
        at /app/node_modules/express/node_modules/send/index.js:669:12
        at FSReqWrap.oncomplete (fs.js:95:15)

Development blockchain node gives "Exceeds block gas limit" on contract deployment

The development blockchain node at http://blockstars.io:9001 currently gives an error "Exceeds block gas limit" when the ProposalRegistry contract is deployed. This worked well before.

Hypothesis: the gas limit has decreased after a certain block number. Up to now 2500 blocks have been generated.

We use the Embark framework to start the blockchain. I have heard other people in the Embark community mention gas problems. That could be about this.

BigNumber Error: new BigNumber() not a base 16 number

    Mon Feb 01 2016 20:44:57 GMT+0000 (UTC) Got contract object at 0xdfc0a7de6896019d9158a958553df1db97fe01a0
    /app/node_modules/web3/node_modules/bignumber.js/bignumber.js:1209
                throw error;
                      ^
    BigNumber Error: new BigNumber() not a base 16 number:
        at raise (/app/node_modules/web3/node_modules/bignumber.js/bignumber.js:1177:25)
        at /app/node_modules/web3/node_modules/bignumber.js/bignumber.js:1165:33
        at new BigNumber (/app/node_modules/web3/node_modules/bignumber.js/bignumber.js:212:28)
        at formatOutputString [as _outputFormatter] (/app/node_modules/web3/lib/solidity/formatters.js:217:19)
        at /app/node_modules/web3/lib/solidity/type.js:235:25
        at SolidityType.decode (/app/node_modules/web3/lib/solidity/type.js:236:11)
        at /app/node_modules/web3/lib/solidity/coder.js:217:29
        at Array.map (native)
        at SolidityCoder.decodeParams (/app/node_modules/web3/lib/solidity/coder.js:216:26)
        at SolidityFunction.unpackOutput (/app/node_modules/web3/lib/web3/function.js:90:24)
        at Object.callback (/app/node_modules/web3/lib/web3/function.js:118:30)
        at /app/node_modules/web3/lib/web3/method.js:165:21
        at /app/node_modules/web3/lib/web3/requestmanager.js:104:9
        at request.onreadystatechange (/app/node_modules/web3/lib/web3/httpprovider.js:114:13)
        at dispatchEvent (/app/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:25)
        at setState (/app/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:610:14)
        at IncomingMessage.<anonymous> (/app/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:447:13)
        at IncomingMessage.emit (events.js:129:20)
        at _stream_readable.js:908:16
        at process._tickCallback (node.js:355:11)

Proposal page: offer list to be styled

This was one of the (small list of) mock items I had committed yesterday, but forgot to merge.

The offer list should show some more data. "This is the accepted offer" can be any way to signify the accepted offer.

2016-02-08 03_33_23-buyco proof of concept

Docker server container: Non-critical error message on install

This message appears on every install run. Doesn't seem to have any consequences, but is confusing.

buyco_server_development
Running install...
-
> [email protected] install /app/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:116:14)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:49:11
gyp ERR! stack     at F (/usr/lib/node_modules/npm/node_modules/which/which.js:78:16)
gyp ERR! stack     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:82:29)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/which/which.js:93:16
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:95:15)
gyp ERR! System Linux 3.19.0-33-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/mongodb/node_modules/kerberos
gyp ERR! node -v v0.12.9
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
[email protected] node_modules/web3plus

Test discovery in NTVS fails with "TypeError: Cannot read property 'replace' of undefined"

Test discovery gives an output like this:

------ Discover test started ------
Processing:  <lot of *.js** files>...
Test discovery error: [TypeError: Cannot read property 'replace' of undefined] in C:\Code\ov\BuyCo\test\sellers\testPersistance.js
Test discovery error: [TypeError: Cannot read property 'replace' of undefined] in C:\Code\ov\BuyCo\test\sellers\testUserPersistance.js
...<andsoon>
Processing finished for framework of Mocha
Discovered 0 testcases.
========== Discover test finished: 0 found (0:00:01.4378126) ==========

Tests are discovered and run fine on the command line with npm test. There's no property "replace" in any of these test files. What's going on?

ensureMinBalance: called twice, so new address gets 2x min balance

The function to ensure users have a minimum balance of "ether" is called twice. Once on loading accounts, once on saving them.

Cause: Because the load function also calls the save function and this happens before any transactions are completed, the second time that ensureMinBalance is called it still sees a low balance, and sends another transaction.

Add proposal: "Insufficient funds for gas * price + value", while acct balance is 10 ether

When adding a proposal I get the error "Insufficient funds for gas * price + value".

2016-02-13 21_25_16-buyco proof of concept

The user has a single blockchain account 0x1d81e8e5d60a5a4d812a9d3a84f0eb1ff36a0ff1 which is used for this tx.

web3.eth.getBalance("0x1d81e8e5d60a5a4d812a9d3a84f0eb1ff36a0ff1").toNumber()
10476211699622871000

The gas limit of 2500000 * gas price is about 100 times less than that.

client proposalController: Unreachable code detected

Working on #79. Did a fresh npm install. grunt build now gives the below. Maybe triggered by a higher typescript version after updating the references, it uses 1.8.2 now.

Aron@SuryaNamaskar MINGW64 /p/BuyCo/buyco (development)
$ grunt
Running "ts:build" (ts) task
Compiling...
Using tsc v1.8.2
client/js/proposals/proposalController.ts(384,37): error TS7027: Unreachable code detected.

>> 1 non-emit-preventing type warning
>> Error: tsc return code: 2
Warning: Task "ts:build" failed. Use --force to continue.

Aborted due to warnings.

Backing BuyCo: backer not added in contract

Environment: local blockchain node and MongoDB.

On various occasions, when adding a backer to a proposal, the transaction was processed, but the new backer was not added to the collection of backers of the proposal. So much so that the unit test for ProposalController to add a backing failed.

This seems like a "not enough gas" error, but no such error was thrown.

Filtered proposals

See #5@BW

  • 1. Reset registry to fix proposals (POST https://selfsigned.blockstars.io:4126/api/migration/update)
  • 2. And/or mock client side proposal data (ngMockE2E, proposalResourceMock) to see proposals
  • 3. Make unit tests/spec from start for controller, using mock (ngMock)
  • 4. Make UI for selecting filter criterium (dropdown list? or excel like) and showing filtered things
  • 5. Implement CRUD func. for proposals in Mongoose (later cache for blockchain registry) --> cache made by @AronVanAmmers
  • 6. Connect frontend to MongoDB

Development blockchain node shows warning that blockchain data dir not created

This is a workaround that should only activate on Windows systems, and only on first run. However on dev blockchain node on latte.servers.blockstars.io it is shown systematically.

I0114 16:15:48.507345      51 ethash.go:220] Generating DAG for epoch 0 (size 1073739904) (0000000000000000000000000000000000000000000000000000000000000000)
I0114 16:15:49.906532      51 ethash.go:237] Done generating DAG for epoch 0, it took 1.399182354s
I0114 16:15:58.568435      51 worker.go:349] �  Mined block (#2539 / 446491b3). Wait 5 blocks for confirmation
I0114 16:15:58.568653      51 worker.go:570] commit new work on block 2540 with 0 txs & 0 uncles. Took 192.99µs
I0114 16:15:58.568848      51 worker.go:570] commit new work on block 2540 with 0 txs & 0 uncles. Took 127.631µs
== No transactions left. Stopping miner...
I0115 02:15:48.506792      51 backend.go:591] checking DAG (ethash dir: /root/.ethash)
I0115 12:15:48.506882      51 backend.go:591] checking DAG (ethash dir: /root/.ethash)
I0115 22:15:48.506988      51 backend.go:591] checking DAG (ethash dir: /root/.ethash)
I0116 08:15:48.507087      51 backend.go:591] checking DAG (ethash dir: /root/.ethash)
I0116 18:15:48.507228      51 backend.go:591] checking DAG (ethash dir: /root/.ethash)
^CBlockchain dapp data dir not created. You are on Windows, right? Trying again...
>> Tasks directory "tasks" not found.
>> Local Npm module "grunt-cli" not found. Is it installed?

Running "blockchain:development" (blockchain) task
^CBlockchain nodes dir not created. You are on Windows, right? Trying again...
^CCommand finished. Press enter to continue. To inspect the container, try running docker exec -ti CONTAINER bash while it is still running and look around.
^C

Seller signup form: Error on ovMessage in console

On opening https://selfsigned.blockstars.io:4124/seller/signup I see the error below in the console. The form seems to work fine though. After Submit the message "You signed up as seller" appears fine (suggesting that the ovMessage seems to work).

Error: [$compile:nonassign] Expression 'undefined' used with directive 'ovMessage' is non-assignable!
http://errors.angularjs.org/1.4.9/$compile/nonassign?p0=undefined&p1=ovMessage
    at angular.js:68
    at parentSet (angular.js:9092)
    at parentValueWatch (angular.js:9105)
    at Object.regularInterceptedExpression (angular.js:14646)
    at Scope.$digest (angular.js:16087)
    at Scope.$apply (angular.js:16359)
    at done (angular.js:10791)
    at completeRequest (angular.js:10989)
    at XMLHttpRequest.requestLoaded (angular.js:10930)

Console error on login screen

I've been getting a console message on the login screen.

TypeError: Cannot read property 'accessToken' of undefined

It doesn't really result in functional errors, but it's easy to fix, so I will to have a clean console where any actual new bugs will be more visible.
image

Crash on "Invalid continuation byte", some weird data in contract?

On my local blockchain node there's a proposal with address 0x84c3357ff8b7c205e7ac5393fcaba236ee323466. Getting the backers of this proposal leads to the exception below.

The exception happens in the internals of web3.js, so not much we can do about it other than catch the error.

I don't know what could be the cause; not much string data is stored with the backer. Only further circumstance was that the transaction for this backing was created from the client side, not the server side.

P:\BuyCo\BuyCo\node_modules\utf8\utf8.js:131
                throw Error('Invalid continuation byte');
                ^

Error: Invalid continuation byte
    at Error (native)
    at readContinuationByte (P:\BuyCo\BuyCo\node_modules\utf8\utf8.js:131:9)
    at decodeSymbol (P:\BuyCo\BuyCo\node_modules\utf8\utf8.js:160:16)
    at Object.utf8decode [as decode] (P:\BuyCo\BuyCo\node_modules\utf8\utf8.js:206:17)
    at Object.toUtf8 (P:\BuyCo\BuyCo\node_modules\web3\lib\utils\utils.js:112:17)
    at formatOutputString [as _outputFormatter] (P:\BuyCo\BuyCo\node_modules\web3\lib\solidity\formatters.js:218:18)
    at P:\BuyCo\BuyCo\node_modules\web3\lib\solidity\type.js:235:25
    at SolidityType.decode (P:\BuyCo\BuyCo\node_modules\web3\lib\solidity\type.js:236:11)
    at P:\BuyCo\BuyCo\node_modules\web3\lib\solidity\coder.js:217:29
    at Array.map (native)
    at SolidityCoder.decodeParams (P:\BuyCo\BuyCo\node_modules\web3\lib\solidity\coder.js:216:26)
    at SolidityFunction.unpackOutput (P:\BuyCo\BuyCo\node_modules\web3\lib\web3\function.js:90:24)
    at Object.callback (P:\BuyCo\BuyCo\node_modules\web3\lib\web3\function.js:118:30)
    at P:\BuyCo\BuyCo\node_modules\web3\lib\web3\method.js:165:21
    at P:\BuyCo\BuyCo\node_modules\web3\lib\web3\requestmanager.js:104:9
    at HttpProvider.sendAsync.request.onreadystatechange (P:\BuyCo\BuyCo\node_modules\web3\lib\web3\httpprovider.js:114:13)
    at exports.XMLHttpRequest.dispatchEvent (P:\BuyCo\BuyCo\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:591:25)
    at exports.XMLHttpRequest.setState (P:\BuyCo\BuyCo\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:610:14)
    at IncomingMessage.<anonymous> (P:\BuyCo\BuyCo\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:447:13)
    at emitNone (events.js:72:20)
    at IncomingMessage.emit (events.js:166:7)
    at endReadableNT (_stream_readable.js:893:12)

Version conflict in bower.json, angular 1.3.20 vs 1.4.8

With the current client/bower.json a bower install with an empty client/vendors folder gives this output:

Aron@SuryaNamaskar MINGW64 /p/BuyCo/buyco/client (development)
$ bower install
bower angular#~1.4.8            cached git://github.com/angular/bower-angular.git#1.4.8
bower angular#~1.4.8          validate 1.4.8 against git://github.com/angular/bower-angular.git#~1.4.8
bower angular-route#~1.3.13     cached git://github.com/angular/bower-angular-route.git#1.3.20
bower angular-route#~1.3.13   validate 1.3.20 against git://github.com/angular/bower-angular-route.git#~1.3.13
bower angular-resource#~1.3.13  cached git://github.com/angular/bower-angular-resource.git#1.3.20
bower angular-resource#~1.3.13         validate 1.3.20 against git://github.com/angular/bower-angular-resource.git#~1.3.13
bower bootstrap#~3.3.0                   cached git://github.com/twbs/bootstrap.git#3.3.6
bower bootstrap#~3.3.0                 validate 3.3.6 against git://github.com/twbs/bootstrap.git#~3.3.0
bower jquery#~2.0.2                      cached git://github.com/jquery/jquery-dist.git#2.0.3
bower jquery#~2.0.2                    validate 2.0.3 against git://github.com/jquery/jquery-dist.git#~2.0.2
bower angular-messages#~1.4.8            cached git://github.com/angular/bower-angular-messages.git#1.4.8
bower angular-messages#~1.4.8          validate 1.4.8 against git://github.com/angular/bower-angular-messages.git#~1.4.8
bower angular-sanitize#~1.3.13           cached git://github.com/angular/bower-angular-sanitize.git#1.3.20
bower angular-sanitize#~1.3.13         validate 1.3.20 against git://github.com/angular/bower-angular-sanitize.git#~1.3.13
bower angular-strap#~2.3.7               cached git://github.com/mgcrea/angular-strap.git#2.3.7
bower angular-strap#~2.3.7             validate 2.3.7 against git://github.com/mgcrea/angular-strap.git#~2.3.7
bower async#~0.9.2                       cached git://github.com/caolan/async.git#0.9.2
bower async#~0.9.2                     validate 0.9.2 against git://github.com/caolan/async.git#~0.9.2
bower font-awesome#~4.4.0                cached git://github.com/FortAwesome/Font-Awesome.git#4.4.0
bower font-awesome#~4.4.0              validate 4.4.0 against git://github.com/FortAwesome/Font-Awesome.git#~4.4.0
bower angular-mocks#~1.4.8               cached git://github.com/angular/bower-angular-mocks.git#1.4.8
bower angular-mocks#~1.4.8             validate 1.4.8 against git://github.com/angular/bower-angular-mocks.git#~1.4.8
bower bignumber.js#~2.0.3                cached git://github.com/MikeMcl/bignumber.js.git#2.0.8
bower bignumber.js#~2.0.3              validate 2.0.8 against git://github.com/MikeMcl/bignumber.js.git#~2.0.3
bower lodash#~3.10.1                     cached git://github.com/lodash/lodash.git#3.10.1
bower lodash#~3.10.1                   validate 3.10.1 against git://github.com/lodash/lodash.git#~3.10.1
bower underscore#~1.8.3                  cached git://github.com/jashkenas/underscore.git#1.8.3
bower underscore#~1.8.3                validate 1.8.3 against git://github.com/jashkenas/underscore.git#~1.8.3
bower angular#1.3.20                     cached git://github.com/angular/bower-angular.git#1.3.20
bower angular#1.3.20                   validate 1.3.20 against git://github.com/angular/bower-angular.git#1.3.20
bower                                 ECONFLICT Unable to find suitable version for angular

When no deal closed, pledge payments aren't refunded

Steps:

  1. Create a proposal with a max price N, say N = 10 GBP.
  2. Back it for 1 product.
  3. Close it.
  4. Process payments.

Expected result: pledge payment of 0.5 GBP taken. On process payment, refund of 0.5 GBP paid because no deal.

Result: the 0.5 GBP will be in escrow forever. The payout functionality is dependent on the start payment being paid, and there's no current handling of a refund.

Strategy to solve: drop requirement of start payment > 0 to execute a refund; implement refund.

In the contract, for each consecutive payment there's a check for the previous one. For the end payment of a backer it looks like this:

        else if (paymentType == 3) {
            // End payment

            // Validate that start payment was registered
            if(b.startPaymentAmount == 0) return;

            // Can only register once
            if(b.endPaymentAmount != 0) return;

            // Validate correct amount
            if(amount != getEndPaymentAmount(backerIndex))
                return;

            b.endPaymentTransactionID = transactionID;
            b.endPaymentAmount = amount;
        }

We could add an explicit case for "has accepted offer" && "is closed" in which case an end payment should always be executed. In that case a refund. Also, implement a test to handle this case.

grunt-wiredep and grunt-injector added to devDependencies but not installed on `npm install`

Aron@SuryaNamaskar MINGW64 /p/BuyCo/buyco (development)
$ npm install
npm WARN install Couldn't install optional dependency: Unsupported
npm WARN install Couldn't install optional dependency: Unsupported
npm WARN Invalid version: "0.2-alpha"
npm WARN EPEERINVALID [email protected] requires a peer of kerberos@~0.0 but none was installed.
npm WARN EPACKAGEJSON buyco No description
npm WARN EPACKAGEJSON buyco No repository field.
npm WARN EPACKAGEJSON buyco No README data
npm WARN EPACKAGEJSON buyco No license field.

Default configuration not working

The default configuration config.default.json is currently not working, because it refers to the domain name blockstars.io, which has migrated to another server. TODO: fix that, and ensure default config works.

Proposal contract: pledge payment tx ID saved as start payment

Transaction ID's for the payments of backers are registered in the Proposal contract. Currently we assume 3 types:

  1. Pledge (backer joined the BuyCo and paid 5%)
  2. Start (a deal has been made with a seller)\
  3. End (delivery has completed)

When registering a payment of type 1, the values for StartPayment are set, however those for the Pledge payment should be set.

See here in ProposalRegistry.sol.

Seller signup form readonly mode for existing sellers

In the seller signup form for when a user is already signed up as a selelr I made a readonly mode for better usability (with an Edit button to switch back to existing form).

It was drowned because of low prio with the switch to use separate branches instead of repos in GIT. But I'll add it since I already made it and it prevents unwanted edits (or rather the ambiguity of 'have I changed anything?').

Error loading blockchain account, field "s" is 31 bytes and should be 32

Not reproducible, logging issue for later analysis. I've had a situation where ethereumjs-accounts couldn't unlock one of my blockchain accounts. It logged an error about a variable named "s" being 31 bytes, while it should be 32. In my case it caused transactions not to work anymore.

Offer page: to be styled

Similarly, the Offer page should be styled. Can stay very plain. Latest version has a button to see it (another thing that should have been merged yesterday).

User profile page: buttons added

Since styling the page I've added several buttons. There's a section for sellers and a section for buyers. Both should be visible. It looks decent, but not as nice as the way you delivered it @zinchenko :). So maybe you can improve the layout a bit from this situation.

2016-02-08 03_38_00-buyco proof of concept

Blockchain node: Transactions are processed extremely slow or not at all

The tests for contracts run very slowly, which is a known issue. However when I ran them today using blockstars.io:9001 as the blockchain node, there were long periods when there were no pending transactions but the test still didn't progress.

See below. On the left the tests running from the command line, on the right the output of the blockchain node. Transactions are usually mined very fast, in about 1 second. Most of the time the miner is idle, signified by == No transactions left. Stopping miner.... However the app waits in situations like depicted on the left for long times (60+ seconds).

2016-01-27 17_14_42-

Make active page get a specific class .active

[12:39:15] Alexander Zinchenko: it is possible to make the currently active menu to have an «.active» class?
[12:39:27 | Alexander Zinchenko: I haven’t used standard angular router before
[12:39:53] Alexander Zinchenko: I know how to do in with ui-router though

CC @zinchenko

App crash on oauthController

On the development version the app crashed. This is the latest output:

   'cf-ray': '2692354c8d7f2756-FRA' }
    REQUEST end event https://api.uphold.com/v0/me
    REQUEST has body https://api.uphold.com/v0/me 25
    REQUEST emitting complete https://api.uphold.com/v0/me
    Error getting user data: null
    Sat, 23 Jan 2016 08:42:57 GMT express deprecated res.json(status, obj): Use res.status(status).json(obj) instead at controllers/oauthController.js:63:29
    POST /api/auth/uphold/callback 500 1016.629 ms - 84
    _http_outgoing.js:335
        throw new Error('Can\'t set headers after they are sent.');
              ^
    Error: Can't set headers after they are sent.
        at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
        at ServerResponse.header (/app/node_modules/express/lib/response.js:718:10)
        at ServerResponse.send (/app/node_modules/express/lib/response.js:163:12)
        at ServerResponse.json (/app/node_modules/express/lib/response.js:249:15)
        at /app/controllers/oauthController.js:99:41
        at Query.callback (/app/node_modules/mongoose/lib/query.js:2022:7)
        at /app/node_modules/mongoose/node_modules/kareem/index.js:177:19
        at /app/node_modules/mongoose/node_modules/kareem/index.js:109:16
        at process._tickCallback (node.js:355:11)
    [nodemon] app crashed - waiting for file changes before starting...

Creating proposal: transaction is processed but request never completes

I.e. the user sees this:
2016-02-01 17_21_15-buyco proof of concept

On the console:

    GET /vendors/bootstrap/dist/css/bootstrap.css 304 0.347 ms - -
    GET /vendors/font-awesome/css/font-awesome.min.css 304 0.461 ms - -
    GET /dist/app.css 304 0.115 ms - -
    GET /js/sellers/sellerResourceMock.js.map 200 0.473 ms - 1715
    GET /vendors/bootstrap/dist/css/bootstrap.css.map 200 0.329 ms - 389227
    POST /api/proposal - - ms - -
    Waiting til transaction 0xe948ef8cd19d25ccfb980fc41563cb54abc6a4d0f55dd11c84745166a13109bb has been committed.

Country/region list: mix of countries/counties/cities for United Kingdom

The region list for United Kingdom contains many irrelevant items. For example "England and Wales" and even "United Kingdom" definitely shouldn't be there. It also contains cities like "Liverpool" and "Manchester". The list seems to contain several sublists which are ordered alphabetically (i.e. the list as a whole is A-Z A-Z A-Z, not A-Z).

The last list from "Buckinghamshire" to "York" seems the most sensible.

What is the source of the lists anyway?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.