44 lines
1.7 KiB
JavaScript
44 lines
1.7 KiB
JavaScript
export default {
|
|
methods: {
|
|
// Returns the atomic, unfilled, reserved contributions for the given wallet
|
|
getUnfilledReservedContribution(node, addr) {
|
|
for (const contributor of node.contributors)
|
|
if (contributor.address === addr && contributor.amount === 0 && contributor.reserved > 0)
|
|
return contributor.reserved;
|
|
return 0;
|
|
},
|
|
getMinContribution(node, myaddr) {
|
|
if (node.funded)
|
|
return 0;
|
|
|
|
const MAX_NUMBER_OF_CONTRIBUTORS = 4;
|
|
// If we have a reserved spot then that is our minimum:
|
|
let minContributionAtomicUnits = this.getUnfilledReservedContribution(node, myaddr);
|
|
// Otherwise we can contribute our fair share of whatever amount is left (i.e. REMAINING/N
|
|
// when there are N available spots).
|
|
if (minContributionAtomicUnits === 0 && node.contributors.length < MAX_NUMBER_OF_CONTRIBUTORS) {
|
|
const openContributionRemaining = this.openForContribution(node);
|
|
|
|
minContributionAtomicUnits = openContributionRemaining /
|
|
(MAX_NUMBER_OF_CONTRIBUTORS - node.contributors.length);
|
|
}
|
|
|
|
const minContributionOxen = minContributionAtomicUnits / 1e9;
|
|
// ceiling to 4 decimal places
|
|
return minContributionOxen.toFixed(4);
|
|
},
|
|
openForContribution(node, addr = null) {
|
|
let openContributionRemaining =
|
|
node.staking_requirement > node.total_reserved
|
|
? node.staking_requirement - node.total_reserved
|
|
: 0;
|
|
if (addr)
|
|
openContributionRemaining += this.getUnfilledReservedContribution(node, addr);
|
|
return openContributionRemaining;
|
|
},
|
|
openForContributionOxen(node, addr = null) {
|
|
return (this.openForContribution(node, addr) / 1e9).toFixed(4);
|
|
}
|
|
}
|
|
};
|