
äžé£ã®èšäºããããã¯ãã§ãŒã³æè¡ãžã®æ²¡å ¥ã
1. Emerãã¯ãããžãŒã«é¢ããäžé£ã®è³æïŒ
1.1ã EmerCoinã®ç§å¯ ã
1.2ã åæ£åã®ç¡ä¿®æ£ãã¡ã€ã³ããŒã ã·ã¹ãã ã
1.3ã äžçèŠæš¡ã®å ¬ééµã€ã³ãã©ã¹ãã©ã¯ã㣠ã
1.4ã åæ£ãã¹ã¯ãŒãã¬ã¹ã»ãã¥ãªãã£ã·ã¹ãã ã
2. é«éã§å®å šãªãã©ã³ã¶ã¯ã·ã§ã³ ã
3. ããžã¿ã«æ¯ç§ã®ãšã³ã·ã¹ãã ã
4. åœé åãšã®æŠã ã
5. çžäºåç©ä¿éº ã
6. ICOãšã¯äœãããããŠãããè¡ãæ¹æ³ ã
7.èªã¿èŸŒã¿äž...
ReGa Risk Sharingããã³Lexiãšã¯
ReGa Risk Sharingã¯ãã¹ããŒãã³ã³ãã©ã¯ããã¯ãããžãŒãåçIDãã¹ã³ã¢ãªã³ã°ã䜿çšããçžäºãããä¿éºã®ãã©ãããã©ãŒã ãéçºããŸããã Lexi Botãªã¹ã¯ç®¡çããããã¯ãã¯ã©ã€ã¢ã³ãããããææè çžäºæ¶å©ã¯ã©ã-Lexi Clubã«åå ããã®ãæ¯æŽããæã«çŽ350ã«ãŒãã«ã®äŒè²»ãè²æž¡ããåŸãçªç¶ã®ç æ°ããããã®äºæ ã®å Žåã«ç£å»ãµãŒãã¹ã®ã³ã¹ãã®æ倧80ïŒ ãåãåããŸãã åã¯ã©ãã¡ã³ããŒã¯ãä»®æ³Lexiã«ãŒããåãåããŸããããã¯ãã€ãŒãµãªã¢ã ãããã¯ãã§ãŒã³äžã®ã¯ã©ãã¡ã³ããŒã®ã¢ã«ãŠã³ãã管çããã¹ããŒãã³ã³ãã©ã¯ãã®èå¥åã§ãã
åæ£éèåå
ReGa Risk Sharingãã©ãããã©ãŒã ã¯ãåæ£åéèååïŒäžå€®éæš©åéèæ©é¢ã®åå ãªãã«çç£ããã³ä¿å®ã§ããååïŒãéè¡ããã³ä¿éºäŒç€Ÿã販売ããŠããŸãã ä»»æã®ãã€ã¯ããã¡ã€ãã³ã¹è£œåãšåŒã°ããå¯èœæ§ã®ãããæè³ïŒã¯ã¬ãžããïŒã®èŠæš¡ãå°ããéèååã®å Žåãæ¢åã®éè¡ã·ã¹ãã ã¯ãæå®ã®ãªã¹ã¯ã¬ãã«ã§ã³ã¹ããšå質ã®é©åãªæ¯çãæäŸã§ããŸããã ããã¯äž»ã«ãèŠå¶ã®äžè¬ååã§ã¯ããžãã¹ããã»ã¹ãæé©åããããã®ææ°ã®ãã¯ãããžãŒã®äœ¿çšãèš±å¯ãããŠããªããšããäºå®ã«ãããã®ã§ãã ãã®ã¯ã©ã¹ã®è£œåã®äŸã¯ãã€ã¯ãã€ã³ã·ã¥ã¢ã©ã³ã¹ã§ãããå¹³åè«æ±é¡ã¯çŽ1,000ã«ãŒãã«ã§ãããåæã«æ倱ã®æ±ºæžã«ã¯ä¿éºäŒç€Ÿããã®å€å€§ãªè²»çšãå¿ èŠã§ãã ãã®çµæãã¯ã©ã€ã¢ã³ããšã®å¥çŽã¯éåžžãä¿éºéè«æ±ã®æ¯æãã®ã±ãŒã¹ãå®è³ªçã«é€å€ãããããªæ¹æ³ã§äœæãããŸãã 解決çã¯ãã¯ã©ã€ã¢ã³ãèªèº«ãä»®æ³ä¿éºäŒç€Ÿã«å£çµããŠããå Žåãçžäºä¿éºã¢ãããŒãã䜿çšãããã®ä¿éºäŒç€Ÿã®è³æ¬ãæ åºéïŒä¿éºæïŒãã圢æããçžäºä¿éºåºéããä¿éºã±ãŒã¹ã®æ¯æããè¡ãããšã§ãã
åæ£åéèååãã©ãããã©ãŒã ã¯ãåºæ¬çã«ãã®ãããªçžäºéè¡/ä¿éºäŒç€Ÿåãã®èªååãããéè¡/ä¿éºã·ã¹ãã ã§ããããããã¯ãã§ãŒã³äžã®è³éã®äŒèšãšä¿ç®¡ããªã¹ã¯è©äŸ¡ãšç®¡çãããžãã¹ããã»ã¹ãšã¯ãŒã¯ãããŒã®èªååããµãŒãã¹ãããã€ããŒã®éžæãšãªã¹ã¯è©äŸ¡ãå«ãå€ãã®ãµãŒãã¹ãæäŸããŸãä¿éºã€ãã³ãã®æ±ºæžããã³åå è éã®æ±ºæžã ãããã¯ãã§ãŒã³ã¯çžäºä¿éºäŒç€Ÿã®è³æ¬ã®ãªããžããªã§ãããã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ã¯ããã¹ãŠã®åå è ãåæãã眲åãããè³éã®è£å ãšæ¯åºã®ã«ãŒã«ã決å®ããã¹ããŒãå¥çŽã«ãã£ãŠå¶åŸ¡ãããŸãã
åæ£éèååã¢ãŒããã¯ãã£
åæ£åéèååã®ã¢ãŒããã¯ãã£ã¯ããããã¯ãã§ãŒã³ãéèããªããã£ããéèååãã¢ããªã±ãŒã·ã§ã³ã®4ã€ã®ã¬ãã«ã§æ§æãããã¢ãã«ã®åœ¢åŒã§è¡šãããšãã§ããŸãã

