Compare commits
10 Commits
1dc54eccea
...
v7.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b49d1130a9
|
||
|
|
657cdc8afa
|
||
|
|
ae9aa7aaaf
|
||
|
|
708515ba4b
|
||
| 7eceea5d57 | |||
|
|
089ffd42fe
|
||
|
|
43d9bc0a07
|
||
|
|
6113e456af
|
||
| 8ef6fc06ce | |||
|
|
093273f15b
|
14
.gitea/release-drafter.yml
Normal file
14
.gitea/release-drafter.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
name-template: 'v$RESOLVED_VERSION'
|
||||
tag-template: 'v$RESOLVED_VERSION'
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- release/major
|
||||
minor:
|
||||
labels:
|
||||
- release/minor
|
||||
- feature
|
||||
patch:
|
||||
labels:
|
||||
- release/patch
|
||||
default: patch
|
||||
11
.gitea/workflows/release_drafter.yml
Normal file
11
.gitea/workflows/release_drafter.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
name: Release Drafter
|
||||
on:
|
||||
pull_request:
|
||||
types: [closed]
|
||||
jobs:
|
||||
release_drafter_job:
|
||||
name: Update release notes draft
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Release Drafter
|
||||
uses: https://github.com/raucao/gitea-release-drafter@dev
|
||||
@@ -33,7 +33,7 @@ const contractCalls = [
|
||||
|
||||
['Contribution', 'add', [{ contributorId: 1, contributorIpfsHash: 'QmWKCYGr2rSf6abUPaTYqf98urvoZxGrb7dbspFZA6oyVF', date: '2019-04-11', amount: 500, kind: 'dev', description: '[67P/kredits-contracts] Test this thing', url: '' }, { gasLimit: 350000 }]],
|
||||
['Contribution', 'add', [{ contributorId: 2, contributorIpfsHash: 'QmcHzEeAM26HV2zHTf5HnZrCtCtGdEccL5kUtDakAB7ozB', date: '2019-04-11', amount: 1500, kind: 'dev', description: '[67P/kredits-web] Reviewed stuff', url: '' }, { gasLimit: 350000 }]],
|
||||
['Contribution', 'add', [{ contributorId: 1, contributorIpfsHash: 'QmWKCYGr2rSf6abUPaTYqf98urvoZxGrb7dbspFZA6oyVF', date: '2019-04-11', amount: 1500, kind: 'dev', description: '[67P/kredits-contracts] Add tests', url: '' }, { gasLimit: 350000 }]],
|
||||
['Contribution', 'add', [{ contributorId: 1, contributorIpfsHash: 'QmWKCYGr2rSf6abUPaTYqf98urvoZxGrb7dbspFZA6oyVF', date: '2019-04-11', amount: 5000, kind: 'dev', description: '[67P/kredits-contracts] Add tests', url: '' }, { gasLimit: 350000 }]],
|
||||
['Contribution', 'add', [{ contributorId: 1, contributorIpfsHash: 'QmWKCYGr2rSf6abUPaTYqf98urvoZxGrb7dbspFZA6oyVF', date: '2019-04-11', amount: 1500, kind: 'dev', description: '[67P/kredits-contracts] Introduce contribution token', url: '' }, { gasLimit: 350000 }]],
|
||||
['Contribution', 'add', [{ contributorId: 2, contributorIpfsHash: 'QmcHzEeAM26HV2zHTf5HnZrCtCtGdEccL5kUtDakAB7ozB', date: '2019-04-11', amount: 5000, kind: 'dev', description: '[67P/kredits-web] Expense UI, first draft', url: '' }, { gasLimit: 350000 }]],
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ interface IContributionBalance {
|
||||
|
||||
contract Contributor is Initializable {
|
||||
address public deployer;
|
||||
address public profileManager;
|
||||
IContributionBalance public contributionContract;
|
||||
IToken public tokenContract;
|
||||
|
||||
@@ -43,8 +44,9 @@ contract Contributor is Initializable {
|
||||
_;
|
||||
}
|
||||
|
||||
function initialize() public initializer {
|
||||
function initialize(address profileManagerAddress) public initializer {
|
||||
deployer = msg.sender;
|
||||
profileManager = profileManagerAddress;
|
||||
}
|
||||
|
||||
function setContributionContract(address contribution) public onlyCore {
|
||||
@@ -84,11 +86,12 @@ contract Contributor is Initializable {
|
||||
c.hashFunction = hashFunction;
|
||||
c.hashSize = hashSize;
|
||||
|
||||
ContributorProfileUpdated(id, oldHashDigest, c.hashDigest);
|
||||
emit ContributorProfileUpdated(id, oldHashDigest, c.hashDigest);
|
||||
}
|
||||
|
||||
function addContributor(address account, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public onlyCore {
|
||||
function addContributor(address account, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public {
|
||||
require(!addressExists(account), "Address already in use");
|
||||
require((msg.sender == profileManager) || addressIsCore(msg.sender), "Only core and profile manager");
|
||||
uint32 _id = contributorsCount + 1;
|
||||
assert(!contributors[_id].exists); // this can not be acually
|
||||
Contributor storage c = contributors[_id];
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -16,7 +16,7 @@ class Reimbursement extends Record {
|
||||
}
|
||||
|
||||
getData (id) {
|
||||
return this.contract.getReimbursement(id);
|
||||
return this.contract.get(id);
|
||||
}
|
||||
|
||||
async add (attrs, callOptions = {}) {
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@kredits/contracts",
|
||||
"version": "7.0.1",
|
||||
"version": "7.1.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@kredits/contracts",
|
||||
"version": "7.0.1",
|
||||
"version": "7.1.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@kosmos/schemas": "^3.1.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kredits/contracts",
|
||||
"version": "7.0.1",
|
||||
"version": "7.1.0",
|
||||
"description": "Smart contracts and JavaScript API for Kredits",
|
||||
"main": "./lib/kredits.js",
|
||||
"directories": {
|
||||
|
||||
@@ -36,7 +36,7 @@ async function main() {
|
||||
|
||||
const blocksVetoPeriod = 40320; // 7 days; 15 seconds block time
|
||||
|
||||
await deployContractProxy('Contributor');
|
||||
await deployContractProxy('Contributor', [ '0x0000000000000000000000000000000000000000' ] );
|
||||
await deployContractProxy('Contribution', [ blocksVetoPeriod ]);
|
||||
await deployContractProxy('Token');
|
||||
await deployContractProxy('Reimbursement');
|
||||
|
||||
@@ -9,7 +9,7 @@ describe("Contribution contract", async function () {
|
||||
[owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7] = await ethers.getSigners();
|
||||
let accounts = [owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7];
|
||||
const contributorFactory = await ethers.getContractFactory("Contributor");
|
||||
Contributor = await upgrades.deployProxy(contributorFactory);
|
||||
Contributor = await upgrades.deployProxy(contributorFactory, ["0x2946fFfd31096435cb0fc927D306E1C006C5D1aF"]);
|
||||
for (const account of accounts) {
|
||||
await Contributor.addContributor(account.address, "0x99b8afd7b266e19990924a8be9099e81054b70c36b20937228a77a5cf75723b8", 18, 32);
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
const { expect } = require("chai");
|
||||
const { ethers, upgrades } = require("hardhat");
|
||||
let owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7;
|
||||
let owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7, addr8;
|
||||
let Contribution, Contributor, Token;
|
||||
|
||||
describe("Contributor contract", async function () {
|
||||
before(async function () {
|
||||
[owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7] = await ethers.getSigners();
|
||||
[owner, addr1, addr2, addr3, addr4, addr5, addr6, addr7, addr8] = await ethers.getSigners();
|
||||
|
||||
const contributorFactory = await ethers.getContractFactory("Contributor");
|
||||
Contributor = await upgrades.deployProxy(contributorFactory);
|
||||
Contributor = await upgrades.deployProxy(contributorFactory, [addr8.address]);
|
||||
const contributionFactory = await ethers.getContractFactory("Contribution");
|
||||
Contribution = await upgrades.deployProxy(contributionFactory, [40321]);
|
||||
const tokenFactory = await ethers.getContractFactory("Token");
|
||||
@@ -30,6 +30,10 @@ describe("Contributor contract", async function () {
|
||||
expect(await Contributor.deployer()).to.equal(owner.address);
|
||||
expect(await Contributor.deployer()).to.not.equal(addr1.address);
|
||||
});
|
||||
|
||||
it("sets a profile manager address", async function () {
|
||||
expect(await Contributor.profileManager()).to.equal(addr8.address);
|
||||
});
|
||||
});
|
||||
|
||||
describe("add()", function () {
|
||||
@@ -38,7 +42,7 @@ describe("Contributor contract", async function () {
|
||||
"0x608FD4b95116Ea616990Aaeb1d4f1ce07612f261",
|
||||
"0x1d9de6de5c72eedca6d7a5e8a9159e2f5fe676506aece3000acefcc821723429",
|
||||
18, 32
|
||||
)).to.be.revertedWith("Core only");
|
||||
)).to.be.revertedWith("Only core and profile manager");
|
||||
expect(await Contributor.contributorsCount()).to.equal(8);
|
||||
});
|
||||
|
||||
@@ -70,6 +74,18 @@ describe("Contributor contract", async function () {
|
||||
18, 32
|
||||
)).to.emit(Contributor, "ContributorAdded").withArgs(10, "0x765E88b4F9a59C3a3b300C6eFF9E6E9fDDf9FbD9");
|
||||
});
|
||||
|
||||
it("allows the profile manager account to create a contributor profile", async function () {
|
||||
await Contributor.connect(addr8).addContributor(
|
||||
"0x954712B8703Df5255A219B139ba7BFC256E72a15",
|
||||
"0x1d9de6de5c72eedca6d7a5e8a9159e2f5fe676506aece3000acefcc821723429",
|
||||
18, 32
|
||||
);
|
||||
expect(await Contributor.contributorsCount()).to.equal(11);
|
||||
const c = await Contributor.getContributorById(11);
|
||||
expect(c['account']).to.equal("0x954712B8703Df5255A219B139ba7BFC256E72a15");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe("withdraw()", function () {
|
||||
|
||||
Reference in New Issue
Block a user