@@ -71,7 +71,7 @@ export function buildRootObject(vatPowers, vatParameters) {
71
71
zoe ,
72
72
{ priceAuthority, adminFacet : priceAuthorityAdmin } ,
73
73
] = await Promise . all ( [
74
- bridgeManager ? E ( bankVat ) . makeBankManager ( bridgeManager ) : undefined ,
74
+ E ( bankVat ) . makeBankManager ( bridgeManager ) ,
75
75
E ( vats . sharing ) . getSharingService ( ) ,
76
76
E ( vats . registrar ) . getSharedRegistrar ( ) ,
77
77
E ( vats . board ) . getBoard ( ) ,
@@ -161,7 +161,7 @@ export function buildRootObject(vatPowers, vatParameters) {
161
161
// We just transfer the bootstrapValue in central tokens to the low-level
162
162
// bootstrapAddress.
163
163
async function depositCentralBootstrapPayment ( ) {
164
- if ( ! bankManager || ! bootstrapAddress || ! bootstrapPaymentValue ) {
164
+ if ( ! bootstrapAddress || ! bootstrapPaymentValue ) {
165
165
return ;
166
166
}
167
167
await E ( bankManager ) . addAsset (
@@ -218,7 +218,7 @@ export function buildRootObject(vatPowers, vatParameters) {
218
218
issuerName ,
219
219
harden ( { ...record , brand, issuer } ) ,
220
220
) ;
221
- if ( ! record . bankDenom || ! record . bankPurse || ! bankManager ) {
221
+ if ( ! record . bankDenom || ! record . bankPurse ) {
222
222
return issuer ;
223
223
}
224
224
@@ -466,12 +466,16 @@ export function buildRootObject(vatPowers, vatParameters) {
466
466
const mintIssuerNames = [ ] ;
467
467
const mintPurseNames = [ ] ;
468
468
const mintValues = [ ] ;
469
+ const payToBank = [ ] ;
469
470
issuerNames . forEach ( issuerName => {
470
471
const record = issuerNameToRecord . get ( issuerName ) ;
471
472
if ( ! record . defaultPurses ) {
472
473
return ;
473
474
}
474
475
record . defaultPurses . forEach ( ( [ purseName , value ] ) => {
476
+ // Only pay to the bank if we don't have an actual bridge to the
477
+ // underlying chain (from which we'll get the assets).
478
+ payToBank . push ( ! bridgeManager && purseName === record . bankPurse ) ;
475
479
mintIssuerNames . push ( issuerName ) ;
476
480
mintPurseNames . push ( purseName ) ;
477
481
mintValues . push ( value ) ;
@@ -482,17 +486,38 @@ export function buildRootObject(vatPowers, vatParameters) {
482
486
mintValues ,
483
487
) ;
484
488
485
- const paymentInfo = mintIssuerNames . map ( ( issuerName , i ) => ( {
489
+ const allPayments = mintIssuerNames . map ( ( issuerName , i ) => ( {
486
490
issuer : issuerNameToRecord . get ( issuerName ) . issuer ,
487
491
issuerPetname : issuerName ,
488
492
payment : payments [ i ] ,
493
+ brand : issuerNameToRecord . get ( issuerName ) . brand ,
489
494
pursePetname : mintPurseNames [ i ] ,
490
495
} ) ) ;
491
496
497
+ const bank = await E ( bankManager ) . getBankForAddress ( address ) ;
498
+
499
+ // Separate out the purse-creating payments from the bank payments.
500
+ const faucetPaymentInfo = [ ] ;
501
+ await Promise . all (
502
+ allPayments . map ( async ( record , i ) => {
503
+ if ( ! payToBank [ i ] ) {
504
+ // Just a faucet payment to be claimed by a wallet.
505
+ faucetPaymentInfo . push ( record ) ;
506
+ return ;
507
+ }
508
+ const { brand, payment } = record ;
509
+
510
+ // Deposit the payment in the bank now.
511
+ assert ( brand ) ;
512
+ const purse = E ( bank ) . getPurse ( brand ) ;
513
+ await E ( purse ) . deposit ( payment ) ;
514
+ } ) ,
515
+ ) ;
516
+
492
517
const faucet = Far ( 'faucet' , {
493
518
// A method to reap the spoils of our on-chain provisioning.
494
519
async tapFaucet ( ) {
495
- return paymentInfo ;
520
+ return faucetPaymentInfo ;
496
521
} ,
497
522
} ) ;
498
523
@@ -512,9 +537,6 @@ export function buildRootObject(vatPowers, vatParameters) {
512
537
} ,
513
538
} ;
514
539
515
- const bank = await ( bankManager &&
516
- E ( bankManager ) . getBankForAddress ( address ) ) ;
517
-
518
540
/** @param {NatValue } value */
519
541
async function donateCentralFromBootstrap ( value ) {
520
542
if ( ! bank || ! centralBootstrapPurse ) {
0 commit comments