ãããã¯ãã§ãŒã³ã¬ãã«ã¯ãåæ£åã®ä¿¡é Œæ§ã®é«ãããŒã¿ãŠã§ã¢ããŠã¹ãšããŠãã¹ããŒãã³ã³ãã©ã¯ããã¢ã«ãŠã³ãã財åã¡ãã»ãŒãžãã¯ããŒãºãã¡ãã»ãŒãžã®éä¿¡ãæå·é貚ããããã¯ãã§ãŒã³èªäœãäœæããã³å®è¡ããã¡ã«ããºã ãå«ããäžé£ã®åºæ¬ãµãŒãã¹ãã¢ãã«ã®æ®ãã®ã¬ãã«ã«æäŸããŸãã ãããã¯ãã§ãŒã³ã«ã¯ãç§å¯éµã«ãã£ãŠå¶åŸ¡ãããå€éšã¢ã«ãŠã³ããŸãã¯å人ã¢ã«ãŠã³ããšãããã°ã©ã ã«ãã£ãŠå¶åŸ¡ãããå¥çŽã¢ã«ãŠã³ãã®2çš®é¡ã®ã¢ã«ãŠã³ãããããã¢ã«ãŠã³ããã©ã³ã¹ãšãã®å éšå€æ°ã®ç¶æ ãšãšãã«ãããã¯ãã§ãŒã³ã«ä¿åãããã¹ããŒãã³ã³ãã©ã¯ãããããšæ³å®ãããŠããŸãã å£åº§éã®è³é移åã¯ã財åã¡ãã»ãŒãžãéä¿¡ããããšã«ããå®è¡ãããŸãã 財åã¡ãã»ãŒãžã·ãŒã±ã³ã¹ãŸãã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§è ã¯ãå€éšã¢ã«ãŠã³ãã®ææè ã®ã¿ã§ãã åä¿¡è ã¯ãå€éšã¢ã«ãŠã³ããšå¥çŽã¢ã«ãŠã³ãã®äž¡æ¹ã«ããããšãã§ããŸãã ã¹ããŒãã³ã³ãã©ã¯ãã§éèã¡ãã»ãŒãžãåŠçããçµæãæ°ããéèã¡ãã»ãŒãžãäœæã§ããŸãã ãããã£ãŠããã©ã³ã¶ã¯ã·ã§ã³ã¯ãã¡ãã»ãŒãžã®ã·ãŒã±ã³ã¹å šäœããŸãã¯ãã®åŠççµæã§æ§æãããå€éšã¢ã«ãŠã³ããšå¥çŽã¢ã«ãŠã³ãã®äž¡æ¹ã®ã¢ã«ãŠã³ãå šäœãå«ãããšãã§ããŸãã åãã©ã³ã¶ã¯ã·ã§ã³ã¯ããã®å®è£ ã®ã³ã¹ãã«é¢é£ä»ããããŠããããã®å€ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§è ã®ã¢ã«ãŠã³ãããåŒãèœãšãããŸãã
ãFinancial Primitivesãã¬ãã«ã¯ã次ã®ã¬ãã«ã®éèååã®ããã«ãã£ã³ã°ããããã¯ã®ã»ããã§ãã ãããã®ãµãŒãã¹ã®äžéšã¯ãããã¯ãã§ãŒã³ãµãŒãã¹ã«åºã¥ããŠå®è£ ãããäžéšã¯åæ£ããŒã¿ããŒã¹ãžã®æ å ±ã®ä¿åã«é¢é£ããªããªããã§ãŒã³ããªããã£ãã§ãã ãããã£ãŠãã¹ã³ã¢ãªã³ã°ã¢ãã«ïŒã«ãŒãïŒããããã¯ãã§ãŒã³ã«ä¿åããããšã¯ã§ããŸããããã®å Žåãæœåšçãªé¡§å®¢ãå«ããã¹ãŠã®ãŠãŒã¶ãŒãå©çšã§ããããã«ãªãããã§ãã
åçã®æ¡ç¹
ã¯ã©ã€ã¢ã³ãã®åçã«åºã¥ããŠã¹ã³ã¢ãªã³ã°ã¢ãã«ãæ§ç¯ããããã«ãMicrosoftãæäŸãããã¯ãããžãŒã§ããMicrosoft Cognitive ServiceãšAzure Machine Learningã䜿çšããŸããã Microsoft Face APIïŒMS CognitiveïŒãµãŒãã¹ã䜿çšããŠãæ¶è²»è ããŒã³ãæåŠããããã¹ã³ã¢ãªã³ã°ããã³ä¿éºåŒåã·ã¹ãã ã«æ¥ç¶ããŠããéè¡ã®å°ãªããšã1ã€ã«ãã£ãŠæ¿èªãããæœåšçãªåãæã®çŽ15,000æã®åçãåŠçãããŸããã é¡ã®ã©ã³ãããŒã¯ãšé¡ã®å±æ§ïŒ
age
ã
gender
ã
headPose
ã
smile
ã
facialHair
ããã³
glasses
ïŒããå¯èœãªãã©ã¡ãŒã¿ãŒã®å®å šãªã»ãããååŸãããŸããã 次ã«ãé¡ãèŠã€ãããªãããè€æ°ã®é¡ãèŠã€ãã£ãå Žæã«åçãããããããŸããã ãããã£ãŠãåçã®çŽ3ïŒ ãåé€ãããŸããã
æ®ãã®ããŒã¿ã»ããã¯æ£èŠåãããŸãããã€ãŸãã
Landmarks
ã¯é ã®å転ãèæ ®ããŠå€æããïŒ
Roll
ããã³
Yaw
ãã©ã¡ãŒã¿ãŒïŒããã¹ãŠã®ãé¡ãã¯åäžã®ãµã€ãºïŒ100x100ïŒã«æ¯äŸããŠçž®å°ãããé¡ã®ãã©ã¡ãŒã¿ãŒãäºãã«æ¯èŒã§ããããã«ãªããŸããã åŠçãããååçã«ã¯ãå±æ§
Result = {0 - | 1 - }
Result = {0 - | 1 - }
ã ãã®ååŠçãšæ£èŠåã®åŸãé åã¯CSVãã¡ã€ã«ã«å€æãããAzure Machine Learningã«ã¢ããããŒããããŸããã
SMOTE
æ©èœã®ãµãã»ããã®éžæããã³
SMOTE
åŠå®çãªçµæã®éžæã®è¿œå ïŒ
Result = 0
ïŒãå«ããå€ãã®ãã£ã«ã¿ãŒãçµæã®ããŒãã«ã«é©çšãããŸããã ãã®çµæããµã³ãã«ã®è¡æ°ã¯18,754ã«å¢å ããå±æ§ïŒåïŒã®æ°ã¯64ã«ãªããŸãããã¢ãã«ãšããŠãå ã®é åïŒ13,000è¡ïŒã ãã¬ãŒãã³ã°åŸãã¢ã¬ã€ã®æ®ãã®éšåïŒçŽ6,000è¡ïŒã䜿çšããŠãã¢ãã«ã®ç²ŸåºŠãã¹ã³ã¢ãªã³ã°ããã³è©äŸ¡ããŸããã
次ã®çµæãåŸãããŸããã


