From 3daee38ee6870343e7a4d01d534535aa7c9ef071 Mon Sep 17 00:00:00 2001 From: yuhongxue Date: Tue, 13 Mar 2018 23:12:35 +0800 Subject: [PATCH 01/13] =?UTF-8?q?54=5F=E4=BA=8E=E5=AE=8F=E5=AD=A6=5F?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E8=AF=BE=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 54_于宏学_第一课作业 --- Lesson-1/assignment/yours.sol | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/Lesson-1/assignment/yours.sol b/Lesson-1/assignment/yours.sol index dfdb2c4..2cf54a4 100644 --- a/Lesson-1/assignment/yours.sol +++ b/Lesson-1/assignment/yours.sol @@ -1 +1,65 @@ /*作业请提交在这个目录下*/ +pragma solidity ^0.4.14; + +contract Payroll { + + uint constant payDuration = 10 seconds; + address owner; + uint salary; + address employee; + uint lastPayday; + + function setAddress(address _address){ + employee=_address; + } + function setSalary(uint _salary){ + salary = _salary; + } + + function getAddress() constant returns(address){ + return employee; + } + + function getSalary() constant returns(uint){ + return salary; + } + + function Payroll() { + owner = msg.sender; + } + + function updateEmployee(address e, uint s) { + require(msg.sender == owner); + + if (employee != 0x0) { + uint payment = salary * (now - lastPayday) / payDuration; + employee.transfer(payment); + } + + employee = e; + salary = s * 1 ether; + lastPayday = now; + } + + function addFund() payable returns (uint) { + return this.balance; + } + + function calculateRunway() returns (uint) { + return this.balance / salary; + } + + function hasEnoughFund() returns (bool) { + return calculateRunway() > 0; + } + + function getPaid() { + require(msg.sender == employee); + + uint nextPayday = lastPayday + payDuration; + assert(nextPayday < now); + + lastPayday = nextPayday; + employee.transfer(salary); + } +} From 23a28fb7c0ad780c4a5ae02e47b64c0f41fcdc32 Mon Sep 17 00:00:00 2001 From: aceRunqi Date: Wed, 14 Mar 2018 07:28:05 -0500 Subject: [PATCH 02/13] =?UTF-8?q?Update=20and=20rename=20yours.sol=20to=20?= =?UTF-8?q?56=5F=E8=83=A1=E9=97=B0=E7=A5=BA=5F=E7=AC=AC=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A.sol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\346\254\241\344\275\234\344\270\232.sol" | 54 +++++++++++++++++++ Lesson-1/assignment/yours.sol | 1 - 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 "Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" delete mode 100644 Lesson-1/assignment/yours.sol diff --git "a/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" "b/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" new file mode 100644 index 0000000..f4ef42e --- /dev/null +++ "b/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" @@ -0,0 +1,54 @@ +/*作业请提交在这个目录下*/ +pragma solidity ^0.4.14; + +contract Payroll { + + uint constant payDuration = 10 seconds; + uint lastPayday = now; + + uint salary; + + address owner = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; + address employee = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c; + + function Payroll() { + owner = msg.sender; + } + + // 修改员工地址: + function chgEmployeeAddr(address e) returns (address) { + require(msg.sender == owner); + employee = e; + return employee; + } + + // 修改员工薪酬: + function chgEmployeeSalary(uint s) returns (uint) { + require(msg.sender == owner); + salary = s; + return salary; + } + + function addFund() payable returns (uint) { + return this.balance; + } + + function calculateRunway() returns (uint) { + return this.balance / salary; + } + + function hasEnoughFund() returns (bool) { + return calculateRunway() > 0; + } + + function getPaid() { + require(msg.sender == owner); + + uint nextPayday = lastPayday + payDuration; + assert(nextPayday < now); + + lastPayday = nextPayday; + employee.transfer(salary); + } + +} diff --git a/Lesson-1/assignment/yours.sol b/Lesson-1/assignment/yours.sol deleted file mode 100644 index dfdb2c4..0000000 --- a/Lesson-1/assignment/yours.sol +++ /dev/null @@ -1 +0,0 @@ -/*作业请提交在这个目录下*/ From 0b9980d7b11d3ea26a9f80a289b5d178de1361fd Mon Sep 17 00:00:00 2001 From: Xinwen Wang Date: Wed, 14 Mar 2018 20:45:36 -0400 Subject: [PATCH 03/13] upload lesson 2 --- Lesson-2/README.md | 16 +++++++++++ Lesson-2/assignment/README.md | 10 +++++++ Lesson-2/assignment/yours.sol | 1 + Lesson-2/orgin/README.md | 3 +++ Lesson-2/orgin/payroll.sol | 50 +++++++++++++++++++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 Lesson-2/README.md create mode 100644 Lesson-2/assignment/README.md create mode 100644 Lesson-2/assignment/yours.sol create mode 100644 Lesson-2/orgin/README.md create mode 100644 Lesson-2/orgin/payroll.sol diff --git a/Lesson-2/README.md b/Lesson-2/README.md new file mode 100644 index 0000000..1fdc5b3 --- /dev/null +++ b/Lesson-2/README.md @@ -0,0 +1,16 @@ +## 硅谷live以太坊智能合约频道官方地址 + +### 第二课《智能合约设计进阶-多员工薪酬系统》 + +目录结构 +
| +
|--orgin 课程初始代码 +
| +
|--assignment 课程作业提交代码 +
+### 本节知识点 +第2课:智能合约设计进阶-多员工薪酬系统 +- 动态静态数组的不同 +- 函数输入参数检查 revert +- 循环与遍历的安全性 +- 程序运行错误检查和容错:assert与require diff --git a/Lesson-2/assignment/README.md b/Lesson-2/assignment/README.md new file mode 100644 index 0000000..a1fa2d0 --- /dev/null +++ b/Lesson-2/assignment/README.md @@ -0,0 +1,10 @@ +## 硅谷live以太坊智能合约 第二课作业 +这里是同学提交作业的目录 + +### 第二课:课后作业 +完成今天的智能合约添加100ETH到合约中 +- 加入十个员工,每个员工的薪水都是1ETH +每次加入一个员工后调用calculateRunway这个函数,并且记录消耗的gas是多少?Gas变化么?如果有 为什么? +- 如何优化calculateRunway这个函数来减少gas的消耗? +提交:智能合约代码,gas变化的记录,calculateRunway函数的优化 + diff --git a/Lesson-2/assignment/yours.sol b/Lesson-2/assignment/yours.sol new file mode 100644 index 0000000..dfdb2c4 --- /dev/null +++ b/Lesson-2/assignment/yours.sol @@ -0,0 +1 @@ +/*作业请提交在这个目录下*/ diff --git a/Lesson-2/orgin/README.md b/Lesson-2/orgin/README.md new file mode 100644 index 0000000..0309d94 --- /dev/null +++ b/Lesson-2/orgin/README.md @@ -0,0 +1,3 @@ +## 硅谷live以太坊智能合约 第二课《智能合约设计进阶-多员工薪酬系统》 + +这里是每一课的初始代码,有需要的同学可以参考 diff --git a/Lesson-2/orgin/payroll.sol b/Lesson-2/orgin/payroll.sol new file mode 100644 index 0000000..62e380e --- /dev/null +++ b/Lesson-2/orgin/payroll.sol @@ -0,0 +1,50 @@ +pragma solidity ^0.4.14; + +contract Payroll { + struct Employee { + address id; + uint salary; + uint lastPayday; + } + + uint constant payDuration = 10 seconds; + + address owner; + Employee[] employees; + + function Payroll() { + owner = msg.sender; + } + + function _partialPaid(Employee employee) private { + } + + function _findEmployee(address employeeId) private returns (Employee, uint) { + } + + function addEmployee(address employeeId, uint salary) { + } + + function removeEmployee(address employeeId) { + } + + function updateEmployee(address employeeId, uint salary) { + } + + function addFund() payable returns (uint) { + } + + function calculateRunway() returns (uint) { + uint totalSalary = 0; + for (uint i = 0; i < employees.length; i++) { + totalSalary += employees[i].salary; + } + return this.balance / totalSalary; + } + + function hasEnoughFund() returns (bool) { + } + + function getPaid() { + } +} From c38345ba2cee5a76e267d23187a87ac1bf0b56f1 Mon Sep 17 00:00:00 2001 From: aceRunqi Date: Sat, 17 Mar 2018 08:56:17 -0500 Subject: [PATCH 04/13] =?UTF-8?q?Update=20and=20rename=20yours.sol=20to=20?= =?UTF-8?q?56=5F=E8=83=A1=E9=97=B0=E7=A5=BA=5F=E7=AC=AC=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A.sol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\346\254\241\344\275\234\344\270\232.sol" | 101 ++++++++++++++++++ Lesson-2/assignment/yours.sol | 1 - 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 "Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" delete mode 100644 Lesson-2/assignment/yours.sol diff --git "a/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" "b/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" new file mode 100644 index 0000000..2041b4e --- /dev/null +++ "b/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" @@ -0,0 +1,101 @@ +/*作业请提交在这个目录下*/ + +Question 1. 每增加一个员工address, execution cost由最初的1628每次增加780, 同时transaction cost也由最初的22960逐次增加780. +原因是calculateRunway函数利用for循环,每次遍历每一个employee,因此每增加一个employee,运行的cost也会线性增加。 + +Question 2. 解决的方法之一是将总的total_Salary作为一个全局变量,取代之前calculateRunway函数里的局部变量totalSalary. +这样,每增加一个员工,只会增加一次计算量,从而减少cost。 + +优化后的代码为: +------------------------------- +pragma solidity ^0.4.14; + +contract Payroll { + struct Employee { + address id; + uint salary; + uint lastPayday; + } + + uint constant payDuration = 10 seconds; + + uint total_Salary = 0; + + address owner; + Employee[] employees; + + function Payroll() { + owner = msg.sender; + } + + function _partialPaid(Employee employee) private { + if(employee.id != 0x0){ + uint payment = employee.salary * (now - employee.lastPayday) / payDuration; + employee.id.transfer(payment); + } + } + + function _findEmployee(address employeeId) private returns (Employee, uint) { + uint total_employee = employees.length; + for (uint i=0; i < total_employee; i++){ + if (employees[i].id == employeeId){ + return (employees[i], i); + } + } + } + + function addEmployee(address employeeId, uint salary) { + require(msg.sender == owner); + var (employee,ind) = _findEmployee(employeeId); + assert(employee.id == 0x0); + employees.push(Employee(employeeId, salary * 1 ether, now)); + total_Salary = total_Salary + salary * 1 ether; + } + + function removeEmployee(address employeeId) { + require(msg.sender == owner); + var (employee, ind) = _findEmployee(employeeId); + assert(employee.id != 0x0); + _partialPaid(employee); + delete employees[ind]; + uint total_employee = employees.length; + employees[ind] = employees[total_employee - 1]; + employees.length = employees.length - 1; + } + + function updateEmployee(address employeeId, uint salary) { + require(msg.sender == owner); + var (employee, ind) = _findEmployee(employeeId); + assert(employee.id != 0x0); + employees[ind].lastPayday = now; + _partialPaid(employee); + employees[ind].salary = salary * 1 ether; + } + + function addFund() payable returns (uint) { + return this.balance; + } + + function calculateRunway() returns (uint) { + uint total_employee = employees.length; + for (uint i = 0; i < total_employee; i++) { + total_Salary = total_Salary + employees[i].salary; + } + return this.balance / total_Salary; + } + + function hasEnoughFund() returns (bool) { + return this.calculateRunway() > 0; + } + + function getPaid() { + var(employee,ind) = _findEmployee(msg.sender); + assert(employee.id != 0x0); + assert(now - employee.lastPayday > payDuration); + employees[ind].lastPayday = employee.lastPayday + payDuration; + employee.id.transfer(employee.salary); + } +} +---------------------------- + +经过修改,每次运行的transaction cost都变为22196,execution cost都变为852,不在对employees人数敏感。 diff --git a/Lesson-2/assignment/yours.sol b/Lesson-2/assignment/yours.sol deleted file mode 100644 index dfdb2c4..0000000 --- a/Lesson-2/assignment/yours.sol +++ /dev/null @@ -1 +0,0 @@ -/*作业请提交在这个目录下*/ From e199e9dcd5c1bd9af329ac234645777f7390fd82 Mon Sep 17 00:00:00 2001 From: Xinwen Wang Date: Sun, 18 Mar 2018 10:52:01 -0400 Subject: [PATCH 05/13] Upload lesson 3 --- Lesson-Team-F/README.md | 16 ++++++++++++++++ Lesson-Team-F/assignment/README.md | 14 ++++++++++++++ Lesson-Team-F/assignment/yours.sol | 1 + Lesson-Team-F/orgin/README.md | 3 +++ Lesson-Team-F/orgin/payroll.sol | 0 5 files changed, 34 insertions(+) create mode 100644 Lesson-Team-F/README.md create mode 100644 Lesson-Team-F/assignment/README.md create mode 100644 Lesson-Team-F/assignment/yours.sol create mode 100644 Lesson-Team-F/orgin/README.md create mode 100644 Lesson-Team-F/orgin/payroll.sol diff --git a/Lesson-Team-F/README.md b/Lesson-Team-F/README.md new file mode 100644 index 0000000..ba26ced --- /dev/null +++ b/Lesson-Team-F/README.md @@ -0,0 +1,16 @@ +## 硅谷live以太坊智能合约频道官方地址 + +### 第三课《智能合约后端优化和产品化》 + +目录结构 +
| +
|--orgin 课程初始代码 +
| +
|--assignment 课程作业提交代码 +
+### 本节知识点 +第3课:智能合约后端优化和产品化 +- 如何通过数据结构优化降低合约执行成本 +- 合约的继承 +- 巧用modifier +- 以太坊函数库的使用和基本介绍 diff --git a/Lesson-Team-F/assignment/README.md b/Lesson-Team-F/assignment/README.md new file mode 100644 index 0000000..01011eb --- /dev/null +++ b/Lesson-Team-F/assignment/README.md @@ -0,0 +1,14 @@ +## 硅谷live以太坊智能合约 第三课作业 +这里是同学提交作业的目录 + +### 第三课:课后作业 +- 第一题:完成今天所开发的合约产品化内容,使用Remix调用每一个函数,提交函数调用截图 +- 第二题:增加 changePaymentAddress 函数,更改员工的薪水支付地址,思考一下能否使用modifier整合某个功能 +- 第三题(加分题):自学C3 Linearization, 求以下 contract Z 的继承线 +- contract O +- contract A is O +- contract B is O +- contract C is O +- contract K1 is A, B +- contract K2 is A, C +- contract Z is K1, K2 diff --git a/Lesson-Team-F/assignment/yours.sol b/Lesson-Team-F/assignment/yours.sol new file mode 100644 index 0000000..dfdb2c4 --- /dev/null +++ b/Lesson-Team-F/assignment/yours.sol @@ -0,0 +1 @@ +/*作业请提交在这个目录下*/ diff --git a/Lesson-Team-F/orgin/README.md b/Lesson-Team-F/orgin/README.md new file mode 100644 index 0000000..6106ea1 --- /dev/null +++ b/Lesson-Team-F/orgin/README.md @@ -0,0 +1,3 @@ +## 硅谷live以太坊智能合约 第三课 + +这里是每一课的初始代码,有需要的同学可以参考 diff --git a/Lesson-Team-F/orgin/payroll.sol b/Lesson-Team-F/orgin/payroll.sol new file mode 100644 index 0000000..e69de29 From de2ed59b1a5ed2491bf08f885a8de688d6d1ec47 Mon Sep 17 00:00:00 2001 From: Xinwen Wang Date: Sun, 18 Mar 2018 10:54:15 -0400 Subject: [PATCH 06/13] Upload lesson 3 --- {Lesson-Team-F => Lesson-3}/README.md | 0 {Lesson-Team-F => Lesson-3}/assignment/README.md | 0 {Lesson-Team-F => Lesson-3}/assignment/yours.sol | 0 {Lesson-Team-F => Lesson-3}/orgin/README.md | 0 {Lesson-Team-F => Lesson-3}/orgin/payroll.sol | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {Lesson-Team-F => Lesson-3}/README.md (100%) rename {Lesson-Team-F => Lesson-3}/assignment/README.md (100%) rename {Lesson-Team-F => Lesson-3}/assignment/yours.sol (100%) rename {Lesson-Team-F => Lesson-3}/orgin/README.md (100%) rename {Lesson-Team-F => Lesson-3}/orgin/payroll.sol (100%) diff --git a/Lesson-Team-F/README.md b/Lesson-3/README.md similarity index 100% rename from Lesson-Team-F/README.md rename to Lesson-3/README.md diff --git a/Lesson-Team-F/assignment/README.md b/Lesson-3/assignment/README.md similarity index 100% rename from Lesson-Team-F/assignment/README.md rename to Lesson-3/assignment/README.md diff --git a/Lesson-Team-F/assignment/yours.sol b/Lesson-3/assignment/yours.sol similarity index 100% rename from Lesson-Team-F/assignment/yours.sol rename to Lesson-3/assignment/yours.sol diff --git a/Lesson-Team-F/orgin/README.md b/Lesson-3/orgin/README.md similarity index 100% rename from Lesson-Team-F/orgin/README.md rename to Lesson-3/orgin/README.md diff --git a/Lesson-Team-F/orgin/payroll.sol b/Lesson-3/orgin/payroll.sol similarity index 100% rename from Lesson-Team-F/orgin/payroll.sol rename to Lesson-3/orgin/payroll.sol From 2e9dc31c208270adcea66ee191e3644cb5ce942b Mon Sep 17 00:00:00 2001 From: Zhicheng Cai Date: Sun, 18 Mar 2018 20:24:05 -0500 Subject: [PATCH 07/13] =?UTF-8?q?Revert=20"56=5F=E8=83=A1=E9=97=B0?= =?UTF-8?q?=E7=A5=BA=5F=E7=AC=AC=E4=BA=8C=E6=AC=A1=E4=BD=9C=E4=B8=9A"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\346\254\241\344\275\234\344\270\232.sol" | 54 ---------- Lesson-1/assignment/yours.sol | 1 + ...4\346\254\241\344\275\234\344\270\232.sol" | 101 ------------------ Lesson-2/assignment/yours.sol | 1 + 4 files changed, 2 insertions(+), 155 deletions(-) delete mode 100644 "Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" create mode 100644 Lesson-1/assignment/yours.sol delete mode 100644 "Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" create mode 100644 Lesson-2/assignment/yours.sol diff --git "a/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" "b/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" deleted file mode 100644 index f4ef42e..0000000 --- "a/Lesson-1/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.sol" +++ /dev/null @@ -1,54 +0,0 @@ -/*作业请提交在这个目录下*/ -pragma solidity ^0.4.14; - -contract Payroll { - - uint constant payDuration = 10 seconds; - uint lastPayday = now; - - uint salary; - - address owner = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; - address employee = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c; - - function Payroll() { - owner = msg.sender; - } - - // 修改员工地址: - function chgEmployeeAddr(address e) returns (address) { - require(msg.sender == owner); - employee = e; - return employee; - } - - // 修改员工薪酬: - function chgEmployeeSalary(uint s) returns (uint) { - require(msg.sender == owner); - salary = s; - return salary; - } - - function addFund() payable returns (uint) { - return this.balance; - } - - function calculateRunway() returns (uint) { - return this.balance / salary; - } - - function hasEnoughFund() returns (bool) { - return calculateRunway() > 0; - } - - function getPaid() { - require(msg.sender == owner); - - uint nextPayday = lastPayday + payDuration; - assert(nextPayday < now); - - lastPayday = nextPayday; - employee.transfer(salary); - } - -} diff --git a/Lesson-1/assignment/yours.sol b/Lesson-1/assignment/yours.sol new file mode 100644 index 0000000..dfdb2c4 --- /dev/null +++ b/Lesson-1/assignment/yours.sol @@ -0,0 +1 @@ +/*作业请提交在这个目录下*/ diff --git "a/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" "b/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" deleted file mode 100644 index 2041b4e..0000000 --- "a/Lesson-2/assignment/56_\350\203\241\351\227\260\347\245\272_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sol" +++ /dev/null @@ -1,101 +0,0 @@ -/*作业请提交在这个目录下*/ - -Question 1. 每增加一个员工address, execution cost由最初的1628每次增加780, 同时transaction cost也由最初的22960逐次增加780. -原因是calculateRunway函数利用for循环,每次遍历每一个employee,因此每增加一个employee,运行的cost也会线性增加。 - -Question 2. 解决的方法之一是将总的total_Salary作为一个全局变量,取代之前calculateRunway函数里的局部变量totalSalary. -这样,每增加一个员工,只会增加一次计算量,从而减少cost。 - -优化后的代码为: -------------------------------- -pragma solidity ^0.4.14; - -contract Payroll { - struct Employee { - address id; - uint salary; - uint lastPayday; - } - - uint constant payDuration = 10 seconds; - - uint total_Salary = 0; - - address owner; - Employee[] employees; - - function Payroll() { - owner = msg.sender; - } - - function _partialPaid(Employee employee) private { - if(employee.id != 0x0){ - uint payment = employee.salary * (now - employee.lastPayday) / payDuration; - employee.id.transfer(payment); - } - } - - function _findEmployee(address employeeId) private returns (Employee, uint) { - uint total_employee = employees.length; - for (uint i=0; i < total_employee; i++){ - if (employees[i].id == employeeId){ - return (employees[i], i); - } - } - } - - function addEmployee(address employeeId, uint salary) { - require(msg.sender == owner); - var (employee,ind) = _findEmployee(employeeId); - assert(employee.id == 0x0); - employees.push(Employee(employeeId, salary * 1 ether, now)); - total_Salary = total_Salary + salary * 1 ether; - } - - function removeEmployee(address employeeId) { - require(msg.sender == owner); - var (employee, ind) = _findEmployee(employeeId); - assert(employee.id != 0x0); - _partialPaid(employee); - delete employees[ind]; - uint total_employee = employees.length; - employees[ind] = employees[total_employee - 1]; - employees.length = employees.length - 1; - } - - function updateEmployee(address employeeId, uint salary) { - require(msg.sender == owner); - var (employee, ind) = _findEmployee(employeeId); - assert(employee.id != 0x0); - employees[ind].lastPayday = now; - _partialPaid(employee); - employees[ind].salary = salary * 1 ether; - } - - function addFund() payable returns (uint) { - return this.balance; - } - - function calculateRunway() returns (uint) { - uint total_employee = employees.length; - for (uint i = 0; i < total_employee; i++) { - total_Salary = total_Salary + employees[i].salary; - } - return this.balance / total_Salary; - } - - function hasEnoughFund() returns (bool) { - return this.calculateRunway() > 0; - } - - function getPaid() { - var(employee,ind) = _findEmployee(msg.sender); - assert(employee.id != 0x0); - assert(now - employee.lastPayday > payDuration); - employees[ind].lastPayday = employee.lastPayday + payDuration; - employee.id.transfer(employee.salary); - } -} ----------------------------- - -经过修改,每次运行的transaction cost都变为22196,execution cost都变为852,不在对employees人数敏感。 diff --git a/Lesson-2/assignment/yours.sol b/Lesson-2/assignment/yours.sol new file mode 100644 index 0000000..dfdb2c4 --- /dev/null +++ b/Lesson-2/assignment/yours.sol @@ -0,0 +1 @@ +/*作业请提交在这个目录下*/ From 61e58edc02a8e456507c0930c34f65ce6a5fc48f Mon Sep 17 00:00:00 2001 From: yuhongxue Date: Wed, 21 Mar 2018 01:05:55 +0800 Subject: [PATCH 08/13] =?UTF-8?q?54=5F=E4=BA=8E=E5=AE=8F=E5=AD=A6=5F?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E8=AF=BE=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 54_于宏学_第一课作业 --- Lesson-3/assignment/yours.sol | 176 ++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) diff --git a/Lesson-3/assignment/yours.sol b/Lesson-3/assignment/yours.sol index dfdb2c4..9a853fb 100644 --- a/Lesson-3/assignment/yours.sol +++ b/Lesson-3/assignment/yours.sol @@ -1 +1,177 @@ /*作业请提交在这个目录下*/ + +pragma solidity ^0.4.14; + +contract Payroll{ + + struct Employee{ + address id; + uint salary; + uint lastPayday; + } + uint constant payDuration = 10 seconds; + address owner; + uint totalSalary = 0; + + modifier onlyOwner{ + require(msg.sender == owner); + _; + } + + modifier employeeExist(address employeeId){ + var employee = employees[employeeId]; + assert(employee.id == 0x0); + _; + } + + //Employee[] employees; + //构造函数 + function Payroll(){ + owner = msg.sender; + } + + function partialPaid(Employee employee) private{ + uint payment = employee.salary * (now - employee.lastPayday)/payDuration; + employee.id.transfer(payment); + } + + + //mapping(address => Employee) employees; + mapping(address => Employee) public employees; + + + /* + function findEmployee(address employee) private returns(Employee,uint) { + for(uint i= 0; i< employees.length; i++){ + if(employees[i].id == employee){ + return (employees[i],i); + } + + } + }*/ + + //onlyOwner use + function addEmployee(address employeeId,uint salary) onlyOwner + { + //require(msg.sender == owner); + //var (employee,index) = findEmployee(employeeId); + var employee = employees[employeeId]; + //solidity循环 + /*for(uint i= 0; i< employees.length; i++){ + if(employees[i].id == employee){ + revert(); + } + }*/ + //Employee memory employee = findEmployee(employeeId); + assert(employee.id == 0x0); + totalSalary+=salary * 1 ether; + employees[employeeId]=Employee(employeeId,salary* 1 ether,now); + //employees.push((employee,salary,now)); + } + + + /* + function addEmployee(address employeeId,uint salary) + { + require(msg.sender == owner); + //var (employee,index) = findEmployee(employeeId); + var employee = employees[employeeId]; + //solidity循环 + for(uint i= 0; i< employees.length; i++){ + if(employees[i].id == employee){ + revert(); + } + } + //Employee memory employee = findEmployee(employeeId); + //assert(employee.id == 0x0); + //totalSalary+=salary * 1 ether; + //employees[employeeId]=Employee(employeeId,salary* 1 ether,now); + //employees.push((employee,salary,now)); + } + */ + + function removeEmployee(address employeeId) + { + require(msg.sender == owner); + //var (employee,index) = findEmployee(employeeId); + var employee = employees[employeeId]; + assert(employeeId != 0x0); + //partialPaid(employee[index]); + partialPaid(employee); + //delete employee[index]; + totalSalary-=employees[employeeId].salary; + delete employees[employeeId]; + /* employees[index] = employees[employees.length-1]; + employees.length -=1;*/ + } + + + function updateEmployee(address employeeId,uint salary){ + require(msg.sender==owner); + var employee = employees[employeeId]; + //var (employee,index) = findEmployee(employeeId); + assert(employee.id != 0x0); + /* + partialPaid(employees[index]); + employees[index].salary = salary; + employees[index].lastPayday = now;*/ + partialPaid(employee); + totalSalary-=employees[employeeId].salary; + employees[employeeId].salary = salary * 1 ether; + totalSalary+=employees[employeeId].salary; + employees[employeeId].lastPayday = now; + } + + function addFund() payable returns(uint){ + return this.balance; + } + + function calculateRunway() returns (uint) + { +/* for (uint i=0;i < employees.length ;i++){ + totalSalary+=employees[i].salary; + }*/ + return this.balance/totalSalary; + } + + function hasEnoughFund() returns(bool) + { + return calculateRunway()>0; + } + //员工信息 + /* + function checkEmployee(address employeeId) returns(uint,uint) + { + var employee = employees[employeeId]; + return(employee.salary,employee.lastPayday); + }*/ + + function checkEmployee(address employeeId) returns(uint salary,uint lastPayday) + { + var employee = employees[employeeId]; + //return(employee.salary,employee.lastPayday); + salary = employee.salary; + lastPayday = employee.lastPayday; + } + +/* function getPaid() + { + var employee = employees[msg.sender]; + assert(employee.id!=0x0); + uint nextPayday = employee.lastPayday + payDuration; + assert(nextPayday Date: Wed, 21 Mar 2018 01:10:55 +0800 Subject: [PATCH 09/13] =?UTF-8?q?54=5F=E4=BA=8E=E5=AE=8F=E5=AD=A6=5F?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E8=AF=BE=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 54_于宏学_第三课作业 --- Lesson-3/assignment/{yours.sol => lesson3.sol} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Lesson-3/assignment/{yours.sol => lesson3.sol} (100%) diff --git a/Lesson-3/assignment/yours.sol b/Lesson-3/assignment/lesson3.sol similarity index 100% rename from Lesson-3/assignment/yours.sol rename to Lesson-3/assignment/lesson3.sol From b383be8786ce1f2633422b613fb048166fabaa14 Mon Sep 17 00:00:00 2001 From: yuhongxue Date: Wed, 21 Mar 2018 18:45:45 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 运行截图~ --- Lesson-3/addEmployee.png | Bin 0 -> 24461 bytes Lesson-3/addfund.png | Bin 0 -> 22607 bytes Lesson-3/calculateRunway.png | Bin 0 -> 19622 bytes Lesson-3/checkEmployee.png | Bin 0 -> 20022 bytes Lesson-3/employees.png | Bin 0 -> 15536 bytes Lesson-3/hasEnoughFund.png | Bin 0 -> 19708 bytes Lesson-3/removeEmployee.png | Bin 0 -> 21676 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Lesson-3/addEmployee.png create mode 100644 Lesson-3/addfund.png create mode 100644 Lesson-3/calculateRunway.png create mode 100644 Lesson-3/checkEmployee.png create mode 100644 Lesson-3/employees.png create mode 100644 Lesson-3/hasEnoughFund.png create mode 100644 Lesson-3/removeEmployee.png diff --git a/Lesson-3/addEmployee.png b/Lesson-3/addEmployee.png new file mode 100644 index 0000000000000000000000000000000000000000..76da527f1c70616c55e8cac41fcbb85ff2f4a069 GIT binary patch literal 24461 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 bg|a5|2-_2;iZP9c{x|#H>NNh8$MydLXX}?@ literal 0 HcmV?d00001 diff --git a/Lesson-3/addfund.png b/Lesson-3/addfund.png new file mode 100644 index 0000000000000000000000000000000000000000..daa948e07bb13f462bf19212adfacbc3ba1f6bd9 GIT binary patch literal 22607 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 literal 0 HcmV?d00001 diff --git a/Lesson-3/calculateRunway.png b/Lesson-3/calculateRunway.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ff356c5c52b46b316e368cc0f226a97aed7aaa GIT binary patch literal 19622 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 T>C?&u_zkkp-RpgU8zuEO%#`sz literal 0 HcmV?d00001 diff --git a/Lesson-3/checkEmployee.png b/Lesson-3/checkEmployee.png new file mode 100644 index 0000000000000000000000000000000000000000..aba96cdde442e6cddc99ed34d27d861d1af34dd4 GIT binary patch literal 20022 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 Q;a%Xo)8mI~$B?xD0c6hEAOHXW literal 0 HcmV?d00001 diff --git a/Lesson-3/employees.png b/Lesson-3/employees.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4ec0bc7eb53309be1f7a026915a9fe1f7e129a GIT binary patch literal 15536 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 O3zAopEBW`uoBsiKJ1*-0 literal 0 HcmV?d00001 diff --git a/Lesson-3/hasEnoughFund.png b/Lesson-3/hasEnoughFund.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0de94e50f377f80780f8550e08e8ac2fa00813 GIT binary patch literal 19708 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 Gg{ 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 Date: Wed, 21 Mar 2018 19:37:08 +0800 Subject: [PATCH 11/13] =?UTF-8?q?54=5F=E4=BA=8E=E5=AE=8F=E5=AD=A6=5F?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E8=AF=BE=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 54_于宏学_第三课作业 --- Lesson-3/assignment/lesson3.sol | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Lesson-3/assignment/lesson3.sol b/Lesson-3/assignment/lesson3.sol index 9a853fb..7790fb6 100644 --- a/Lesson-3/assignment/lesson3.sol +++ b/Lesson-3/assignment/lesson3.sol @@ -154,16 +154,6 @@ contract Payroll{ lastPayday = employee.lastPayday; } -/* function getPaid() - { - var employee = employees[msg.sender]; - assert(employee.id!=0x0); - uint nextPayday = employee.lastPayday + payDuration; - assert(nextPayday Date: Wed, 21 Mar 2018 21:01:10 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据第二节课的内容,修改了第一次作业~~ --- ...0\350\257\276\344\275\234\344\270\232.sol" | 53 +++++++++++++++ Lesson-1/assignment/yours.sol | 65 ------------------- 2 files changed, 53 insertions(+), 65 deletions(-) create mode 100644 "Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" delete mode 100644 Lesson-1/assignment/yours.sol diff --git "a/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" "b/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" new file mode 100644 index 0000000..97aecad --- /dev/null +++ "b/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" @@ -0,0 +1,53 @@ +/*作业请提交在这个目录下*/ + +pragma solidity ^0.4.14; + +contract Payroll{ + + uint constant payDuration = 10 seconds; + address owner; + uint salary; + address employee; + uint lastPayday; + + function Payroll(){ + owner = msg.sender; + } + + function updateEmployee(address e,uint s){ + require(msg.sender==owner); + if (employee != 0x0) + { + uint payment = salary * (now - lastPayday)/payDuration; + employee.transfer(payment); + } + + employee = e; + salary = s * 1 ether; + lastPayday = now; + } + + function addFund() payable returns (uint){ + return this.balance; + } + + function calculateRunway() returns (uint) + { + return this.balance/salary; + } + + function hasEnoughFund() returns(bool) + { + return calculateRunway()>0; + } + + function getPaid() + { + require(msg.sender == employee); + uint nextPayDay=lastPayday+payDuration; + assert(nextPayDay 0; - } - - function getPaid() { - require(msg.sender == employee); - - uint nextPayday = lastPayday + payDuration; - assert(nextPayday < now); - - lastPayday = nextPayday; - employee.transfer(salary); - } -} From 91cd2f85056429b98280fbe4682db2b140cbf68c Mon Sep 17 00:00:00 2001 From: yuhongxue Date: Wed, 21 Mar 2018 23:21:09 +0800 Subject: [PATCH 13/13] =?UTF-8?q?Update=2054=5F=E4=BA=8E=E5=AE=8F=E5=AD=A6?= =?UTF-8?q?=5F=E7=AC=AC=E4=B8=80=E8=AF=BE=E4=BD=9C=E4=B8=9A.sol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update 54_于宏学_第一课作业 --- ...0\350\257\276\344\275\234\344\270\232.sol" | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git "a/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" "b/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" index 97aecad..5a5ba7d 100644 --- "a/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" +++ "b/Lesson-1/assignment/54_\344\272\216\345\256\217\345\255\246_\347\254\254\344\270\200\350\257\276\344\275\234\344\270\232.sol" @@ -1,10 +1,9 @@ /*作业请提交在这个目录下*/ - pragma solidity ^0.4.14; contract Payroll{ - uint constant payDuration = 10 seconds; + uint constant payDuration = 2 seconds; address owner; uint salary; address employee; @@ -15,7 +14,7 @@ contract Payroll{ } function updateEmployee(address e,uint s){ - require(msg.sender==owner); + if (employee != 0x0) { uint payment = salary * (now - lastPayday)/payDuration; @@ -43,11 +42,16 @@ contract Payroll{ function getPaid() { - require(msg.sender == employee); - uint nextPayDay=lastPayday+payDuration; - assert(nextPayDaynow){ + revert(); + } + lastPayday = nextPayday; employee.transfer(salary); } - }