ãªã¹ã¯ã°ã«ãŒãã®éå±€æ§é
ãªã¹ã¯ã管çããããã«ãReGa Risk Sharingãã©ãããã©ãŒã ã§ã¯ãã¹ã³ã¢ãªã³ã°å€ã®ç¯å²ã«å¿ããŠãç䟡ã°ã«ãŒãã®3ã¬ãã«ã®éå±€æ§é ã䜿çšããŠããŸãã äžäœã¬ãã«-ãã¹ãŒããŒããŒã«ãã¯ããã¹ãŠã®ã³ãã¥ããã£ã¡ã³ããŒã®ã¹ã³ã¢ãªã³ã°å€ã®æå°èš±å®¹ã¬ãã«ãå®çŸ©ããŸãã 次ã®ã¬ãã«-ãããŒã«ãã¯æ倧ç¯å²ãããã€ãã®ãµãç¯å²ã«ãåå²ããã次ã®ã¬ãã«ã®ããµãããŒã«ãã¯æçµçã«ãªã¹ã¯ã°ã«ãŒããå®çŸ©ããŸãã

ã³ãã¥ããã£ã®æ°ããã¡ã³ããŒã«ã€ããŠã¯ãã¹ã³ã¢ãªã³ã°å€ãèšç®ããããã®å€ã«åºã¥ããŠãéå±€æ§é ã«ãããã³ãã¥ããã£ã¡ã³ããŒã®ã¹ããŒãã³ã³ãã©ã¯ãã®äœçœ®ãèšç®ãããŸãã ãªã¹ã¯ã®ã°ã«ãŒãåã®äž»ãªèãæ¹ã¯ãããŸããŸãªã«ããŽãªã®ãªã¹ã¯ãçžäºã«åé¢ããæ§é ã®ããŸããŸãªã¬ãã«ã§ãªã¹ã¯ã®å®å¹å€ã远跡ããæ©èœã§ãã ããã«ãã°ã«ãŒãã®1ã€ãæå®ããããªã¹ã¯å€ãè¶ ããã°ã«ãŒããç¶æããããã®æšå®ã³ã¹ããæ®äœå€ãããé«ãå Žåãã°ã«ãŒãã¯è§£æ£ããã³ãã¥ããã£ãå»ãã¡ã³ããŒã«ã³ãã¥ããã£ã®è²¢ç®ãè¿ãããŸãã
ããŒã«æ§é ã¯ãEthereumä»®æ³ãã·ã³ã®Solidityèšèªã®ã¹ããŒãã³ã³ãã©ã¯ããšããŠå®è£ ãããŸãã ã³ã³ãã€ã©ã®ãªã³ã©ã€ã³ããŒãžã§ã³ã¯GitHubã§å ¥æã§ããŸã ã Solidityã§ã¯å€éç¶æ¿ãèš±å¯ãããŠããããšã«æ³šæããŠãã ããã 以äžã¯ãéå±€æ§é ãç·šæããã¯ã©ã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãã
poolAccountsã¯ã©ã¹ã¯ãéè¡äŒèšã®çµç¹ã®ã¢ã«ãŠã³ãã®å éšæ§é ã§ã®è³é移åã®äŒèšãå®è£ ããŸãã
pragma solidity ^0.4.6; contract poolAccounts { address public owner; int[11] public accounts; function changeBalance(int _amount, an _account) internal; function getBalance(an _account) internal constant returns(int _balance); function isValid() public constant returns(bool _valid); function posting(an _dr, an _cr, int _amount) public; function update(int _number, int _case) public; }
riskManager-ãªã¹ã¯ç®¡çãµãŒãã¹ã®è£å©ã¯ã©ã¹ã
pragma solidity ^0.4.6; contract riskManager { uint public risk; // current risk uint public minScore; // minimum accepting score uint public level; // risk manager level uint public cases; // number of cases per member function accept(regaMember _member) public constant returns(bool _accept, pool _pool); }
poolMemberã¯ã©ã¹ã¯ããŒã«ã®ã¡ã³ããŒã§ãããã³ãã¥ããã£ã®ã¡ã³ããŒãŸãã¯äžéã¬ãã«ã®ããŒã«ã®ããããã§ãã
pragma solidity ^0.4.6; contract poolMember is poolAccounts { pool public parent; int public limit; function getPool(uint _level) public constant returns(pool _pool); function posting(an _dr, an _cr, int _amount); function update(int _number, int _case); function setParent(pool _parent) public; function loan(int _amount) public; function checkLimit(int _loan) public constant returns(bool); }
ã¯ã©ã¹poolããã³poolOfPools-ããŒã«ããã³ããŒã«ã®ããŒã«ãæäœããããã®ã¡ãœãããå®è£ ããŸããããŒã«
pragma solidity ^0.4.6; contract pool is riskManager, poolAccounts { bytes32 public name; poolMember[] public members; function insert(poolMember _member) public; function isMember(address _member) public constant returns(bool); function update(int _number, int _case); function getPool(uint _level) public constant returns(pool _pool); function lendingCheck(int _loan, poolMember _member) public constant returns(bool); function lend(int _loan, poolMember _member) public; function loan(int _amount, uint _level) public; }
ããŒã«ããŒã«
contract poolOfPools is pool { function insert(poolMember _member) public; function push(pool _pool) public; function isMember(address _member) public constant returns(bool); function accept(regaMember _member) public constant returns(bool _accept, pool _pool) }
ã¬ã¬ã¹ãŒããŒããŒã«
pragma solidity ^0.4.6; contract regaSuperPool is poolOfPools { function regaSuperPool(uint _minScore, address _owner) }
ã¬ã¬ããŒã«
pragma solidity ^0.4.6; contract regaPool is poolOfPools, poolMember { function regaPool(uint _minScore, address _owner); function getPool(uint _level) public constant returns(pool _pool); function loan(int _amount, uint _level) public; }
ã¬ã¬ãµãããŒã«
pragma solidity ^0.4.6; contract regaSubPool is pool, poolMember { function regaSubPool(uint _minScore, address _owner, uint _cases); function getPool(uint _level) public constant returns(pool _pool); function loan(int _amount, uint _level) public; function insert(poolMember _member) public; }
補å
次ã®éå±€ã¯ã補åã説æããããã«äœ¿çšãããŸãã

ååæ£éèååïŒã¬ãã«1ïŒã¯ã次ã®å±æ§ãæã€ã¯ã©ã¹ã«ãã£ãŠèšè¿°ãããŸãã
- 補åãã©ã¡ãŒã¿ãŒãšèšç®æ©
- ã¯ã©ã€ã¢ã³ãã®èŠä»¶ïŒ
needs
ïŒãšå¶éã®ããã«è£œåãéžæããããã®ã«ãŒã« - å¥çŽç· çµã®ããžãã¹ããã»ã¹ïŒ
underwriting process
ïŒ - 補åãµãŒãã¹ã®ããžãã¹ããã»ã¹ïŒ
support process
ïŒ - ããžãã¹ããã»ã¹ã®å¥çŽçµäºïŒ
closure process
ïŒ -
risk management rules
-
scoring cards
-
accounting rules
- éå±€ããŒã«
pools structure
å補åã«ã€ããŠãã¯ã©ã€ã¢ã³ãã®èŠä»¶ãšå¶éã«å¿ããŠãã®è£œåãéžæããããã®ã«ãŒã«ã決å®ãããŸãã å¥çŽãç· çµããããã»ã¹ã§ã¯ãã¯ã©ã€ã¢ã³ããšã®å¥çŽãç· çµããããã«ã·ã¹ãã ãå®è¡ããå¿ èŠã®ããäžé£ã®ã¢ã¯ã·ã§ã³ã«ã€ããŠèª¬æããŸãã ã¯ã©ã€ã¢ã³ãããšã«ã補åãã©ã¡ãŒã¿ãŒãšèšç®æ©ã䜿çšããŠå¥çŽã®æ¡ä»¶ãèšç®ã§ããŸãã ããšãã°ãåç©ã®çžäºä¿éºã®å Žåãç«ãç¬ãã«å¿ããŠã補åèšç®æ©ã¯å¥çŽã®ã³ã¹ããèšç®ããŸã-Lexi Card Standart per monthïŒ333ã«ãŒãã«-ç¬ã289ã«ãŒãã«-ç«ã
Microsoft Azureã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å®è£
ãããä¿éºçžäºä¿éºç³è«ã¬ãã«ã¯ãããã®åœ¢ã§å®è£ ãããŸã-Lexi Botã¯ãã¯ã©ã€ã¢ã³ãããããææè çžäºæ¶å©ã¯ã©ãã«åå ããäŒè²»ã移ããåŸãçªç¶ã®ç æ°ããããã®äºæ ã®å Žåã«ç£å»ãµãŒãã¹ã®è²»çšã®æ倧80ïŒ ãåãåããŸãã ããã«ãLexi Botã¯ãææè ããœãŒã·ã£ã«ãããã¯ãŒã¯äžã®åçã§å€±ãããåç©ãèŠã€ããã®ãæ¯æŽããç£å»ãšã®ãªã³ã©ã€ã³çžè«ãæé ããŸãã Lexi Card Clubã«ãŒããåãåãã«ã¯ãææè ã¯Facebook MessengerãTelegramãSlackããŸãã¯ããããã®Webãµã€ãã§ãããããšã®å¯Ÿè©±ãéããèªåã®åçããããã®åçãã¢ããããŒãããé¢çšãåãåããã¯ã©ãã¡ã³ããŒã®ã¹ããŒãå¥çŽã«ééããã ãã§ãã
æãæ»ããåããã«ã¯ãLexi Botãä»ããŠç£å»ãšäºçŽãåãã蚺çæã§åç©ã®åçãæ®ãçŽããããããã«è«æ±æžãšå°åæã®åçãéã£ãŠãã ããã ããããã¯ãææè ããåãåã£ãããŒã¿ãšç£å»ã¯ãªããã¯ããååŸããããŒã¿ãèªåçã«æ¯èŒããã¯ã©ãã®è³éããã¯ã©ãäŒå¡ã®å£åº§ã«è¿éããŸãã Lexi Botããããã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯ã Microsoft Bot Frameworkã䜿çšããŠéçºãããåäžã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã䜿çšããŠãã¯ã©ã€ã¢ã³ããšã®è€æ°ã®éä¿¡ãã£ãã«ããµããŒãã§ããŸãã åç©ã®èå¥ã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ã«åºã¥ãåé¡ã¢ã«ãŽãªãºã ã«ãã£ãŠå®è¡ãããŸããããã«ãããåãåç©ã®ããŸããŸãªåçãçŽ95ïŒ ã®ç²ŸåºŠã§æ¯èŒã§ããŸãã
ãœãªã¥ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ãšããã§ãã

Microsoft Azure Bot Serviceã§Microsoft Bot Frameworkã䜿çšãããããå®è£ ã®æè¡çãªåŽé¢ãããã€ãèããŠã¿ãŸãããã
ã€ãŒãµãªã¢ã ã³ã³ãœãŒã·ã¢ã ãããã¯ãã§ãŒã³
äžèšã®ã¢ãŒããã¯ãã£ã¯ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãä»ããŠãããããã³ã€ãŒãµãªã¢ã ãšçžäºäœçšããŸãããããããšã€ãŒãµãªã¢ã ãã©ãããã©ãŒã éã§çŽæ¥éä¿¡ããæ¹æ³ãæ€èšããŸãã ãŸãããããã§ãã©ã³ã¶ã¯ã·ã§ã³ã«çŽæ¥çœ²åããããã®ããŒã®çæãšä¿åãå®è£ ããå¿ èŠããããŸããã ãããè¡ãã«ã¯ã
web3
ã¢ãžã¥ãŒã«ãšäžç·ã«
eth-lightwallet
ã¢ãžã¥ãŒã«ã䜿çšã§ããŸã
eth-lightwallet
ã®äŸ
var Web3 = require('web3'); var web3 = new Web3(); var lightwallet = require('eth-lightwallet'); var HookedWeb3Provider = require("hooked-web3-provider"); var keyStore = lightwallet.keystore; var seed = <seed> var host = <ethereum transaction host>; var pswd = <passowrd> var contractAddr = <contract addr>; var abi = <contract interface>
ããã§ãã¡ã³ããŒã®ã¹ããŒãã³ã³ãã©ã¯ãã¢ã«ãŠã³ãã«æè³ããæ¹æ³ãå®è£ ã§ããŸãã
blockchain.prototype.invest = function(acc, amount, success) { if(web3 == null) throw new Error('invest: Web3 provider is null'); var contract = web3.eth.contract(abi); var instance = contract.at(contractAddr); var gas = 500000; var gasPrice = web3.toWei(20, "gwei"); var address = acc; var value = web3.toWei(parseInt(amount), "ether"); instance.invest.sendTransaction(value, {gas: gas, gasPrice: gasPrice, value: value, from: address}, function(err, tnx) { if (err) throw err; else success(tnx); }); }; module.exports = new blockchain();
ãã¹ããéå§ããåã«ãAzure Ethereum Blockchain Consortiumãã©ã³ã¶ã¯ã·ã§ã³ãã·ã³ïŒãã®å Žåã¯
regakrlby-tx0
ïŒã«
geth
ãã
geth
ãå®è¡ããŠå¥çŽæ§é ãäœæããå¿ èŠããããŸãã
Microsoft Cognitive Services
ãããã®çš®é¡ïŒç«ãŸãã¯ç¬ïŒã®æåã®èªèã«ã¯ã Microsoft Cognitive Servicesã䜿çšãããŸãã ã çµ±åã«ã€ããŠã¯ãGitHubã®äŸã䜿çšã§ããŸã ã 以äžã¯ãåç©ã®åçãååŸããéã®ãã€ã¢ãã°ã®äžéšã§ãã
bot.dialog('/image', session => { if (hasImageAttachment(session)) { var stream = getImageStreamFromUrl(session.message.attachments[0]); captionService.getCaptionFromStream(stream) .then(caption => handleSuccessResponse(session, caption)) .catch(error => handleErrorResponse(session, error)); } else if(imageUrl = (parseAnchorTag(session.message.text) || (validUrl.isUri(session.message.text)? session.message.text : null))) { captionService.getCaptionFromUrl(imageUrl) .then(caption => handleSuccessResponse(session, caption)) .catch(error => handleErrorResponse(session, error)); } else { session.send("Did you upload an image? I'm more of a visual person. Try sending me an image or an image URL"); } });
çµæåŠçïŒ
const handleSuccessResponse = (session, caption) => { if (caption) { session.send("I think it's " + caption); } else { session.send("Couldn't find a caption for this one"); } session.beginDialog('/'); }
Yandex Money SDK
ã«ãŒãã«ãæå·é貚ã«äº€æããã«ã¯ãããããã«ãŒãã«é»åãŠã©ã¬ãããšçµ±åããå¿ èŠããããŸãã ãã®äŸã§ã¯ãYandex Moneyãéžæããã
yandex-money-sdk
ã¢ãžã¥ãŒã«ã䜿çšãããŸããã
npm install yandex-money-sdk
ã³ãã³ãã䜿çšããŠnpmãªããžããªãããã®ã¢ãžã¥ãŒã«ã
npm install yandex-money-sdk
ãšãä¿®æ£ãå¿ èŠãªãšã©ãŒã®ããã©ã€ãã©ãªã衚瀺ãããããšã«æ³šæããŠãã ããã
Wallet.getAccessToken = function (clientId, code, redirectURI, clientSecret, callback) { var full_url = base.SP_MONEY_URL + "/oauth/token"; request.post({ "url": full_url, "form": { "code": code, "client_id": clientId, "redirect_uri": redirectURI, "client_secret": clientSecret, } }, base.processResponse(callback) ); };
getAccessToken
ã¢ãžã¥ãŒã«ã®
getAccessToken
é¢æ°ãããã¿ã€ãã§ã
getAccessToken
ã®è¡ãè¿œå ããŸãã
Wallet.getAccessToken = function (clientId, code, redirectURI, clientSecret, callback) { var full_url = base.SP_MONEY_URL + "/oauth/token"; request.post({ "url": full_url, "form": { "code": code, "client_id": clientId, "redirect_uri": redirectURI, "client_secret": clientSecret, "grant_type": "authorization_code" } }, base.processResponse(callback) ); };
Yandex Moneyãšã®çµ±åã«ããã次ã®å°é£ã¯ãMicrosoft Azure Bot Serviceã®ããããAzure Functionã§ãããšããäºå®ã«ãããã®ã§ãã
yandex-money-sdk
ãšçµ±åããã«
yandex-money-sdk
æ°ããHTTPããªã¬ãŒ
yandex
æšæº
messages
æ©èœã«è¿œå ããå¿ èŠããããŸãã ãã®é¢æ°ã¯ã2èŠçŽ èªèšŒãæž¡ããšãã«Yandexã«ãã£ãŠåŒã³åºãããŸãã ãããã®ã«ãŒããã£ã¬ã¯ããªã«æ°ããé¢æ°ãè¿œå ããã«ã¯ããã®äŸã§ã¯
yandex
ãšããæ°ãããã£ã¬ã¯ããªãè¿œå ããå¿ èŠããããŸããããã«æ¬¡ã®ãã¡ã€ã«ãé 眮ããå¿ èŠããããŸãã
drwxr-xr-x 5 sevriugin staff 170 Feb 13 12:16ã
drwx ------ @ 12 sevriugin staff 408 Feb 13 12:15 ...
-rwxr-xr-x @ 1人ã®sevriuginã¹ã¿ãã258 Feb 15 11:12 function.json
-rwxr-xr-x @ 1人ã®sevriuginã¹ã¿ãã1426 2æ15 11:13 index.js
-rw-r-r-- 1人ã®sevriuginã¹ã¿ãã530 2æ13æ¥21:05 package.json
function.json
ãã¡ã€ã«ã§æ°ããé¢æ°ãæ£ããèšè¿°ããããšãéèŠã§ãã çä¿¡ã³ãŒã«ã®å ŽåãèªèšŒã¬ãã«ã
anonymous
èšå®ããå¿ èŠããããŸãã å®éãYandexã¯ã³ãŒã«ããã¯ãè¡ããŸãã
code
å€ãæž¡ããèªèšŒã¬ãã«ã
anonymous
ã«çãããªãå Žåããã®ãã©ã¡ãŒã¿ãŒã¯ãã³ãã©ãŒã§ã¯ãªãMicrosoft Azure Bot Serviceã«ãã£ãŠè§£éãããŸãã
{ "disabled": false, "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req" }, { "type": "http", "direction": "out", "name": "res" } ] }
æ©èœéã§ã¡ãã»ãŒãžã転éããã«ã¯ãAzure Storageãã¥ãŒãµãŒãã¹ã䜿çšããŸãã
"use strict"; var config = require('../messages/config'); var azure = require('azure-storage'); var queueService = azure.createQueueService(config.azure_storage.account, config.azure_storage.key1); queueService.createQueueIfNotExists('myqueue', function(error) { if (!error) { // Queue exists console.info(`createQueueIfNotExists: Queue is created` + config.azure_storage.name); } }); module.exports = function(context, req) { if (req.query.code || (req.body && req.body.code)) { context.res = { body: "Please return to the chatâŠ" }; } else { context.res = { status: 400, body: âCode is not foundâ }; } queueService.createMessage('myqueue', req.query.sessionId + (req.query.code || req.body.code) , function(error) { if (!error) { console.info(`createMessage: Message is inserted`); } }); context.done(); };
ããããæ åœããã¡ã€ã³é¢æ°ã§ãé»åãŠã©ã¬ããããããïŒããããŠãŒã¶ãŒïŒã«ãã€ã³ãããããã«ããã€ãã®åŒã³åºããè¡ãå¿ èŠããããŸãã ãŸãã
messages
é¢æ°ã¯
yandex-money-sdk
åŒã³åºãåã«ããŠãŒã¶ãŒãšã®ãã€ã¢ãã°ã®ç¶æ ãä¿åããå¿ èŠãããããšã«æ³šæããŠ
messages
ã ãããè¡ãã«ã¯ãããŒã¿ããŒã¹ã«
session.message.address
ãèšé²ããYandexãåŒã³åºããšãã«
session.message.address.id
ãæž¡ãã ãã§ååã§ãã ãã®èå¥åã¯ã
yandex
é¢æ°ãåŒã³åºããšãã«Yandexã«ãã£ãŠè¿ãããŸãã æ®å¿µãªãããAzure Storage Serviceã®ãã¥ãŒãµãŒãã¹ã¯ããã¥ãŒå ã®ã¡ãã»ãŒãžã®ååšã確èªããéã«ãããã¯ããã«æ©èœããŸãããã®ãããã¡ãã»ãŒãžé¢æ°ã§ããŒãªã³ã°ãå®è£ ããå¿ èŠããããŸããã
function getMessage(error, serverMessages, id, cb) { if (!error) { if(((serverMessages && Array.isArray(serverMessages)) && serverMessages.length > 0) && serverMessages[0].messageText.startsWith(id)) { var code = serverMessages[0].messageText.slice(id.length); cb(code); queueService.deleteMessage('myqueue', serverMessages[0].messageId, serverMessages[0].popReceipt, function(error) { if (!error) { // Message deleted } }); } else { setTimeout(function() { queueService.getMessages('myqueue', function(error, serverMessages) { if(!error) { getMessage(error, serverMessages, id, cb); } }); }, 3000); } } }
Microsoft Azureãéžã¶çç±
æ°è£œåãè¿ éã«åžå Žã«æå ¥ããã«ã¯ãããåªããã¯ã©ãŠããµãŒãã¹ãèæ¡ããããšã¯å°é£ã§ãã åé¡ããããAzureãµãŒãã¹ã®äžéšãåžæã©ããã«å®å®ããŠåäœããŠããªãããšã¯æããã§ãã ããšãã°ãMicrosoft Azure Bot Service-ãŸã ãã¬ãã¥ãŒã¢ãŒãã§ååšããŸããããããã®å°ããªäžäŸ¿ãã«ããŒããããã«ãã»ãšãã©ãã¹ãŠã®æ§æã§ããã«å©çšã§ããèšå€§ãªæ°ã®ãµãŒãã¹ããããŸãã ãããã¯ãã§ãŒã³ãµãŒãã¹ã®å¯çšæ§ã¯ãããžã§ã¯ãã«ãšã£ãŠç¹ã«éèŠã§ãããããã«ã Ethereum Blockchain as a Serviceã¯æåŸ ãå®å šã«æºãããŸãã-è¿ éãªã¢ã¯ãã£ããŒã·ã§ã³ãšèšå®ããããžã§ã¯ãã®ä»ã®éšåãšã®å®¹æãªçµ±åã ãããžã§ã¯ãã§ã¯ã Azure Bot Service ã Azure Storage ã Microsoft Cognitive Service ã Azure Machine Learning ã Azure Ethereum Blockchain Consortiumã®åèšã§æ¬¡ã®ãµãŒãã¹ã䜿çšãããŸããã
ãããã«
ãã®èšäºã¯ãåç©ã®çžäºä¿éºãµãŒãã¹ããã¹ãããããšãã«æžãããŸããã ç£æ¥çšæ§æã¯ãäžèšã®ã¢ãŒããã¯ãã£ãšã¯è¥å¹²ç°ãªããŸããç¹ã«ãMicrosoft Azure Bot Serviceã®ä»£ããã«Azure App Serviceã䜿çšãããŸãã GitHubã®ãããžã§ã¯ãã
èè ã«ã€ããŠ

ããã§ã¯ãMicrosoft Azureãç¡æã§è©Šçšã§ããããšããç¥ããããŸãã